Apa yang ada di Sistem Operasi selain kernel

43

Seperti yang saya pahami, kernel melakukan semua interaksi dengan perangkat keras, dan mengelola memori, perangkat I / O, dll. Jadi kernel melakukan semuanya, namun itu hanya bagian dari sistem operasi. Jadi apa lagi yang ada di OS? Hanya aplikasi yang dibundel dengannya? Sebagai contoh, apa yang dimiliki Ubuntu selain kernel? Desktop Gnome, dan beberapa aplikasi lainnya?

AnkurVj
sumber

Jawaban:

54

Shell, tentu saja.

Metafora asli yang memberi kita kata "kernel" untuk ini di tempat pertama terlalu sering dilupakan. Metafora adalah bahwa sistem operasi adalah biji atau kacang. "Kernel" dari seed adalah inti dari sistem operasi, menyediakan layanan sistem operasi untuk program aplikasi, yang dikelilingi oleh "shell" dari seed yang dilihat oleh pengguna dari luar.

Beberapa orang ingin mengikat "kernel" (dan, memang, "shell") lebih spesifik dari itu. Tetapi sebenarnya ada banyak variasi di seluruh sistem operasi. Tidak sedikit variasi ini adalah apa yang merupakan "shell" (yang dapat berkisar dari Solaris ' shmelalui Netware's Console Command Interpreter ke OS / 2's Workplace Shell dan Windows NT's Explorer), tetapi ada juga banyak varian dari satu sistem operasi ke yang lain di apa itu, dan bukan, bagian dari "kernel" (yang mungkin atau mungkin tidak termasuk disk I / O, misalnya). Yang terbaik untuk diingat bahwa istilah-istilah ini adalah metafora .

Ada istilah lain. Dalam terminologi mainframe IBM, "kernel" dalam metafora seed / nut disebut program kontrol . Nama lain termasuk pengawas , monitor , inti , dan eksekutif . Inti adalah metafora biologis yang cukup jelas. Sangat menarik bahwa demikian juga nama lain. Harvey M. Deitel, dalam Sistem Operasi , menyebut program kontrol nukleus , dan mengatakan

Inti biasanya mewakili sebagian kecil dari kode dari apa yang umumnya dianggap sebagai keseluruhan sistem operasi [...]

Kata "nukleus" berasal dari nukleus Latin , dan berarti inti dari kacang (lihat nux Latin , yang berarti "kacang"). Jadi, bahkan menyebut program kontrol "nukleus" sebenarnya membuat analogi sistem operasi yang sama seperti kacang ini. Ini analogi yang digunakan untuk lebih dari sekedar sistem operasi. Jika Anda terbiasa dengan kimia, misalnya, Anda akan tahu bahwa inti atom dikelilingi oleh elektron dalam kulit .

Apa yang new123456ditulis orang pseudonim di bawah ini mencontohkan kesalahan-kesalahan yang dihasilkan dari melupakan asal-usul metafora-metafora ini sampai-sampai salah mengira bagian untuk keseluruhan dan kesalahan kernel untuk keseluruhan sistem operasi. Menjadi program "userland" tidak membuat shell kurang menjadi bagian luar sistem operasi, atau membuatnya kurang dari apa yang menutupi kernel. Selain itu, jauh dari ide DOS-only yang tidak berlaku untuk Unix di luar versi 7, ide ini tersebar luas dan saat ini di dunia Unix.

(Sungguh ironis bahwa new123456kesalahan itu untuk DOSISisme. Metafor kernel / shell cukup asing untuk DOS di tahun-tahun awal, yang disukai prosesor perintah dan serupa, dari CP / M. Seperti CP / M sebelum itu, MS-DOS dibagi ke dalam sistem operasi disk dasar (BDOS), sistem input-output dasar (BIOS - bukan firmware sistem, catatan), prosesor perintah , dan utilitas rumah tangga.Kode ini sebenarnya dibagi menjadi file dengan cara ini. contohnya, sebenarnya, bagaimana metafora kernel / shell tidak benar-benar menutupi atau sepenuhnya cocok dengan divisi aktual di banyak sistem operasi.)

new123456lupa apa yang ditulis Deitel tentang inti yang menjadi bagian dari sistem operasi keseluruhan. Sebuah sistem operasi adalah baik kernel dan shell. Bagaimanapun, itu adalah metafora. Deitel juga tidak sendirian. Ada rim buku Unix yang menjelaskan metafora Unix-as-a-nut, dari tahun 1980 dan seterusnya. Saya merekomendasikan Urban's dan Tiemann's Teach Yourself FreeBSD dalam 24 Jam (SAMS, ISBN 9780672324246), untuk alasan sederhana bahwa pada halaman 54 ia memiliki diagram yang menggambarkan metafora sistem operasi sebagai seed, dan - yang mengejutkan - adalah salah satu dari beberapa buku untuk melakukannya.

Nama "nukleus" mungkin adalah nama yang lebih tua; tentu saja mendahului Unix, yang mendukung terminologi kernel / shell yang hari ini - mungkin sebagian kecil berkat Unix - adalah yang lebih umum. Inilah yang ada di buku Alan C. Shaw 1974 Desain logis dari sistem operasi (Prentice-Hall, ISBN 9780135401125) misalnya:

