kernel indo

49
Kernel (komputasi) Di dalam komputer, kernel merupakan sebuah program komputer yang mengelola input/output permintaan dari perangkat lunak dan menterjemahkannya ke dalam proses instruksi- instruksi pengolahan data yang akan ditujukan kepada unit pengolahan pusat(CPU) dan komponen2 elektronik lainnya dari komputer. Kernel adalah sebuah bagian fundamental /dasar dari sebuah sistem operasi komputer modern. Ketika sebuah program komputer (dalam hal ini disebut sebagai sebuah proses) membuat permintaan2 pada kernel, permintaan ini disebut dengan system call. Berbagai kernel didesain berbeda dalam bagaimana mereka mengelola system call (time sharing) dan mengelola sumber2 daya. Misalnya, sebuah kelompok kernel monolitic menjalankan semua instruksi2 sistem operasi dalam address space yang sama yg bertujuan untuk meningkatkan kinerja sistem atau Sebuah microkernel paling sering menjalankan background process dari sebuah sistem operasi pada user space, sehingga membuat sistem operasi lebih modular ,yang mana akan lebih mudah untuk dijaga kestabilannya.

Upload: glenjack-glen

Post on 23-Nov-2015

52 views

Category:

Documents


0 download

TRANSCRIPT

Kernel (komputasi)Di dalam komputer, kernel merupakan sebuah program komputer yang mengelola input/output permintaan dari perangkat lunak dan menterjemahkannya ke dalam proses instruksi-instruksi pengolahan data yang akan ditujukan kepada unit pengolahan pusat(CPU) dan komponen2 elektronik lainnya dari komputer. Kernel adalah sebuah bagian fundamental /dasar dari sebuah sistem operasi komputer modern.Ketika sebuah program komputer (dalam hal ini disebut sebagai sebuah proses) membuat permintaan2 pada kernel, permintaan ini disebut dengan system call. Berbagai kernel didesain berbeda dalam bagaimana mereka mengelola system call (time sharing) dan mengelola sumber2 daya. Misalnya, sebuah kelompok kernel monolitic menjalankan semua instruksi2 sistem operasi dalam address space yang sama yg bertujuan untuk meningkatkan kinerja sistem atau Sebuah microkernel paling sering menjalankan background process dari sebuah sistem operasi pada user space, sehingga membuat sistem operasi lebih modular ,yang mana akan lebih mudah untuk dijaga kestabilannya.Untuk para pemrogram komputer, kernel interface berada pada low-level abstraction layer.

Kemampuan mendasar Kernelfungsi utama kernel adalah untuk mengelola perangkat2 keras dan sumber2 daya dan memungkinkan program lain untuk menjalankan dan menggunakan sumber2 tersebut, secara umum, sumber2 daya terdiri dari: Unit Pengolahan Pusat (CPU) adalah yang pusat dari sistem komputer, yang bertanggung jawab untuk menjalankan atau mengeksekusi program2. Kernel mengambil tanggung jawab untuk menentukan kapan saja yang banyak program yang berjalan harus dialokasikan untuk prosesor atau prosesor (setiap yang biasanya dapat menjalankan hanya satu program di waktu) komputer memori. Memori yang digunakan untuk menyimpan kedua program instruksi dan data. Biasanya, keduanya harus ada dalam memori untuk sebuah program untuk menjalankan. Sering beberapa program akan ingin akses memori, sering menuntut lebih banyak memori dari komputer yang tersedia. Kernel ini bertanggung jawab untuk menentukan memori setiap proses yang dapat digunakan, dan menentukan apa yang harus dilakukan bila tidak cukup tersedia. Ada Input/Output (I/O) perangkat yang ada di komputer, seperti keyboard, mouse, disk drive, perangkat USB, printer, menampilkan, adaptor jaringan, dll. kernel mengalokasikan permintaan dari aplikasi untuk melakukan I/O untuk perangkat yang sesuai (atau dari seksi sebuah perangkat, dalam kasus file pada disk atau windows pada sebuah layar) dan menyediakan metode untuk menggunakan perangkat (biasanya yang sedang kamu abstrakan ? ke titik di mana aplikasi tersebut tidak perlu mengetahui rincian implementasi dari perangkat).Aspek utama diperlukan dalam manajemen sumber daya di definisi dari eksekusi domain (ruang alamat) dan mekanisme perlindungan yang digunakan untuk mengantara untuk mengakses sumber daya dalam domain. [ 1]Kernel juga biasanya menyediakan metode untuk sinkronisasi dan komunikasi antara berbagai proses yang disebut antar-proses komunikasi (IPC).Kernel dapat menerapkan fitur ini sendiri, atau bergantung pada beberapa proses ini dijalankan untuk menyediakan fasilitas untuk proses lain, walaupun dalam hal ini harus memberikan beberapa cara IPC untuk memungkinkan proses untuk mengakses fasilitas yang disediakan oleh satu sama lain.Akhirnya, sebuah kernel harus menyediakan program yang berjalan dengan cara untuk membuat permintaan untuk mengakses fasilitas ini.

