SISTEM OPERASI MACH

MACH

PENGERTIAN MACH

Mach adalah sebuah sistem operasi kernel yang dikembangkan di Carnegie Mellon University untuk mendukung penelitian sistem operasi, terutama komputasi terdistribusi dan paralel. Ini adalah salah satu contoh awal dari sebuah mikrokernel . derivatif nya adalah dasar dari kernel sistem operasi modern di Mac OS X dan GNU Hurd .

Proyek di Carnegie Mellon lari 1985-1994, berakhir dengan Mach 3.0. Mach dikembangkan sebagai pengganti kernel di BSD versi UNIX , sehingga tidak ada sistem operasi baru harus dirancang sekitarnya. Hari ini percobaan penelitian lebih lanjut tentang Mach tampaknya telah berakhir, meskipun Mach dan turunannya sedang digunakan dalam beberapa sistem operasi komersial, seperti NeXTSTEP dan OPENSTEP , dan terutama Mac OS X menggunakan XNU kernel sistem operasi yang menggabungkan Mach sebagai komponen utama. Virtual sistem manajemen memori Mach juga diadopsi oleh pengembang BSD di CSRG , dan muncul dalam sistem UNIX modern berasal-BSD, seperti FreeBSD . Baik Mac OS X atau FreeBSD mempertahankan struktur mikrokernel dirintis di Mach, walaupun Mac OS X terus menawarkan mikrokernel -proses komunikasi antar dan primitif kontrol untuk digunakan secara langsung oleh aplikasi.

Mach merupakan penerus logis untuk Carnegie Mellon kernel Accent . Pengembang pemimpin proyek Mach, Richard Rasyid , telah bekerja di Microsoft sejak tahun 1991 di posisi tingkat atas berbagai seputar Microsoft Research divisi. Lain dari pengembang Mach asli, Avie Tevanian , adalah mantan kepala perangkat lunak di NeXT , lalu Chief Software Technology Officer di Apple Computer hingga Maret 2006.

NAMA

Menurut Tevanian, “Mach” berasal dari sebuah mispronounciation. Ketika ia dan orang lain menuju makan siang pada hari Pittsburgh hujan menghindari genangan air lumpur, Tevanian bercanda menyarankan bahwa mereka nama mikrokernel baru mereka kotoran, untuk “Multi-User Komunikasi Kernel” atau “Multiprocessor Universal Komunikasi Kernel”. Seorang rekan Italia mispronounced Muck sebagai “Mach”, yang Rashid suka.

 KONSEP MACH

Sejak Mach dirancang sebagai “drop-in” pengganti untuk kernel UNIX tradisional, diskusi ini berfokus pada apa yang membedakan Mach dari UNIX. Ini menjadi jelas konsep awal yang UNIX segalanya as-a-file mungkin tidak praktis pada sistem modern, meskipun beberapa sistem seperti Plan 9 dari Bell Labs telah mencoba cara ini. Namun demikian, mereka menyesalkan pengembang yang sama kehilangan fleksibilitas bahwa konsep asli yang ditawarkan. Tingkat lain virtualisasi dicari yang akan membuat sistem “bekerja” lagi.

Yang penting abstraksi pada UNIX adalah pipa . Yang diperlukan adalah sebuah konsep pipa-seperti yang bekerja di tingkat yang jauh lebih umum, yang memungkinkan berbagai informasi yang luas harus dilalui antara program. Sistem semacam itu memang ada menggunakan proses komunikasi antar (IPC): A-seperti sistem pipa yang akan memindahkan informasi apapun antara dua program, sebagai lawan informasi file-suka. Sementara banyak sistem, termasuk Unix sebagian besar, telah menambahkan berbagai implementasi IPC selama bertahun-tahun, pada saat ini umumnya tujuan khusus perpustakaan hanya benar-benar berguna untuk tugas satu kali.

Carnegie Mellon University mulai eksperimen sepanjang garis bawah kernel Accent proyek, dengan menggunakan sistem IPC yang didasarkan pada memori bersama . Aksen adalah sebuah sistem murni eksperimental dengan banyak fitur, yang dikembangkan dalam mode ad-hoc selama periode waktu dengan kepentingan penelitian berubah. Selain itu, kegunaan Accent untuk penelitian ini terbatas karena tidak UNIX-compatible, dan UNIX sudah de-facto standar untuk hampir semua sistem operasi penelitian. Akhirnya, Accent adalah erat dengan platform perangkat keras di mana ia dikembangkan, dan pada saat di awal 1980-an itu muncul di sana akan segera ledakan platform baru, banyak dari mereka secara massal paralel

