Lompat ke isi

Mikrokernel: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Jazle (bicara | kontrib)
k penyesuaian kosmetik
InternetArchiveBot (bicara | kontrib)
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.2
 
(36 revisi perantara oleh 24 pengguna tidak ditampilkan)
Baris 1: Baris 1:
[[Image:OS-structure.svg|thumb|450px|Stuktur sistem operasi berbasis mikrokernel monolitik]]
[[Berkas:OS-structure.svg|jmpl|450px|Stuktur sistem operasi berbasis mikrokernel monolitik]]
Dalam pengetahuan [[Ilmu Komputer]], mikrokernel merupakan modul inti yang meyediakan beragam mekanisme yang dibutuhkan untuk mengembangkan sebuah [[Sistem Operasi|sistem operasi]], seperti halnya manajemen pengalamatan ruang tingkat rendah, manajemen [[thread]], dan [[Interprocess Communication|komunikasi antar proses]]. Dalam implementasinya mikrokernel merupakan satu-satunya perangkat lunak yang berjalan dengan tingkat kewenangan tertinggi (umumnya disebut sebagai modus supervisor atau modus kernel) dari serangkaian level kewenangan yang tersedia pada perangkat kerasnya. Layanan yang disediakan oleh sebuah sistem operasi beberapa diantaranya adalah [[device driver]], protokol jaringan, [[Sistem berkas]], dan kode [[antarmuka pengguna]] yang berada dalam ruang pengguna.
Dalam pengetahuan [[Ilmu Komputer]], '''mikrokernel''' merupakan seperangkat [[perangkat lunak]] dalam jumlah minimum yang meyediakan beragam mekanisme dasar yang dibutuhkan untuk bekerja sebagai sebuah [[Sistem Operasi|sistem operasi]], seperti halnya manajemen pengalamatan ruang tingkat rendah, manajemen [[thread]], dan [[Interprocess Communication|komunikasi antar proses]]. Dalam implementasinya mikrokernel merupakan satu-satunya perangkat lunak yang berjalan dengan tingkat kewenangan tertinggi (umumnya disebut sebagai modus supervisor atau modus kernel) dari serangkaian level kewenangan yang tersedia pada perangkat kerasnya. Layanan yang disediakan oleh sebuah sistem operasi beberapa diantaranya adalah [[device driver]], protokol jaringan, [[sistem berkas]], dan kode [[antarmuka pengguna]] yang berada dalam ruang pengguna.


Mikrokernel sangat erat terkait dengan exokernel<ref name="Liedtke_96">{{cite journal
Mikrokernel sangat erat terkait dengan exokernel<ref name="Liedtke_96">{{cite journal
Baris 11: Baris 11:
| volume = 39
| volume = 39
| issue = 9
| issue = 9
| pages = 70&ndash;77
| pages = 70–77
| issn =
| issn =
| pmid =
| pmid =
Baris 24: Baris 24:
| laydate =
| laydate =
| quote =
| quote =
}}</ref>
}}</ref>
, serta memiliki banyak kesamaan dengan hypervisor.<ref name="Heiser_UL_06">{{cite journal
, serta memiliki banyak kesamaan dengan hypervisor.<ref name="Heiser_UL_06">{{cite journal
| title=Are Virtual-Machine Monitors Microkernels Done Right?
| title=Are Virtual-Machine Monitors Microkernels Done Right?
Baris 32: Baris 32:
| issue=1
| issue=1
| pages=95–99
| pages=95–99
| month=January
| month=January
| year=2006
| year=2006
| url=http://l4ka.org/publications/2006/p95-heiser.pdf
| url=http://l4ka.org/publications/2006/p95-heiser.pdf
| publisher=ACM
| publisher=ACM
| doi = 10.1145/1113361.1113363 <!--Retrieved from CrossRef by DOI bot-->
| doi=10.1145/1113361.1113363 <!--Retrieved from CrossRef by DOI bot-->
| format=PDF}}</ref>
| format=PDF
| access-date=2009-03-23
namun implementasinya lebih bersifat minimalis, dan secara spesifik untuk mendukung pengimplementasian [[Mesin virtual|mesin virtual]]. mikrokernel L4 sering juga disebut sebagai hypervisor, yang mengindikasikan kemungkinan pengimplementasian sebuah mikrokernel sebagai hypervisor. Istilah nanokernel dalam sejarahnya digunakan untuk membedakan mikrokernel saat ini dengan istilah mikrokernel sebelumnya yang menyediakan layanan sistem aktual, namun secara prinsip minimalitas menurut Jochen Liedtke dalam disain mikrokernel L4 menyebutkan bahwa istilah-istilah tersebut memiliki arti yang kurang lebih sama.
| archive-date=2008-05-09
| archive-url=https://web.archive.org/web/20080509165551/http://l4ka.org/publications/2006/p95-heiser.pdf
| dead-url=yes
}}</ref>
namun implementasinya lebih bersifat minimalis, dan secara spesifik untuk mendukung pengimplementasian [[mesin virtual]]. Mikrokernel L4 sering juga disebut sebagai ''hypervisor'', yang mengindikasikan kemungkinan pengimplementasian sebuah mikrokernel sebagai ''hypervisor''. Istilah nanokernel dalam sejarahnya digunakan untuk membedakan mikrokernel saat ini dengan istilah mikrokernel sebelumnya yang menyediakan layanan sistem aktual, tetapi secara prinsip minimalitas menurut Jochen Liedtke dalam disain mikrokernel L4 menyebutkan bahwa istilah-istilah tersebut memiliki arti yang kurang lebih sama.