Manajemen Memorikernel telah akses penuh untuk sistem memori dan harus mengizinkan proses dengan aman akses memori ini sebagai mereka memerlukannya. Sering langkah pertama dalam melakukan hal ini adalah virtual mengatasi, biasanya dicapai oleh paging dan/atau segmentasi. Virtual mengatasi memungkinkan kernel untuk membuat suatu alamat fisik tampaknya alamat lain, alamat virtual. Alamat Virtual spasi mungkin berbeda untuk proses-proses yang berbeda; memori yang satu proses mengakses di tertentu (virtual) alamat mungkin memori yang berbeda dari apa yang proses lain mengakses pada alamat yang sama. Hal ini memungkinkan setiap program untuk bertingkah laku seolah-olah ia merupakan satu-satunya (selain dari kernel) menjalankan dan dengan itu mencegah aplikasi dari bunyi keruntuhan hebat satu sama lain.4 ]Pada banyak sistem, sebuah program alamat virtual mungkin merujuk kepada data yang saat ini tidak dalam memori. Lapisan indirection disediakan oleh virtual mengatasi memungkinkan sistem operasi lain untuk menggunakan penyimpanan data, seperti hard drive, untuk menyimpan apa yang akan jika tidak harus tetap berada di dalam memori utama (domba jantan). Sebagai hasilnya, sistem operasi dapat mengizinkan program untuk menggunakan lebih banyak memori dari sistem yang telah tersedia secara fisik. Bila sebuah program kebutuhan data yang saat ini tidak di domba jantan, CPU sinyal untuk kernel yang telah ini terjadi, dan kernel merespon dengan menulis isi dari blok memori yang tidak aktif untuk disk (jika diperlukan) dan mengganti dengan data yang diminta oleh program. Program-program dapat kemudian dilanjutkan dari titik berhenti. Skema ini adalah pada umumnya dikenal dengan permintaan lembaran halaman.Virtual mengatasi juga memungkinkan pembuatan partisi virtual memori terputus di dua daerah, salah satu yang dikhususkan untuk kernel (kernel ruang) dan lainnya untuk aplikasi (pengguna ruang). Aplikasi Yang tidak dibenarkan oleh prosesor ke alamat memori kernel, sehingga mencegah aplikasi dari kerusakan menjalankan kernel. Partisi ini mendasar dari ruang memori telah menyumbangkan banyak untuk saat ini sebenarnya desain-umum kernel dan hampir universal dalam sistem tersebut, walaupun beberapa penelitian kernel (mis. Bentuk tunggal) mengambil pendekatan lain.Manajemen Perangkatuntuk melakukan fungsi berguna, proses membutuhkan akses ke perangkat yang terhubung ke komputer, yang dikendalikan oleh kernel melalui driver perangkat. Driver perangkat adalah sebuah program komputer yang memungkinkan sistem operasi untuk berinteraksi dengan perangkat keras. Ia menyediakan sistem operasi dengan informasi mengenai bagaimana untuk kontrol dan berkomunikasi dengan beberapa bagian perangkat keras. Driver merupakan bagian penting dan sangat penting untuk program aplikasi. Desain tujuan dari driver adalah abstraction; fungsi adalah driver untuk menerjemahkan OS-diamanatkan fungsi panggilan (pemrograman) ke perangkat panggilan-panggilan tertentu. Dalam teori, perangkat harus bekerja dengan benar dengan driver yang sesuai. Driver Perangkat yang digunakan untuk hal-hal seperti kartu video, kartu suara, printer, scanner, modem, dan kartu LAN. Tingkat yang sama dari abstraction dari driver perangkat adalah:1. Pada sisi perangkat keras: Antarmuka secara langsung. Tingkat tinggi dengan menggunakan interface (Video BIOS). Menggunakan tingkat yang lebih rendah device driver (file driver menggunakan disk driver). Mensimulasikan bekerja dengan perangkat keras, sementara melakukan sesuatu yang sama sekali berbeda.2. Pada sisi perangkat lunak: Memungkinkan sistem operasi akses langsung ke sumber daya perangkat keras. Menerapkan hanya primitives. Menerapkan antarmuka bagi non-driver perangkat lunak (misalnya: TWAIN). Menerapkan sebuah bahasa, terkadang tingkat tinggi (Contoh PostScript).Misalnya, untuk menunjukkan pengguna sesuatu pada layar, sebuah aplikasi akan membuat permintaan untuk kernel, yang akan meneruskan permintaan untuk menampilkan driver, yang kemudian bertanggung jawab untuk sebenarnya merencanakan karakter/piksel.4 ]kernel harus mempertahankan sebuah daftar perangkat yang tersedia. Daftar ini dapat diketahui sebelumnya (misalnya pada sistem yang tertanam di mana kernel akan dituliskan kembali jika tersedia perangkat keras perubahan), dikonfigurasi oleh pengguna (khas pada PC lama dan pada sistem yang tidak dirancang untuk penggunaan pribadi) atau terdeteksi oleh sistem operasi saat dijalankan (biasanya disebut plug dan memainkan). Dalam plug dan memainkan sistem, perangkat manager pertama akan melakukan scan pada berbeda hardware bus, seperti Perifer Interkoneksi Komponen (PCI) atau Universal Serial Bus (USB), untuk mendeteksi perangkat yang diinstal, maka untuk mencari driver yang tepat.Sebagai manajemen perangkat yang sangat OS-topik tertentu, driver ini ditangani secara berbeda dengan masing-masing jenis kernel desain, tetapi dalam setiap kasus, kernel telah untuk menyediakan I/O untuk memungkinkan driver untuk secara fisik mengakses perangkat mereka melalui beberapa port atau lokasi memori. Sangat penting keputusan harus dibuat saat merancang sistem manajemen perangkat, seperti dalam berbagai desain mengakses mungkin melibatkan konteks beralih, membuat operasi sangat CPU-intensif dan mudah menyebabkan performa overhead. [pencantuman diperlukan]Panggilan Sistemartikel Utama: Sistemkomputasi dalam panggilan, sebuah sistem panggilan adalah bagaimana sebuah program layanan permintaan dari sistem operasi kernel yang tidak biasanya memiliki izin untuk menjalankan. Panggilan Sistem menyediakan interface antara sebuah proses dan sistem operasi. Kebanyakan operasi berinteraksi dengan sistem memerlukan izin tidak tersedia untuk pengguna proses tingkat, mis. I/O dilakukan dengan perangkat yang ada pada sistem, atau apa saja bentuk komunikasi dengan proses lain mengharuskan penggunaan panggilan sistem.Sebuah sistem panggilan adalah sebuah mekanisme yang digunakan oleh aplikasi untuk permintaan program layanan dari sistem operasi. Mereka menggunakan sebuah mesin-daftar instruksi yang menyebabkan prosesor untuk mengubah mode. Sebuah contoh akan dari pengawas mode untuk mode yang dilindungi. Ini adalah di mana sistem operasi melakukan tindakan seperti mengakses perangkat keras atau memori unit manajemen. Secara umum sistem operasi menyediakan sebuah perpustakaan yang duduk di antara sistem operasi dan program normal. Biasanya pustaka C seperti glibc atau Windows API. Perpustakaan menangani low-level rincian melewati informasi ke kernel dan berpindah ke mode pengawas. Panggilan Sistem termasuk dekat, terbuka, membaca, tunggu dan menulis.Untuk sebenarnya melakukan tugas yang berguna, sebuah proses harus mampu mengakses layanan yang disediakan oleh kernel. Ini diimplementasikan dengan cara yang berbeda dengan setiap kernel, tetapi kebanyakan menyediakan pustaka C atau API, yang pada gilirannya memanggil fungsi terkait dengan kernel. [5 ]metode menyeru fungsi kernel beda dari kernel untuk kernel. Jika memori isolasi adalah yang digunakan, ianya mustahil untuk pengguna untuk proses panggilan kernel secara langsung, karena akan menjadi suatu pelanggaran terhadap prosesor peraturan kontrol akses. Beberapa kemungkinan adalah: Dengan menggunakan perangkat lunak-simulasi menghentikan. Metode ini tersedia pada kebanyakan perangkat keras, dan oleh karena itu, sangat umum. Menggunakan panggilan pintu gerbang. Panggilan pintu gerbang alamat khusus yang disimpan oleh kernel di dalam sebuah daftar di kernel memori dikenal di lokasi untuk prosesor. Ketika prosesor mendeteksi panggilan ke alamat tersebut, ia bukan mengalihkan ke lokasi target tanpa menyebabkan akses pelanggaran. Ini memerlukan dukungan hardware, namun perangkat keras untuk sangat umum. Dengan menggunakan sebuah sistem khusus instruksi panggilan. Teknik ini memerlukan dukungan hardware khusus, yang arsitektur yang umum (khususnya, x86) dapat kekurangan. Panggilan Sistem instruksi telah ditambahkan untuk model terbaru dari prosesor x86, namun, dan beberapa sistem operasi untuk PC menggunakan mereka apabila tersedia. Menggunakan memori-berdasarkan antrian. Aplikasi yang membuat sejumlah besar permintaan tetapi tidak perlu menunggu hasil dari setiap mungkin menambah rincian dari permintaan untuk area memori yang secara berkala scan kernel untuk menemukan permintaan.