Mach dimulai terutama sebagai upaya untuk menghasilkan, bersih-didefinisikan berbasis UNIX, Accent sangat portabel. Hasilnya adalah daftar singkat konsep generik:

  • sebuah ” tugas “adalah obyek yang terdiri dari serangkaian sumber daya sistem yang memungkinkan” benang “untuk menjalankan
  • sebuah ” thread “adalah satu unit eksekusi, ada di dalam konteks tugas dan saham sumber daya tugas’s
  • a ” port “adalah dilindungi antrian pesan untuk komunikasi antara tugas-tugas; tugas sendiri mengirim dan menerima hak masing-masing port
  • pesan “adalah koleksi objek data diketik, mereka hanya dapat dikirim ke port – bukan pekerjaan spesifik atau benang

Mach dikembangkan pada konsep Accent’s IPC, tapi membuat sistem yang jauh lebih UNIX-seperti di alam, bahkan mampu menjalankan program UNIX dengan sedikit modifikasi atau tidak. Untuk melakukan ini, Mach memperkenalkan konsep port, mewakili setiap titik akhir dari arah IPC dua. Pelabuhan memiliki keamanan dan hak-hak seperti file di bawah UNIX, yang memungkinkan model UNIX-seperti sangat perlindungan untuk diterapkan kepada mereka. Selain itu, Mach memungkinkan setiap program untuk menangani hak-hak istimewa yang biasanya akan diberikan kepada sistem operasi saja, untuk memungkinkan pengguna ruang program untuk menangani hal-hal seperti berinteraksi dengan hardware.

Dalam Mach, dan seperti UNIX, sistem operasi lagi menjadi terutama kumpulan utilitas. Seperti halnya UNIX, Mach terus konsep driver untuk penanganan hardware. Oleh karena itu semua driver untuk hardware ini harus dimasukkan dalam mikrokernel itu. Arsitektur-arsitektur lain berdasarkan Hardware Abstraction Layer atau exokernels bisa memindahkan driver dari mikrokernel itu.

Perbedaan utama dengan UNIX adalah alih-alih penanganan utilitas file, mereka bisa menangani “tugas”. Lebih operasi sistem kode dipindahkan keluar dari kernel dan ke pengguna ruang, menghasilkan kernel yang lebih kecil banyak dan munculnya istilah mikrokernel . Tidak seperti sistem tradisional, di bawah Mach proses, atau “tugas”, dapat terdiri dari sejumlah benang. Meskipun hal ini umum dalam sistem modern, Mach adalah sistem pertama untuk mendefinisikan tugas dan benang dengan cara ini. Tugas kernel berkurang dari dasarnya menjadi sistem operasi untuk menjaga “utilitas” dan penjadwalan akses mereka ke perangkat keras.

Keberadaan pelabuhan dan penggunaan IPC mungkin perbedaan paling mendasar antara Mach dan kernel tradisional. Dalam UNIX, memanggil kernel terdiri dari sebuah operasi yang dikenal sebagai syscall atau perangkap . Program ini menggunakan perpustakaan untuk menempatkan data di lokasi yang dikenal baik di memori dan kemudian menyebabkan kesalahan , jenis kesalahan. Ketika sistem pertama kali dimulai kernel dibentuk untuk menjadi “handler” dari semua kesalahan, sehingga ketika program menyebabkan kesalahan kernel mengambil alih, meneliti informasi dilewati, dan kemudian melaksanakan instruksi.

Di bawah Mach, sistem IPC digunakan untuk peran ini sebagai gantinya. Dalam rangka untuk memanggil fungsi sistem, program akan meminta kernel untuk akses ke pelabuhan, lalu menggunakan sistem IPC untuk mengirim pesan ke port tersebut. Meskipun pesan yang dipicu oleh syscalls karena mereka akan berada di kernel lainnya, di bawah Mach itu hampir semua kernel melakukan penanganan permintaan aktual akan sampai dengan program lain.