== Pendahuluan ==
== Pendahuluan ==
Pada mulanya, kernel sistem operasi umumnya berukuran kecil, penyebabnya adalah besarnya [[Ingatan|ingatan]] komputer yang terbatas. Dengan semakin berkembangnya kapabiltas komputer, jumlah perangkat yang harus dikontrol oleh suatu kernel menjadi meningkat pula. Namun pada masa-masa awal sejarah sistem operasi [[UNIX|unix]], kernel pada umumnya berukuran kecil, meskipun kernel-kernel tersebut menyediakan [[Device driver|device driver]] dan pengatur [[Sistem berkas|sistem berkas]]. Saat pengalamatan ruang meningkat dari 16 menjadi 32 bit, disain kernel diubahsuai menjadi tidak lagi bergantung pada arsitektur perangkat keras yang ada, dan ukuran kernel pun mulai tumbuh membesar.
Pada mulanya, kernel sistem operasi umumnya berukuran kecil, penyebabnya adalah besarnya [[ingatan]] komputer yang terbatas. Dengan semakin berkembangnya kapabilitas komputer, jumlah perangkat yang harus dikendalikan oleh suatu kernel menjadi meningkat pula. Namun pada masa-masa awal sejarah sistem operasi [[UNIX|unix]], kernel pada umumnya berukuran kecil, meskipun kernel-kernel tersebut menyediakan [[device driver]] dan pengatur [[sistem berkas]]. Saat pengalamatan ruang meningkat dari 16 menjadi 32 bit, disain kernel diubahsuai menjadi tidak lagi bergantung pada arsitektur perangkat keras yang ada, dan ukuran kernel pun mulai tumbuh membesar.


Berkeley [[UNIX]] ([[BSD]]) tercatat sebagai yang memulai era kernel berukuran besar. Sebagai tambahan dari pengoperasian sistem yang paling mendasar seperti [[CPU]], media penyimpanan, dan [[pencetak]], BSD mulai menambahkan [[Sistem berkas|sistem berkas]], sistem jaringan TCP/IP yang lengkap, dan sejumlah perangkat "virtual" yang mengijinkan program yang ada untuk bekerja secara tersembunyi pada jaringan. Pertumbuhan ini berlanjut selama beberapa dekade dan menyebabkan kernel yang ada saat ini terdiri hingga jutaan baris kode. Sebagai akibat dari pertumbuhan ini pun, kernel yang ada saat ini lebih rentan terhadap [[Bug|bug]] dan menjadi lebih sulit untuk dikelola.
Berkeley [[UNIX]] ([[BSD]]) tercatat sebagai yang memulai era kernel berukuran besar. Sebagai tambahan dari pengoperasian sistem yang paling mendasar seperti [[CPU]], media penyimpanan, dan [[pencetak]], BSD mulai menambahkan [[sistem berkas]], sistem jaringan TCP/IP yang lengkap, dan sejumlah perangkat "virtual" yang mengizinkan program yang ada untuk bekerja secara tersembunyi pada jaringan. Pertumbuhan ini berlanjut selama beberapa dekade dan menyebabkan kernel yang ada saat ini terdiri hingga jutaan baris kode. Sebagai akibat dari pertumbuhan ini pun, kernel yang ada saat ini lebih rentan terhadap [[bug]] dan menjadi lebih sulit untuk dikelola.


Mikrokernel didisain untuk mengatasi permasalahan yang disebabkan karena pertumbuhan kernel yang membesar dan kesulitan mengelolanya. Secara teori, disain mikrokernel mengijinkan pengelolaan kode yang lebih mudah karena arsitekturnya yang mendistribusikan layanan pada area ruang pengguna. Pengimplementasian seperti ini berdampak positif pula pada peningkatan keamanan dan stabilitas sistem disebabkan karena menurunnya jumlah kode yang berjalan pada modus kernel. Sebagai contoh, jika layanan jaringan tidak bekerja karena serangan ''buffer overflow'', sistem lainnya masih dapat berfungsi secara normal.
Mikrokernel dirancang untuk mengatasi permasalahan yang disebabkan karena pertumbuhan kernel yang membesar dan kesulitan mengelolanya. Secara teori, desain mikrokernel mengizinkan pengelolaan kode yang lebih mudah karena arsitekturnya yang mendistribusikan layanan pada area ruang pengguna. Pengimplementasian seperti ini berdampak positif pula pada peningkatan keamanan dan stabilitas sistem disebabkan karena menurunnya jumlah kode yang berjalan pada modus kernel. Sebagai contoh, jika layanan jaringan tidak bekerja karena serangan ''buffer overflow'', sistem lainnya masih dapat berfungsi secara normal.