Kernel DesainMasalah Keputusan dari dukungan kernel untuk perlindunganpertimbangan penting di dalam desain sebuah kernel adalah dukungan yang menyediakan untuk perlindungan dari kerusakan (toleransi kesalahan) dan dari perilaku jahat (keamanan). Kedua-dua aspek ini biasanya tidak dengan jelas, dan pengangkatan sebagai anak dari perbedaan ini di dalam kernel desain membawa kepada penolakan struktur hierarki untuk perlindungan. [ 1]mekanisme atau kebijakan disediakan oleh kernel dapat diklasifikasikan berdasarkan beberapa kriteria, termasuk: statis (dikuatkuasakan pada saat kompilasi) atau dinamis (dikuatkuasakan saat dijalankan); pre-emptive atau post-deteksi; sesuai dengan prinsip perlindungan mereka memenuhi (iaitu Denning[7 6] ] ); apakah mereka hardware didukung atau bahasa berdasarkan; apakah mereka lebih terbuka mekanisme atau suatu kebijakan yang mengikat, dan banyak lagi.Dukungan untuk perlindungan hierarki domain[8 biasanya yang CPU mode. Yang efisien dan cara yang mudah untuk memberikan dukungan hardware-adalah kemampuan untuk mendelegasikan tanggung jawab MMU memeriksa hak akses-akses untuk setiap memori, suatu mekanisme yang disebut kemampuan-berdasarkan mengatasi.9 ] Paling komersial arsitektur komputer kurangnya MMU dukungan untuk kemampuan. Sebuah pendekatan alternatif untuk menstimulasi menggunakan kemampuan umum didukung hierarki domain, dalam pendekatan ini, setiap obyek yang dilindungi harus berada di dalam sebuah ruang alamat aplikasi yang tidak memiliki akses untuk; kernel juga mengelola sebuah daftar kemampuan dalam memori. Ketika aplikasi kebutuhan untuk mengakses sebuah object dilindungi oleh sebuah kemampuan, ia melakukan panggilan sistem dan kernel melakukan akses untuk itu. Kinerja biaya dari ruang alamat switching membatasi kepraktikan dari pendekatan ini di dalam sistem dengan kompleks interaksi antara obyek, tetapi ianya digunakan di dalam sistem operasi saat ini untuk obyek yang tidak diakses sering atau yang tidak dapat diharapkan untuk melakukan dengan cepat.10 ]11 ] Pendekatan di mana mekanisme perlindungan tidak firmware didukung tetapi malah simulasi pada tahap yang lebih tinggi (misalnya mensimulasikan kemampuan dengan memanipulasi meja di halaman perangkat keras yang tidak memiliki dukungan langsung), yang mungkin, tetapi ada performa implikasi.12 ] Kurangnya dukungan hardware mungkin tidak menjadi masalah, namun, untuk sistem yang memilih untuk menggunakan bahasa-proteksi berbasis.13 ]desain kernel keputusan penting adalah pilihan abstraction tingkat keamanan di mana mekanisme dan kebijakan yang akan diterapkan. Keamanan Kernel mekanisme memainkan peran penting dalam mendukung keamanan di tingkat tinggi.9 ]14 ]15 ]16 ]17 ]Salah Satu pendekatan untuk menggunakan firmware dan dukungan kernel untuk toleransi kesalahan (lihat di atas), dan membangun kebijakan keamanan untuk perilaku jahat di atas yang (menambahkan fitur seperti di tempat yang diperlukan mekanisme kriptografi), mendelegasikan beberapa tanggungjawab ke compiler. Pendekatan yang mendelegasikan penegakan kebijakan keamanan ke compiler dan/atau level aplikasi yang sering disebut sebagai bahasa keamanan berbasis.Kurangnya banyak kritis mekanisme keamanan di saat ini impedes arus utama sistem operasi yang memadai dari implementasi kebijakan keamanan pada aplikasi abstraction tingkat.14 ] Dalam kenyataan, sebuah konsepsi salah dalam keamanan komputer adalah bahwa ada kebijakan keamanan dapat diimplementasikan dalam sebuah aplikasi terlepas dari dukungan kernel.14 ]

Perangkat Keras-proteksi berbasis atau bahasakhas proteksi berbasis sistem komputer saat ini menggunakan perangkat keras-dikuatkuasakan peraturan tentang program apa yang diizinkan untuk mengakses data apa. Prosesor memantau pelaksanaan dan berhenti sebuah program yang melanggar aturan (misalnya, pengguna yang adalah tentang proses untuk membaca dan menulis untuk kernel memori, dan lain-lain). Di dalam sistem yang kurang mendukung kemampuan, proses terisolasi dari satu sama lain dengan menggunakan alamat terpisah spasi.18 ] Panggilan dari proses pengguna ke dalam kernel diatur oleh meminta mereka untuk menggunakan salah satu di atas yang digambarkan panggilan sistem metode.Sebuah pendekatan alternatif adalah dengan menggunakan bahasa-proteksi berbasis. Dalam bahasa berbasis sistem perlindungan, kernel akan hanya mengizinkan kode untuk menjalankan yang telah dihasilkan oleh bahasa compiler yang terpercaya. Bahasa mungkin kemudian akan dirancang seperti yang mustahil bagi programmer untuk mengajar untuk melakukan sesuatu yang akan melanggar syarat keamanan.13 ]Keuntungan dari pendekatan ini termasuk: Tidak perlu untuk memisahkan alamat spasi. Switching antara ruang alamat yang lambat operasi yang menyebabkan banyak overhead, dan banyak optimalisasi bekerja saat ini dilakukan untuk mencegah tidak perlu beralih pada sistem operasi saat ini. Switching adalah sama sekali tidak diperlukan dalam bahasa berbasis sistem perlindungan, seperti semua kode dapat dengan aman beroperasi di ruang alamat yang sama. Fleksibilitas. Skema proteksi apa pun yang dapat dirancang untuk dinyatakan melalui sebuah bahasa pemrograman dapat diimplementasikan dengan menggunakan metode ini. Perubahan pada skema proteksi (mis. dari sebuah sistem yang bersifatkan hierarki ke kemampuan-berdasarkan satu) tidak memerlukan perangkat keras yang baru.Kekurangan termasuk: Lagi start aplikasi. Aplikasi harus diverifikasi ketika mereka mulai untuk memastikan bahwa mereka telah disusun oleh compiler yang benar, atau mungkin perlu mengkompilasi ulang dari kode sumber atau dari bytecode. Tidak lentur jenis sistem. Pada sistem tradisional, aplikasi sering melakukan operasi jenis yang tidak aman. Kegiatan tersebut tidak dapat dibenarkan di dalam bahasa yang berbasis sistem perlindungan, yang berarti bahwa aplikasi mungkin perlu dituliskan kembali dan mungkin, dalam beberapa kasus, kehilangan performa.Contoh sistem dengan bahasa-proteksi berbasis termasuk JX dan Microsoft pengunnan.