Penggunaan IPC untuk pesan lewat manfaat dukungan untuk benang dan concurrency. Sejak tugas terdiri dari beberapa thread, dan itu adalah kode dalam benang yang menggunakan mekanisme IPC, Mach mampu membekukan dan mencairkan benang saat pesan ditangani. Hal ini memungkinkan sistem yang akan didistribusikan ke beberapa prosesor, baik menggunakan memori bersama langsung seperti dalam pesan Mach sebagian besar, atau dengan menambahkan kode untuk menyalin pesan ke prosesor lain jika diperlukan. Dalam sebuah kernel tradisional ini sulit untuk menerapkan, sistem harus memastikan bahwa program yang berbeda tidak mencoba untuk menulis ke memori yang sama dari prosesor yang berbeda. Mach bawah ini didefinisikan dengan baik dan mudah diimplementasikan, itu adalah proses yang sangat untuk mengakses bahwa memori, port, yang dibuat warga kelas satu sistem.

Sistem IPC awalnya memiliki masalah kinerja, sehingga beberapa strategi dikembangkan untuk meminimalkan dampak. Seperti pendahulunya, Accent , Mach menggunakan mekanisme shared-memori tunggal untuk fisik lewat pesan dari satu program ke yang lain. Secara fisik menyalin pesan akan terlalu lambat, sehingga Mach bergantung pada mesin unit manajemen memori (MMU) untuk segera memetakan data dari satu program ke yang lain. Hanya jika data ini ditulis untuk akan itu harus disalin secara fisik, proses yang dikenal sebagai copy-on-write .

Pesan juga diperiksa validitas oleh kernel, untuk menghindari data yang buruk menerjang salah satu dari banyak program yang membentuk sistem. Pelabuhan sengaja dimodelkan pada konsep sistem berkas UNIX. Hal ini memungkinkan pengguna untuk menemukan port menggunakan konsep file system navigasi yang ada, serta menetapkan hak dan izin karena mereka akan pada sistem file.

Pembangunan di bawah sistem seperti ini akan lebih mudah. Tidak hanya akan kode yang sedang bekerja pada ada dalam program tradisional yang bisa dibangun dengan menggunakan alat yang ada, bisa juga dimulai, debug dan membunuh dengan menggunakan alat yang sama. Dengan monokernel bug dalam kode baru akan mengambil seluruh mesin dan memerlukan reboot, sedangkan di bawah Mach ini akan memerlukan hanya bahwa program akan restart. Selain itu pengguna dapat menyesuaikan sistem tersebut untuk menyertakan atau mengecualikan, apapun fitur yang diperlukan. Karena sistem operasi hanyalah kumpulan program, mereka bisa menambah atau menghapus bagian dengan hanya berjalan atau membunuh mereka karena mereka akan program lain.

Akhirnya, di bawah Mach, semua fitur tersebut sengaja dirancang untuk menjadi sangat platform netral. Untuk mengutip satu teks pada Mach:

Tidak seperti UNIX, yang dikembangkan tanpa memperhatikan multiprocessing, Mach menggabungkan multiprocessing dukungan seluruh. dukungan multiprocessing adalah juga sangat fleksibel, mulai dari sistem memori yang digunakan pada sistem tanpa memori bersama antara prosesor. Mach dirancang untuk berjalan pada sistem komputer mulai dari satu sampai ribuan prosesor. Selain itu, Mach mudah porting ke banyak arsitektur komputer bervariasi. Tujuan utama dari Mach adalah untuk menjadi sebuah sistem terdistribusi mampu berfungsi pada hardware heterogen.

Ada sejumlah kelemahan, namun. Yang satu relatif biasa adalah bahwa hal itu tidak jelas bagaimana menemukan port. Pada UNIX masalah ini diselesaikan dari waktu ke waktu sebagai programmer menyetujui sejumlah “terkenal” lokasi dalam sistem file untuk melayani berbagai tugas. Sementara ini pendekatan yang sama bekerja untuk pelabuhan Mach juga, di bawah sistem operasi Mach diasumsikan jauh lebih cair, dengan port muncul dan menghilang sepanjang waktu. Tanpa beberapa mekanisme untuk mencari port dan jasa mereka mewakili, banyak fleksibilitas ini akan hilang.

 

PEMBANGUNAN