== Komunikasi antarproses ==
== Komunikasi antarproses ==
[[Interprocess Communication|Komunikasi antarproses]] (IPC) merupakan suatu mekanisme yang memungkinkan beberapa proses yang terpisah untuk saling berkomunikasi satu dengan lainnya, umumnya hal ini dilakukan dengan memanfaatkan mekanisme pengiriman pesan. Selain itu ingatan berbagi (''shared memory'') secara spesifik juga sering pula digunakan sebagai salah satu mekanisme komunikasi antarproses, namun demikian, umumnya makna IPC lebih mengarah pada komunikasi memanfaatkan mekanisme pengiriman pesan, dan lebih lanjut menjadi relevan terhadap mekanisme yang digunakan pada mikrokernel. IPC mengijinkan sistem operasi dibuat dari sejumlah program kecil yang disebut pelayan, yang digunakan oleh program lainnya dalam sistem, melalui IPC sebagai mediator. Hampir dari semua dukungan atas periferal perangkat keras ditangani memalui cara ini, dengan peladen atas device driver, protokol jaringan, sistem berkas, grafis, dan lain-lain.
[[Interprocess Communication|Komunikasi antarproses]] (IPC) merupakan suatu mekanisme yang memungkinkan beberapa proses yang terpisah untuk saling berkomunikasi satu dengan lainnya, umumnya hal ini dilakukan dengan memanfaatkan mekanisme pengiriman pesan. Selain itu ingatan berbagi (''shared memory'') secara spesifik juga sering pula digunakan sebagai salah satu mekanisme komunikasi antarproses, tetapi demikian, umumnya makna IPC lebih mengarah pada komunikasi memanfaatkan mekanisme pengiriman pesan, dan lebih lanjut menjadi relevan terhadap mekanisme yang digunakan pada mikrokernel. IPC mengizinkan sistem operasi dibuat dari sejumlah program kecil yang disebut pelayan, yang digunakan oleh program lainnya dalam sistem, melalui IPC sebagai mediator. Hampir dari semua dukungan atas periferal perangkat keras ditangani melalui cara ini, dengan peladen atas device driver, protokol jaringan, sistem berkas, grafis, dan lain-lain.


IPC dapat pula berjalan secara sinkronis, dan asinkronis. Analogi IPC asinkronis pada komunikasi jaringan contohnya: Pesan dikirim oleh program pengirim dan melajutkan proses tanpa menunggu pesan baliknya. Program penerima menampung/mengecek keberadaan pesan yang harus diproses baik secara inisialisasi mandiri, atau diingatkan oleh suatu mekanisme notifikasi. IPC asinkronis mensyaratkan kernel mengelola penampung dan mengimplementasikan antrian atas pesan-pesan tersebut, dan berkompromi terhadap kemungkinan terjadinya ''buffer overflow''; Kernel juga harus melakukan duplikasi pesan (pengirim-ke-kernel dan kernel-ke-penerima). Sementara pada IPC sinkronis, pihak pertama (baik pengirim atau penerima) yang melakukan blokade hingga pihak yang dituju siap untuk melakukan proses IPC. modus IPC sinkronis tidak membutuhkan pengelolaan penampung di sisi kernel, ataupun duplikasi pesan, namun komunikasi yang bersifat sinkronis seperti ini akan menyebabkan pemrograman menjadi lebih sulit. Kebanyakan programer lebih memilih menggunakan modus asinkronis untuk pengiriman dan modus sinkronis untuk penerimaan.
IPC dapat pula berjalan secara sinkronis, dan asinkronis. Analogi IPC asinkronis pada komunikasi jaringan contohnya: pesan dikirim oleh program pengirim dan melanjutkan proses tanpa menunggu pesan baliknya. Program penerima menampung/mengecek keberadaan pesan yang harus diproses baik secara inisialisasi mandiri, atau diingatkan oleh suatu mekanisme notifikasi. IPC asinkronis mensyaratkan kernel mengelola penampung dan mengimplementasikan antrian atas pesan-pesan tersebut, dan berkompromi terhadap kemungkinan terjadinya ''buffer overflow''; Kernel juga harus melakukan duplikasi pesan (pengirim-ke-kernel dan kernel-ke-penerima). Sementara pada IPC sinkronis, pihak pertama (baik pengirim atau penerima) yang melakukan blokade hingga pihak yang dituju siap untuk melakukan proses IPC. Modus IPC sinkronis tidak membutuhkan pengelolaan penampung di sisi kernel, ataupun duplikasi pesan, tetapi komunikasi yang bersifat sinkronis seperti ini akan menyebabkan pemrograman menjadi lebih sulit. Kebanyakan programer lebih memilih menggunakan modus asinkronis untuk pengiriman dan modus sinkronis untuk penerimaan.


== Peladen ==
== Peladen ==
Peladen mikrokernel pada dasarnya merupakan program [[Jurik|jurik]] biasa seperti umumnya, dengan pengecualian kernel memberikan sejumlah kewenangan untuk berinteraksi dengan sebagian dari ingatan fisik yang biasanya dibatasi untuk program pada umumnya. Dengan cara demikian, hal ini memungkinkan para peladen, khususnya device driver, bisa berinteraksi secara langsung dengan perangkat keras.
Peladen mikrokernel pada dasarnya merupakan program [[daemon]] biasa seperti umumnya, dengan pengecualian kernel memberikan sejumlah kewenangan untuk berinteraksi dengan sebagian dari ingatan fisik yang biasanya dibatasi untuk program pada umumnya. Dengan cara demikian, hal ini memungkinkan para peladen, khususnya device driver, bisa berinteraksi secara langsung dengan perangkat keras.


Seperangkat peladen pada mikrokernel untuk kebutuhan umum melingkupi peladen [[Sistem berkas|sistem berkas]], peladen device driver, peladen jaringan, pelanden tampilan, dan peladen antar muka pengguna. Seperangkat peladen tersebut secara kasar adalah menyediakan sejumlah layanan yang sama yang diberikan pada kernel monolitik UNIX. Peladen yang dibutuhkan akan dijalankan pada saat sistem mulai berjalan dan secara aktif menyediakan layanan, seperti berkas, jaringan, dan akses terhadap perangkat, pada program-program aplikasi. Dengan sejumlah peladen yang berjalan pada lingkungan aplikasi pengguna seperti ini, pengembangan sebuah peladen sama seperti halnya halnya pengembangan aplikasi umum biasa.
Seperangkat peladen pada mikrokernel untuk kebutuhan umum melingkupi peladen [[sistem berkas]], peladen device driver, peladen jaringan, pelanden tampilan, dan peladen antar muka pengguna. Seperangkat peladen tersebut secara kasar adalah menyediakan sejumlah layanan yang sama yang diberikan pada kernel monolitik UNIX. Peladen yang dibutuhkan akan dijalankan pada saat sistem mulai berjalan dan secara aktif menyediakan layanan, seperti berkas, jaringan, dan akses terhadap perangkat, pada program-program aplikasi. Dengan sejumlah peladen yang berjalan pada lingkungan aplikasi pengguna seperti ini, pengembangan sebuah peladen sama seperti halnya halnya pengembangan aplikasi umum biasa.