Proses kerja samaEdsger Dijkstra membuktikan bahwa dari sudut pandang logis, atom kunci dan membuka kunci operasi pada binari operasi semaphores sudah cukup untuk express primitives fungsionalitas apa pun dari proses kerja sama.19 ] Namun pendekatan ini adalah secara umumnya dianggap kurang dalam hal keamanan dan efisiensi, sedangkan penyampaian pesan pendekatan yang lebih fleksibel.20 ] sejumlah pendekatan lain (baik melemah- atau lebih tinggi tingkat) juga tersedia, seperti juga, dengan banyak modern memberikan dukungan kernel untuk sistem seperti memori bersama dan prosedur jarak jauh panggilan.I/O manajemen perangkatide untuk kernel di mana perangkat I/O ditangani secara merata dengan proses lain, seperti paralel co-proses operasi, pertama kali diusulkan dan dilaksanakan oleh Brinch Hansen (walaupun gagasan yang sama telah diusulkan pada tahun 1967 21 ]22 ] ). Dalam Hansen keterangan ini, "umum" proses internal yang dipanggil proses, sementara I/O perangkat eksternal yang dipanggil proses.Mirip dengan memori fisik, mengizinkan aplikasi akses langsung ke controller port dan register dapat menyebabkan controller tersebut tidak berfungsi, atau sistem untuk crash. Dengan ini, tergantung pada kompleksitas dari perangkat, beberapa perangkat dapat mendapatkan mengejutkan rumit untuk program, dan menggunakan beberapa controller berbeda. Oleh karena itu, menyediakan antarmuka yang lebih abstrak untuk mengelola perangkat adalah penting. Antarmuka ini biasanya dilakukan oleh Driver Perangkat atau Hardware Abstraction Layer. Sering, aplikasi akan memerlukan akses ke perangkat ini. Kernel harus menjaga daftar perangkat ini dengan menanyakan sistem untuk mereka dalam beberapa cara. Ini dapat dilakukan melalui BIOS, atau melalui satu dari berbagai sistem bus (seperti PCI/PCIE, atau USB). Ketika aplikasi permintaan operasi pada sebuah perangkat (seperti menampilkan sebuah karakter), kernel perlu mengirimkan permintaan ini untuk aktif driver video. Driver video, yang pada gilirannya, kebutuhan untuk melakukan permintaan ini. Ini adalah sebuah contoh dari Proses Komunikasi antar (IPC).

Kernel-lebar pendekatan desainSecara alami, yang tercantum di atas tugas dan fitur dapat disediakan dalam banyak cara yang berbeda dari satu sama lain dalam desain dan implementasi.Prinsip-prinsip pemisahan mekanisme dan kebijakan yang besar adalah perbedaan antara filosofi mikro dan kernel monolitik.23 ]24 ] Di Sini mekanisme dukungan yang memungkinkan implementasi dari berbagai kebijakan, sementara sebuah kebijakan tertentu adalah "mode operasi". Misalnya, sebuah mekanisme untuk pengguna dapat memberikan log-dalam usaha untuk panggilan otorisasi server untuk menentukan apakah akses harus diberikan, sebuah kebijakan mungkin untuk otorisasi server untuk meminta password dan periksa terhadap sebuah dienkripsi disimpan dalam sebuah database. Karena mekanisme adalah generic, kebijakan tersebut dapat lebih mudah berubah (misalnya dengan memerlukan penggunaan token keamanan) daripada jika mekanisme dan kebijakan yang terintegrasi dalam modul yang sama.Dalam minimal microkernel hanya beberapa sangat dasar kebijakan,24 ] dan mekanisme memungkinkan apa yang sedang berjalan di atas kernel (sisa dari sistem operasi dan aplikasi lain) untuk memutuskan untuk mengadopsi kebijakan (sebagai manajemen memori, tingkat tinggi proses penjadwalan, file system management, dll. ) . [ 1]20 ] yang monolitis kernel, bukan cenderung untuk meliputi banyak kebijakan, karena itu membatasi bagian lain dari sistem bergantung kepada mereka.Per Brinch Hansen dipresentasikan argumen dalam kasih karunia dari pemisahan mekanisme dan kebijakan. [ 1]20 ] kegagalan untuk dengan benar memenuhi pemisahan ini adalah salah satu penyebab utama kurangnya besar ada inovasi dalam sistem operasi, [ 1] masalah umum di arsitektur komputer.25 ]26 ] [27 ] monolitik desain yang dicetuskan oleh "modus kernel" / "user mode" pendekatan arsitektur untuk perlindungan (secara teknis disebut hierarki domain perlindungan), yang umum di konvensional sistem;28 ] dalam kenyataan, setiap modul memerlukan perlindungan karena itu sebaiknya dimasukkan ke dalam kernel. [28 ] link ini antara monolitik desain dan "hak istimewa mode" dapat reconducted ke isu mekanisme-kebijakan pemisahan; [ 1] sebenarnya "istimewa mode" pendekatan arsitektur meleleh bersama mekanisme perlindungan dengan kebijakan keamanan, sementara utama arsitektur alternatif Pendekatan, kemampuan-berdasarkan mengatasi, jelas membezakan antara dua, memimpin secara alami untuk sebuah microkernel desain[ 1] (lihat Pemisahan perlindungan dan keamanan).Sementara monolitik kernel mereka menjalankan semua kode di dalam ruang alamat yang sama (kernel ruang) microkernels mencoba untuk menjalankan kebanyakan pengguna layanan mereka di ruang, yang bertujuan untuk meningkatkan cara dan modularity-codebase. [ 3] Paling kernel tidak tepat masuk ke dalam salah satu kategori ini, tetapi ditemukan di antara kedua-dua desain. Ini disebut hybrid kernel. Desain Lebih eksotis seperti nanokernels dan exokernels tersedia, tetapi jarang digunakan untuk sistem produksi. Yang Xen hypervisor, misalnya, adalah sebuah exokernel.

Kernel Monolitikartikel Utama: Monolitik