Bagian dari sistem yang secara permanen berada di penyimpanan utama secara historis disebut nukleus . Inti biasanya terdiri dari sekumpulan primitif dan proses minimal untuk pengelolaan proses, sumber daya, dan input-output.
Shaw memiliki diagram juga. ☺

JdeBP
sumber
7
Saya pikir ini adalah jawaban yang brilian, hanya karena ada dalam pikiran saya hubungan antara metafora "shell" dan "kernel". Saya tahu keduanya, saya tidak pernah menghubungkan mereka. Saya tahu jawaban untuk pertanyaan itu tetapi masih berhasil belajar sesuatu dari jawaban ini. Karena itu upvote. Terima kasih!
Andrew J. Brehm
Saya akan ragu untuk mengatakan ini, karena shell UNIX diabstraksi dari kernel itu sendiri sejak versi 7, dan telah sejak program userland dalam setiap arti kata. Apa yang Anda katakan, bagaimanapun, benar untuk DOS (yang merupakan pilihan desain yang sangat mengerikan).
new123456
Bermain bagus, tuan. Namun, silakan tinggalkan @tempat ketika menyebutkan nama pengguna saya sehingga diposting di antrian respons saya.
new123456
Terpilih untuk menjadi jawaban yang begitu komprehensif dengan banyak sejarah yang menarik (saya tidak menyadari inti sebagai istilah komputer - atau etimologi Latinnya). Namun, saya pikir itu akan membaca jauh lebih baik sebagai jawaban yang berdiri sendiri jika tidak secara eksplisit merujuk ke jawaban pengguna lain (sekarang dihapus).
Anthony G - keadilan untuk Monica
45

Bagian lain dari sistem operasi termasuk driver yang berinteraksi dengan kernel, ada beberapa lapisan program pembantu yang berhubungan dengan antarmuka pengguna, jaringan dan bagian inti lainnya dari OS yang berada di antara kernel dan aplikasi aktual.

Sebagai contoh, saya telah menunjukkan struktur OS X , seperti yang Anda lihat di atas Kernel (biru muda) terletak beberapa lapisan fungsionalitas "inti", peralatan sistem, layanan dan API (Antarmuka Pemrograman Aplikasi) sebelum Anda bahkan sampai ke GUI yang biasanya Anda gunakan di aplikasi yang sebenarnya.

masukkan deskripsi gambar di sini

Sebagian besar sistem operasi memiliki struktur yang serupa, tetapi ada ruang lingkup yang luas untuk perbedaan sehubungan dengan seberapa banyak sebenarnya bagian dari kernel. Lihat artikel Wikipedia di Microkernels untuk perbandingan.

EDIT - Untuk menjawab komentar Anda (komentar saya agak panjang)

Anda dapat mem - boot kernel Linux saja, tetapi Anda tidak akan dapat benar-benar mencapai banyak hal, itu semua aplikasi pembantu yang menyediakan semua antarmuka yang Anda lihat dan gunakan.

Setelah kernel di-boot (dan menginisialisasi perangkat keras), kernel akan berusaha untuk menyerahkan ke bagian lain dari Sistem Operasi GNU / Linux yang menyediakan fungsionalitas untuk memulai layanan (seperti UDEV yang diisi /devdengan antarmuka perangkat mentah untuk program untuk menggunakan hal-hal seperti hard drive dan port serial dan sebagainya) dan program untuk mengatur jaringan ( dhcpcd ) dan API seperti X.org agar aplikasi dapat menampilkan jendela dan ikon melalui Window Manager seperti GNOME atau KDE .

Tapi ya, Anda cukup boot kernel itu sendiri, itu hanya akan duduk di sana dengan "Saya sudah boot, sekarang bagaimana?" cepat.

Mokubai
sumber
jadi bisakah saya mem - boot kernel dan tidak ada hal-hal tambahan yang biasanya dimiliki OS?
AnkurVj
Secara teori, saya kira, tetapi tidak akan melakukan apa pun tanpa program lain di atasnya. Ada sistem operasi kecil yang dibuat orang untuk bersenang-senang yang tidak lain adalah kernel, shell, dan mungkin kompiler atau assembler (saya pikir Linux memulai dengan cara ini, sebenarnya).
user55325
@AnkurVj saya telah menambahkan jawaban saya.
Mokubai
3
Saya tidak berpikir Anda bisa boot hanya kernel Linux. Kernel mencapai titik di mana ia memanggil init, di mana sistem beralih dari mode kernel ke mode pengguna. Jika init tidak tersedia (atau init palsu, seperti bash), kernel panik dan lumpuh. Jadi harus ada beberapa proses init yang berjalan untuk menghindari kepanikan, pada saat itu sebenarnya bukan hanya kernel yang berjalan.
Joe Internet
1
Anda dapat mem-boot kernel kosong, tetapi tanpa sisa OS, pengguna tidak akan berinteraksi dengannya.
Keltari