== Device driver ==
== Device driver ==
Baris 77: Baris 82:
| title = The Impact of Operating System Structure on Memory System Performance
| title = The Impact of Operating System Structure on Memory System Performance
| booktitle = 14th ACM Symposium on Operating System Principles
| booktitle = 14th ACM Symposium on Operating System Principles
| pages = 120&ndash;33
| pages = 120–33
| publisher =
| publisher =
| month = December
| month = December
Baris 91: Baris 96:
| title = Achieved IPC performance (still the foundation for extensibility)
| title = Achieved IPC performance (still the foundation for extensibility)
| booktitle = 6th Workshop on Hot Topics in Operating Systems
| booktitle = 6th Workshop on Hot Topics in Operating Systems
| pages = 28&ndash;31
| pages = 28–31
| publisher = IEEE
| publisher = IEEE
| month = May | year = 1997
| month = May | year = 1997
Baris 99: Baris 104:
| id =
| id =
}}</ref><ref name="Gray_CCMH_05">{{cite conference
}}</ref><ref name="Gray_CCMH_05">{{cite conference
|first=Charles |last=Gray |coauthors=Chapman, Matthew; Chubb, Peter; Mosberger-Tang, David; [[Gernot Heiser|Heiser, Gernot]] |title=Itanium&mdash;a system implementor's tale |booktitle=USENIX Annual Technical Conference |pages=264&ndash;278 |date=April 2005|location=Annaheim, CA, USA |url=http://www.usenix.org/publications/library/proceedings/usenix05/tech/general/gray.html
|first=Charles |last=Gray |coauthors=Chapman, Matthew; Chubb, Peter; Mosberger-Tang, David; [[Gernot Heiser|Heiser, Gernot]] |title=Itanium—a system implementor's tale |booktitle=USENIX Annual Technical Conference |pages=264–278 |date=April 2005|location=Annaheim, CA, USA |url=http://www.usenix.org/publications/library/proceedings/usenix05/tech/general/gray.html
}}</ref><ref name="vanSchaik_Heiser_07">
}}</ref><ref name="vanSchaik_Heiser_07">{{cite conference
{{cite conference
| first = Carl
| first = Carl
| last = van Schaik
| last = van Schaik
Baris 107: Baris 111:
| title = High-performance microkernels and virtualisation on ARM and segmented architectures
| title = High-performance microkernels and virtualisation on ARM and segmented architectures
| booktitle = 1st International Workshop on Microkernels for Embedded Systems
| booktitle = 1st International Workshop on Microkernels for Embedded Systems
| pages = 11&ndash;21
| pages = 11–21
| publisher = NICTA
| publisher = NICTA
| date = January 2007
| date = January 2007
Baris 114: Baris 118:
| accessdate = 2007-04-01
| accessdate = 2007-04-01
| id =
| id =
| archive-date = 2007-04-26
}}</ref>
| archive-url = https://web.archive.org/web/20070426092901/http://ertos.nicta.com.au/publications
| dead-url = yes
}}</ref>