Diagram kernel-kernel di dalam sebuah kelompok monolitikyang monolitis kernel, semua layanan menjalankan OS utama bersama dengan benang kernel, dengan itu juga tinggal di area memori yang sama. Pendekatan ini menyediakan kaya dan berkuasa akses perangkat keras. Beberapa pengembang, seperti UNIX pengembang Ken Thompson, mempertahankan bahwa ia "lebih mudah untuk melaksanakan sebuah kernel monolitik" [29 ] dari microkernels. Kekurangan utama dari kernel yang monolitik dependensi antara komponen sistem - bug di driver perangkat mungkin crash seluruh sistem - dan fakta bahwa kernel besar dapat menjadi sangat sulit untuk mempertahankan.Kernel Monolitik, yang secara tradisional telah digunakan oleh sistem operasi mirip Unix, berisi semua fungsi inti sistem operasi dan driver perangkat (program kecil yang memungkinkan sistem operasi untuk berinteraksi dengan perangkat keras, seperti disk drive, kartu video dan printer). Ini adalah tradisional dari desain sistem UNIX. YANG monolitis kernel adalah salah satu program tunggal yang berisi semua kode perlu untuk melakukan setiap kernel terkait dengan tugas. Setiap bagian yang dapat diakses oleh kebanyakan program yang tidak dapat diletakkan dalam perpustakaan adalah di dalam kernel ruang: driver perangkat, Scheduler, penanganan Memori, File systems, Jaringan tumpukan. Banyak panggilan sistem disediakan untuk aplikasi, untuk memungkinkan mereka untuk mengakses semua layanan tersebut. Kernel YANG monolitik, sementara pada awalnya dimuati dengan subsistem yang mungkin tidak diperlukan dapat disesuaikan untuk suatu titik di mana ia adalah sebagai cepat sebagai atau lebih cepat dari yang telah dirancang khusus untuk perangkat keras, walaupun lebih dalam pengertian umum. Kernel monolitik Modern, seperti orang dari Linux dan FreeBSD, baik yang jatuh ke dalam kategori sistem operasi mirip Unix, memiliki kemampuan untuk memuat modul di runtime, dengan demikian memungkinkan mudah ekstensi kernel kemampuan seperti yang diperlukan, dan membantu untuk mengurangi jumlah kode ruang berjalan di kernel. Di Dalam kernel monolitik, beberapa keuntungan engsel pada poin ini: Sejak ada kurang terlibat perangkat lunak ini lebih cepat. Seperti itu adalah satu bagian perangkat lunak itu harus lebih kecil di dalam kedua bentuk sumber dan dikompilasi. Kurang kode umumnya berarti lebih sedikit bug yang dapat diterjemahkan menjadi lebih sedikit masalah keamanan.Kebanyakan bekerja di dalam kernel monolitik dilakukan melalui panggilan sistem. Ini adalah antarmuka, biasanya dipelihara dalam struktur tabel, yang mengakses beberapa subsistem di dalam kernel seperti disk operasi. Pada dasarnya panggilan yang dibuat di dalam program dan diperiksa salinan permintaan adalah melalui sistem panggilan. Dengan itu, tidak jauh untuk perjalanan anda di semua. Monolitik kernel Linux dapat dibuat sangat kecil tidak hanya karena kemampuannya untuk memuat modul secara dinamis namun juga karena kemudahan penyesuaian. Pada kenyataannya, ada beberapa versi yang cukup kecil untuk sesuai dengan bersama dengan sejumlah besar dari utilitas dan program lain pada satu floppy disk dan masih memberikan berfungsi penuh sistem operasi (salah satu yang paling populer yang muLinux). Kemampuan ini untuk miniaturize kernel juga telah membawa pada pertumbuhan yang cepat dalam penggunaan tertanam di sistem Linux.Jenis kernel ini terdiri dari fungsi utama dari sistem operasi dan driver perangkat dengan kemampuan untuk memuat modul di runtime. Mereka menyediakan kaya dan berkuasa dari yang mendasari perangkat keras. Mereka menyediakan kecil dapat dilakukan dengan mudah dengan perangkat keras dicontohkan secara praktis dan menggunakan aplikasi bernama server untuk menyediakan fungsionalitas lebih. Pendekatan tertentu ini menentukan tingkat tinggi virtual interface melalui perangkat keras, dengan sistem panggilan untuk menerapkan sistem operasi layanan seperti proses manajemen, berbarengan saat dan manajemen memori dalam beberapa modul yang berjalan di mode pengawas. Rancangan ini memiliki beberapa kekurangan dan batasan: Coding di kernel dapat menantang, sebagian karena salah satu tidak dapat menggunakan pustaka umum (seperti berfitur lengkap libc), dan karena salah satu kebutuhan untuk menggunakan sumber-tingkat debugger seperti gdb. Reboot komputer sering diperlukan. Ini bukan hanya satu masalah kemudahan bagi para pengembang. Ketika debug lebih sulit, dan sebagai kesulitan menjadi lebih kuat, ia menjadi lebih besar kemungkinannya bahwa kode akan "buggier". Bug di salah satu bagian dari kernel memiliki efek samping kuat, karena setiap fungsi di dalam kernel telah semua privilese, bug di satu fungsi dapat merusak struktur data dari yang lain, sama sekali tidak berhubungan bagian dari kernel, atau apa pun menjalankan program. Kernel sering menjadi sangat besar dan sulit untuk mempertahankan. Bahkan jika modul servis-operasi ini terpisah dari seluruh, kode integrasi yang ketat dan sulit untuk dilakukan dengan benar. Sejak modul yang berjalan di ruang alamat yang sama, bug dapat membawa turun seluruh sistem itu. Monolitik kernel tidak portabel, oleh sebab itu, mereka harus ditulis semula untuk setiap arsitektur baru bahwa sistem operasi akan digunakan.

Dalam pendekatan microkernel, kernel sendiri hanya menyediakan fungsionalitas dasar yang memungkinkan pelaksanaan server, program yang terpisah yang menganggap mantan kernel fungsi, seperti driver perangkat, GUI server, dll.Microkernelsartikel Utama: MicrokernelMicrokernel (juga disingkat K atau uk) adalah istilah untuk menggambarkan sebuah pendekatan desain dengan Sistem Operasi yang fungsionalitas sistem dipindahkan dari tradisional "kernel", ke dalam satu set "server" yang berkomunikasi melalui "minimal" kernel, meninggalkan mungkin dalam "sistem space" dan sebanyak mungkin di "pengguna ruang". SEBUAH microkernel yang dirancang untuk sebuah platform yang spesifik atau perangkat hanya akan memiliki apa yang perlu untuk beroperasi. Microkernel pendekatan yang terdiri dari menentukan sederhana abstraction melalui perangkat keras, dengan set primitives atau panggilan sistem untuk menerapkan minimal OS layanan seperti manajemen memori, menjalankan beberapa tugas, dan antar-proses komunikasi. Layanan lain, termasuk yang biasanya diberikan oleh kernel, seperti jaringan, dilaksanakan di user-space program, yang disebutkan sebagai server. Microkernels lebih mudah untuk mempertahankan dari kernel monolitik, tetapi jumlah besar panggilan sistem dan konteks beralih mungkin memperlambat sistem karena mereka biasanya membuat lebih overhead dari panggilan fungsi biasa.Hanya bagian yang sangat memerlukan dalam mode istimewa di dalam kernel ruang: IPC ( Inter-Process Komunikasi), Dasar scheduler, atau penjadwalan primitives, Dasar memori Penanganan, Dasar I/O primitives. Banyak bagian penting kini menjalankan di ruang pengguna: menyelesaikan scheduler, penanganan Memori, File systems, dan Jaringan tumpukan. Micro kernel telah mencipta sebagai reaksi kepada tradisional "monolitik" kernel desain, dimana semua fungsionalitas sistem itu diletakkan dalam satu statis dijalankan dalam program khusus "sistem" mode prosesor. Dalam microkernel, hanya yang paling mendasar dari tugas dilakukan seperti yang dapat mengakses beberapa (bukan berarti semua) dari perangkat keras, mengelola memori dan mengkoordinasikan penyampaian pesan antara proses. Beberapa sistem yang menggunakan kernel ini QNX mikro dan HURD. Dalam kasus QNX dan Hurd sesi pengguna dapat seluruh snapshot dari sistem itu sendiri atau pandangan seperti mana ia disebutkan. Yang sangat intisari dari arsitektur microkernel menggambarkan beberapa keuntungan: Pemeliharaan umumnya lebih mudah. Patch dapat diuji dalam contoh yang terpisah, dan kemudian akan dialihkan dalam untuk mengambil alih produksi contoh. Cepat waktu pengembangan perangkat lunak dan baru dapat diuji tanpa harus reboot ke kernel. Lebih persistensi secara umum, jika salah satu contoh akan padam jerami-kawat, ia sering mungkin untuk menggantikan dengan operasional cermin.Paling micro kernel menggunakan sistem penyampaian pesan dari beberapa jenis untuk menangani permintaan dari satu server kepada yang lain. Penyampaian pesan sistem yang umumnya beroperasi di port dengan microkernel. Sebagai contoh, jika permintaan untuk lebih banyak memori dikirimkan, port dibuka dengan microkernel dan permintaan tersebut dikirim melalui. Sekali dalam microkernel, langkah serupa dengan panggilan sistem. Rasional adalah bahawa ia akan membawa modularity dalam arsitektur sistem, yang akan membawa sebuah sistem yang lebih bersih, lebih mudah untuk debug atau secara dinamis memodifikasi, dapat disesuaikan dengan kebutuhan pengguna, dan lebih banyak melakukan. Mereka adalah sebahagian daripada sistem operasi seperti AIX, BeOS, Hurd, Mach, Mac OS X, MINIX, QNX. Etc. Walaupun micro kernel ini sangat kecil oleh mereka sendiri, dalam kombinasi dengan semua pendukung mereka diperlukan kode mereka, pada kenyataannya, sering lebih besar dari monolitik kernel. Para penyokong monolitik kernel juga menunjukkan bahwa dua-yang bersaing struktur sistem microkernel, di mana kebanyakan dari sistem operasi tidak langsung berinteraksi dengan perangkat keras, menciptakan yang tidak kecil biaya dalam hal efisiensi sistem. Jenis ini biasanya hanya menyediakan kernel minimal layanan seperti menentukan alamat memori spasi, antar-proses komunikasi (IPC) dan proses manajemen. Fungsi lain seperti menjalankan proses perangkat keras tidak ditangani secara langsung oleh mikro kernel. Para pendukung mikro menunjuk kernel-kernel monolitik memiliki kekurangan yang kesalahan dalam kernel dapat menyebabkan seluruh sistem untuk crash. Namun, dengan microkernel, jika sebuah kernel proses crash, ia masih mungkin untuk mencegah crash sistem secara keseluruhan dengan hanya restart layanan yang menyebabkan kesalahan tersebut.Layanan Lain disediakan oleh kernel seperti jaringan ini dilaksanakan di user-space program dirujuk sebagai server. Server memungkinkan sistem operasi untuk diubah oleh cukup memulai dan menghentikan program. Untuk sebuah mesin tanpa dukungan jaringan, misalnya, jaringan server tidak dimulai. Tugas yang bergerak di dalam dan di luar kernel untuk memindahkan data antara berbagai aplikasi server dan menciptakan overhead yang merusak untuk efisiensi micro kernel dalam perbandingan dengan monolitik kernel.Kekurangan dalam microkernel ada namun. Beberapa adalah: Lebih Besar menjalankan memori footprint perangkat lunak Lebih Banyak untuk antarmuka diperlukan, ada potensi untuk performa kerugian. Messaging bug dapat lebih sulit untuk memperbaiki karena perjalanan lagi mereka harus mengambil versus satu dari salinan di kernel yang monolitik. Manajemen Proses secara umum dapat sangat rumit. Kekurangan micro kernel ini sangat konteks berdasarkan. Sebagai contoh, mereka bekerja baik untuk satu tujuan kecil (dan penting) sistem karena jika tidak banyak proses perlu menjalankan, maka komplikasi proses manajemen secara efektif diperkecil.SEBUAH microkernel memungkinkan implementasi dari sisa dari sistem operasi sebagai normal program aplikasi tertulis dalam tingkat tinggi bahasa, dan menggunakan sistem operasi lain di atas tidak berubah sama kernel.20 ] Ini juga memungkinkan untuk secara dinamis berpindah di antara sistem operasi dan untuk mempunyai lebih dari satu aktif secara bersamaan.20 ]