Mach awalnya host sebagai kode tambahan tertulis langsung ke dalam kernel 4.2BSD yang ada, yang memungkinkan tim untuk bekerja pada sistem jauh sebelum hal ini selesai. Pekerjaan dimulai dengan Accent sudah fungsional IPC / sistem pelabuhan, dan pindah ke bagian penting lain dari OS, tugas dan benang dan memori virtual. Sebagai bagian telah diselesaikan berbagai bagian dari sistem BSD yang ditulis ulang untuk memanggil ke Mach, dan perubahan ke 4.3BSD juga dilakukan selama proses ini.

Pada 1986 sistem ini lengkap untuk titik yang dapat menjalankan sendiri terhadap VAX Desember . Meskipun melakukan sedikit nilai praktis, tujuan pembuatan sebuah mikrokernel terwujud. Ini segera diikuti oleh versi pada IBM PC / RT dan untuk Sun Microsystems 68.030 berdasarkan workstation-, membuktikan sistem portabilitas. Pada tahun 1987 daftar termasuk Multimax Encore dan Sekuen Saldo mesin, pengujian kemampuan Mach untuk berjalan pada sistem multiprosesor. Sebuah publik Release 1 dibuat tahun itu, dan Release 2 mengikuti tahun depan.

Sepanjang waktu ini janji mikrokernel “benar” belum yang disampaikan. Mach ini versi awal termasuk mayoritas 4.3BSD di kernel, sistem yang dikenal sebagai Server POE, sehingga kernel yang sebenarnya lebih besar dari UNIX itu didasarkan pada. Ide, bagaimanapun, adalah untuk memindahkan keluar UNIX lapisan kernel ke user-space, di mana ia bisa lebih mudah dikerjakan dan bahkan diganti langsung. Sayangnya kinerja terbukti menjadi masalah besar, dan sejumlah perubahan arsitektur dilakukan dalam rangka untuk memecahkan masalah ini. Berat UNIX masalah lisensi juga mengganggu peneliti, jadi ini upaya awal untuk menyediakan lingkungan sistem non-lisensi UNIX-seperti terus mencari digunakan, baik ke dalam perkembangan lebih lanjut dari Mach.

Yang dihasilkan Mach 3 dirilis pada tahun 1990, dan menghasilkan bunga intens. Sebuah tim kecil telah membangun Mach dan porting ke berbagai platform, termasuk sistem multiprosesor kompleks yang menyebabkan masalah serius bagi kernel lama-gaya. Ini minat yang besar dihasilkan di pasar komersial, di mana sejumlah perusahaan berada di tengah-tengah mempertimbangkan untuk mengubah platform perangkat keras. Jika sistem yang ada bisa porting untuk berjalan pada Mach, tampaknya kemudian akan mudah untuk mengubah platform di bawahnya.

Mach menerima dorongan utama dalam visibilitas ketika Open Software Foundation (OSF) mengumumkan mereka akan menjadi tuan versi mendatang OSF / 1 pada Mach 2.5, dan sedang menyelidiki Mach 3 juga. Mach 2,5 juga dipilih untuk NeXTSTEP sistem dan sejumlah vendor multiprosesor komersial. Mach 3 menyebabkan sejumlah upaya ke pelabuhan bagian sistem operasi lain untuk mikrokernel, termasuk IBM ‘s Workplace OS dan beberapa upaya oleh Apple Computer untuk membangun sebuah cross-platform versi dari Mac OS .

Untuk beberapa waktu tampak bahwa setiap sistem operasi masa depan akan menggunakan Mach sebagai kernel dengan akhir 1990-an.

 

MASALAH KINERJA

Mach pada awalnya ditujukan untuk menjadi pengganti untuk UNIX monolitik klasik, dan untuk alasan ini berisi ide-ide UNIX-seperti banyak. Sebagai contoh, Mach menggunakan sistem permissioning dan keamanan berpola pada sistem file UNIX. Sejak kernel beruntung (berjalan di kernel-space) di atas server OS lainnya dan software, adalah mungkin untuk rusak atau program berbahaya untuk mengirimkan perintah yang akan menyebabkan kerusakan pada sistem, dan untuk alasan ini kernel memeriksa setiap pesan untuk validitas . Selain itu sebagian besar fungsi sistem operasi itu harus terletak dalam program user-space, jadi ini berarti harus ada beberapa cara untuk kernel untuk memberikan hak istimewa tambahan program-program ini, untuk beroperasi pada perangkat keras misalnya.