== Keamanan ==
== Keamanan ==
Manfaat tingkat keamanan yang lebih baik atas pengimplementasian mikrokernel seringkali didiskusikan.<ref>[[Andrew S. Tanenbaum|Tanenbaum, Andrew S.]], [http://www.cs.vu.nl/~ast/reliable-os/ Tanenbaum-Torvalds debate, part II]</ref><ref>Tanenbaum, A., Herder, J. and Bos, H. (May 2006).</ref> Dalam konteks keamanan, prinsip minimalitas mikrokernel merupakan suatu konsekuensi manfaat langsung atas prinsip kewenangan minimal (''least privilege''), terkait dengan implementasi seluruh kode hanya membutuhkan kewenangan minimal yang dibutuhkan sebatas untuk menjalankan fungsionalitasnya. Sejauh kernel (kode yang berjalan dengan kewenangan penuh atas perangkat keras) senantiasa menjadi bagian dari basis komputasi terpercaya (''trusted computing base - TCB''), meminimalisirnya menjadi hal yang sewajarnya dalam disain keamanan terkendali.
Manfaat tingkat keamanan yang lebih baik atas pengimplementasian mikrokernel sering kali didiskusikan.<ref>[[Andrew S. Tanenbaum|Tanenbaum, Andrew S.]], [http://www.cs.vu.nl/~ast/reliable-os/ Tanenbaum-Torvalds debate, part II]</ref><ref>Tanenbaum, A., Herder, J. and Bos, H. (May 2006).</ref> Dalam konteks keamanan, prinsip minimalitas mikrokernel merupakan suatu konsekuensi manfaat langsung atas prinsip kewenangan minimal (''least privilege''), terkait dengan implementasi seluruh kode hanya membutuhkan kewenangan minimal yang dibutuhkan sebatas untuk menjalankan fungsionalitasnya. Sejauh kernel (kode yang berjalan dengan kewenangan penuh atas perangkat keras) senantiasa menjadi bagian dari basis komputasi tepercaya (''trusted computing base - TCB''), meminimalisirnya menjadi hal yang sewajarnya dalam disain keamanan terkendali.


== Nanokernel ==
== Nanokernel ==
Dalam ilmu komputer, istilah '''nanokernel''' atau '''picokernel''' lebih mengarah pada:
Dalam ilmu komputer, istilah '''nanokernel''' atau '''picokernel''' lebih mengarah pada:
# Sebuah kernel dengan total jumlah kode, yang berjalan dalam modus kewenangan penuh atas perangkat keras, sangat kecil. Istilah '''picokernel''' terkadang digunakan untuk lebih menekankan pada kecilnya ukuran. Sementara istilah '''nanokernel''' pertama kali dikemukakan oleh Jonathan S. Shapiro dalam makalah [http://citeseer.ist.psu.edu/135535.html ''The KeyKOS NanoKernel Architecture''] yang merupakan respon tajam atas mikrokernel Mach, yang mengklaim mikrokernal meski kode yang ada bersifat monolitik, tidak terstruktur, dan lebih lamban dari sistem yang ada sebelumnya.
# Sebuah kernel dengan total jumlah kode, yang berjalan dalam modus kewenangan penuh atas perangkat keras, sangat kecil. Istilah '''picokernel''' kadang-kadang digunakan untuk lebih menekankan pada kecilnya ukuran. Sementara istilah '''nanokernel''' pertama kali dikemukakan oleh Jonathan S. Shapiro dalam makalah [http://citeseer.ist.psu.edu/135535.html ''The KeyKOS NanoKernel Architecture''] yang merupakan respon tajam atas mikrokernel Mach, yang mengklaim mikrokernal meski kode yang ada bersifat monolitik, tidak terstruktur, dan lebih lamban dari sistem yang ada sebelumnya.
# Sebuah virtualisasi lapisan yang terdapat pada sistem operasi; lebih tepatnya mengacu pada sebuah hypervisor
# Sebuah virtualisasi lapisan yang terdapat pada sistem operasi; lebih tepatnya mengacu pada sebuah hypervisor
# Sebuah abstraksi lapisan perangkat keras yang bekerja pada bagian tingkat-terbawah dari kernel.
# Sebuah abstraksi lapisan perangkat keras yang bekerja pada bagian tingkat-terbawah dari kernel.


== Referensi==
== Referensi ==
{{Reflist}}
{{Reflist}}


==Bacaan lanjutan==
== Bacaan lanjutan ==
* {{en}} [http://citeseer.csail.mit.edu/cs?q=microkernel scientific articles about microkernels], termasuk:
* {{en}} [http://citeseer.csail.mit.edu/cs?q=microkernel scientific articles about microkernels]{{Pranala mati|date=Februari 2021 |bot=InternetArchiveBot |fix-attempted=yes }}, termasuk:
** {{en}} {{cite journal | author= Dan Hildebrand|title=An Architectural Overview of QNX|journal=Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures | year=1992 |id=ISBN 1-880446-42-1 | pages=113–126 }} - the basic QNX reference.
** {{en}} {{cite journal | author= Dan Hildebrand|title=An Architectural Overview of QNX|journal=Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures | year=1992 |id=ISBN 1-880446-42-1 | pages=113–126 }} - the basic QNX reference.
** {{en}} {{cite journal | title=Can We Make Operating Systems Reliable and Secure? | author=Tanenbaum, A., Herder, J. and Bos, H.| journal = Computer| month = May | year = 2006 | url = http://www.computer.org/portal/site/computer/menuitem.eb7d70008ce52e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1&path=computer/homepage/0506&file=cover1.xml&xsl=article.xsl |pages = 44–51}} -the basic reliable reference.
** {{en}} {{cite journal | title = Can We Make Operating Systems Reliable and Secure? | author = Tanenbaum, A., Herder, J. and Bos, H. | journal = Computer | month = May | year = 2006 | url = http://www.computer.org/portal/site/computer/menuitem.eb7d70008ce52e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1&path=computer/homepage/0506&file=cover1.xml&xsl=article.xsl | pages = 44–51 | access-date = 2021-02-28 | archive-date = 2017-06-21 | archive-url = https://web.archive.org/web/20170621194406/https://www.computer.org/portal/site/computer/menuitem.eb7d70008ce52e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1&path=computer%2Fhomepage%2F0506&file=cover1.xml&xsl=article.xsl | dead-url = yes }} -the basic reliable reference.
** {{en}} {{cite journal |title=Microkernel Operating System Architecture and Mach | author=Black, D.L., Golub, D.B., Julin, D.P., Rashid, R.F., Draves, R.P., Dean, R.W., Forin, A., Barrera, J., Tokuda, H., Malan, G., and Bohman, D. |journal=J. Of Information Processing|volume=14(4) | month=March | year=1992 }} - the basic Mach reference.
** {{en}} {{cite journal |title=Microkernel Operating System Architecture and Mach | author=Black, D.L., Golub, D.B., Julin, D.P., Rashid, R.F., Draves, R.P., Dean, R.W., Forin, A., Barrera, J., Tokuda, H., Malan, G., and Bohman, D. |journal=J. Of Information Processing|volume=14(4) | month=March | year=1992 }} - the basic Mach reference.
* {{en}} [http://c2.com/cgi/wiki?MicroKernel MicroKernel page] from the Portland Pattern Repository
* {{en}} [http://c2.com/cgi/wiki?MicroKernel MicroKernel page] from the Portland Pattern Repository
* {{en}} [http://www.oreilly.com/catalog/opensources/book/appa.html The Tanenbaum-Torvalds Debate, 1992.01.29]
* {{en}} [http://www.oreilly.com/catalog/opensources/book/appa.html The Tanenbaum-Torvalds Debate, 1992.01.29]
* {{en}} Tanenbaum, A. S. "[http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1_article&TheCat=1005&path=computer/homepage/0506&file=cover1.xml&xsl=article.xsl& Can We Make Operating Systems Reliable and Secure?]".
* {{en}} Tanenbaum, A. S. "[http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1_article&TheCat=1005&path=computer/homepage/0506&file=cover1.xml&xsl=article.xsl& Can We Make Operating Systems Reliable and Secure?] {{Webarchive|url=https://web.archive.org/web/20180618202352/https://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1_article&TheCat=1005&path=computer%2Fhomepage%2F0506&file=cover1.xml&xsl=article.xsl& |date=2018-06-18 }}".
* {{en}} Torvalds, L. [http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11 Linus Torvalds about the microkernels again, 2006.05.09]
* {{en}} Torvalds, L. [http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11 Linus Torvalds about the microkernels again, 2006.05.09]
* {{en}} Shapiro, J. "[http://www.coyotos.org/docs/misc/linus-rebuttal.html Debunking Linus's Latest]".
* {{en}} Shapiro, J. "[http://www.coyotos.org/docs/misc/linus-rebuttal.html Debunking Linus's Latest] {{Webarchive|url=https://web.archive.org/web/20160922022726/http://www.coyotos.org/docs/misc/linus-rebuttal.html |date=2016-09-22 }}".
* {{en}} Tanenbaum, A. S. "[http://www.cs.vu.nl/~ast/reliable-os/ Tanenbaum-Torvalds Debate: Part II]".
* {{en}} Tanenbaum, A. S. "[http://www.cs.vu.nl/~ast/reliable-os/ Tanenbaum-Torvalds Debate: Part II]".

{{Sistem operasi}}


[[Kategori:Teknologi sistem operasi]]
[[Kategori:Teknologi sistem operasi]]


[[fi:Käyttöjärjestelmän ydin#Mikroydin]]
[[ca:Microkernel]]
[[cs:Mikrojádro]]
[[de:Mikrokernel]]
[[en:Microkernel]]
[[es:Micronúcleo]]
[[fr:Noyau de système d'exploitation#Systèmes à micro-noyaux]]
[[fr:Noyau de système d'exploitation#Systèmes à micro-noyaux]]
[[it:Kernel#Microkernel]]
[[hu:Mikrokernel]]
[[ja:マイクロカーネル]]
[[nl:Microkernel]]
[[no:Mikrokjerne]]
[[pl:Mikrojądro]]
[[pt:Micro-kernel]]
[[ru:Микроядро]]
[[sk:Mikrokernel]]
[[sv:Mikrokärna]]
[[uk:Мікроядро]]

Revisi terkini sejak 15 Oktober 2022 05.12

Stuktur sistem operasi berbasis mikrokernel monolitik

Dalam pengetahuan Ilmu Komputer, mikrokernel merupakan seperangkat perangkat lunak dalam jumlah minimum yang meyediakan beragam mekanisme dasar yang dibutuhkan untuk bekerja sebagai sebuah sistem operasi, seperti halnya manajemen pengalamatan ruang tingkat rendah, manajemen thread, dan komunikasi antar proses. Dalam implementasinya mikrokernel merupakan satu-satunya perangkat lunak yang berjalan dengan tingkat kewenangan tertinggi (umumnya disebut sebagai modus supervisor atau modus kernel) dari serangkaian level kewenangan yang tersedia pada perangkat kerasnya. Layanan yang disediakan oleh sebuah sistem operasi beberapa diantaranya adalah device driver, protokol jaringan, sistem berkas, dan kode antarmuka pengguna yang berada dalam ruang pengguna.

Mikrokernel sangat erat terkait dengan exokernel[1] , serta memiliki banyak kesamaan dengan hypervisor.[2] namun implementasinya lebih bersifat minimalis, dan secara spesifik untuk mendukung pengimplementasian mesin virtual. Mikrokernel L4 sering juga disebut sebagai hypervisor, yang mengindikasikan kemungkinan pengimplementasian sebuah mikrokernel sebagai hypervisor. Istilah nanokernel dalam sejarahnya digunakan untuk membedakan mikrokernel saat ini dengan istilah mikrokernel sebelumnya yang menyediakan layanan sistem aktual, tetapi secara prinsip minimalitas menurut Jochen Liedtke dalam disain mikrokernel L4 menyebutkan bahwa istilah-istilah tersebut memiliki arti yang kurang lebih sama.

Pendahuluan[sunting | sunting sumber]

Pada mulanya, kernel sistem operasi umumnya berukuran kecil, penyebabnya adalah besarnya ingatan komputer yang terbatas. Dengan semakin berkembangnya kapabilitas komputer, jumlah perangkat yang harus dikendalikan oleh suatu kernel menjadi meningkat pula. Namun pada masa-masa awal sejarah sistem operasi unix, kernel pada umumnya berukuran kecil, meskipun kernel-kernel tersebut menyediakan device driver dan pengatur sistem berkas. Saat pengalamatan ruang meningkat dari 16 menjadi 32 bit, disain kernel diubahsuai menjadi tidak lagi bergantung pada arsitektur perangkat keras yang ada, dan ukuran kernel pun mulai tumbuh membesar.

Berkeley UNIX (BSD) tercatat sebagai yang memulai era kernel berukuran besar. Sebagai tambahan dari pengoperasian sistem yang paling mendasar seperti CPU, media penyimpanan, dan pencetak, BSD mulai menambahkan sistem berkas, sistem jaringan TCP/IP yang lengkap, dan sejumlah perangkat "virtual" yang mengizinkan program yang ada untuk bekerja secara tersembunyi pada jaringan. Pertumbuhan ini berlanjut selama beberapa dekade dan menyebabkan kernel yang ada saat ini terdiri hingga jutaan baris kode. Sebagai akibat dari pertumbuhan ini pun, kernel yang ada saat ini lebih rentan terhadap bug dan menjadi lebih sulit untuk dikelola.

Mikrokernel dirancang untuk mengatasi permasalahan yang disebabkan karena pertumbuhan kernel yang membesar dan kesulitan mengelolanya. Secara teori, desain mikrokernel mengizinkan pengelolaan kode yang lebih mudah karena arsitekturnya yang mendistribusikan layanan pada area ruang pengguna. Pengimplementasian seperti ini berdampak positif pula pada peningkatan keamanan dan stabilitas sistem disebabkan karena menurunnya jumlah kode yang berjalan pada modus kernel. Sebagai contoh, jika layanan jaringan tidak bekerja karena serangan buffer overflow, sistem lainnya masih dapat berfungsi secara normal.

Komunikasi antarproses[sunting | sunting sumber]

Komunikasi antarproses (IPC) merupakan suatu mekanisme yang memungkinkan beberapa proses yang terpisah untuk saling berkomunikasi satu dengan lainnya, umumnya hal ini dilakukan dengan memanfaatkan mekanisme pengiriman pesan. Selain itu ingatan berbagi (shared memory) secara spesifik juga sering pula digunakan sebagai salah satu mekanisme komunikasi antarproses, tetapi demikian, umumnya makna IPC lebih mengarah pada komunikasi memanfaatkan mekanisme pengiriman pesan, dan lebih lanjut menjadi relevan terhadap mekanisme yang digunakan pada mikrokernel. IPC mengizinkan sistem operasi dibuat dari sejumlah program kecil yang disebut pelayan, yang digunakan oleh program lainnya dalam sistem, melalui IPC sebagai mediator. Hampir dari semua dukungan atas periferal perangkat keras ditangani melalui cara ini, dengan peladen atas device driver, protokol jaringan, sistem berkas, grafis, dan lain-lain.

IPC dapat pula berjalan secara sinkronis, dan asinkronis. Analogi IPC asinkronis pada komunikasi jaringan contohnya: pesan dikirim oleh program pengirim dan melanjutkan proses tanpa menunggu pesan baliknya. Program penerima menampung/mengecek keberadaan pesan yang harus diproses baik secara inisialisasi mandiri, atau diingatkan oleh suatu mekanisme notifikasi. IPC asinkronis mensyaratkan kernel mengelola penampung dan mengimplementasikan antrian atas pesan-pesan tersebut, dan berkompromi terhadap kemungkinan terjadinya buffer overflow; Kernel juga harus melakukan duplikasi pesan (pengirim-ke-kernel dan kernel-ke-penerima). Sementara pada IPC sinkronis, pihak pertama (baik pengirim atau penerima) yang melakukan blokade hingga pihak yang dituju siap untuk melakukan proses IPC. Modus IPC sinkronis tidak membutuhkan pengelolaan penampung di sisi kernel, ataupun duplikasi pesan, tetapi komunikasi yang bersifat sinkronis seperti ini akan menyebabkan pemrograman menjadi lebih sulit. Kebanyakan programer lebih memilih menggunakan modus asinkronis untuk pengiriman dan modus sinkronis untuk penerimaan.

Peladen[sunting | sunting sumber]

Peladen mikrokernel pada dasarnya merupakan program daemon biasa seperti umumnya, dengan pengecualian kernel memberikan sejumlah kewenangan untuk berinteraksi dengan sebagian dari ingatan fisik yang biasanya dibatasi untuk program pada umumnya. Dengan cara demikian, hal ini memungkinkan para peladen, khususnya device driver, bisa berinteraksi secara langsung dengan perangkat keras.

Seperangkat peladen pada mikrokernel untuk kebutuhan umum melingkupi peladen sistem berkas, peladen device driver, peladen jaringan, pelanden tampilan, dan peladen antar muka pengguna. Seperangkat peladen tersebut secara kasar adalah menyediakan sejumlah layanan yang sama yang diberikan pada kernel monolitik UNIX. Peladen yang dibutuhkan akan dijalankan pada saat sistem mulai berjalan dan secara aktif menyediakan layanan, seperti berkas, jaringan, dan akses terhadap perangkat, pada program-program aplikasi. Dengan sejumlah peladen yang berjalan pada lingkungan aplikasi pengguna seperti ini, pengembangan sebuah peladen sama seperti halnya halnya pengembangan aplikasi umum biasa.

Device driver[sunting | sunting sumber]

Device driver secara frekuentif melakukan akses pengingat langsung (DMA), dengan demikian device driver bisa melakukan pennulisan dan relokasi atas ingatan fisik, termasuk pula struktur data kernel, oleh karena itu terhadap driver tersebut perlu diberikan kewenangan khusus (trusted). Kekeliruan konsepsi yang terjadi menganggap bahwa untuk device driver seperti itu haruslah merupakan bagian dari kernel. Padahal faktanya, driver tidak selalu menjadi bagian yang tidak terpisahkan dari kernel.

Komponen-komponen mendasar dan minimalitas[sunting | sunting sumber]

Karena sebuah mikrokernal harus dapat meletakkan layanan-layanan sistem operasi pada level teratas, fungsionalitas yang harus dimiliki oleh mikrokernel setidaknya melingkupi:

  • Mekanisme pengaturan pengalamatan ruang, — dibutuhkan untuk mengatur proteksi ingatan.
  • Mekanisme eksekusi secara abstrak untuk mengatur alokasi CPU — biasanya adalah thread atau pengaktifan penjadual; dan
  • Komunikasi antarproses — dibutuhkan untuk menyediakan mekanisme pemanggilan peladen yang berjalan pada alamat ruang spesifik.

Hal terpenting yang harus dimiliki oleh sebuah mikrokernel adalah keberadaan mekanisme Komunikasi antarproses yang handal, dan disain pengatur ingatan virtual yang memungkinkan manajemen ingatan dan melakukan pertukaran alamat (swapping) secara dengan aman. Selanjutnya, karena pada akhirnya semua layanan sistem operasi dipanggil oleh program yang berjalan pada modus user membuat tingkat efisiensi mekanisme komunikasi antar program yang terdapat pada sebuah mikrokernel menjadi sangat penting.

Unjuk kerja[sunting | sunting sumber]

Pada sistem berbasis mikrokernel, permintaan atas suatu layanan melalaui IPC sebenarnya membutuhkan sumber daya yang lebih besar dibandingkan pada sistem dengan kernel berbasis monolitik yang hanya menggunakan pemanggilan tunggal secara internal sistem. Dengan demikian unjuk kerja sistem berbasis mikrokernel mungkin menimbulkan potensi masalah, sebagai contoh, unjuk kerja mikrokernel generasi pertama, Mach dan Chorus, menunjukkan hasil yang mengecewakan.[3] Namun, Jochen Liedtke menunjukkan bahwa masalah unjuk kerja Mach lebih terkait pada kesalahan disain dan implementasi. Melalui demonstrasi yang ditunjukkannya pada mikrokernel L4, ia berhasil menujukkan bahwa dengan menggunakan disain dan implementasi yang dirancang dengan baik serta konsisten dalam menerapkan prinsip-prinsip minimalitas, permasalahan yang terkait dengan IPC bisa diminimalisir.[4][5][6]

Keamanan[sunting | sunting sumber]

Manfaat tingkat keamanan yang lebih baik atas pengimplementasian mikrokernel sering kali didiskusikan.[7][8] Dalam konteks keamanan, prinsip minimalitas mikrokernel merupakan suatu konsekuensi manfaat langsung atas prinsip kewenangan minimal (least privilege), terkait dengan implementasi seluruh kode hanya membutuhkan kewenangan minimal yang dibutuhkan sebatas untuk menjalankan fungsionalitasnya. Sejauh kernel (kode yang berjalan dengan kewenangan penuh atas perangkat keras) senantiasa menjadi bagian dari basis komputasi tepercaya (trusted computing base - TCB), meminimalisirnya menjadi hal yang sewajarnya dalam disain keamanan terkendali.

Nanokernel[sunting | sunting sumber]

Dalam ilmu komputer, istilah nanokernel atau picokernel lebih mengarah pada:

  1. Sebuah kernel dengan total jumlah kode, yang berjalan dalam modus kewenangan penuh atas perangkat keras, sangat kecil. Istilah picokernel kadang-kadang digunakan untuk lebih menekankan pada kecilnya ukuran. Sementara istilah nanokernel pertama kali dikemukakan oleh Jonathan S. Shapiro dalam makalah The KeyKOS NanoKernel Architecture yang merupakan respon tajam atas mikrokernel Mach, yang mengklaim mikrokernal meski kode yang ada bersifat monolitik, tidak terstruktur, dan lebih lamban dari sistem yang ada sebelumnya.
  2. Sebuah virtualisasi lapisan yang terdapat pada sistem operasi; lebih tepatnya mengacu pada sebuah hypervisor
  3. Sebuah abstraksi lapisan perangkat keras yang bekerja pada bagian tingkat-terbawah dari kernel.

Referensi[sunting | sunting sumber]

  1. ^ Liedtke, Jochen (1996). "Towards Real Microkernels". Communications of the ACM. 39 (9): 70–77. 
  2. ^ Heiser, Gernot; Uhlig, Volkmar and LeVasseur, Joshua (2006). "Are Virtual-Machine Monitors Microkernels Done Right?" (PDF). ACM SIGOPS Operating Systems Review. ACM. 40 (1): 95–99. doi:10.1145/1113361.1113363. Diarsipkan dari versi asli (PDF) tanggal 2008-05-09. Diakses tanggal 2009-03-23. 
  3. ^ Chen, Bradley (1993). "The Impact of Operating System Structure on Memory System Performance". 14th ACM Symposium on Operating System Principles. Asheville, NC, USA. hlm. 120–33. 
  4. ^ Liedtke, Jochen (1997). "Achieved IPC performance (still the foundation for extensibility)". 6th Workshop on Hot Topics in Operating Systems. Cape Cod, MA, USA: IEEE. hlm. 28–31. 
  5. ^ Gray, Charles (April 2005). "Itanium—a system implementor's tale". USENIX Annual Technical Conference. Annaheim, CA, USA. hlm. 264–278. 
  6. ^ van Schaik, Carl (January 2007). "High-performance microkernels and virtualisation on ARM and segmented architectures". 1st International Workshop on Microkernels for Embedded Systems. Sydney, Australia: NICTA. hlm. 11–21. Diarsipkan dari versi asli tanggal 2007-04-26. Diakses tanggal 2007-04-01. 
  7. ^ Tanenbaum, Andrew S., Tanenbaum-Torvalds debate, part II
  8. ^ Tanenbaum, A., Herder, J. and Bos, H. (May 2006).

Bacaan lanjutan[sunting | sunting sumber]