Kernel Monolitik versus microkernelsSebagai komputer kernel tumbuh, beberapa masalah menjadi jelas. Salah satu yang paling jelas adalah bahawa memori footprint meningkat. Ini adalah dihindari untuk beberapa derajat dengan penyempurnaan sistem memori virtual, tetapi tidak semua arsitektur komputer memiliki memori virtual dukungan. [30 ] Untuk mengurangi footprint kernel, luas untuk mengedit telah dilakukan untuk menghapus dikitnya kode dengan hati, yang dapat menjadi sangat sulit dengan non-jelas interdependencies antara bagian dari sebuah kernel dengan jutaan baris kode.Pada awal tahun 1990, yang disebabkan oleh berbagai kekurangan monolitik kernel versus microkernels, monolitik kernel telah dianggap usang oleh hampir semua sistem operasi para peneliti. Sebagai hasilnya, desain Linux sebagai sebuah kernel monolitik daripada sebuah microkernel adalah topik yang terkenal dari perdebatan antara Linus Torvalds dan Andrew Tanenbaum.31 ] ada keutamaan di kedua belah pihak dari perdebatan ini disajikan dalam Tanenbaum-Torvalds perdebatan.KinerjaKelompok Monolitik kernel ini dirancang untuk memiliki semua mereka kode di dalam ruang alamat yang sama (kernel ruang), yang beberapa pengembang berpendapat adalah perlu untuk meningkatkan performa sistem. [32 ] beberapa pengembang juga mempertahankan sistem yang monolitik sangat efisien jika-. [32 ] monolitik model cenderung lebih efisien[pencantuman diperlukan] melalui penggunaan bersama memori kernel, dan bukannya lebih lambat IPC microkernel desain sistem, yang biasanya berdasarkan pada penyampaian pesan. [pencantuman diperlukan]kinerja microkernels dibangun pada tahun 1980 tahun yang dimulai dan awal 1990 adalah orang miskin. [ 33] [ 34] Studi yang secara empirik mengukur kinerja microkernels ini tidak menganalisa alasan seperti inefisiensi. [ 33] penjelasan dari data ini dibiarkan "Dongeng", dengan asumsi bahwa mereka karena dalam meningkatkan frekuensi akan beralih dari "kernel-mode" untuk "user-mode" , [ 33] dalam meningkatkan frekuensi antar-proses komunikasi[ 33] dan untuk meningkatkan frekuensi konteks beralih. [ 33] Di Dalamkenyataan, seperti menebak pada tahun 1995, alasan untuk kinerja yang buruk dari microkernels mungkin juga telah: (1) yang sebenarnya inefisiensi dari seluruh microkernel pendekatan, (2) yang diimplementasikan dalam konsep tertentu mereka microkernels, dan (3) yang tertentu implementasi konsep-konsep. [ 33] Karena itu tetap untuk dikaji jika solusi efisien untuk membangun sebuah microkernel itu, tidak seperti usaha sebelumnya, untuk menerapkan teknik pembangunan yang benar. [ 33]Di ujung lainnya, hierarki domain perlindungan arsitektur yang membawa kepada rancangan yang monolitis kernel[28 ] telah Performa kemunduran setiap kali ada seorang interaksi antara berbagai tingkat perlindungan (iaitu ketika proses telah untuk memanipulasi sebuah struktur data kedua dalam 'user mode' dan 'pengawas mode' ), karena ini memerlukan pesan menyalin dengan nilai. [35]pada pertengahan tahun 1990, kebanyakan peneliti telah meninggalkan kepercayaan bahwa hati tuning dapat mengurangi overhead ini secara dramatis, [pencantuman diperlukan] tetapi baru-baru ini, baru microkernels, dioptimalkan untuk performa, seperti L4 [ 36] dan K42 telah dibahas masalah ini. [verifikasi diperlukan]

hibrida kernel pendekatan menggabungkan kecepatan lebih sederhana dan desain yang monolitis kernel dengan modularity keselamatan dan pelaksanaan dari sebuah microkernel