Beberapa fitur Mach lebih esoteris juga didasarkan pada mekanisme IPC yang sama. Misalnya, Mach mampu mendukung mesin multi-prosesor dengan mudah. Dalam sebuah kernel tradisional pekerjaan yang luas perlu dilakukan untuk membuatnya reentrant atau interruptible, sebagai program yang berjalan pada prosesor yang berbeda bisa menelepon ke kernel pada saat yang sama. Di bawah Mach, bit-bit dari sistem operasi terisolasi di server, yang dapat menjalankan, seperti program lain, pada setiap prosesor. Meskipun secara teori kernel Mach juga harus reentrant, dalam prakteknya ini tidak masalah karena waktu respon yang begitu cepat itu hanya dapat menunggu dan melayani permintaan pada gilirannya. Mach juga termasuk server yang bisa meneruskan pesan tidak hanya antara program, tetapi bahkan melalui jaringan, yang merupakan bidang pengembangan intens di akhir 1980-an dan awal 1990-an.

Sayangnya, penggunaan IPC untuk hampir semua tugas ternyata memiliki dampak kinerja yang serius. Tingkatan yang dicapai pada tahun 1997 perangkat keras menunjukkan bahwa Mach 3.0 berbasis UNIX server tunggal implementasi sekitar 50% lebih lambat dari UNIX asli.

Studi menunjukkan sebagian besar ini memukul kinerja, 73% dengan satu ukuran, adalah karena overhead dari IPC. Dan ini diukur pada sistem dengan server besar tunggal menyediakan sistem operasi, melanggar sistem operasi turun lebih lanjut ke server kecil hanya akan membuat masalah lebih buruk. Tampaknya tujuan koleksi-of-server hanyalah tidak mungkin.

Banyak upaya dilakukan untuk meningkatkan kinerja dan microkernels Mach Mach-seperti, tetapi dengan pertengahan 1990-an banyak kepentingan intens awal telah meninggal. Konsep sistem operasi berbasis pada IPC tampaknya mati, gagasan itu sendiri cacat.

Bahkan, studi lebih lanjut tentang sifat yang tepat dari masalah kinerja muncul sejumlah fakta menarik. Salah satunya adalah bahwa IPC itu sendiri tidak masalah: ada beberapa overhead yang terkait dengan pemetaan memori yang dibutuhkan untuk mendukungnya, tapi ini hanya menambahkan sedikit waktu untuk membuat panggilan. Sisanya, 80% dari waktu dibelanjakan, ini disebabkan tugas-tugas tambahan kernel berjalan pada pesan. Primer antaranya adalah hak memeriksa pelabuhan dan validitas pesan. Dalam benchmark pada 486 DX-50, panggilan standar sistem UNIX mengambil rata-rata 21 mikrodetik untuk menyelesaikan, sementara operasi setara dengan rata-rata 114μs Mach IPC. Hanya 18μs ini adalah hardware terkait; sisanya adalah Mach kernel yang berjalan berbagai rutinitas pesan. Mengingat syscall yang tidak apa-apa, perjalanan penuh putaran bawah BSD akan membutuhkan sekitar 40μs, sedangkan pada ruang-user Mach sistem itu akan mengambil hanya di bawah 500μs.

Ketika pertama kali Mach yang serius digunakan dalam versi 2.x, kinerja lambat dari sistem operasi tradisional monolitik, mungkin sebanyak 25%. Biaya ini tidak dianggap sangat mengkhawatirkan, bagaimanapun, karena sistem itu juga menawarkan multi-prosesor dukungan dan portabilitas mudah. Banyak yang merasa ini adalah biaya yang diharapkan dan dapat diterima untuk membayar. Ketika Mach 3 mencoba untuk memindahkan sebagian besar sistem operasi ke user-space, overhead menjadi lebih tinggi masih: benchmark antara Mach dan ULTRIX pada MIPS R3000 hit kinerja yang sama besarnya 67% pada beberapa beban kerja. menunjukkan