Hybrid (atau Modular) kernelartikel Utama: HibridaSurya kernel kernel ini digunakan dalam kebanyakan sistem operasi komersial seperti Microsoft Windows NT 3.1, PERJANJIAN BARU 3.5, PERJANJIAN BARU 3,51, PERJANJIAN BARU 4.0, 2000, XP, Vista, 7, 8, dan 8,1 . Apple Inc sendiri Mac OS X menggunakan kernel yang disebut XNU hybrid yang didasarkan pada daftar dari Carnegie Mellon, Mach kernel dan kernel FreeBSD yang monolitik. Mereka adalah sama dengan kernel mikro, kecuali mereka termasuk beberapa kode di dalam kernel tambahan-ruang untuk meningkatkan kinerja. Kernel ini mewakili suatu kompromi yang dilaksanakan oleh beberapa pengembang sebelum telah ditunjukkan bahwa murni kernel mikro dapat memberikan performa yang tinggi. Jenis ini adalah ekstensi kernel-kernel mikro dengan beberapa properti monolitik kernel. Tidak seperti kernel monolitik, jenis ini dari kernel ini tidak dapat memuat modul di runtime pada mereka sendiri. Hybrid kernel ini micro kernel yang memiliki beberapa "non-penting" kode di dalam kernel-ruang untuk kode untuk menjalankan lebih cepat dari itu akan ada untuk user-space. Hybrid kernel adalah sebuah kompromi antara microkernel monolitik dan desain. Ini berarti menjalankan beberapa layanan (seperti jaringan stack atau filesystem) di dalam kernel ruang untuk mengurangi kinerja overhead tradisional microkernel, tetapi masih menjalankan kode kernel (seperti driver perangkat) sebagai server di ruang pengguna.Banyak secara tradisional monolitik kernel ini sekarang sekurang-kurangnya menambahkan (jika tidak aktif mengeksploitasi) modul kemampuan. Yang paling terkenal dari kernel ini merupakan kernel Linux. Kernel modular yang pada dasarnya dapat memiliki bagian yang dibangun di dalam inti binari kernel atau binari yang memuat ke dalam memori pada permintaan. Ianya penting untuk memperhatikan bahawa kode dicemari modul memiliki potensi untuk mendistabilisasi yang menjalankan kernel. Banyak orang menjadi bingung pada titik ini ketika membahas micro kernel. Hal ini dimungkinkan untuk menulis sebuah driver untuk sebuah microkernel yang sama sekali berlainan di ruang memori dan tes ini sebelum "pergi" hidup. Ketika modul kernel dimuat, ia mengakses monolitik bagian, ruang memori dengan menambahkan apa yang perlu, oleh karena itu, membuka pintu untuk memungkinkan polusi. Beberapa keuntungan modular (atau) Hybrid kernel adalah: pengembangan yang Lebih Cepat waktu untuk driver yang dapat beroperasi dari dalam modul. Tidak Ada reboot dibutuhkan untuk pengujian (yang disediakan kernel tidak menggoyahkan). Pada permintaan kemampuan versus menghabiskan waktu mengkompilasi ulang kernel secara keseluruhan untuk hal-hal seperti driver baru atau subsistem. Lebih Cepat dari pihak ketiga integrasi teknologi (berhubungan dengan pembangunan tetapi bersangkutan kepada dirinya sendiri namun).Modul, secara umumnya, berkomunikasi dengan kernel dengan menggunakan modul interface dari beberapa jenis. Interface ini secara amnya (walaupun khusus untuk diberikan sistem operasi) sehingga tidak selalu dapat menggunakan modul. Sering driver perangkat mungkin perlu fleksibilitas lebih dari modul interface dicakup. Pada dasarnya, ini adalah dua panggilan sistem dan sering keselamatan hanya memeriksa yang harus dilakukan sekali dalam monolitik sekarang kernel mungkin dilakukan dua kali. Beberapa dari kekurangan pendekatan modular adalah: Dengan lebih banyak antarmuka untuk lewat, kemungkinan untuk meningkatkan bug ada (yang berarti lebih lubang keamanan). Mempertahankan modul dapat membingungkan bagi beberapa administrator ketika berhadapan dengan masalah seperti simbol perbedaan.Nanokernelsartikel Utama: Nanokernelnanokernel delegasi YANG hampir semua layanan - termasuk bahkan yang paling dasar seperti interrupt controller atau timer - untuk driver perangkat untuk membuat kernel memori persyaratan bahkan lebih kecil dari tradisional microkernel. [37 ]Exokernelsartikel Utama: ExokernelExokernels adalah masih eksperimental pendekatan desain sistem operasi. Mereka berbeda dari jenis lain dari kernel fungsionalitas mereka dalam yang terbatas untuk perlindungan dan division multiplexing baku perangkat keras, menyediakan perangkat keras tidak dicontohkan secara praktis pada bagian atas yang untuk mengembangkan aplikasi. Pemisahan ini dari perangkat keras perlindungan dari manajemen perangkat keras memungkinkan pengembang aplikasi untuk menentukan bagaimana untuk membuat yang paling efisien menggunakan perangkat keras tersedia untuk setiap program tertentu.Exokernels di dalam diri mereka sangat kecil. Namun, mereka didampingi oleh sistem operasi perpustakaan, memberikan pengembang aplikasi dengan fungsionalitas yang konvensional sistem operasi. Keuntungan utama dari exokernel sistem berbasis adalah bahwa mereka dapat menggabungkan beberapa perpustakaan sistem operasi, setiap mengekspor API yang berbeda, misalnya salah satu untuk tingkat tinggi UI pembangunan dan satu untuk real-time kontrol.

SejarahAwal pembangunan kernel kernel sistem operasiartikel Utama: Sejarah sistem operasiKetat berbicara, sebuah sistem operasi (dan dengan itu, sebuah kernel) tidak diperlukan untuk menjalankan sebuah komputer. Program dapat langsung dimuat dan dilaksanakan pada "melahirkan logam" mesin, yang disediakan para penulis-program bersedia untuk bekerja tanpa hardware abstraction atau sistem operasi yang mendukung. Paling awal komputer dioperasikan cara ini selama tahun 1950 dan awal tahun 1960, yang telah reset dan dimuat ulang antara pelaksanaan program yang berbeda. Pada akhirnya, program perwara kecil seperti program loader dan debuggers memori yang tersisa di antara berjalan, atau dimuat dari ROM. Seperti ini telah dikembangkan, mereka membentuk dasar dari apa yang menjadi awal sistem operasi kernel. "Melahirkan logam" pendekatan masih saat ini digunakan pada beberapa konsol permainan video dan embedded system, [ 38] tetapi secara umum, komputer baru menggunakan sistem operasi modern dan kernel.Pada tahun 1969-4000 Multiprogramming Sistem RC diperkenalkan desain sistem falsafah yang kecil inti "di atas yang sistem operasi untuk tujuan yang berbeda dapat dibangun dengan tertib" , [ 39] apa yang disebut sebagai pendekatan microkernel.Waktu-berbagi sistem operasiartikel Utama: Waktu bersamadalam satu dekade sebelumnya Unix, komputer telah tumbuh pesat dari segi kuasa - ke titik di mana komputer operator telah mencari cara baru untuk mendapatkan orang menggunakan waktu luang pada mesin mereka. Salah satu perkembangan utama selama era ini adalah waktu-berbagi, dimana jumlah pengguna akan mendapat potongan kecil dari komputer waktu, dengan kecepatan yang di mana ia menampakkan diri mereka masing-masing terhubung ke mereka sendiri, lebih lambat, mesin. [40 ]perkembangan waktu bersama sistem dipimpin untuk beberapa masalah. Salah satu adalah bahwa pengguna, khususnya di universitas di mana sistem yang dikembangkan, tampak ingin hack sistem CPU untuk mendapatkan lebih banyak waktu. Untuk alasan ini, keamanan dan kontrol akses menjadi fokus utama dari Multics proyek pada tahun 1965. [ 41] Lain berterusan penanganan masalah ini dengan benar sumber daya komputer: pengguna menghabiskan sebagian besar waktunya menatap di layar dan berpikir daripada sebenarnya dengan menggunakan sumber daya komputer, dan waktu sistem pembagian harus memberikan CPU waktu untuk aktif pengguna selama periode ini. Akhirnya, sistem yang biasanya menawarkan sebuah hirarki memori beberapa lapisan mendalam, dan partisi ini membawa kepada sumber daya mahal utama dalam perkembangan sistem memori virtual.Amigaartikel Utama: AmigaOSAmiga Komodor Muda yang dikeluarkan pada tahun 1985, dan adalah antara yang pertama (dan tentu saja paling sukses) komputer untuk fitur arsitektur gabungan. [pencantuman diperlukan] Amiga kernel komponen eksekutif, exec.perpustakaan, menggunakan microkernel penyampaian pesan desain tetapi ada komponen kernel yang lain, seperti grafis.perpustakaan, yang mempunyai akses langsung ke perangkat keras. Tidak ada perlindungan memori dan kernel hampir selalu berjalan di sebuah user mode. Tindakan khusus hanya dijalankan di modus kernel dan user mode aplikasi dapat meminta sistem operasi mereka untuk menjalankan kode mode di kernel.

Unixartikel Utama: Unix

sebuah diagram para pendahulu/pengganti hubungan keluarga untuk Unix-seperti sistem.Selama desain fasa Unix, para programmer memutuskan untuk model setiap tingkat tinggi sebagai sebuah file perangkat, karena mereka percaya bahwa tujuan perkiraan adalah transformasi data. [ 42]misalnya, printer telah digambarkan sebagai "file" di lokasi yang dikenal - ketika data disalin ke file, ia dicetak. Sistem lain, untuk menyediakan fungsi yang sama, cenderung virtualize perangkat pada tingkat yang lebih rendah, yang kedua perangkat dan file akan contoh dari beberapa tingkat bawah konsep. Virtualizing sistem pada tingkat file diizinkan pengguna untuk memanipulasi seluruh sistem mereka menggunakan file yang ada utilitas manajemen dan konsep, secara dramatis menyederhanakan operasi. Sebagai perpanjangan dari paradigma yang sama, Unix memungkinkan para programmer untuk memanipulasi file dengan menggunakan suatu siri program kecil, dengan menggunakan konsep pipa, yang memungkinkan pengguna untuk menyelesaikan operasi dalam tahap, memberi makan sebuah file melalui serangkaian single-tujuan alat bantu. Walaupun hasil akhir yang sama, dengan menggunakan program kecil dalam cara ini secara dramatis meningkatkan fleksibilitas serta kemudahan pengembangan dan penggunaan, mengizinkan user untuk memodifikasi alur kerja mereka dengan menambahkan atau menghapus sebuah program dari rantai tersebut.Dalam Unix model, Sistem Operasi terdiri dari dua bagian pertama, koleksi yang besar dari program utilitas drive yang paling operasi, yang lain adalah kernel yang menjalankan program. [ 42] Di Bawah Unix, dari sudut pandang pemrograman, perbezaan di antara kedua-dua sangatlah tipis, kernel adalah sebuah program, berjalan di pengawas mode, [ 43] yang bertindak sebagai program loader dan pengawas untuk program utilitas kecil membuat seluruh sistem itu, dan untuk memberikan mengunci dan I/O layanan untuk program ini, di luar itu, kernel tidak campur tangan di ruang pengguna.Sepanjang tahun model komputer yang berubah, dan Unix, perlakuan segala sesuatu sebagai sebuah file atau byte aliran tidak lagi adalah sebagai secara universal berlaku seperti sebelumnya. Walaupun sebuah terminal dapat dianggap sebagai sebuah file atau byte stream, yang dicetak untuk atau baca dari, sama nampaknya tidak benar untuk sebuah antarmuka grafis. Jaringan menimbulkan masalah lain. Bahkan jika jaringan komunikasi dapat dibandingkan dengan akses file, low-level paket-oriented architecture berurusan dengan bongkahan diskrit data dan tidak dengan seluruh file. Sebagai kemampuan komputer tumbuh, Unix menjadi semakin cluttered dengan code. Ia juga karena modularity Unix-kernel sering scalable. [44 ] Ketika kernel mungkin mempunyai 100.000 baris kode di dalam jiwa dan eighties, kernel Unix pengganti modern seperti Linux memiliki lebih dari 13 juta garis. [45 ]Modern Unix-derivatif pada umumnya adalah berdasarkan pada modul kernel-memuat monolitik. Contoh ini adalah kernel Linux dalam banyak distribusi serta Berkeley distribusi perangkat lunak varian kernel seperti FreeBSD, DragonflyBSD, OpenBSD, NetBSD, dan Mac OS X selain dari alternatif ini, para pengembang amatir yang aktif menjaga sistem operasi pembangunan masyarakat, diisi dengan diri-tertulis hobi kernel yang sebagian besar berakhir berbagi banyak fitur dengan Linux, FreeBSD, DragonflyBSD, OpenBSD atau NetBSD kernel dan/atau yang kompatibel dengan mereka. [ 46]

Artikel Mac OS utama: Sejarah Mac OSKomputer Apple diluncurkan pertama kali Mac OS pada tahun 1984, dibundel dengan Apple Macintosh komputer pribadi. Apple dipindahkan ke nanokernel rancangan pada Mac OS 8,6. Terhadap ini, Mac OS X adalah berdasarkan pada Darwin, yang menggunakan kernel hybrid disebut XNU, yang dibuat dengan mengkombinasikan 4.3BSD kernel dan Mach kernel. [ 47]Microsoft Windowsartikel Utama: Sejarah Microsoft WindowsMicrosoft Windows pertama kali diluncurkan pada tahun 1985 sebagai sebuah menambahkan-pada MS-DOS. Karena ketergantungan pada sistem operasi yang lain, awal rilis Windows, sebelum Windows 95, dianggap lingkungan operasi (tidak dikelirukan dengan sistem operasi). Lini produk ini terus berkembang melalui tahun 1980 dan tahun 1990 yang mencapai puncaknya dengan rilis Windows seri 9 x (upgrade sistem kemampuan untuk 32 bit pengalamatan dan pre-emptive multi) melalui pertengahan tahun 1990 dan berakhir dengan rilis Windows Aku pada tahun 2000. Juga mengembangkan Microsoft Windows NT, sebuah sistem operasi dimaksudkan untuk high-end dan pengguna bisnis. Baris ini dimulai dengan rilis Windows NT 3.1 pada tahun 1993, dan telah berterusan melalui tahun-tahun 2010 dengan Windows 8 dan Windows Server pada tahun 2012.Rilis Windows XP pada bulan Oktober tahun 2001 membawa Perjanjian Baru versi kernel-pengguna Windows untuk umum, memasang kembali Windows 9 x yang sama sekali berbeda dengan sistem operasi. Arsitektur Windows NT kernel dianggap sebagai sebuah hybrid kernel karena kernel sendiri berisi tugas seperti Window Manager dan IPC Manajer, dengan klien/server model subsistem berlapis. [48 ]Pengembangan MicrokernelsWalaupun Mach, dikembangkan di Carnegie Mellon University dari tahun 1985 ke tahun 1994, adalah yang paling dikenal umum microkernel, microkernels lain telah dikembangkan dengan lebih spesifik bertujuan. L4 microkernel keluarga (terutama L3 dan L4 kernel) telah dibuat untuk menunjukkan bahwa microkernels tidak selalu lambat. [ 36] implementasi Baru seperti BBM dan sedikit balsam dapat menjalankan Linux berikutnya untuk lain L4 proses terpisah di alamat spasi. [ 49] [50 ]Selain itu, QNX adalah microkernel yang tertanam pada prinsipnya digunakan dalam sistem. [51 ]