Sebagai contoh, mendapatkan waktu sistem melibatkan panggilan IPC ke-ruang server pengguna mempertahankan jam sistem . Penelepon perangkap pertama ke kernel, menyebabkan context switch dan pemetaan memori. Kernel kemudian memeriksa bahwa pemanggil memiliki hak akses yang diperlukan dan bahwa pesan tersebut valid. Jika ya, ada context switch lain dan pemetaan memori untuk menyelesaikan panggilan ke server user-space. Proses itu harus diulang kembali hasil, menambahkan sampai total empat switch konteks dan pemetaan memori, ditambah dua verifikasi pesan. overhead ini dengan layanan cepat senyawa yang lebih kompleks, di mana sering ada kode jalan melewati banyak server.

Ini bukan satu-satunya sumber masalah kinerja. Lain berpusat pada masalah mencoba untuk menangani memori dengan benar bila memori fisik berlari rendah dan paging harus terjadi. Dalam sistem operasi tradisional monolitik para penulis memiliki pengalaman langsung dengan bagian mana dari kernel yang disebut yang lain, yang memungkinkan mereka untuk fine tune pager mereka untuk menghindari paging keluar kode yang hendak digunakan. Di bawah Mach ini tidak mungkin karena kernel tidak tahu sebenarnya apa yang terdiri dari sistem operasi. Sebaliknya mereka harus menggunakan satu satu ukuran cocok untuk semua solusi yang ditambahkan ke masalah kinerja. Mach 3 berusaha untuk mengatasi masalah ini dengan menyediakan pager sederhana, mengandalkan pager pengguna-ruang untuk spesialisasi yang lebih baik. Tapi ini ternyata memiliki pengaruh yang kecil. Dalam prakteknya, setiap manfaat yang telah musnah oleh IPC mahal diperlukan untuk menyebutnya masuk

masalah kinerja lainnya adalah yang berkaitan dengan kita mendukung Mach untuk multiprosesor sistem. Dari pertengahan 1980-an awal 1990-an, CPU komoditas tumbuh dalam kinerja dengan laju sekitar 60% per tahun, namun kecepatan akses memori tumbuh hanya 7% per tahun. Ini berarti bahwa biaya memori mengakses tumbuh pesat selama periode ini, dan karena Mach didasarkan pada pemetaan memori di antara program-program, setiap “cache miss” dibuat IPC panggilan lambat.

Terlepas dari keuntungan dari pendekatan Mach, ini macam hits kinerja dunia nyata itu hanya tidak dapat diterima. Sebagai tim lain menemukan jenis hasil yang sama, antusiasme Mach awal dengan cepat menghilang. Setelah waktu yang singkat banyak dalam pengembangan masyarakat tampaknya untuk menyimpulkan bahwa seluruh konsep menggunakan IPC sebagai dasar dari suatu sistem operasi adalah pada dasarnya cacat.

SOLUSI POTENSI

IPC overhead merupakan masalah besar bagi Mach 3 sistem. Namun, konsep sistem operasi server-multi masih menjanjikan, meskipun masih memerlukan penelitian. Para pengembang harus berhati-hati untuk mengisolasi kode ke modul yang tidak panggilan dari server ke server. Sebagai contoh, sebagian besar kode jaringan akan ditempatkan dalam sebuah server tunggal, sehingga meminimalkan IPC untuk tugas-tugas jaringan normal.

Kebanyakan pengembang bukannya terjebak dengan konsep POE asli dari sebuah server tunggal yang besar menyediakan fungsi sistem operasi. Untuk memudahkan pembangunan, mereka mengizinkan server untuk menjalankan sistem operasi baik di user-space atau kernel-space. Hal ini memungkinkan mereka untuk berkembang di user-space dan memiliki semua keuntungan dari ide Mach asli, dan kemudian memindahkan server debugged ke kernel-space untuk mendapatkan kinerja yang lebih baik. Beberapa sistem operasi sejak dibangun menggunakan metode ini, dikenal sebagai co-lokasi, di antaranya Lites , MkLinux , OSF / 1 dan NeXTSTEP / OPENSTEP / Mac OS X ini. mikrokernel Chorus membuat fitur ini suatu sistem dasar, yang memungkinkan server untuk akan dibangkitkan ke dalam ruang kernel menggunakan built-in mekanisme.

Mach 4 berusaha untuk mengatasi masalah ini, kali ini dengan satu set yang lebih radikal upgrade. Secara khusus, ditemukan bahwa kode program yang biasanya tidak dapat ditulis, sehingga potensi hits akibat copy-on-write yang langka. Jadi masuk akal untuk tidak peta memori antara program-program untuk IPC, tapi bermigrasi kode program yang digunakan ke dalam ruang lokal program. Hal ini menyebabkan konsep “angkutan” dan tampaknya kinerja membaik, namun para pengembang pindah dengan sistem dalam keadaan semi-digunakan. Mach 4 juga memperkenalkan built-in primitif co-lokasi, membuatnya menjadi bagian dari kernel itu sendiri.

Pada pertengahan 1990-an, bekerja pada sistem mikrokernel sebagian besar mati, meskipun pasar umumnya percaya bahwa semua sistem operasi modern akan mikrokernel didasarkan oleh 1990-an. Menggunakan luas yang tersisa dari kernel Mach adalah Apple Mac OS X dan IOS saudaranya, yang berjalan di atas kernel Mach 3 banyak dimodifikasi.

 

GENERASI MICROKERNELS KEDUA

 

Analisis lebih lanjut menunjukkan bahwa masalah kinerja IPC tidak begitu jelas seperti yang terlihat. Ingatlah bahwa sisi-tunggal syscall seorang mengambil 20μs bawah BSD dan 114μs pada Mach berjalan pada sistem yang sama. Dari 114, 11 orang karena context switch, identik dengan BSD. Sebuah 18 tambahan digunakan oleh MMU untuk memetakan pesan antara user space dan ruang kernel. Ini artinya hanya 31μs, lebih dari satu syscall tradisional, tetapi tidak banyak.

Sisanya, sebagian besar dari masalah yang sebenarnya, adalah karena kernel menjalankan tugas-tugas seperti memeriksa pesan untuk hak akses pelabuhan. Meskipun tampaknya hal ini merupakan masalah keamanan yang penting, pada kenyataannya, hanya masuk akal dalam sistem UNIX-like. Misalnya, pengguna sistem operasi tunggal menjalankan ponsel atau robot mungkin tidak membutuhkan fitur tersebut, dan ini adalah persis seperti sistem dimana Mach pick-dan-memilih sistem operasi akan sangat berharga. Demikian juga Mach menyebabkan masalah ketika memori telah dipindahkan oleh sistem operasi, tugas lain yang hanya benar-benar masuk akal jika sistem memiliki lebih dari satu ruang alamat. DOS dan awal Mac OS memiliki ruang alamat tunggal yang besar bersama oleh semua program, jadi di bawah pemetaan sistem ini adalah buang-buang waktu.

Realisasi ini menyebabkan serangkaian microkernels generasi kedua , yang selanjutnya mengurangi kompleksitas sistem dan ditempatkan hampir semua fungsionalitas di ruang pengguna. Misalnya, kernel L4 (versi 2) hanya mencakup tujuh sistem panggilan dan menggunakan 12k memori, sedangkan Mach 3 mencakup sekitar 140 fungsi dan menggunakan sekitar 330k memori. IPC panggilan di bawah L4 pada 486DX-50 mengambil hanya 5μs, lebih cepat daripada syscall UNIX pada sistem yang sama, dan lebih dari 20 kali lebih cepat sebagai Mach. Tentu saja hal ini mengabaikan fakta bahwa L4 tidak menangani permissioning atau keamanan, tetapi dengan meninggalkan ini untuk program-program user-space, mereka dapat memilih sebanyak atau sedikit overhead karena mereka membutuhkan.

Kinerja keuntungan potensial L4 yang marah oleh kenyataan bahwa ruang-aplikasi pengguna akan sering harus menyediakan banyak fungsi sebelumnya yang didukung oleh kernel. Untuk menguji kinerja end-to-end, MkLinux dalam mode co-terletak dibandingkan dengan port L4 berjalan di user-space. L4 ditambahkan sekitar 5% -10% overhead, dibandingkan dengan 15% Mach, semua semakin menarik mengingat konteks double switch diperlukan.

Microkernels ini baru telah merevitalisasi industri secara keseluruhan, dan proyek-proyek seperti GNU Hurd telah menerima perhatian baru sebagai hasilnya.

 

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: