Pengantar Sistem Operasi Komputer PART I

Pengantar Sistem Operasi Komputer: Plus Studi Kasus Kernel Linux
oleh Masyarakat Digital Gotong Royong (MDGR)
$Revision: 2.0 $ Edisi
Diterbitkan $Date: 2004/09/09 13:26:10 $
Copyright (Hak Cipta) © 2003, 2004 Masyarakat Digital Gotong Royong (MDGR).
Silakan menyalin, mengedarkan, dan/atau, memodifikasi bagian dari dokumen – $Revision: 2.0 $ – – yang dikarang
oleh Masyarakat Digital Gotong Royong (MDGR), sesuai dengan ketentuan "GNU Free Documentation License versi
1.1" atau versi selanjutnya dari FSF (Free Software Foundation); tanpa bagian "Invariant", tanpa teks "Front-Cover",
dan tanpa teks "Back-Cover". Lampiran A ini berisi salinan lengkap dari lisensi tersebut. Ketentuan ini TIDAK berlaku
untuk bagian dan/atau kutipan yang bukan dikarang oleh Masyarakat Digital Gotong Royong (MDGR). Versi digital
terakhir dari buku ini dapat diambil dari http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/
(http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/).
Catatan Revisi
Revisi 2.0 09-09-2004 Direvisi oleh: RMS46
Memulai revisi 2.0
Revisi 1.10 09-09-2004 Direvisi oleh: RMS46
Perbaikan kecil. Pesiapan ke revisi 2.0
Revisi 1.9.2.10 24-08-2004 Direvisi oleh: RMS46
Ambil alih kelompok 51, perbaikan isi buku.
Revisi 1.9.1.2 15-03-2004 Direvisi oleh: RMS46
Revisi lanjutan: perbaikan sana-sini, ejaan, indeks, dst.
Revisi 1.9.1.0 11-03-2004 Direvisi oleh: RMS46
Revisi ini diedit ulang oleh Rahmat M. Samik-Ibrahim, serta perbaikan sana-sini.
Revisi 1.9 24-12-2003 Direvisi oleh: Kelompok 49
Versi rilis final buku OS.
Revisi 1.8 08-12-2003 Direvisi oleh: Kelompok 49
Versi rilis beta buku OS.
Revisi 1.7 17-11-2003 Direvisi oleh: Kelompok 49
Versi rilis alfa buku OS.
Revisi 1.5 17-11-2003 Direvisi oleh: Kelompok 49
Penggabungan pertama (kel 41-49), tanpa indeks dan rujukan utama. ada.
Revisi 1.4 08-11-2003 Direvisi oleh: Kelompok 49
Pengubahan template versi 1.3 dengan template yang baru yang akan digunakan dalam versi 1.4-2.0
Revisi 1.3.0.5 12-11-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim dipilah sesuai dengan sub-pokok bahasan yang ada.
Revisi 1.3 30-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melanjutkan perbaikan tata letak dan pengindeksan.
Revisi 1.2 17-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melanjutkan perbaikan.
Revisi 1.1 01-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melakukan perbaikan struktur SGML, tanpa terlalu banyak mengubah isi buku.
Revisi 1.0 27-05-2003 Direvisi oleh: RMS46
Kompilasi ulang, serta melakukan sedikit perapihan.
Revisi 0.21.4 05-05-2003 Direvisi oleh: Kelompok 21
Perapihan berkas dan penambahan entity.
Revisi 0.21.3 29-04-2003 Direvisi oleh: Kelompok 21
Perubahan dengan menyempurnakan nama file.
Revisi 0.21.2 24-04-2003 Direvisi oleh: Kelompok 21
Merubah Kata Pengantar.
Revisi 0.21.1 21-04-2003 Direvisi oleh: Kelompok 21
Menambahkan Daftar Pustaka dan Index.
Revisi 0.21.0 26-03-2003 Direvisi oleh: Kelompok 21
Memulai membuat tugas kelompok kuliah Sistem Operasi.

Pengantar Sistem Operasi Komputer: Plus Studi Kasus Kernel Linux
oleh Masyarakat Digital Gotong Royong (MDGR)
$Revision: 2.0 $ Edisi
Diterbitkan $Date: 2004/09/09 13:26:10 $
Copyright (Hak Cipta) © 2003, 2004 Masyarakat Digital Gotong Royong (MDGR).
Silakan menyalin, mengedarkan, dan/atau, memodifikasi bagian dari dokumen – $Revision: 2.0 $ – – yang dikarang
oleh Masyarakat Digital Gotong Royong (MDGR), sesuai dengan ketentuan "GNU Free Documentation License versi
1.1" atau versi selanjutnya dari FSF (Free Software Foundation); tanpa bagian "Invariant", tanpa teks "Front-Cover",
dan tanpa teks "Back-Cover". Lampiran A ini berisi salinan lengkap dari lisensi tersebut. Ketentuan ini TIDAK berlaku
untuk bagian dan/atau kutipan yang bukan dikarang oleh Masyarakat Digital Gotong Royong (MDGR). Versi digital
terakhir dari buku ini dapat diambil dari http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/
(http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/).
Catatan Revisi
Revisi 2.0 09-09-2004 Direvisi oleh: RMS46
Memulai revisi 2.0
Revisi 1.10 09-09-2004 Direvisi oleh: RMS46
Perbaikan kecil. Pesiapan ke revisi 2.0
Revisi 1.9.2.10 24-08-2004 Direvisi oleh: RMS46
Ambil alih kelompok 51, perbaikan isi buku.
Revisi 1.9.1.2 15-03-2004 Direvisi oleh: RMS46
Revisi lanjutan: perbaikan sana-sini, ejaan, indeks, dst.
Revisi 1.9.1.0 11-03-2004 Direvisi oleh: RMS46
Revisi ini diedit ulang oleh Rahmat M. Samik-Ibrahim, serta perbaikan sana-sini.
Revisi 1.9 24-12-2003 Direvisi oleh: Kelompok 49
Versi rilis final buku OS.
Revisi 1.8 08-12-2003 Direvisi oleh: Kelompok 49
Versi rilis beta buku OS.
Revisi 1.7 17-11-2003 Direvisi oleh: Kelompok 49
Versi rilis alfa buku OS.
Revisi 1.5 17-11-2003 Direvisi oleh: Kelompok 49
Penggabungan pertama (kel 41-49), tanpa indeks dan rujukan utama. ada.
Revisi 1.4 08-11-2003 Direvisi oleh: Kelompok 49
Pengubahan template versi 1.3 dengan template yang baru yang akan digunakan dalam versi 1.4-2.0
Revisi 1.3.0.5 12-11-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim dipilah sesuai dengan sub-pokok bahasan yang ada.
Revisi 1.3 30-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melanjutkan perbaikan tata letak dan pengindeksan.
Revisi 1.2 17-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melanjutkan perbaikan.
Revisi 1.1 01-09-2003 Direvisi oleh: RMS46
Revisi ini diedit oleh Rahmat M. Samik-Ibrahim melakukan perbaikan struktur SGML, tanpa terlalu banyak mengubah isi buku.
Revisi 1.0 27-05-2003 Direvisi oleh: RMS46
Kompilasi ulang, serta melakukan sedikit perapihan.
Revisi 0.21.4 05-05-2003 Direvisi oleh: Kelompok 21
Perapihan berkas dan penambahan entity.
Revisi 0.21.3 29-04-2003 Direvisi oleh: Kelompok 21
Perubahan dengan menyempurnakan nama file.
Revisi 0.21.2 24-04-2003 Direvisi oleh: Kelompok 21
Merubah Kata Pengantar.
Revisi 0.21.1 21-04-2003 Direvisi oleh: Kelompok 21
Menambahkan Daftar Pustaka dan Index.
Revisi 0.21.0 26-03-2003 Direvisi oleh: Kelompok 21
Memulai membuat tugas kelompok kuliah Sistem Operasi.

Kata Pengantar Revisi 1.X
Buku ini merupakan hasil karya Masyarakat Digital Gotong Royong (MDGR) Fakultas Ilmu Komputer
Universitas Indonesia (Fasilkom UI). Kelompok Kerja 21-28 mengawali penulisan buku ini, lalu Kelompok
Kerja 41-49, 51 melakukan revisi dan perbaikan. Tujuan utama penulisan buku ini ialah untuk dimanfaatkan
sendiri sebagai rujukan utama pada mata ajar IKI-20230 Sistem Operasi (http://rms46.vlsm.org/2/101.html) di
Fakultas Ilmu Komputer Universitas Indonesia (http://www.cs.ui.ac.id/). Versi digital terakhir dari buku ini dapat
diambil dari http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/
(http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/).
Buku ini mencakup delapan pokok bahasan bidang Sistem Operasi. Setiap pokok bahasan dipisahkan ke dalam
bab yang tersendiri, yang kemudian dibagi menjadi beberapa sub-pokok bahasan. Setiap sub-pokok bahasan
dirancang untuk mengisi satu jam tatap muka kuliah. Buku yang terdiri dari 52 sub-pokok bahasan ini, sehingga
cocok untuk sebuah mata ajar dengan bobot empat Satuan Kredit Semester (SKS).
Pembahasan buku ini diawali dengan pengenalan Konsep Dasar Sistem Komputer (Bab 1). Bab ini akan
membahas tiga sub-pokok bahasan, yaitu Pengenalan Sistem Operasi Komputer, Pengenalan Perangkat Keras
Komputer, serta Aspek Lainnya seperti: Proteksi, Keamanan, Jaringan. Bab ini bersifat pengulangan hal-hal
yang menjadi prasyarat untuk buku ini. Jika mengalami kesulitan memahami bab ini, sebaiknya mendalami
kembali subyek yang berhubungan dengan Pengantar Organisasi Komputer serta Pengantar Struktur Data.
Bab 2 akan membahas Konsep Dasar Sistem Operasi. Ini merupakan bab yang paling penting dari buku ini.
Bab 3 akan membahas Proses dan Penjadualan.
Bab 4 akan membahas Sinkronisasi dan Deadlock.
Bab 5 akan membahas Managemen Memori.
Bab 6 akan membahas Sistem Berkas.
Bab 7 akan membahas I/O.
Akhirnya, Bab 8 akan membahas sebuah studi kasus yaitu sistem GNU/Linux.
Setiap bab berisi soal-soal latihan agar para pembaca dapat mengulas kembali pembahasan pada bab tersebut dan
mengevaluasi sejauh mana pengetahuan mengenai bab tersebut. Gambar dipilih sedemikian rupa sehingga dapat
memberikan ilustrasi yang membantu pembaca untuk lebih memahami pembahasan.
Kami menyadari bahwa pada buku ini sangat berbau buku karya Schilberschatz dan kawan-kawan. Kebanyakan
sub-pokok bahasan buku ini memang berbasis kerangka kerja (framework) buku tersebut. Diharapkan secara
perlahan, bau tersebut akan pudar pada revisi-revisi yang mendatang. Silakan menyampaikan
kritik/tanggapan/usulan anda ke <writeme04 <@T> yahoogroups DOT com>.
iKata Pengantar Revisi 2.X
Maaf -- selesai tidak selesai -- mulai semester ganjil 2004/2005, buku ini digunakan sebagai rujukan utama mata
ajar IKI-20230 Sistem Operasi (http://rms46.vlsm.org/2/117.html) di Fakultas Ilmu Komputer Universitas
Indonesia. Selanjutnya, buku ini akan diperbaiki sambil jalan. Diharapkan, revisi tiga akan jauh lebih baik
daripada revisi ini. Seperti biasa, silakan menyampaikan kritik/tanggapan/usulan anda ke <writeme04 <@T>
yahoogroups DOT com>. Maaf.
iiBab 1. Konsep Dasar Perangkat Komputer
Sebuah komputer modern merupakan sistem yang kompleks. Komputer tersebut, secara fisik terdiri dari
beberapa bagian seperti prosesor, memori, disk, pencetak (printer), serta perangkat lainnya. Sebuah komputer
dapat menjalankan berbagai perangkat lunak aplikasi (software aplication). Sebuah sistem operasi merupakan
perangkat lunak penghubung antara perangkat keras (hardware) dengan perangkat lunak aplikasi tersebut di atas.
Secara singkat, bab pendahuluan ini akan memberikan gambaran umum perihal komponen-komponen komputer
tersebut. Mula-mula, akan diperkenalkan apa yang dimaksud dengan sistem operasi. Uraian yang lebih lengkap
akan dilanjutkan pada bab berikutnya (Bab 2). Selanjutnya, akan diuraikan aspek-aspek yang terkait dengan
perangkat keras komputer. Aspek-aspek tersebut diperlukan untuk memahami konsep-konsep sistem operasi
yang akan dijabarkan dalam buku ini. Selain itu, akan dibahas perihal proteksi perangkat keras, keamanan, serta
jaringan komputer. Tentunya tidak dapat diharapkan bahwa pembahasan yang dalam. Rincian lanjut, sebaiknya
dilihat pada rujukan yang berhubungan dengan "Pengantar Organisasi Komputer", "Pengantar Struktur Data",
serta "Pengantar Jaringan Komputer".
1.1. Pengenalan Sistem Operasi Komputer
1.1.1. Definisi Umum Sistem Operasi
Para pembaca sepertinya pernah mendengar istilah "sistem operasi". Mungkin pula pernah berhubungan secara
langsung atau pun tidak langsung dengan istilah tersebut. Namun, belum tentu dapat menjabarkan perihal apa
yang sebetulnya dimaksud dengan kata "sistem operasi". Sebaliknya, banyak pula yang pernah mendengar
merek dagang "Windows
TM 1
)" atau pun istilah "GNU/Linux
2
)", lalu mengidentikkan nama Windows
TM
atau
GNU/Linux dengan istilah "sistem operasi" tersebut. Mendefinisikan istilah "sistem operasi" mungkin
merupakan hal yang mudah, namun mungkin juga merupakan hal yang sangat ribet!
Sistem operasi merupakan salah satu komponen utama dari sebuah "sistem komputer". Komponen komputer
lainnya ialah "perangkat keras", "perangkat lunak aplikasi", dan "para pengguna" (Gambar 1-1). "Perangkat
keras" merupakan penyedia sumber daya untuk komputasi. Perangkat keras merupakan benda konkret yang
dapat dilihat dan disentuh. Perangkat lunak merupakan sarana yang memberitahukan perangkat keras apa yang
harus dikerjakannya. Berbeda dengan perangkat keras, perangkat lunak merupakan benda abstrak yang hanya
dapat dilihat dari sudut apa yang dilakukannya terhadap perangkat keras. Perangkat lunak dibagi lagi menjadi
dua bagian yaitu "sistem operasi" dan "program aplikasi". Program aplikasi merupakan perangkat lunak yang
menentukan bagaimana sumber daya digunakan untuk menyelesaikan masalah para pengguna. Terakhir, istilah
"pengguna komputer" yang dimaksud di sini dapat berupa manusia, program aplikasi lain, atau pun komputer
lain.
Secara lebih rinci, sistem operasi didefinisikan sebagai sebuah program yang mengatur perangkat keras
komputer, dengan menyediakan landasan untuk aplikasi yang berada di atasnya, serta bertindak sebagai
penghubung antara para pengguna dengan perangkat keras. Sistem operasi bertugas untuk mengendalikan
(kontrol) serta mengkoordinasikan pengunaan perangkat keras untuk berbagai program aplikasi untuk
bermacam-macam pengguna. Dengan demikian, sebuah sistem operasi bukan merupakan bagian dari perangkat
keras komputer, dan juga bukan merupakan bagian dari perangkat lunak aplikasi komputer, apalagi tentunya
bukan merupakan bagian dari para pengguna komputer.
Sistem operasi berada di antara perangkat keras komputer dan perangkat aplikasinya. Namun, bagaimana
caranya menentukan secara pasti, letak perbatasan antara "perangkat keras komputer" dan "sistem operasi", dan
terutama antara "perangkat lunak aplikasi" dan "sistem operasi"? Umpamanya, apakah "Internet Explorer
TM3
)"
merupakan aplikasi atau bagian dari sistem operasi? Siapakah yang berhak menentukan perbatasan tersebut?
Apakah para pengguna? Apakah perlu didiskusikan habis-habisan melalui milis? Apakah perlu diputuskan oleh
1Bab 1. Konsep Dasar Perangkat Komputer
sebuah pengadilan? Apakah para politisi (busuk?) sebaiknya mengajukan sebuah Rencana Undang Undang
Sistem Operasi terlebih dahulu? Ha!
Gambar 1-1. Abstraksi Komponen Sistem Komputer
Pengertian dari sistem operasi dapat dilihat dari berbagai sudut pandang. Dari sudut pandang pengguna, sistem
operasi merupakan sebagai alat untuk mempermudah penggunaan komputer. Dalam hal ini sistem operasi
seharusnya dirancang dengan mengutamakan kemudahan penggunaan, dibandingkan mengutamakan kinerja
atau pun utilisasi sumber daya. Sebaliknya dalam lingkungan berpengguna-banyak (multi-user), sistem operasi
dapat dipandang sebagai alat untuk memaksimalkan penggunaan sumber daya komputer. Akan tetapi pada
sejumlah komputer, sudut pandang pengguna dapat dikatakan hanya sedikit atau tidak ada sama sekali. Misalnya
embedded computer pada peralatan rumah tangga seperti mesin cuci dan sebagainya mungkin saja memiliki
lampu indikator untuk menunjukkan keadaan sekarang, tetapi sistem operasi ini dirancang untuk bekerja tanpa
campur tangan pengguna.
Dari sudut pandang sistem, sistem operasi dapat dianggap sebagai alat yang menempatkan sumber daya secara
efisien (Resource Allocator). Sistem operasi ialah manager bagi sumber daya, yang menangani konflik
permintaan sumber daya secara efisien. Sistem operasi juga mengatur eksekusi aplikasi dan operasi dari alat I/O.
Fungsi ini dikenal juga sebagai program pengendali (Control Program). Lebih lagi, sistem operasi merupakan
suatu bagian program yang berjalan setiap saat yang dikenal dengan istilah kernel.
Dari sudut pandang tujuan sistem operasi, sistem operasi dapat dipandang sebagai alat yang membuat komputer
lebih nyaman digunakan (convenient) untuk menjalankan aplikasi dan menyelesaikan masalah pengguna. Tujuan
lain sistem operasi ialah membuat penggunaan sumber daya komputer menjadi efisien.
Dapat disimpulkan, bahwa sistem operasi merupakan komponen penting dari setiap sistem komputer. Akibatnya,
pelajaran "sistem operasi" selayaknya merupakan komponen penting dari sistem pendidikan berbasis "ilmu
komputer".
Konsep sistem operasi dapat lebih mudah dipahami, jika juga memahami jenis perangkat keras yang digunakan.
Demikian pula sebaliknya. Dari sejarah diketahui bahwa sistem operasi dan perangkat keras saling
mempengaruhi dan saling melengkapi. Struktur dari sebuah sistem operasi sangat tergantung pada perangkat
keras yang pertama kali digunakan untuk mengembangkannya. Sedangkan perkembangan perangkat keras
2Bab 1. Konsep Dasar Perangkat Komputer
sangat dipengaruhi dari hal-hal yang diperlukan oleh sebuah sistem operasi. Dalam bagian-bagian berikut ini,
akan diberikan berbagai ilustrasi perkembangan dan jenis sistem operasi beserta perangkat kerasnya.
1.1.2. Sejarah Perkembangan Sistem Operasi
Arsitektur komputer tradisional terdiri dari empat komponen utama yaitu "Prosesor", "Memori Penyimpanan",
"Masukan" (Input), dan "Keluaran" (Output). Model tradisional tersebut sering dikenal dengan nama arsitektur
von Neumann (Gambar 1-2). Pada saat awal, komputer berukuran sangat besar sehingga
komponen-komponennya dapat memenuhi sebuah ruangan yang sangat besar. Sang pengguna -- menjadi
programmer yang sekali gus merangkap menjadi menjadi operator komputer -- juga bekerja di dalam ruang
komputer tersebut.
Gambar 1-2. Arsitektur Komputer von Neumann
Walau pun berukuran besar, sistem tersebut diketegorikan sebagai "komputer pribadi" (PC). Siapa saja yang
ingin melakukan komputasi; harus memesan/antri untuk mendapatkan alokasi waktu (rata-rata 30-120 menit).
Jika ingin melakukan kompilasi Fortran, maka pengguna pertama kali akan me-load kompilator Fortran, yang
diikuti dengan "load" program dan data. Hasil yang diperoleh, biasanya berbentuk cetakan (print-out).
Timbul beberapa masalah pada sistem PC tersebut. Umpama, alokasi pesanan harus dilakukan dimuka. Jika
pekerjaan rampung sebelum rencana semula, maka sistem komputer menjadi "idle"/tidak tergunakan.
Sebaliknya, jika perkerjaan rampung lebih lama dari rencana semula, para calon pengguna berikutnya harus
menunggu hingga pekerjaan selesai. Selain itu, seorang pengguna kompilator Fortran akan beruntung, jika
pengguna sebelumnya juga menggunakan Fortran. Namun, jika pengguna sebelumnya menggunakan Cobol,
maka pengguna Fortran harus me-"load". Masalah ini ditanggulangi dengan menggabungkan para pengguna
kompilator sejenis ke dalam satu kelompok batch yang sama. Medium semula yaitu punch card diganti dengan
tape.
Selanjutnya, terjadi pemisahan tugas antara programer dan operator. Para operator biasanya secara eksklusif
menjadi penghuni "ruang kaca" seberang ruang komputer. Para programer yang merupakan pengguna (users),
mengakses komputer secara tidak langsung melalui bantuan para operator. Para pengguna mempersiapkan
sebuah job yang terdiri dari program aplikasi, data masukan, serta beberapa perintah pengendali program.
3Bab 1. Konsep Dasar Perangkat Komputer
Medium yang lazim digunakan ialah kartu berlubang (punch card). Setiap kartu dapat menampung informasi
satu baris hingga 80 karakter Set kartu job lengkap tersebut kemudian diserahkan kepada para operator.
Perkembangan sistem operasi dimulai dari sini, dengan memanfaatkan sistem batch (Gambar 1-3). Para operator
mengumpulkan job-job yang mirip yang kemudian dijalankan secara berkelompok. Umpama, job yang
memerlukan kompilator Fortran akan dikumpulkan ke dalam sebuah batch bersama dengan job-job lainnya yang
juga memerlukan kompilator Fortran. Setelah sebuah kelompok job rampung, maka kelompok job berikutnya
akan dijalankan secara otomatis.
Gambar 1-3. Bagan Memori Untuk Sistem Monitor Batch Sederhana
Pada perkembangan berikutnya, diperkenalkan konsep Multiprogrammed System. Dengan sistem ini job-job
disimpan di main memory di waktu yang sama dan CPU dipergunakan bergantian. Hal ini membutuhkan
beberapa kemampuan tambahan yaitu: penyediaan I/O routine oleh sistem, pengaturan memori untuk
mengalokasikan memory pada beberapa Job, penjadualan CPU untuk memilih job mana yang akan dijalankan,
serta pengalokasian perangkat keras lain (Gambar 1-4).
Peningkatan lanjut dikenal sistem "bagi waktu"/"tugas ganda"/"komputasi interaktif" (Time-Sharing
System/Multitasking/Interactive Computing). Sistem ini, secara simultan dapat diakses lebih dari satu pengguna.
CPU digunakan bergantian oleh job-job di memori dan di disk. CPU dialokasikan hanya pada job di memori dan
job dipindahkan dari dan ke disk. Interaksi langsung antara pengguna dan komputer ini melahirkan konsep baru,
yaitu response time yang diupayakan wajar agar tidak terlalu lama menunggu.
Hingga akhir tahun 1980-an, sistem komputer dengan kemampuan yang "normal", lazim dikenal dengan istilah
main-frame. Sistem komputer dengan kemampuan jauh lebih rendah (dan lebih murah) disebut "komputer mini".
Sebaliknya, komputer dengan kemampuan jauh lebih canggih disebut komputer super (super-computer). CDC
6600 merupakan yang pertama dikenal dengan sebutan komputer super menjelang akhir tahun 1960-an. Namun
prinsip kerja dari sistem operasi dari semua komputer tersebut lebih kurang sama saja.
Komputer klasik seperti diungkapkan di atas, hanya memiliki satu prosesor. Keuntungan dari sistem ini ialah
lebih mudah diimplementasikan karena tidak perlu memperhatikan sinkronisasi antar prosesor, kemudahan
kontrol terhadap prosesor karena sistem proteksi tidak, teralu rumit, dan cenderung murah (bukan ekonomis).
Perlu dicatat yang dimaksud satu buah prosesor ini ialah satu buah prosesor sebagai Central Processing Unit
(CPU). Hal ini ditekankan sebab ada beberapa perangkat yang memang memiliki prosesor tersendiri di dalam
4Bab 1. Konsep Dasar Perangkat Komputer
perangkatnya seperti VGA Card AGP, Optical Mouse, dan lain-lain.
Gambar 1-4. Bagan Memori untuk Model Multiprogram System
1.1.3. Sistem Operasi Komputer Meja (Desktop)
Dalam pembahasan ini, semua yang layak diletakan di atas meja kerja dikategorikan ke dalam keluarga
"komputer meja" (desktop). Salah satu jenis desktop yang paling mudah dikenal ialah komputer personal (PC).
Pada awalnya, perangkat keras dari jenis komputer ini relatif sederhana. Sedangkan sistem operasinya hanya
mampu secara nyaman, melayani satu pengguna dengan satu job per saat.
Baik komputer meja mau pun sistem operasinya, sudah sangat popular sehingga mungkin tidak perlu perkenalan
lebih lanjut. Bahkan, mungkin banyak yang belum menyadari bahwa masih terdapat banyak jenis komputer dan
sistem operasi lainnya. Dewasa ini, komputer meja lebih canggih ribuan kali dibandingkan IBM PC yang
pertama (1981, prosesor 8088, 4.77 MHz). Sedangkan PC pertama tersebut, beberapa kali lebih canggih
dibandingkan main-frame tahun 1960-an.
Titik fokus perancangan sistem operasi jenis komputer meja agak berbeda dibadingkan dengan sistem operasi
"main-frame". Pertama, kinerja serta derajat kerumitan komponen perangkat keras komputer meja jauh lebih
sederhana (dan murah). Karena itu, "utilisasi" perangkat keras tidak lagi menjadi masalah utama. Kedua, para
pengguna komputer meja tidak selalu merupakan "pakar", sehingga kemudahan penggunaan menjadi prioritas
utama dalam perancangan sistem operasinya. Ketiga, akibat dari butir kedua di atas, "keamanan" dan
"perlindungan" kurang mendapatkan perhatian. Dewasa ini, "virus" dan "cacing" (worm) telah menjadi masalah
utama yang dihadapi para pengguna sistem operasi komputer meja tertentu.
Yang juga termasuk keluarga komputer meja ini ialah komputer jinjing. Pada dasarnya, tidak terdapat banyak
perbedaan, kecuali:
a. sistem portable ini pada dasarnya mirip dengan sistem komputer meja, namun harganya relatif lebih mahal.
b. penggunaan catu daya internal (baterei) agar catu daya dapat bertahan selama mungkin (rata-rata 3-6 jam).
5Bab 1. Konsep Dasar Perangkat Komputer
c. bobot komputer yang lebih ringan, serta ukuran komputer yang nyaman untuk dijinjing. Sistem ini nyaman
digunakan untuk bekerja di perjalanan atau pekerjaan yang menuntut fleksibilitas tempat.
1.1.4. Sistem Operasi Prosesor Jamak
Pada umumnya, setiap komputer dilengkapi dengan satu buah prosesor (CPU). Namun, dewasa ini mulai umum,
jika sebuat sistem komputer memiliki lebih dari satu prosesor (multi-procesor). Terdapat dua jenis sistem
prosesor jamak, yaitu Symmetric MultiProcessing (SMP) dan Asymmetric MultiProcessing (ASMP). Dalam SMP
setiap prosesor menjalankan salinan identik dari sistem operasi dan banyak job yang dapat berjalan di suatu
waktu tanpa pengurangan kinerja. Sementara itu dalam ASMP setiap prosesor diberikan suatu tugas yang
spesifik. Sebuah prosesor bertindak sebagai Master processor yang bertugas menjadualkan dan mengalokasikan
pekerjaan pada prosesor lain yang disebut slave processors. Umumnya ASMP digunakan pada sistem yang besar.
Sistem Operasi Jamak memiliki beberapa keunggulan [Silbeschatz 2004]:
a. Peningkatan throughput karena lebih banyak proses/thread yang dapat dijalankan sekali gus. Perlu diingat
hal ini tidak berarti daya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat ialah
jumlah pekerjaan yang bisa dilakukannya dalam waktu tertentu.
b. Economy of Scale: Ekonomis dalam peralatan yang dibagi bersama. Prosesor-prosesor terdapat dalam satu
komputer dan dapat membagi peripheral (ekonomis) seperti disk dan catu daya listrik.
c. Peningkatan Kehandalan: Jika satu prossor mengalami suatu gangguan, maka proses yang terjadi masih
dapat berjalan dengan baik karena tugas prosesor yang terganggu diambil alih oleh prosesor lain. Hal ini
dikenal dengan istilah Graceful Degradation. Sistemnya sendiri dikenal bersifat fault tolerant atau fail-soft
system.
1.1.5. Sistem Operasi Terdistribusi dan Terkluster
Melaksanakan komputasi secara terdistribusi diantara beberapa prosesor. Hanya saja komputasinya bersifat
loosely coupled system yaitu setiap prosesor mempunyai local memory sendiri. Komunikasi terjadi melalui bus
atau jalur telepon. Keuntungannya hampir sama dengan prosesor jamak, multiprocessor, yaitu adanya
pembagian sumber daya dan komputasi lebih cepat. Namun, pada distributed system juga terdapat keuntungan
lain, yaitu memungkinkan komunikasi antar komputer.
Sistem terdistribusi merupakan kebalikan dari Sistem Operasi Prosesor Jamak. Pada sistem tersebut, setiap
prosesor memiliki memori lokal tersendiri. Kumpulan prosesornya saling berinteraksi melalui saluran
komunikasi seperti LAN dan WAN menggunakan protokol standar seperti TCP/IP. Karena saling berkomunikasi,
kumpulan prosesor tersebut mampu saling berbagi beban kerja, data, serta sumber daya lainnya. Namun,
keduanya berbagi keunggulan yang serupa seperti dibahas sebelum ini.
Terdapat sekurangnya tiga model dalam sistem terdistribusi ini. Pertama, sistem client/server yang membagi
jaringan berdasarkan pemberi dan penerima jasa layanan. Pada sebuah jaringan akan didapatkan: file server, time
server, directory server, printer server, dan seterusnya. Kedua, sistem point to point dimana sistem dapat sekali
gus berfungsi sebagai client mau pun server. Terakhir sistem terkluster, yaitu beberapa sistem komputer yang
digabungkan untuk mendapatkan derajat kehandalan yang lebih baik.
Sistem operasi tersebut diatas, ialah NetOS/Distributed OS. Contoh penerapan Distributed System: Small Area
Network (SAN), Local Area Network (LAN), Metropolitan Area Network (MAN), Online Service (OL)/Outernet,
Wide Area Network (WAN)/Internet.
6Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-5. Distributed System
Sistem kluster ialah gabungan dari beberapa sistem individual (komputer) yang dikumpulkan pada suatu lokasi,
saling berbagi tempat penyimpanan data (storage), dan saling terhubung dalam jaringan lokal (Local Area
Network). Sistem kluster memiliki persamaan dengan sistem paralel dalam hal menggabungkan beberapa CPU
untuk meningkatkan kinerja komputasi. Jika salah satu mesin mengalami masalah dalam menjalankan tugas
maka mesin lain dapat mengambil alih pelaksanaan tugas itu. Dengan demikian, sistem akan lebih andal dan
fault tolerant dalam melakukan komputasi.
Dalam hal jaringan, sistem kluster mirip dengan sistem terdistribusi (distributed system). Bedanya, jika jaringan
pada sistem terdistribusi melingkupi komputer-komputer yang lokasinya tersebar maka jaringan pada sistem
kluster menghubungkan banyak komputer yang dikumpulkan dalam satu tempat.
Dalam ruang lingkup jaringan lokal, sistem kluster memiliki beberapa model dalam pelaksanaannya: asimetris
dan simetris. Kedua model ini berbeda dalam hal pengawasan mesin yang sedang bekerja. Pengawasan dalam
model asimetris menempatkan suatu mesin yang tidak melakukan kegiatan apapun selain bersiap-siaga
mengawasi mesin yang bekerja. Jika mesin itu mengalami masalah maka pengawas akan segera mengambil alih
tugasnya. Mesin yang khusus bertindak pengawas ini tidak diterapkan dalam model simetris. Sebagai gantinya,
mesin-mesin yang melakukan komputasi saling mengawasi keadaan mereka. Mesin lain akan mengambil alih
tugas mesin yang sedang mengalami masalah.
Jika dilihat dari segi efisiensi penggunaan mesin, model simetris lebih unggul daripada model asimetris. Hal ini
disebabkan terdapat mesin yang tidak melakukan kegiatan apapun selain mengawasi mesin lain pada model
asimetris. Mesin yang ’menganggur’ ini dimanfaatkan untuk melakukan komputasi pada model simetris. Inilah
yang membuat model simetris lebih efisien.
Isu yang menarik tentang sistem kluster ialah bagaimana mengatur mesin-mesin penyusun sistem dalam berbagi
tempat penyimpanan data (storage). Untuk saat ini, biasanya sistem kluster hanya terdiri dari dua hingga empat
mesin berhubung kerumitan dalam mengatur akses mesin-mesin ini ke tempat penyimpanan data.
Isu di atas juga berkembang menjadi bagaimana menerapkan sistem kluster secara paralel atau dalam jaringan
yang lebih luas (Wide Area Network). Hal penting yang berkaitan dengan penerapan sistem kluster secara paralel
ialah kemampuan mesin-mesin penyusun sistem untuk mengakses data di storage secara serentak. Berbagai
software khusus dikembangkan untuk mendukung kemampuan itu karena kebanyakan sistem operasi tidak
menyediakan fasilitas yang memadai. Salah satu contoh perangkat-lunak-nya-nya ialah Oracle Parallel Server
yang khusus didesain untuk sistem kluster paralel.
Seiring dengan perkembangan pesat teknologi kluster, sistim kluster diharapkan tidak lagi terbatas pada
sekumpulan mesin pada satu lokasi yang terhubung dalam jaringan lokal. Riset dan penelitian sedang dilakukan
agar pada suatu saat sistem kluster dapat melingkupi berbagai mesin yang tersebar di seluruh belahan dunia.
7Bab 1. Konsep Dasar Perangkat Komputer
Komputasi model terbaru ini juga berbasis jaringan dengan clustered system. Digunakan super computer untuk
melakukan komputasinya. Pada model ini komputasi dikembangkan melalui pc-farm. Perbedaan yang nyata
dengan komputasi berbasis jaringan ialah bahwa komputasi berbasis grid dilakukan bersama-sama seperti
sebuah multiprocessor dan tidak hanya melakukan pertukaran data seperti pada komputasi berbasis jaringan.
1.1.6. Sistem Operasi Waktu Nyata
Sistem waktu nyata (Real Time Systems) ialah suatu sistem yang mengharuskan suatu komputasi selesai dalam
jangka waktu tertentu. Jika komputasi ternyata belum selesai maka sistem dianggap gagal dalam melakukan
tugasnya. Sistem waktu nyata memiliki dua model dalam pelaksanaannya: hard real time system dan soft real
time system.
Hard real time system menjamin suatu proses yang paling penting dalam sistem akan selesai dalam jangka waktu
yang valid. Jaminan waktu yang ketat ini berdampak pada operasi dan perangkat keras (hardware) yang
mendukung sistem. Operasi I/O dalam sistem, seperti akses data ke storage, harus selesai dalam jangka waktu
tertentu. Dari segi (hardware), memori jangka pendek (short-term memory) atau read-only memory (ROM)
menggantikan hard-disk sebagai tempat penyimpanan data. Kedua jenis memori ini dapat mempertahankan data
mereka tanpa suplai energi. Ketatnya aturan waktu dan keterbatasan hardware dalam sistem ini membuat ia sulit
untuk dikombinasikan dengan sistem lain, seperti sistim multiprosesor dengan sistem time-sharing.
Soft real time system tidak memberlakukan aturan waktu seketat hard real time system. Namun, sistem ini
menjamin bahwa suatu proses terpenting selalu mendapat prioritas tertinggi untuk diselesaikan diantara
proses-proses lainnya. Sama halnya dengan hard real time system, berbagai operasi dalam sistem tetap harus ada
batas waktu maksimum.
Aplikasi sistem waktu nyata banyak digunakan dalam bidang penelitian ilmiah, sistem pencitraan medis, sistem
kontrol industri, dan industri peralatan rumah tangga. Dalam bidang pencitraan medis, sistem kontrol industri,
dan industri peralatan rumah tangga, model waktu nyata yang banyak digunakan ialah model hard real time
system. Sedangkan dalam bidang penelitian ilmiah dan bidang lain yang sejenis digunakan model soft real time
system.
Menurut Morgan [MORG92], terdapat sekurangnya lima karakteristik dari sebuah sistem waktu nyata
• deterministik, dapat ditebak berapa waktu yang dipergunakan untuk mengeksekusi operasi.
• responsif, kapan secara pasti eksekusi dimulai serta diakhiri.
• kendali pengguna, dengan menyediakan pilihan lebih banyak daripada sistem operasi biasa.
• kehandalan, sehingga dapat menanggulangi masalah-masalah pengecualian dengan derajat tertentu.
• penanganan kegagalan, agar sistem tidak langsung crash.
1.1.7. Aspek Lain Sistem Operasi
Masih terdapat banyak aspek sistem operasi yang lain; yang kurang cocok diuraikan dalam bab pendahuluan ini.
Sebagai penutup dari sub-pokok bahasan ini; akan disinggung secara singkat perihal:
• Sistem Multimedia
• Embeded System
• Komputasi Berbasis Jaringan
8Bab 1. Konsep Dasar Perangkat Komputer
• PDA dan Telepon Seluler
• Smart Card
Sistem MultiMedia
Sistem multimedia merupakan sistem yang mendukung sekali gus berbagai medium seperti gambar tidak
bergerak, video (gambar bergerak), data teks, suara, dan seterusnya. Sistem operasi yang mendukung multimedia
seharusnya memiliki karakteristik sebagai berikut:
• Handal: para pengguna tidak akan gembira jika sistem terlalu sering crash/tidak handal.
• Sistem Berkas: ukuran berkas multimedia cenderung sangat besar. Sebagai gambaran, berkas video dalam
format MPEG dengan durasi 60 menit akan berukuran sekitar 650 MBytes. Untuk itu, diperlukan sistem
operasi yang mampu menangani berkas-berkas dengan ukuran tersebut secara efektif dan efisien.
• Bandwidth: diperlukan bandwidth (ukuran saluran data) yang besar untuk multimedia.
• Waktu Nyata (Real Time): selain bandwidth yang besar, berkas multimedia harus disampaikan secara lancar
berkesinambungan, serta tidak terputus-putus. Walau pun demikian, terdapat toleransi tertentu terhadap
kualitas gambar/suara (soft real time).
Embeded System
Komputasi embedded melibatkan komputer embedded yang menjalankan tugasnya secara real-time. Lingkungan
komputasi ini banyak ditemui pada bidang industri, penelitian ilmiah, dan lain sebagainya.
Mengacu pada sistem komputer yang bertugas mengendalikan tugas spesifik dari suatu alat seperti mesin cuci
digital, tv digital, radio digital. Terbatas dan hampir tak memiliki user-interface. Biasanya melakukan tugasnya
secara real-time merupakan sistem paling banyak dipakai dalam kehidupan.
Komputasi Berbasis Jaringan
Pada awalnya komputasi tradisional hanya meliputi penggunaan komputer meja (desktop) untuk pemakaian
pribadi di kantor atau di rumah. Namun, seiring dengan perkembangan teknologi maka komputasi tradisional
sekarang sudah meliputi penggunaan teknologi jaringan yang diterapkan mulai dari desktop hingga sistem
genggam. Perubahan yang begitu drastis ini membuat batas antara komputasi tradisional dan komputasi berbasis
jaringan sudah tidak jelas lagi.
Komputasi berbasis jaringan menyediakan fasilitas pengaksesan data yang luas oleh berbagai perangkat
elektronik. Akses tersedia asalkan perangkat elektronik itu terhubung dalam jaringan, baik dengan kabel maupun
nirkabel.
PDA dan Telepon Seluler
Secara umum, keterbatasan yang dimiliki oleh sistem genggam sesuai dengan kegunaan/layanan yang
disediakan. Sistem genggam biasanya dimanfaatkan untuk hal-hal yang membutuhkan portabilitas suatu mesin
seperti kamera, alat komunikasi, MP3 Player dan lain lain.
9Bab 1. Konsep Dasar Perangkat Komputer
Sistem genggam ialah sebutan untuk komputer-komputer dengan kemampuan tertentu, serta berukuran kecil
sehingga dapat digenggam. Beberapa contoh dari sistem ini ialah Palm Pilots, PDA, dan telepon seluler.
Isu yang berkembang tentang sistem genggam ialah bagaimana merancang perangkat lunak dan perangkat keras
yang sesuai dengan ukurannya yang kecil.
Dari sisi perangkat lunak, hambatan yang muncul ialah ukuran memori yang terbatas dan ukuran monitor yang
kecil. Kebanyakan sistem genggam pada saat ini memiliki memori berukuran 512 KB hingga 8 MB. Dengan
ukuran memori yang begitu kecil jika dibandingkan dengan PC, sistem operasi dan aplikasi yang diperuntukkan
untuk sistem genggam harus dapat memanfaatkan memori secara efisien. Selain itu mereka juga harus dirancang
agar dapat ditampilkan secara optimal pada layar yang berukuran sekitar 5 x 3 inci.
Dari sisi perangkat keras, hambatan yang muncul ialah penggunaan sumber tenaga untuk pemberdayaan sistem.
Tantangan yang muncul ialah menciptakan sumber tenaga (misalnya baterai) dengan ukuran kecil tapi
berkapasitas besar atau merancang hardware dengan konsumsi sumber tenaga yang sedikit.
Smart Card
Smart Card (Kartu Pintar) merupakan sistem komputer dengan ukuran kartu nama. Kemampuan komputasi dan
kapasitas memori sistem ini sangat terbatas sehingga optimasi merupakan hal yang paling memerlukan
perhatian. Umumnya, sistem ini digunakan untuk menyimpan informasi rahasia untuk mengakses sistem lain.
Umpamanya, telepon seluler, kartu pengenal, kartu bank, kartu kredit, sistem wireless, uang elektronis, dst.
Dewasa ini (2004), smart card dilengkapi dengan prosesor 8 bit (5 MHz), 24 kB ROM, 16 kB EEPROM, dan 1
kB RAM. Namun kemampuan ini meningkat drastis dari waktu ke waktu.
1.2. Struktur Sistem Komputer
Tidak ada suatu ketentuan khusus tentang bagaimana seharusnya struktur sistem sebuah komputer. Setiap ahli
dan desainer arsitektur komputer memiliki pandangannya masing-masing. Akan tetapi, untuk mempermudah
kita memahami detail dari sistem operasi di bab-bab berikutnya, kita perlu memiliki pengetahuan umum tentang
struktur sistem komputer.
1.2.1. Operasi Sistem Komputer
Secara umum, sistem komputer terdiri atas CPU dan sejumlah device controller yang terhubung melalui sebuah
bus yang menyediakan akses ke memori. Umumnya, setiap device controller bertanggung jawab atas sebuah
hardware spesisfik. Setiap device dan CPU dapat beroperasi secara konkuren untuk mendapatkan akses ke
memori. Adanya beberapa hardware ini dapat menyebabkan masalah sinkronisasi. Karena itu untuk
mencegahnya sebuah memory controller ditambahkan untuk sinkronisasi akses memori.
Pada sistem komputer yang lebih maju, arsitekturnya lebih kompleks. Untuk meningkatkan performa, digunakan
beberapa buah bus. Tiap bus merupakan jalur data antara beberapa device yang berbeda. Dengan cara ini RAM,
Prosesor, GPU (VGA AGP) dihubungkan oleh bus utama berkecepatan tinggi yang lebih dikenal dengan nama
FSB (Front Side Bus). Sementara perangkat lain yang lebih lambat dihubungkan oleh bus yang berkecepatan
lebih rendah yang terhubung dengan bus lain yang lebih cepat sampai ke bus utama. Untuk komunikasi antar bus
ini digunakan sebuah bridge.
10Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-6. Arsitektur Umum Komputer
Tanggung jawab sinkronisasi bus yang secara tak langsung juga mempengaruhi sinkronisasi memori dilakukan
oleh sebuah bus controller atau dikenal sebagai bus master. Bus master akan mengendalikan aliran data hingga
pada satu waktu, bus hanya berisi data dari satu buah device. Pada prakteknya bridge dan bus master ini
disatukan dalam sebuah chipset.
NB: GPU = Graphics Processing Unit; AGP = Accelerated Graphics Port; HDD = Hard Disk Drive; FDD =
Floppy Disk Drive; FSB = Front Side Bus; USB = Universal Serial Bus; PCI = Peripheral Component
Interconnect; RTC = Real Time Clock; PATA = Pararel Advanced Technology Attachment; SATA = Serial
Advanced Technology Attachment; ISA = Industry Standard Architecture; IDE = Intelligent Drive
Electronics/Integrated Drive Electronics; MCA = Micro Channel Architecture; PS/2 = Sebuah port yang
dibangun IBM untuk menghubungkan mouse ke PC;
Jika komputer dinyalakan, yang dikenal dengan nama booting, komputer akan menjalankan bootstrap program
yaitu sebuah program sederhana yang disimpan dalam ROM yang berbentuk chip CMOS (Complementary Metal
Oxide Semiconductor). Chip CMOS modern biasanya bertipe Electrically Erasable Programmable Read Only
Memory (EEPROM), yaitu memori non-volatile (tak terhapus jika power dimatikan) yang dapat ditulis dan
dihapus dengan pulsa elektronik. Lalu bootsrap program ini lebih dikenal sebagai BIOS (Basic Input Output
System).
Bootstrap program utama, yang biasanya terletak di motherboard akan memeriksa perangkat keras utama dan
melakukan inisialisasi terhadap program dalam hardware yang dikenal dengan nama firmware.
Bootstrap program utama kemudian akan mencari dan meload kernel sistem operasi ke memori lalu dilanjutkan
dengan inisialisasi sistem operasi. Dari sini program sistem operasi akan menunggu kejadian tertentu. Kejadian
ini akan menentukan apa yang akan dilakukan sistem operasi berikutnya (event-driven).
11Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-7. Arsitektur PC Modern
Kejadian ini pada komputer modern biasanya ditandai dengan munculnya interrupt dari software atau hardware,
sehingga Sistem Operasi ini disebut Interrupt-driven. Interrupt dari hardware biasanya dikirimkan melalui suatu
signal tertentu, sedangkan software mengirim interrupt dengan cara menjalankan system call atau juga dikenal
dengan istilah monitor call. System/Monitor call ini akan menyebabkan trap yaitu interrupt khusus yang
dihasilkan oleh software karena adanya masalah atau permintaan terhadap layanan sistem operasi. Trap ini juga
sering disebut sebagai exception.
Setiap interrupt terjadi, sekumpulan kode yang dikenal sebagai ISR (Interrupt Service Routine) akan menentukan
tindakan yang akan diambil. Untuk menentukan tindakan yang harus dilakukan, dapat dilakukan dengan dua
cara yaitu polling yang membuat komputer memeriksa satu demi satu perangkat yang ada untuk menyelidiki
sumber interrupt dan dengan cara menggunakan alamat-alamat ISR yang disimpan dalam array yang dikenal
sebagai interrupt vector di mana sistem akan memeriksa Interrupt Vector setiap kali interrupt terjadi.
Arsitektur interrupt harus mampu untuk menyimpan alamat instruksi yang di- interrupt. Pada komputer lama,
alamat ini disimpan di tempat tertentu yang tetap, sedangkan padakomputer baru, alamat itu disimpan di stack
bersama-sama dengan informasi state saat itu.
12Bab 1. Konsep Dasar Perangkat Komputer
1.2.2. Struktur I/O
Ada dua macam tindakan jika ada operasi I/O. Kedua macam tindakan itu adalah:
Setelah proses I/O dimulai, kendali akan kembali ke user program saat proses I/O selesai (Synchronous).
Instruksi wait menyebabkan CPU idle sampai interrupt berikutnya. Akan terjadi Wait loop (untuk menunggu
akses berikutnya). Paling banyak satu proses I/O yang berjalan dalam satu waktu.
Setelah proses I/O dimulai, kendali akan kembali ke user program tanpa menunggu proses I/O selesai
(Asynchronous). System call permintaan pada sistem operasi untuk mengizinkan user menunggu sampai I/O
selesai.Device-status table mengandung data masukkan untuk tiap I/O device yang menjelaskan tipe, alamat, dan
keadaannya. Sistem operasi memeriksa I/O device untuk mengetahui keadaan device dan mengubah tabel untuk
memasukkan interrupt. Jika I/O device mengirim/mengambil data ke/dari memory hal ini dikenal dengan nama
Direct Memory Access (DMA).
Gambar 1-8. Struktur I/O
Direct Memory Access
Digunakan untuk I/O device yang dapat memindahkan data dengan kecepatan tinggi (mendekati frekuensi bus
memori). Device controller memindahkan data dalam blok-blok dari buffer langsung ke memory utama atau
sebaliknya tanpa campur tangan prosesor. Interrupt hanya terjadi tiap blok bukan tiap word atau byte data.
Seluruh proses DMA dikendalikan oleh sebuah controller bernama DMA Controller (DMAC). DMA Controller
13Bab 1. Konsep Dasar Perangkat Komputer
mengirimkan atau menerima signal dari memori dan I/O device. Prosesor hanya mengirimkan alamat awal data,
tujuan data, panjang data ke DMA Controller. Interrupt pada prosesor hanya terjadi saat proses transfer selesai.
Hak terhadap penggunaan bus memory yang diperlukan DMA controller didapatkan dengan bantuan bus arbiter
yang dalam PC sekarang berupa chipset Northbridge.
Bus
Suatu jalur transfer data yang menghubungkan setiap device pada komputer. Hanya ada satu buah device yang
boleh mengirimkan data melewati sebuah bus, akan tetapi boleh lebih dari satu device yang membaca data bus
tersebut. Terdiri dari dua buah model: Synchronous bus di mana digunakan dengan bantuan clock tetapi
berkecepatan tinggi, tapi hanya untuk device berkecepatan tinggi juga; Asynchronous bus digunakan dengan
sistem handshake tetapi berkecepatan rendah, dapat digunakan untuk berbagai macam device.
1.2.3. Struktur Penyimpanan
Hal penting yang perlu diingat adalah program adalah bagian dari data.
Register
Tempat penyimpanan beberapa buah data volatile yang akan diolah langsung di prosesor yang berkecepatan
sangat tinggi. Register ini berada di dalam prosesor dengan jumlah yang sangat terbatas karena fungsinya
sebagai tempat perhitungan/komputasi data
Cache Memory
Tempat penyimpanan sementara (volatile) sejumlah kecil data untuk meningkatkan kecepatan pengambilan atau
penyimpanan data di memori oleh prosesor yang berkecepatan tinggi. Dahulu cache disimpan di luar prosesor
dan dapat ditambahkan. Misalnya pipeline burst cache yang biasa ada di komputer awal tahun 90-an. Akan tetapi
seiring menurunnya biaya produksi die atau wafer dan untuk meningkatkan kinerja, cache ditanamkan di
prosesor. Memori ini biasanya dibuat berdasarkan desain static memory.
Random Access Memory
Tempat penyimpanan sementara sejumlah data volatile yang dapat diakses langsung oleh prosesor. Pengertian
langsung di sini berarti prosesor dapat mengetahui alamat data yang ada di memori secara langsung. Sekarang,
RAM dapat diperoleh dengan harga yang cukup murah dangan kinerja yang bahkan dapat melewati cache pada
komputer yang lebih lama.
Memori Ekstensi
Tambahan memory yang digunakan untuk membantu proses-proses dalam komputer, biasanya berupa buffer.
Peranan tambahan memori ini sering dilupakan akan tetapi sangat penting artinya untuk efisiensi. Biasanya
tambahan memori ini memberi gambaran kasar kemampuan dari perangkat tersebut, sebagai contoh misalnya
jumlah VGA memory, soundcard memory.
14Bab 1. Konsep Dasar Perangkat Komputer
Secondary Storage
Media penyimpanan data yang non-volatile yang dapat berupa Flash Drive, Optical Disc, Magnetic Disk,
Magnetic Tape.
Gambar 1-9. Struktur Harddisk
Media ini biasanya daya tampungnya cukup besar dengan harga yang relatif murah. Portability-nya juga relatif
lebih tinggi.
15Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-10. Struktur Optical Drive
1.2.4. Penyimpanan Hirarkis
Dasar susunan sistem storage adalah kecepatan, biaya, sifat volatilitas. Caching menyalin informasi ke storage
media yang lebih cepat; Main memory dapat dilihat sebagai cache terakhir untuk secondary storage.
Menggunakan memory berkecepatan tinggi untuk memegang data yang diakses terakhir. Dibutuhkan cache
management policy. Cache juga memperkenalkan tingkat lain di hirarki storage. Hal ini memerlukan data untuk
disimpan bersama-sama di lebih dari satu level agar tetap konsisten.
16Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-11. Penyimpanan Hirarkis
1.3. Proteksi Perangkat Keras dan Struktur Jaringan
1.3.1. Proteksi Perangkat Keras
Dual Mode Operation
Membagi sumber daya sistem yang memerlukan sistem operasi untuk menjamin bahwa program yang salah
tidak menyebabkan program lain berjalan salah juga. Menyediakan dukungan perangkat keras untuk
membedakan minimal dua mode operasi yaitu: User Mode - Eksekusi dikendalikan oleh user;
Monitor/Kernel/System Mode - Eksekusi dikendalikan oleh sistem operasi. Instruksi tertentu hanya berjalan di
mode ini (Privileged Instruction). Ditambahkan sebuah bit penanda operasi. Jika terjadi interrupt, maka
perangkat keras berpindah ke monitor mode.
17Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-12. Dual Mode Operation
I/O Protection
Semua instruksi I/O umumnya Privileged Instruction (kecuali pada DOS, dan program tertentu). Harus
menjamin user program tidak dapat mengambil alih kontrol komputer di monitor mode.
Gambar 1-13. I/O Protection
Proteksi Memori
Harus menyediakan perlindungan terhadap memori minimal untuk interrupt vector dan interrupt service routine.
Ditambahkan dua register yang menentukan di mana alamat legal sebuah program boleh mengakses, yaitu base
register untuk menyimpan alamat awal yang legal dan limit register untuk menyimpan ukuran memori yang
boleh diakses Memori di luar jangkauan dilindungi.
18Bab 1. Konsep Dasar Perangkat Komputer
Gambar 1-14. Memory Protection
Proteksi CPU
Timer melakukan interrupt setelah perioda waktu tertentu untuk menjamin kontrol sistem operasi. Timer
diturunkan setiap clock. Ketika timer mencapai nol, sebuah Interrupt terjadi. Timer biasanya digunakan untuk
mengimplementasikan pembagian waktu. Timer dapat juga digunakan untuk menghitung waktu sekarang
walaupun fungsinya sekarang ini sudah digantikan Real Time Clock (RTC). System Clock Timer terpisah dari
Pencacah Waktu. Timer sekarang secara hardware lebih dikenal sebagai System Timer/CPU Timer. Load Timer
juga Privileged Instruction.
19Bab 1. Konsep Dasar Perangkat Komputer
1.3.2. Struktur Jaringan
Local Area Network
Gambar 1-15. Local Area Network
Muncul untuk menggantikan komputer besar. Dirancang untuk melingkupi suatu daerah yang kecil.
Menggunakan peralatan berkecepatan lebih tinggi daripada WAN. Hanya terdiri atas sejumlah kecil komputer.
20Bab 1. Konsep Dasar Perangkat Komputer
Wide Area Network
Gambar 1-16. Wide Area Network
Menghubungkan daerah yang lebih luas. Lebih lambat, dihubungkan oleh router melalui jaringan data
telekomunikasi.
1.4. Rangkuman
Sistem operasi telah berkembang selama lebih dari 40 tahun dengan dua tujuan utama. Pertama, sistem operasi
mencoba mengatur aktivitas-aktivitas komputasi untuk memastikan pendayagunaan yang baik dari sistem
komputasi tersebut. Kedua, menyediakan lingkungan yang nyaman untuk pengembangan dan jalankan dari
program.
Pada awalnya, sistem komputer digunakan dari depan konsol. Perangkat lunak seperti assembler, loader,
linkerdan compiler meningkatkan kenyamanan dari sistem pemrograman, tapi juga memerlukan waktu set-up
yang banyak. Untuk mengurangi waktu set-up tersebut, digunakan jasa operator dan menggabungkan tugas-tugas
yang sama (sistem batch).
Sistem batch mengizinkan pengurutan tugas secara otomatis dengan menggunakan sistem operasi yang resident
dan memberikan peningkatan yang cukup besar dalam utilisasi komputer. Komputer tidak perlu lagi menunggu
operasi oleh pengguna. Tapi utilisasi CPU tetap saja rendah. Hal ini dikarenakan lambatnya kecepatan alat-alat
untuk I/O relatif terhadap kecepatan CPU. Operasi off-line dari alat-alat yang lambat bertujuan untuk
21Bab 1. Konsep Dasar Perangkat Komputer
menggunakan beberapa sistem reader-to-tape dan tape-to-printer untuk satu CPU. Untuk meningkatkan
keseluruhan kemampuan dari sistem komputer, para developer memperkenalkan konsep multiprogramming.
Dengan multiprogramming, beberapa tugas disimpan dalam memori dalam satu waktu; CPU digunakan secara
bergantian sehingga menambah utilisasi CPU dan mengurangi total waktu yang dibutuhkan untuk
menyelesaikan tugas-tugas tersebut. Multiprogramming, yang dibuat untuk meningkatkan kemampuan, juga
mengizinkan time sharing. Sistem operasi yang bersifat time-shared memperbolehkan banyak pengguna untuk
menggunakan komputer secara interaktif pada saat yang bersamaan.
PC adalah mikrokomputer yang dianggap lebih kecil dan lebih murah dibandingkan komputer mainframe.
Sistem operasi untuk komputer-komputer seperti ini diuntungkan oleh pengembangan sistem operasi untuk
komputer mainframe dalam beberapa hal. Namun, semenjak penggunaan komputer untuk keperluan pribadi,
maka utilisasi CPU tidak lagi menjadi perhatian utama. Karena itu, beberapa desain untuk komputer mainframe
tidak cocok untuk sistem yang lebih kecil.
Paralel System mempunyai lebih dari satu CPU yang mempunyai hubungan yang erat; CPU-CPU tersebut
berbagi bus komputer, dan kadang-kadang berbagi memori dan perangkat yang lainnya. Sistem seperti itu dapat
meningkatkan throughput dan reliabilititas.
Sistem hard real-time sering kali digunakan sebagai alat pengontrol untuk applikasi yang dedicated. Sistem
operasi yang hard real-time mempunyai batasan waktu yang tetap yang sudah didefinisikan dengan
baik.Pemrosesan harus selesai dalam batasan-batasan yang sudah didefinisikan, atau sistem akan gagal.
Sistem soft real-time mempunyai lebih sedikit batasan waktu yang keras, dan tidak mendukung penjadualan
dengan menggunakan batas akhir. Pengaruh dari internet dan World Wide Webbaru-baru ini telah mendorong
pengembangan sistem operasi modern yang menyertakan web browser serta perangkat lunak jaringan dan
komunikasi sebagai satu kesatuan.
Multiprogramming dan sistem time-sharing meningkatkan kemampuan komputer dengan melampaui batas
operasi (overlap) CPU dan I/O dalam satu mesin. Hal seperti itu memerlukan perpindahan data antara CPU dan
alat I/O, ditangani baik dengan polling atau interrupt-drivenakses ke I/O port, atau dengan perpindahan DMA.
Agar komputer dapat menjalankan suatu program, maka program tersebut harus berada di memori utama (main
memory).
Memori utama adalah satu-satunya tempat penyimpanan yang besar yang dapat diakses secara langsung oleh
prosessor, merupakan suatu array dari word atau byte, yang mempunyai ukuran ratusan sampai jutaan ribu.
Setiap word memiliki alamatnya sendiri. Memori utama adalah tempat penyimpanan yang volatile, dimana
isinya hilang bila sumber energinya (energi listrik) dimatikan. Kebanyakan sistem komputer menyediakan
secondary storage sebagai perluasan dari memori utama. Syarat utama dari secondary storage adalah dapat
menyimpan data dalam jumlah besar secara permanen.
Secondary storage yang paling umum adalah disk magnetik, yang meyediakan penyimpanan untuk program mau
pun data. Disk magnetik adalah alat penyimpanan data yang nonvolatile yang juga menyediakan akses secara
random. Tape magnetik digunakan terutama untuk backup, penyimpanan informasi yang jarang digunakan, dan
sebagai media pemindahan informasi dari satu sistem ke sistem yang lain.
Beragam sistem penyimpanan dalam sistem komputer dapat d isusun dalam hirarki berdasarkan kecepatan dan
biayanya. Tingkat yang paling atas adalah yang paling mahal, tapi cepat. Semakin kebawah, biaya perbit
menurun, sedangkan waktu aksesnya semakin bertambah (semakin lambat).
Sistem operasi harus memastikan operasi yang benar dari sistem komputer. Untuk mencegah pengguna program
mengganggu operasi yang berjalan dalam sistem, perangkat keras mempunyai dua mode: mode pengguna dan
mode monitor. Beberapa perintah (seperti perintah I/O dan perintah halt) adalah perintah khusus, dan hanya
dapat dijalankan dalam mode monitor. Memori juga harus dilindungi dari modifikasi oleh pengguna. Timer
mencegah terjadinya pengulangan secara terus menerus (infinite loop). Hal-hal tersebut (dual mode, perintah
khusus, pengaman memori, timer interrupt) adalah blok bangunan dasar yang digunakan oleh sistem operasi
untuk mencapai operasi yang sesuai.
22Bab 1. Konsep Dasar Perangkat Komputer
1.5. Latihan
1. Sebutkan tiga tujuan utama dari sebuah sistem operasi!
2. Apakah keuntungan utama dari multiprogramming?
3. Apakah perbedaan utama antara komputer mainframe dengan PC?
4. Untuk jenis operasi apakah DMA itu berguna? Jelaskan jawabannya!
5. Sebutkan kendala-kendala yang harus diatasi oleh programmer dalam menulis sistem operasi untuk
lingkungan waktu nyata!
6. Jelaskan perbedaan antara symmetric dan asymmetric multiprocessing. Sebutkan keuntungan dan kerugian
dari sistem multiprocessor.
7. Beberapa CPU menyediakan lebih dari dua mode operasi. Sebutkan dua kemungkinan penggunaan dari
mode tersebut?
8. Sebutkan dua kegunaan dari memory cache! Problem apakah yang dapat dipecahkan dan juga muncul
dengan adanya cache tersebut?
9. Apakah perbedaan antara trap dan interrupt? Sebutkan penggunaan dari setiap fungsi tersebut
10. Sebutkan 3 kelas komputer menurut jenis datanya!
1.6. Rujukan
Berikut merupakan rangkuman dari semua rujukan yang digunakan di bab ini.
Bibliografi
[Morgan1992] K Morgan, “The RTOS Difference”, Byte, August 1992.
[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne, 2002, Applied Operating Systems:
Sixth Edition, Edisi Keenam, John Wiley & Sons.
Catatan
1. Windows merupakan merek dagang terdaftar dari Microsoft.
2. GNU merupakan singkatan dari GNU is Not Unix, sedangkan Linux merupakan merek dagang dari Linus
Torvalds.
3. Internet Explorer merupakan merek dagang terdaftar dari Microsoft.
23Bab 2. Konsep Dasar Sistem Operasi
2.1. Struktur Sistem Operasi
Menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, memandang atau mengartikan apa itu sistem Operasi
bisa diketahui dari beberapa hal, diantaranya dengan mengetahui komponen-komponen sistemnya dan layanan
yang disediakan oleh sistem operasi.
2.1.1. Komponen-komponen Sistem
Tidak semua sistem operasi mempunyai struktur yang sama. Namun menurut Avi Silberschatz, Peter Galvin, dan
Greg Gagne, umumnya sebuah sistem operasi modern mempunyai komponen sebagai berikut:
• Managemen Proses.
• Managemen Memori Utama.
• Managemen Berkas.
• Managemen Sistem I/O.
• Managemen Penyimpanan Sekunder.
• Sistem Proteksi.
• Jaringan.
• Command-Interpreter System.
Sedangkan menurut A.S. Tanenbaum, sistem operasi mempunyai empat komponen utama, yaitu managemen
proses, input/output, managemen memori, dan sistem berkas.
2.1.2. Managemen Proses
Proses adalah sebuah program yang sedang dieksekusi. Sebuah proses membutuhkan beberapa sumber daya
untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, dan
perangkat-perangkat I/O. Sistem operasi mengalokasikan sumber daya-sumber daya tersebut saat proses itu
diciptakan atau sedang diproses/dijalankan. Ketika proses tersebut berhenti dijalankan, sistem operasi akan
mendapatkan kembali semua sumber daya yang bisa digunakan kembali.
Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan managemen proses seperti:
• Membuat dan menghapus proses pengguna dan sistem proses.
• Menunda atau melanjutkan proses.
• Menyediakan mekanisme untuk proses sinkronisasi.
• Menyediakan mekanisme untuk proses komunikasi.
• Menyediakan mekanisme untuk penanganan deadlock.
24Bab 2. Konsep Dasar Sistem Operasi
2.1.3. Managemen Memori Utama
Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte, yang
ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri.
Memori utama berfungsi sebagai tempat penyimpanan instruksi/data yang akses datanya digunakan oleh CPU
dan perangkat I/O. Memori utama termasuk tempat penyimpanan data yang yang bersifat volatile -- tidak
permanen -- yaitu data akan hilang kalau komputer dimatikan.
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan managemen memori seperti:
• Menjaga track dari memori yang sedang digunakan dan siapa yang menggunakannya.
• Memilih program yang akan di-load ke memori.
2.1.4. Managemen Berkas
Berkas adalah kumpulan informasi yang berhubungan, sesuai dengan tujuan pembuat berkas tersebut. Umumnya
berkas merepresentasikan program dan data. Berkas dapat mempunyai struktur yang bersifat hirarkis (direktori,
volume, dll.). Sistem operasi mengimplementasikan konsep abstrak dari berkas dengan mengatur media
penyimpanan massa, misalnya tapes dan disk.
Sistem operasi bertanggung-jawab dalam aktivitas yang berhubungan dengan managemen berkas:
• Pembuatan dan penghapusan berkas.
• Pembuatan dan penghapusan direktori.
• Mendukung manipulasi berkas dan direktori.
• Memetakan berkas ke secondary-storage.
• Mem-back-up berkas ke media penyimpanan yang permanen (non-volatile).
2.1.5. Managemen Sistem I/O
Sering disebut device manager. Menyediakan device driver yang umum sehingga operasi I/O dapat seragam
(membuka, membaca, menulis, menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca
berkas pada perangkat keras, CD-ROM dan floppy disk.
Komponen Sistem Operasi untuk sistem I/O:
• Penyangga: menampung sementara data dari/ ke perangkat I/O.
• Spooling: melakukan penjadualan pemakaian I/O sistem supaya lebih efisien (antrian dsb.).
• Menyediakan driver: untuk dapat melakukan operasi rinci untuk perangkat keras I/O tertentu.
2.1.6. Managemen Penyimpanan Sekunder
Data yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat kecil. Oleh karena itu, untuk
menyimpan keseluruhan data dan program komputer dibutuhkan penyimpanan sekunder yang bersifat permanen
dan mampu menampung banyak data, sebagai back-up dari memori utama. Contoh dari penyimpanan sekunder
adalah hard-disk, disket, dll.
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan managemen disk seperti:
25Bab 2. Konsep Dasar Sistem Operasi
• free-space management.
• alokasi penyimpanan.
• penjadualan disk.
2.1.7. Sistem Proteksi
Proteksi mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh program, prosesor, atau
pengguna ke sistem sumber daya. Mekanisme proteksi harus:
• Membedakan antara penggunaan yang sudah diberi izin dan yang belum.
• Menspesifikasi kontrol untuk dibebankan/diberi tugas.
• Menyediakan alat untuk pemberlakuan sistem.
2.1.8. Jaringan
Sistem terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori, atau clock. Setiap prosesor
mempunyai memori dan clock tersendiri. Prosesor-prosesor tersebut terhubung melalui jaringan komunikasi
Sistem terdistribusi menyediakan akses pengguna ke bermacam sumber-daya sistem. Akses tersebut
menyebabkan peningkatan kecepatan komputasi dan meningkatkan kemampuan penyediaan data.
2.1.9. Command-Interpreter System
Sistem Operasi menunggu instruksi dari pengguna (command driven). Program yang membaca instruksi dan
mengartikan control statements umumnya disebut: control-card interpreter, command-line interpreter dan
terkadang dikenal sebagai shell. Command-Interpreter System sangat bervariasi dari satu sistem operasi ke
sistem operasi yang lain dan disesuaikan dengan tujuan dan teknologi perangkat I/O yang ada. Contohnya: CLI,
Windows, Pen-based (touch), dan lain-lain.
2.2. Layanan Sistem Operasi, System Calls, dan System
Program
2.2.1. Layanan Sistem Operasi
Layanan sistem operasi dirancang untuk membuat pemrograman menjadi lebih mudah.
1. Pembuatan Program
Sistim operasi menyediakan berbagai fasilitas yang membantu programer dalam membuat program seperti
editor. Walaupun bukan bagian dari sistim operasi, tapi layanan ini diakses melalui sistim operasi.
2. Eksekusi Program

Sistem harus bisa me-load program ke memori, dan menjalankan program tersebut. Program harus bisa
menghentikan pengeksekusiannya baik secara normal maupun tidak (ada error).
3. Operasi I/O
Program yang sedang dijalankan kadang kala membutuhkan I/O. Untuk efisiensi dan keamanan, pengguna
biasanya tidak bisa mengatur peranti I/O secara langsung, untuk itulah sistem operasi harus menyediakan
mekanisme dalam melakukan operasi I/O.
4. Manipulasi Sistem Berkas
Program harus membaca dan menulis berkas, dan kadang kala juga harus membuat dan menghapus berkas.
5. Komunikasi
Kadang kala sebuah proses memerlukan informasi dari proses yang lain. Ada dua cara umum dimana
komunikasi dapat dilakukan. Komunikasi dapat terjadi antara proses dalam satu komputer, atau antara
proses yang berada dalam komputer yang berbeda, tetapi dihubungkan oleh jaringan komputer. Komunikasi
dapat dilakukan dengan share-memory atau message-passing, dimana sejumlah informasi dipindahkan
antara proses oleh sistem operasi.
6. Deteksi Error
Sistem operasi harus selalu waspada terhadap kemungkinan error. Error dapat terjadi di CPU dan memori
perangkat keras, I/O, dan di dalam program yang dijalankan pengguna. Untuk setiap jenis error sistem
operasi harus bisa mengambil langkah yang tepat untuk mempertahankan jalannya proses komputasi.
Misalnya dengan menghentikan jalannya program, mencoba kembali melakukan operasi yang dijalankan,
atau melaporkan kesalahan yang terjadi agar pengguna dapat mengambil langkah selanjutnya.
Disamping pelayanan diatas, sistem operasi juga menyediakan layanan lain. Layanan ini bukan untuk membantu
pengguna tapi lebih pada mempertahankan efisiensi sistem itu sendiri. Layanan tambahan itu yaitu:
1. Alokasi Sumber Daya
Ketika beberapa pengguna menggunakan sistem atau beberapa program dijalankan secara bersamaan,
sumber daya harus dialokasikan bagi masing-masing pengguna dan program tersebut.
2. Accounting
Kita menginginkan agar jumlah pengguna yang menggunakan sumber daya, dan jenis sumber daya yang
digunakan selalu terjaga. Untuk itu maka diperlukan suatu perhitungan dan statistik. Perhitungan ini
diperlukan bagi seseorang yang ingin merubah konfigurasi sistem untuk meningkatkan pelayanan.
3. Proteksi
Layanan proteksi memastikan bahwa segala akses ke sumber daya terkontrol. Dan tentu saja keamanan
terhadap gangguan dari luar sistem tersebut. Keamanan bisa saja dilakukan dengan terlebih dahulu
mengidentifikasi pengguna. Ini bisa dilakukan dengan meminta password bila ingin menggunakan sumber
daya.
27Bab 2. Konsep Dasar Sistem Operasi
2.2.2. System Calls
Biasanya tersedia sebagai instruksi bahasa assembly. Beberapa sistem mengizinkan system calls dibuat langsung
dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh: C, C++) telah didefenisikan untuk
menggantikan bahasa assembly untuk sistem pemrograman.
Tiga metoda umum yang digunakan dalam memberikan parameter kepada sistem operasi:
• Melalui register.
• Menyimpan parameter dalam block atau tabel pada memori dan alamat block tersebut diberikan sebagai
parameter dalam register.
• Menyimpan parameter (push) ke dalam stack oleh program, dan melakukan pop off pada stack oleh sistem
operasi.
Gambar 2-1. Memberikan parameter melalui tabel
Sumber: Silberschatz, 2003, hal. 65.
Jenis System Calls
Gambar 2-2. Eksekusi MS-DOS
Sumber: Silberschatz, 2003, hal. 68.
1. Kontrol Proses
System calls yang berhubungan dengan kontrol proses antara lain ketika penghentian pengeksekusian
program. Baik secara normal (end) maupun tidak normal (abort). Selama proses dieksekusi kadang kala
28Bab 2. Konsep Dasar Sistem Operasi
diperlukan untuk me-load atau mengeksekusi program lain, disini diperlukan lagi suatu system calls. Juga
ketika membuat suatu proses baru dan menghentikan sebuah proses. Ada juga system calls yang dipanggil
ketika kita ingin meminta dan merubah atribut dari suatu proses.
MS-DOS adalah contoh dari sistem single-tasking. MS-DOS menggunakan metoda yang sederhana dalam
menjalankan program aan tidak menciptakan proses baru. Program di-load ke dalam memori, kemudian
program dijalankan.
Berkeley Unix adalah contoh dari sistem multi-tasking. Command Interpereter masih tetap bisa dijalankan
ketika program lain dieksekusi.
2. Managemen Berkas
System calls yang berhubungan dengan berkas sangat diperlukan. Seperti ketika kita ingin membuat atau
menghapus suatu berkas. Atau ketika ingin membuka atau menutup suatu berkas yang telah ada, membaca
berkas tersebut, dan menulis berkas itu. System calls juga diperlukan ketika kita ingin mengetahui atribut
dari suatu berkas atau ketika kita juga ingin merubah atribut tersebut. Yang termasuk atribut berkas adalah
nama berkas, jenis berkas, dan lain-lain.
Ada juga system calls yang menyediakan mekanisme lain yang berhubungan dengan direktori atau sistim
berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu spesifik berkas. Contohnya membuat
atau menghapus suatu direktori, dan lain-lain.
3. Managemen Peranti
Program yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak pengguna
yang menggunakan sistem, maka jika memerlukan tambahan sumber daya maka harus meminta peranti
terlebih dahulu. Dan setelah selesai penggunakannnya harus dilepaskan kembali. Ketika sebuah peranti telah
diminta dan dialokasikan maka peranti tersebut bisa dibaca, ditulis, atau direposisi.
4. Informasi Maintenance
Beberapa system calls disediakan untuk membantu pertukaran informasi antara pengguna dan sistem
operasi. Contohnya system calls untuk meminta dan mengatur waktu dan tanggal. Atau meminta informasi
tentang sistem itu sendiri, seperti jumlah pengguna, jumlah memori dan disk yang masih bisa digunakan,
dan lain-lain. Ada juga system calls untuk meminta informasi tentang proses yang disimpan oleh sistem dan
system calls untuk merubah (reset) informasi tersebut.
5. Komunikasi
Dua model komunikasi:
• Message-passing
Pertukaran informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan oleh sistem
operasi.
• shared-memory
Proses menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaran informasi
dengan membaca dan menulis data pada memori tersebut.
29Bab 2. Konsep Dasar Sistem Operasi
Dalam message-passing, sebelum komunikasi dapat dilakukan harus dibangun dulu sebuah koneksi. Untuk
itu diperlukan suatu system calls dalam pengaturan koneksi tersebut, baik dalam menghubungkan koneksi
tersebut maupun dalam memutuskan koneksi tersebut ketika komunikasi sudah selesai dilakukan. Juga
diperlukan suatu system calls untuk membaca dan menulis pesan (message) agar pertukaran informasi dapat
dilakukan.
Gambar 2-3. Multi program pada Unix
Sumber: Silberschatz, 2003, hal. 69.
Gambar 2-4. Mekanisme komunikasi
Sumber: Silberschatz, 2003, hal. 72.
2.2.3. System Program
System program menyediakan lingkungan yang memungkinkan pengembangan program dan eksekusi berjalan
dengan baik.
Dapat dikategorikan:
30Bab 2. Konsep Dasar Sistem Operasi
• Managemen/manipulasi Berkas
Membuat, menghapus, copy, rename, print, memanipulasi berkas dan direktori.
• Informasi status
Beberapa program meminta informasi tentang tanggal, jam, jumlah memori dan disk yang tersedia, jumlah
pengguna dan informasi lain yang sejenis.
• Modifikasi berkas
Membuat berkas dan memodifikasi isi berkas yang disimpan pada disk atau tape.
• Pendukung bahasa pemrograman
Kadang kala compiler, assembler, interpreter dari bahasa pemrograman diberikan kepada pengguna dengan
bantuan sistem operasi.
• Loading dan eksekusi program
Ketika program di-assembly atau di-compile, program tersebut harus di-load ke dalam memori untuk
dieksekusi. Untuk itu sistem harus menyediakan absolute loaders, relocatable loaders, linkage editors, dan
overlay loaders.
• Komunikasi
Menyediakan mekanisme komunikasi antara proses, pengguna, dan sistem komputer yang berbeda. Sehingga
pengguna bisa mengirim pesan, browse web pages, mengirim e-mail, atau mentransfer berkas.
Umumnya sistem operasi dilengkapi oleh system-utilities atau program aplikasi yang di dalamnya termasuk web
browser, word prossesor dan format teks, sistem database, games. System program yang paling penting adalah
command interpreter yang mengambil dan menerjemahkan user-specified command selanjutnya.
2.3. Struktur Sistem
Sebuah sistem yang besar dan kompleks seperti sistem operasi modern harus diatur dengan cara membagi task
kedalam komponen-komponen kecil agar dapat berfungsi dengan baik dan mudah dimodifikasi. Pada bab ini,
kita akan membahas cara komponen-komponen ini dihubungkan satu sama lain. Menurut Avi Silberschatz, Peter
Galvin, dan Greg Gagne, ada tiga cara yaitu:
• Struktur Sederhana
• Pendekatan Berlapis
• Mikrokernel
Sedangkan menurut William Stallings, kita bisa memandang sistem sebagai seperangkat lapisan. Tiap lapisan
menampilkan bagian fungsi yang dibutuhkan oleh sistem operasi. Bagian yang terletak pada lapisan yang lebih
rendah akan menmpilkan fungsi yang lebih primitif dan menyimpan detail fungsi tersebut.
31Bab 2. Konsep Dasar Sistem Operasi
2.3.1. Struktur Sederhana
Banyak sistem yang tidak terstruktur dengan baik, sehingga sistem operasi seperti ini dimulai dengan sistem
yang lebih kecil, sederhana, dan terbatas. Kemudian berkembang dengan cakupan yang original. Contoh sistem
seperti ini adalah MS-DOS, yang disusun untuk mendukung fungsi yang banyak pada ruang yang sedikit karena
keterbatasan perangkat keras untuk menjalankannya.
Contoh sistem lainnya adalah UNIX, yang terdiri dari dua bagian yang terpisah, yaitu kernel dan program
sistem. Kernel selanjutnya dibagi dua bagian, yaitu antarmuka dan device drivers. Kernel mendukung sistem
berkas, penjadualan CPU, managemen memori, dan fungsi sistem operasi lainnya melalui system calls.
2.3.2. Pendekatan Berlapis
Sistem operasi dibagi menjadi sejumlah lapisan yang masing-masing dibangun diatas lapisan yang lebih rendah.
Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebih tinggi. Lapisan yang paling bawah
adalah perangkat keras, dan yang paling tinggi adalah user-interface.
Gambar 2-5. Lapisan pada Sistem Operasi
Sumber: Silberschatz, 2003, hal. 77.
Sebuah lapisan adalah implementasi dari objek abstrak yang merupakan enkapsulasi dari data dan operasi yang
bisa memanipulasi data tersebut. Keuntungan utama dengan sistem ini adalah modularitas. Pendekatan ini
mempermudah debug dan verifikasi sistem. Lapisan pertama bisa di debug tanpa mengganggu sistem yang lain
karena hanya menggunakan perangkat keras dasar untuk implementasi fungsinya. Bila terjadi error saat
debugging sejumlah lapisan, error pasti pada lapisan yang baru saja di debug, karena lapisan dibawahnya sudah
di debug.
Sedangkan menurut Tanenbaum dan Woodhull, sistem terlapis terdiri dari enam lapisan, yaitu:
• Lapisan 0
Mengatur alokasi prosesor, pertukaran antar proses ketika interupsi terjadi atau waktu habis. Lapisan ini
mendukung dasar multi-programming pada CPU.
• Lapisan 1
32Bab 2. Konsep Dasar Sistem Operasi
Mengalokasikan ruang untuk proses di memori utama dan pada 512 kilo word drum yang digunakan untuk
menahan bagian proses ketika tidak ada ruang di memori utama.
• Lapisan 2
Menangani komunikasi antara masing-masing proses dan operator console. Pada lapis ini masing-masing
proses secara efektif memiliki opertor console sendiri.
• Lapisan 3
Mengatur peranti I/O dan menampung informasi yang mengalir dari dan ke proses tersebut.
• Lapisan 4
Tempat program pengguna. Pengguna tidak perlu memikirkan tentang proses, memori, console, atau
managemen I/O.
• Lapisan 5
Merupakan operator sistem.
Menurut Stallings, model tingkatan sistem operasi yang mengaplikasikan prinsip ini dapat dilihat pada tabel
berikut, yang terdiri dari level-level dibawah ini:
33Bab 2. Konsep Dasar Sistem Operasi
Gambar 2-6. Tabel Level pada Sistem Operasi
Sumber: Stallings, 2001, hal. 69.
• Level 1
Terdiri dari sirkuit elektronik dimana objek yang ditangani adalah register memory cell, dan gerbang logika.
Operasi pada objek ini seperti membersihkan register atau membaca lokasi memori.
• Level 2
Pada level ini adalah set instruksi pada prosesor. Operasinya adalah instruksi bahasa-mesin, seperti
menambah, mengurangi, load dan store.
• Level 3
Tambahan konsep prosedur atau subrutin ditambah operasi call atau return.
• Level 4
34Bab 2. Konsep Dasar Sistem Operasi
Mengenalkan interupsi yang menyebabkan prosesor harus menyimpan perintah yang baru dijalankan dan
memanggil rutin penanganan interupsi.
Empat level pertama bukan bagian sistem operasi tetapi bagian perangkat keras. Meskipun demikian beberapa
elemen sistem operasi mulai tampil pada level-level ini, seperti rutin penanganan interupsi. Pada level 5, kita
mulai masuk kebagian sistem operasi dan konsepnya berhubungan dengan multi-programming.
• Level 5
Level ini mengenalkan ide proses dalam mengeksekusi program. Kebutuhan-kebutuhan dasar pada sistem
operasi untuk mendukung proses ganda termasuk kemampuan men-suspend dan me-resume proses. Hal ini
membutuhkan register perangkat keras untuk menyimpan agar eksekusi bisa ditukar antara satu proses ke
proses lainnya.
• Level 6
Mengatasi penyimpanan sekunder dari komputer. Level ini untuk menjadualkan operasi dan menanggapi
permintaan proses dalam melengkapi suatu proses.
• Level 7
Membuat alamat logik untuk proses. Level ini mengatur alamat virtual ke dalam blok yang bisa dipindahkan
antara memori utama dan memori tambahan. Cara-cara yang sering dipakai adalah menggunakan ukuran
halaman yang tetap, menggunakan segmen sepanjang variabelnya, dan menggunakan cara keduanya. Ketika
blok yang dibutuhkan tidak ada dimemori utama, alamat logis pada level ini meminta transfer dari level 6.
Sampai point ini, sistem operasi mengatasi sumber daya dari prosesor tunggal. Mulai level 8, sistem operasi
mengatasi objek eksternal seperti peranti bagian luar, jaringan, dan sisipan komputer kepada jaringan.
• Level 8
Mengatasi komunikasi informasi dan pesan-pesan antar proses. Dimana pada level 5 disediakan mekanisme
penanda yang kuno yang memungkinkan untuk sinkronisasi proses, pada level ini mengatasi pembagian
informasi yang lebih banyak. Salah satu peranti yang paling sesuai adalah pipe (pipa) yang menerima output
suatu proses dan memberi input ke proses lain.
• Level 9
Mendukung penyimpanan jangka panjang yang disebut dengan berkas. Pada level ini, data dari penyimpanan
sekunder ditampilkan pada tingkat abstrak, panjang variabel yang terpisah. Hal ini bertentangan tampilan
yang berorientasikan perangkat keras dari penyimpanan sekunder.
• Level 10
Menyediakan akses ke peranti eksternal menggunakan antarmuka standar.
• Level 11
Bertanggung-jawab mempertahankan hubungan antara internal dan eksternal identifier dari sumber daya dan
objek sistem. Eksternal identifier adalah nama yang bisa dimanfaatkan oleh aplikasi atau pengguna. Internal
35Bab 2. Konsep Dasar Sistem Operasi
identifier adalah alamat atau indikasi lain yang bisa digunakan oleh level yang lebih rendah untuk meletakkan
dan mengontrol objek.
• Level 12
Menyediakan suatu fasilitator yang penuh tampilan untuk mendukung proses. Hal ini merupakan lanjutan dari
yang telah disediakan pada level 5. Pada level 12, semua info yang dibutuhkan untuk managemen proses
dengan berurutan disediakan, termasuk alamat virtual di proses, daftar objek dan proses yang berinteraksi
dengan proses tersebut serta batasan interaksi tersebut, parameter yang harus dipenuhi proses saat
pembentukan, dan karakteristik lain yang mungkin digunakan sistem operasi untuk mengontrol proses.
• Level 13
Menyediakan antarmuka dari sistem operasi dengan pengguna yang dianggap sebagai shell atau dinding
karena memisahkan pengguna dengan sistem operasi dan menampilkan sistem operasi dengan sederhana
sebagai kumpulan servis atau pelayanan.
Dari ketiga sumber diatas dapat kita simpulkan bahwa lapisan sistem operasi secara umum terdiri atas 4 bagian,
yaitu:
1. Perangkat keras
Lebih berhubungan kepada perancang sistem. Lapisan ini mencakup lapisan 0 dan 1 menurut Tanenbaum,
dan level 1 sampai dengan level 4 menurut Stallings.
2. Sistem operasi
Lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 2 menurut Tanenbaum, dan level 5
sampai dengan level 7 menurut Stallings.
3. Kelengkapan
Lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 3 menurut Tanenbaum, dan level 8
sampai dengan level 11 menurut Stallings.
4. Program aplikasi
Lebih berhubungan kepada pengguna aplikasi komputer. Lapisan ini mencakup lapisan 4 dan lapisan 5
menurut Tanebaum, dan level 12 dan level 13 menurut Stallings.
36Bab 2. Konsep Dasar Sistem Operasi
Gambar 2-7. Lapisan Sistem Operasi secara umum
Sumber: Stallings, 2001, hal. 46.
Salah satu kesulitan besar dalam sistem terlapis disebabkan karena sebuah lapisan hanya bisa menggunakan
lapisan-lapisan dibawahnya, misalnya: backing-store driver, normalnya diatas penjadual CPU sedangkan pada
sistem yang besar, penjadual CPU punya informasi tentang proses yang aktif yang ada di memori. Oleh karena
itu, info ini harus dimasukkan dan dikeluarkan dari memori, sehingga membutuhkan backing-store driver
dibawah penjadual CPU. Kesulitan lainnya adalah paling tidak efisien dibandingkan tipe lain. Ketika pengguna
mengeksekusi I/O, akan mengeksekusi lapisan I/O, lapisan managemen memori, yang memanggil lapisan
penjadual CPU.
2.3.3. Mikrokernel
Metode ini menyusun sistem operasi dengan menghapus semua komponen yang tidak esensial dari kernel, dan
mengimplementasikannya sebagai program sistem dan level pengguna. Hasilnya kernel yang lebih kecil. Pada
umumnya mikrokernel mendukung proses dan menagemen memori yang minimal, sebagai tambahan utnuk
fasilitas komunikasi.
Fungsi utama mikrokernel adalah mendukung fasilitas komunikasi antara program klien dan bermacam-macam
layanan yang juga berjalan di user space. Komunikasi yang dilakukan secara tidak langsung, didukung oleh
sistem message passing, dengan bertukar pesan melalui mikrokernel.
Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan ke user space, kernel tidak
perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem operasinya lebih mudah untuk
ditempatkan pada suatu desain perangkat keras ke desain lainnya. Mikrokernel juga mendukung keamanan
reliabilitas lebih, karena kebanyakan layanan berjalan sebagai pengguna proses. Jika layanan gagal, sistem
operasi lainnya tetap terjaga. Beberapa sistem operasi yang menggunakan metode ini adalah TRU64 UNIX,
MacOSX, dan QNX.
37Bab 2. Konsep Dasar Sistem Operasi
2.4. Mesin Virtual, Desain Sistem dan Implementasinya, dan
System Generation
2.4.1. Mesin Virtual Java
Pada dasarnya, sistem komputer dibangun atas lapisan-lapisan (layers). Perangkat keras adalah lapisan terendah.
Kernel yang berada di lapisan atasnya menggunakan instruksi perangkat keras untuk menciptakan seperangkat
system calls yang dapat digunakan oleh komponen-komponen lain yang berada pada level di atasnya. Sistem
program pada level di atasnya dapat menggunakan system call dan perangkat keras seolah-olah mereka berada
pada level yang sama.
Meski sistem program berada di level tertinggi, program aplikasi bisa melihat segala sesuatu di bawahnya (pada
tingkatan) seakan mereka adalah bagian dari mesin. Pendekatan dengan lapisan-lapisan inilah yang diambil
sebagai kesimpulan logis pada konsep mesin virtual atau virtual machine (VM). Pendekatan VM menyediakan
sebuah antarmuka yang identik dengan underlying bare hardware. VM dibuat dengan pembagian sumber daya
oleh physical computer. VM perangkat lunak membutuhkan ruang pada disk untuk menyediakan memori virtual
dan spooling sehingga perlu ada disk virtual.
Meski sangat berguna, VM sulit untuk diimplementasikan. Banyak hal yang dibutuhkan untuk menyediakan
duplikat yang tepat dari underlying machine. VM dapat dieksekusi pada only user mode sehingga kita harus
mempunyai virtual user mode sekaligus virtual memory mode yang keduanya berjalan di physical user mode.
Ketika instruksi yang hanya membutuhkan virtual user mode dijalankan, ia akan mengubah isi register yang
berefek pada virtual monitor mode sehingga dapat memulai ulang VM tersebut. Sebuah instruksi I/O yang
membutuh waktu 100 ms, dengan menggunakan VM bisa dieksekusi lebih cepat karena spooling atau lebih
lambat karena interpreter. Terlebih lagi, CPU menjadi multiprogrammed di antara banyak VM. Jika setiap user
diberi 1 VM, dia akan bebas menjalankan sistem operasi (kernel) yang diinginkan pada VM tersebut.
Selain kekurangan yang telah disebutkan diatas, jelas VM memiliki kelebihan-kelebihan, yaitu: Keamanan yang
terjamin karena VM mempunyai perlindungan lengkap pada berbagai sistem sumber daya, tidak ada pembagian
resources secara langsung. Pembagian disk mini dan jaringan diimplementasikan dalam perangkat lunak. Sistem
VM adalah kendaraan yang sempurna untuk penelitian dan pengembangan Sistem Operasi. Dengan VM,
perubahan satu bagian dari mesin dijamin tidak akan mengubah komponen lainnya.
Mesin Virtual Java atau Java Virtual Machine (JVM) terdiri dari sebuah kelas loader dan java interpreter yang
mengeksekusi the architecture-neutral bytecodes. Java interpreter bisa berupa perangkat lunak yang
menginterpretasikan kode byte setiap waktu atau hanya Just-In-Time (JIT) yang mengubah architecture-neutral
bytecodes menjadi bahasa mesin lokal. Interpreter bisa juga diimplementasikan pada sebuah chip perangkat
keras. Instance dari JVM dibentuk ketika aplikasi java atau applet dijalankan. JVM mulai berjalan saat method
main dipanggil. Pada applet, JVM menciptakan method main sebelum membuat applet itu sendiri.
Java Development Environment terdiri dari sebuah Compile Time Environment dan RunTime Environment.
Compile berfungsi mengubah java sourcecode menjadi kode byte. Sedangkan RunTime merupakan Java
Platform untuk sistem Host.
2.4.2. Desain Sistem dan Implementasinya
Desain sistem memiliki masalah dalam menentukan tujuan dan spesifikasi sistem. Pada level paling tinggi,
desain sistem akan dipengaruhi oleh pilihan perangkat keras dan jenis sistem. Kebutuhannya akan lebih sulit
untuk dispesifikasikan. Kebutuhan terdiri dari target user dan target sistem. User menginginkan sistem yang
nyaman digunakan, mudah dipelajari, dapat dipercaya, aman, dan cepat. Namun itu semua tidaklah signifikan
untuk desain sistem. Orang yang mendesain ingin sistem yang mudah didesain, diimplementasikan, fleksibel,
38Bab 2. Konsep Dasar Sistem Operasi
dapat dipercaya, bebas eror, efisien. Sampai saat ini belum ada solusi yang pas untuk menentukan kebutuhan dari
sistem operasi. Lain lingkungan, lain pula kebutuhannya.
Mekanisme dan Kebijakan
Mekanisme menentukan bagaimana melakukan sesuatu. Kebijakan menentukan apa yang akan
dilakukan.Pemisahan antara mekanisme dan kebijakan sangatlah penting untuk fleksibilitas. Perubahan
kebijakan akan membutuhkan definisi ulang pada beberapa parameter sistem, bahkan bisa mengubah mekanisme
yang telah ada. Sistem operasi Microkernel-based menggunakan pemisahan mekanisme dan kebijakan secara
ekstrim dengan mengimplementasikan perangkat dari primitive building blocks. Semua aplikasi mempunyai
antarmuka yang sama karena antarmuka dibangun dalam kernel.
Kebijakan penting untuk semua alokasi sumber daya dan penjadualan problem. Perlu atau tidaknya sistem
mengalokasikan sumber daya, kebijakan yang menentukan. Tapi bagaimana dan apa, mekanismelah yang
menentukan.
Implementasi
Umumnya sistem operasi ditulis dalam bahasa rakitan, tapi sekarang ini sering ditulis dalam bahasa tingkat
tinggi. Keuntungannya adalah kodenya bisa ditulis lebih cepat, lebih padat, mudah dimengerti dan di-debug.
Sistem operasi mudah diport (dipindahkan ke perangkat keras lain). Kerugiannya adalah mengurangi kecepatan
dan membutuhkan tempat penyimpanan yang lebih banyak.
2.4.3. System Generation
Adalah mungkin untuk mendesign, mengkode, dan megimplementasikan sebuah sistem operasi khusus untuk
satu mesin di suatu site. Pada umumnya sistem operasi dibuat untuk berjalan pada beberapa kelas mesin di
berbagai site dan berbagai konfigurasi peripheral. Kemudian, sistem dikonfigurasikan untuk masing-masing
komputer, untuk site yang spesifik. Proses ini terkadang disebut sebagai System Generation.
Sistem program membaca dari berkas yang diberikan atau mungkin bertanya pada operator tentang informasi
yang berhubungan dengan perangkat keras tersebut, antara lain adalah sebagai berikut:
• CPU apa yang digunakan, pilihan yang diinstall?
• Berapa banyak memori yang tersedia?
• Peralatan yang tersedia?
• Pilihan Sistem operasi apa yang diinginkan atau parameter yang digunakan?
Satu kali informasi didapat, bisa digunakan dengan berbagai cara.
2.5. Rangkuman
Pada umumnya, komponen sistem operasi terdiri dari managemen proses, managemen memori utama,
managemen berkas, managemen sistem I/O, managemen penyimpanan sekunder, sistem proteksi, jaringan dan
Command-Interpreter System.
39Bab 2. Konsep Dasar Sistem Operasi
Layanan sistem operasi dirancang untuk membuat programming menjadi lebih mudah. Sistem operasi
mempunyai lima layanan utama dan tiga layanan tambahan. System calls ada lima jenis. System program
menyediakan environment yang memungkinkan pengembangan program dan eksekusi berjalan dengan baik.
Komponen-komponen sistem operasi dapat dihubungkan satu sama lain dengan tiga cara. Pertama, dengan
struktur sederhana, kemudian berkembang dengan cakupan yang original. Kedua, dengan pendekatan terlapis
atau level. Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebih tinggi. Model sistem
operasi seperti ini terdiri dari tiga belas level. Ketiga, dengan metode mikrokernel, dimana sistem operasi
disusun dalam bentuk kernel yang lebih kecil.
Penggunaan mesin virtual amat berguna, tapi sulit untuk diimplementasikan. Sebagaimana perangkat-perangkat
lainnya, penggunaan mesin virtual ini memiliki kelebihan dan kekurangan. Masalah utama dari desain sistem
adalah menentukan kebijakan dan mekanisme yang sesuai dengan keinginan pengguna dan pendisainnya. System
generation adalah proses mengkonfigurasikan sistem untuk masing-masing komputer.
2.6. Latihan
1. Sebutkan komponen-komponen Sistem Operasi!
2. Sebutkan aktivitas yang dilakukan oleh sistem operasi yang berkaitan dengan managemen proses!
3. Sebutkan aktivitas yang dilakukan oleh sistem operasi yang berkaitan dengan managemen berkas!
4. Jelaskan apa yang dimaksud dengan Command-Interpreter System!
5. Apakah tujuan dari System calls?
6. Sebutkan lima layanan yang disediakan oleh sistem operasi!
7. Sebutkan tujuan dari system program!
8. Jelaskan dua model komunikasi pada sistem operasi!
9. Sebutkan keuntungan dalam penggunaan sistem lapisan! Jelaskan!
10. Jelaskan salah satu kesulitan besar dalam penggunaan sistem lapisan !
11. Sebutkan beberapa objek-objek yang ada pada level 2 sistem lapisan!
12. Sebutkan cara-cara yang dipakai untuk membuat alamat logis yang dilakukan pada level 7!
13. Sebutkan salah satu keuntungan mikrokernel!
14. Sebutkan keuntungan dan kelebihan menggunakan mesin virtual!
15. Jelaskan masalah utama dari desain sistem!
16. Jelaskan perbedaan mekanisme dan kebijakan!
2.7. Rujukan
Abraham Silberschatz, Peter Galvin, Greg Gagne.2003. Operating System Concepts, Sixth Edition.John Wiley &
Sons.
Andrew S Tanenbaum, Albert S Woodhull.1997.Operating System Design and Implementation, Second Edition.
Prentice Hall.
Andrew S Tanenbaum.2001.Modern Operating System, Second Edition.Prentice Hall.
40Bab 2. Konsep Dasar Sistem Operasi
William Stallings.2001.Operating Systems, Fourth Edition. Prentice Hall.
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/ BUKU/SistemOperasi/x395.html
41Bab 3. Proses dan Penjadualan
3.1. Konsep Proses
Jika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah pertanyaan yaitu mengenai istilah apa
yang tepat untuk menyebut semua kegiatan yang dilakukan oleh CPU. Sistem batch mengeksekusi jobs
sebagaimana suatu sistem time-share menggunakan program pengguna (user programs) atau tasks. Bahkan pada
sistem dengan pengguna tunggal pun, seperti pada Microsoft Windows dan Macintosh OS, seorang pengguna
mampu menjalankan beberapa program pada saat yang sama, contohnya Word Processor, Web Browser, dan
paket e-mail. Bahkan jika pengguna hanya dapat menjalankan satu program pada satu waktu, sistem operasi
perlu untuk mendukung aktivitas program internalnya sendiri, seperti managemen memori. Dalam banyak hal,
seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses.
Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini. Walau kami sendiri lebih
menyukai istilah proses, banyak teori dan terminologi sistem operasi dikembangkan selama suatu waktu ketika
aktivitas utama sistem operasi adalah job processing. Akan membingungkan jika kita menghindari penggunaan
istilah yang telah diterima oleh masyarakat yang memasukkan kata job hanya karena proses memiliki istilah job
sebagai pengganti atau pendahulunya.
3.1.1. Definisi Proses
Secara tidak langsung, proses merupakan program yang sedang dieksekusi. Menurut Silberschatz, suatu proses
adalah lebih dari sebuah kode program, yang terkadang disebut text section. Proses juga mencakup program
counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan
register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan
selama proses dieksekusi seperti parameter metoda, alamat return dan variabel lokal, dan sebuah data section
yang menyimpan variabel global.
Sama halnya dengan Silberschatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang
dieksekusi yang mencakup program counter, register, dan variabel di dalamnya.
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif;
seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif,
dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan
seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi.
Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yang diberikan
oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya. Tukang
kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue ulang tahun
di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalam analogi ini, resep
kue ulang tahun adalah sebuah program, si tukang kue tersebut adala prosesor (CPU), dan bahan-bahan untuk
membuat kue tersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk membaca
resep, mengolah bahan, dan memanggang kue tersebut.
Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan
eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan salinan yang berbeda pada mail
program, atau pengguna yang sama dapat meminta banyak salinan dari program editor. Tiap-tiap proses ini
adakah proses yang berbeda dan walau bagian text-section adalah sama, data section-nya bervariasi. Adalah
umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. Hal ini akan dijelaskan lebih
detail pada Bagian 3.4.1.
42Bab 3. Proses dan Penjadualan
3.1.2. Status Proses
Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status dari sebuah proses mencerminkan
aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah status-status yang mungkin dimiliki sebuah
proses menurut Tanenbaum:
• Running: pada saat menggunakan CPU pada suatu waktu.
• Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi.
• Blocked: tidak dijalankan sampai event dari luar, yang berhubungan dengan proses tersebut terjadi.
Sedangkan menurut Silberschatz, terdapat lima macam jenis status yang mungkin dimiliki oleh suatu proses:
• New: status yang dimiliki pada saat proses baru saja dibuat.
• Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi.
• Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O).
• Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
• Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.
Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem operasi. Keadaan yang
mereka gambarkan ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentu lebih baik
menggambarkan keadaan/status proses. Penting untuk diketahui bahwa hanya satu proses yang dapat berjalan
pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau waiting.
Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada Gambar 3-1.
Gambar 3-1. Status Proses
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-1.png; per Desember
2003.
Ada tiga kemungkinan bila sebuah proses memiliki status running:
43Bab 3. Proses dan Penjadualan
• Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
• Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses
tersebut kini berstatus Ready.
• Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akan
menunggu event tersebut selesai dan proses berstatus Waiting.
3.1.3. Process Control Block
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah
control block. Sebuah PCB ditunjukkan dalam Gambar 3-2. PCB berisikan banyak bagian dari informasi yang
berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
• Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
• Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
• CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register
tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code
information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan
ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat
Gambar 3-3).
• Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas
register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem
operasi (lihat Bab 5).
• Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu,
jumlah akun jumlah job atau proses, dan banyak lagi.
• Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu
daftar berkas-berkas yang sedang diakses dan banyak lagi.
• PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu
dengan yang lain.

Gambar 3-2. Process Control Block
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-2.png; per Desember
2003.
45Bab 3. Proses dan Penjadualan
Gambar 3-3. Status Proses
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png; per Desember
2003.
3.1.4. Threads
Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuah program yang
menjalankan eksekusi thread tunggal. Sebagai contoh, jika sebuah proses menjalankan sebuah program Word
Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan.
Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak
sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk
memiliki eksekusi multi-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan
didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari
satu tugas pada satu waktu. Pada Bagian 3.5, thread akan dibahas proses multi-threaded lebih lanjut.
46Bab 3. Proses dan Penjadualan
3.2. Penjadualan Proses
Multiprogramming bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu
yang digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle. Untuk sistem
yang bersifat prosesor tunggal (uniprosesor), hanya ada satu proses yang dapat berjalan setiap waktunya. Jika
proses yang ada lebih dari satu, maka proses yang lain harus menunggu sampai CPU bebas dan siap untuk
dijadualkan kembali.
3.2.1. Queue Scheduling
Ketika sebuah proses memasuki sistem, proses itu diletakkan di dalam job queue. Pada antrian ini terdapat
seluruh proses yang berada dalam sistem. Sedangkan proses yang berada pada memori utama, siap dan
menunggu untuk mengeksekusi disimpan dalam sebuah daftar yang bernama ready queue. Antrian ini biasanya
disimpan sebagai linked list. Header dari ready queue berisi pointer untuk PCB pertama dan PCB terakhir pada
list. Setiap PCB memiliki pointer field yang menunjuk kepada PCB untuk proses selanjutnya dalam ready queue.
Sistem operasi juga memiliki antrian lain. Ketika sebuah proses dialokasikan ke CPU, proses tersebut berjalan
sebentar lalu berhenti, di-interupsi, atau menunggu suatu hal tertentu, seperti selesainya suatu permintaan I/O.
Dalam permintaan I/O, dapat saja yang diminta itu adalah tape drive, atau peralatan yang di-share secara
bersama-sama, seperti disk. Karena ada banyak proses dalam sistem, disk dapat saja sibuk dengan permintaan
I/O dari proses lainnya. Untuk itu proses tersebut mungkin harus menunggu disk tersebut. Daftar dari
proses-proses yang menunggu peralatan I/O tertentu disebut dengan device queue. Tiap peralatan memiliki
device queue-nya masing-masing (Gambar 3-4).
47Bab 3. Proses dan Penjadualan
Gambar 3-4. Device Queue
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-4.png; per Desember
2003.
Penjadualan proses dapat direpresentasikan secara umum dalam bentuk diagram antrian, seperti yang
ditunjukkan oleh Gambar 3-5. Setiap kotak segi empat menunjukkan sebuah antrian. Dua tipe antrian
menunjukan antrian yang siap dan seperangkat device queues. Lingkaran menunjukkan sumber daya yang
melayani antrian, dan tanda panah mengindikasikan alur dari proses-proses yang ada dalam sistem.
48Bab 3. Proses dan Penjadualan
Gambar 3-5. Diagram Antrian
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-5.png; per Desember
2003.
Sebuah proses baru pertama-tama diletakkan dalam ready queue. Proses tersebut menunggu di dalam ready
antrian sampai dia dipilih untuk eksekusi, atau dengan kata lain di-dispatched. Begitu proses tersebut
dialokasikan ke CPU dan sedang berjalan, beberapa kemungkinan di bawah ini dapat terjadi:
• Proses tersebut mengeluarkan permintaan I/O, lalu ditempatkan dalam sebuah antrian I/O.
• Proses tersebut dapat membuat sub proses yang baru dan menunggu untuk di-terminasi.
• Proses tersebut dapat dikeluarkan secara paksa dari CPU, sebagai hasil dari suatu interupsi, dan diletakkan
kembali dalam ready queue.
Pada dua kemungkinan pertama (proses meminta I/O atau membuat sub proses baru), proses berganti keadaan
dari waiting state menjadi ready state, lalu diletakkan kembali dalam ready queue. Proses akan meneruskan
siklus ini sampai dia di-terminasi, yaitu saat dimana proses tersebut dikeluarkan dari seluruh antrian yang ada
dan memiliki PCB-nya sendiri dan seluruh sumber daya yang dia gunakan dialokasikan kembali.
3.2.2. Scheduler
Sebuah proses berpindah-pindah di antara berbagai penjadualan antrian seumur hidupnya. Sistem operasi harus
49Bab 3. Proses dan Penjadualan
memilih dan memproses antrian-antrian ini berdasarkan kategorinya dengan cara tertentu. Oleh karena itu,
proses seleksi ini harus dilakukan oleh scheduler yang tepat.
Dalam sistem batch, seringkali proses yang diserahkan lebih banyak daripada yang dapat dilaksanakan dengan
segera. Proses-proses ini disimpan pada suatu mass-storage device (disk), dimana proses tersebut disimpan
untuk eksekusi di lain waktu. Long-term scheduler, atau job scheduler, memilih proses dari tempat ini dan
mengisinya ke dalam memori. Sedangkan short-term scheduler, atau CPU scheduler, hanya memilih proses
yang sudah siap untuk melakukan eksekusi, dan mengalokasikan CPU untuk proses tersebut.
Hal yang cukup jelas untuk membedakan kedua jenis scheduler ini adalah frekuensi dari eksekusinya.
Short-term scheduler harus memilih proses baru untuk CPU sesering mungkin. Sebuah proses dapat
mengeksekusi hanya dalam beberapa milidetik sebelum menunggu permintaan I/O. Seringkali, short-term
scheduler mengeksekusi paling sedikit sekali setiap 100 milidetik. Karena durasi waktu yang pendek antara
eksekusi-eksekusi tersebut, short-term scheduler seharusnya cepat. Jika memerlukan waktu 10 mili detik untuk
menentukan suatu proses eksekusi selama 100 mili detik, maka 10/(100 + 10) = 9 persen dari CPU sedang
digunakan (atau terbuang) hanya untuk pekerjaan penjadualan.
Long-term scheduler, pada sisi lain, mengeksekusi jauh lebih jarang. Mungkin ada beberapa menit waktu yang
dibutuhkan untuk pembuatan proses baru dalam sistem. Long-term scheduler mengontrol degree of
multiprogramming (jumlah proses dalam memori). Jika degree of multiprogramming stabil, maka tingkat
rata-rata penciptaan proses harus sama dengan tingkat rata rata proses meninggalkan sistem. Maka dari itu
long-term scheduler mungkin dipanggil hanya ketika suatu proses meninggalkan sistem. Karena interval yang
lebih panjang antara eksekusi, long-term scheduler dapat menggunakan waktu yang lebih lama untuk
menentukan proses mana yang harus dipilih untuk dieksekusi.
Sangat penting bagi long-term scheduler membuat seleksi yang hati-hati. Secara umum, proses dapat dibedakan
atas dua macam, yaitu proses I/O bound dan proses CPU bound. Proses I/O bound adalah proses yang lebih
banyak menghabiskan waktunya untuk mengerjakan I/O dari pada melakukan komputasi. Proses CPU-bound, di
sisi lain, jarang melakukan permintaan I/O, dan menggunakan lebih banyak waktunya untuk melakukan
komputasi. Oleh karena itu, long-term scheduler harus memilih gabungan proses yang baik antara proses I/O
bound dan CPU bound. Jika seluruh proses adalah I/O bound, ready queue akan hampir selalu kosong, dan
short-term scheduler akan memiliki sedikit tugas. Jika seluruh proses adalah CPU bound, I/O waiting queue
akan hampir selalu kosong, peralatan akan tidak terpakai, dan sistem akan menjadi tidak seimbang. Sistem
dengan kinerja yang terbaik akan memiliki kombinasi yang baik antara proses CPU bound dan I/O bound.
Pada sebagian sistem, long-term scheduler dapat jadi tidak ada atau kerjanya sangat minim. Sebagai contoh,
sistem time-sharing seperti UNIX sering kali tidak memiliki long-term scheduler. Stabilitas sistem-sistem
seperti ini bergantung pada keterbatasan fisik (seperti jumlah terminal yang ada) atau pada penyesuaian sendiri
secara alamiah oleh manusia sebagai pengguna. Jika kinerja menurun pada tingkat yang tidak dapat diterima,
sebagian pengguna akan berhenti.
Sebagian sistem operasi, seperti sistem time-sharing, dapat memperkenalkan sebuah scheduler tambahan, yaitu
medium-term scheduler. Scheduler ini digambarkan pada Gambar 3-6. Ide utama atau kunci dari scheduler ini
terkadang akan menguntungkan untuk memindahkan proses dari memori (dan dari pengisian aktif dari CPU),
dan akibatnya degree of multiprogramming akan berkurang. Di kemudian waktu, proses dapat dibawa kembali
dalam memori dan eksekusinya dapat dilanjutkan pada keadaan dimana proses itu dipindahkan tadi. Skema ini
disebut swapping. Proses di-swapped out dan di-swapped in oleh scheduler ini. Swapping mungkin diperlukan
untuk meningkatkan mutu penggabungan proses, atau karena perubahan dalam kebutuhan memori yang
mengakibatkan memori harus dibebaskan. Swapping dibahas dalam Bagian 5.2.1.
50Bab 3. Proses dan Penjadualan
Gambar 3-6. Medium-term Scheduler
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-6.png; per Desember
2003.
3.2.3. Context Switch
Mengganti CPU ke proses lain memerlukan penyimpanan keadaan dari proses lama dan mengambil keadaan dari
proses yang baru. Hal ini dikenal dengan sebutan context switch. Context switch sebuah proses direpresentasikan
dalam PCB dari suatu proses; termasuk nilai dari CPU register, status proses (dapat dilihat pada Gambar 3-7)
dan informasi managemen memori. Ketika context switch terjadi, kernel menyimpan data dari proses lama ke
dalam PCB nya dan mengambil data dari proses baru yang telah terjadual untuk berjalan. Waktu context switch
adalah murni overhead, karena sistem melakukan pekerjaan yang tidak begitu berarti selama melakukan
pengalihan. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan memori, jumlah register
yang harus di-copy, dan ada tidaknya instruksi khusus (seperti instruksi tunggal untuk mengisi atau menyimpan
seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.
51Bab 3. Proses dan Penjadualan
Gambar 3-7. Context Switch
Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png; per Desember
2003.
Waktu context switch sangat begantung pada dukungan perangkat keras. Sebagai contoh, prosesor seperti
UltraSPARC menyediakan beberapa set register. Sebuah proses context switch hanya memasukkan perubahan
pointer ke set register yang ada saat itu. Tentu saja, jika proses aktif yang ada lebih banyak daripada proses yang
ada pada set register, sistem menggunakan bantuan untuk meng-copy data register dari dan ke memori,
sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyak pekerjaan yang harus
dilakukan selama context switch. Dapat dilihat pada Bab 5, teknik managemen memori tingkat lanjut dapat
mensyaratkan data tambahan untuk diganti dengan tiap data. Sebagai contoh, ruang alamat dari proses yang ada
saat itu harus dijaga sebagai ruang alamat untuk proses yang akan dikerjakan berikutnya. Bagaimana ruang
alamat dijaga, berapa banyak pekerjaan dibutuhkan untuk menjaganya, tergantung pada metode managemen
memori dari sistem operasi. Akan kita lihat pada Bab 5, context switch terkadang dapat menyebabkan bottleneck,
dan programmer menggunakan struktur baru (threads) untuk menghindarinya kapan pun memungkinkan.
52Bab 3. Proses dan Penjadualan
3.3. Interaksi Proses
Proses yang dijalankan pada suatu sistem operasi dapat bekerja secara bersama-sama ataupun sendiri saja.
Bagian sebelum ini telah menjelaskan mengenai konsep proses dan bagaimana penjadualan proses itu. Disini
kita akan melihat bagaimana hubungan antara proses-proses itu.
3.3.1. Proses yang Kooperatif
Proses yang bersifat concurrent bekerja sama dengan proses lain. Proses itu kooperatif jika mereka dapat saling
mempengaruhi. Kerja sama antar proses itu penting karena beberapa alasan:
• Pembagian informasi: Beberapa proses dapat mengakses beberapa data yang sama.
• Kecepatan komputasi: Tugas yang dijalankan dapat berjalan dengan lebih cepat jika tugas tersebut
dipecah-pecah menjadi beberapa sub bagian dan dieksekusi secara paralel dengan sub bagian yang lain.
Peningkatan kecepatan ini dapat dilakukan jika komputer tersebut mempunyai beberapa elemen pemrosesan,
seperti CPU atau jalur I/O.
• Modularitas: Akan lebih mudah untuk mengatur tugas yang kompleks jika tugas tersebut dipecah menjadi
beberapa sub bagian, kemudian mempunyai proses atau thread yang berbeda untuk menjalankan setiap sub
bagian.
• Kenyamanan: User dapat dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama.
Contohnya satu user dapat mengetik, mengedit, dan mencetak suatu halaman tertentu secara bersamaan.
Kerja sama antar proses membutuhkan suatu mekanisme yang memperbolehkan proses-proses untuk
mengkomunikasikan data dengan yang lain dan meng-synchronize kerja mereka sehingga tidak ada yang saling
menghalangi. Salah satu cara proses dapat saling berkomunikasi adalah Interprocess Communication (IPC) yang
akan dijelaskan lebih lanjut di bagian berikut.
3.3.2. Masalah Produser/Konsumer
Produser membuat suatu informasi yang dapat dibagi dengan proses lainnya. Konsumer menghabiskan data yang
dibuat oleh produser. Misalnya program cetak memproduksi karakter yang dipakai oleh printer.
Masalah yang biasanya dihadapi oleh produser dan konsumer adalah bagaimana caranya mensinkronisasikan
kerja mereka sehingga tidak ada yang saling mengganggu. Salah satu contoh bagaimana masalah ini dapat
terjadi adalah Bounded Buffer Problem.
Solusi pembagian memori untuk Bounded Buffer Problem diterangkan dengan program sebagai berikut:
Gambar 3-8. Bounded Buffer Problem
import java.util.*;
public class BoundedBuffer {
public BoundedBuffer() {
// buffer diinisialisasikan kosong
count = 0;
in = 0;
out = 0;
buffer = new Object[BUFFER_SIZE];
53Bab 3. Proses dan Penjadualan
}
// produser memanggil method ini
public void enter (Object item) {
while ( count == BUFFER_SIZE )
; // tidak melakukan apa-apa
// menambahkan suatu item ke dalam buffer
++count;
buffer[in] = item;
in = ( in + 1 ) % BUFFER_SIZE;
if ( count == BUFFER_SIZE )
System.out.println( "Producer Entered " +
item + " Buffer FULL" );
else
System.out.println( "Producer Entered " +
item + " Buffer Size = " + count );
}
// konsumer memanggil method ini
public Object remove() {
Object item ;
while ( count == 0 )
; // tidak melakukan apa-apa
// menyingkirkan suatu item dari buffer
--count;
item = buffer[out];
out = ( out + 1 ) % BUFFER_SIZE;
if ( count == 0 )
System.out.println( "Consumer consumed " +
item + " Buffer EMPTY" );
else
System.out.println( "Consumer consumed " +
item + " Buffer Size = " +count );
return item;
}
public static final int NAP_TIME = 5;
private static final int BUFFER_SIZE = 5;
private volatile int count;
private int in; // arahkan ke posisi kosong selanjutnya
private int out; // arahkan ke posisi penuh selanjutnya
private Object[] buffer;
}
Buffer adalah tempat penyimpanan data dimana produser mengisinya dan konsumer mengosongkan buffer
tersebut. Jika buffer kosong, konsumer harus menunggu, dan ketika buffer penuh, produser harus menunggu.
Disinilah produser harus bekerja sama dengan konsumer. Konsumer harus menunggu sampai ada barang yang
diproduksi.
54Bab 3. Proses dan Penjadualan
Program di bawah ini menggambarkan proses yang dijalankan oleh produser untuk Bounded Buffer Problem.
Gambar 3-9. Produser Bounded Buffer Problem
//Producer.java
import java.util.*;
public class Producer extends Thread {
public Producer(BoundedBuffer b) {
buffer = b;
}
public void run() {
Date message;
while (true) {
int sleeptime =
(int) (BoundedBuffer.NAP_TIME * Math.random() );
System.out.println("Producer sleeping for "
+ sleeptime + " seconds");
try { sleep(sleeptime*1000); }
catch(InterruptedException e) {}
// membuat suatu barang & memasukkannya ke buffer
message = new Date();
System.out.println("Producer produced " + message);
buffer.enter(message);
}
}
private BoundedBuffer buffer;
}
Program berikut menggambarkan proses yang dijalankan oleh konsumer pada Bounded Buffer Problem
Gambar 3-10. Konsumer Bounded Buffer Problem
// Consumer.java
import java.util.*;
public class Consumer extends Thread {
public Consumer(BoundedBuffer b) {
buffer = b;
}
public void run() {
Date message;
while (true) {
int sleeptime =
(int) (BoundedBuffer.NAP_TIME * Math.random() );
System.out.println("Consumer sleeping for "
+ sleeptime + " seconds");
try { sleep(sleeptime*1000); }
catch(InterruptedException e) {}
// mengambil barang dari buffer
System.out.println("Consumer wants to consume.");
message = (Date)buffer.remove();
55Bab 3. Proses dan Penjadualan
}
}
private BoundedBuffer buffer;
}
Masalah produser-konsumer dengan unbounded-buffer tidak menempatkan batas praktikal pada ukuran pada
buffer. Konsumer harus menunggu untuk barang baru, tetapi produser dapat selalu memproduksi barang baru.
Sedangkan masalah produser-konsumer bounded-buffer mengasumsikan ukuran buffer yang ditetapkan. Pada
kasus ini, konsumer harus menunggu sampai buffer kosong dan produser harus menunggu sampai buffer penuh.
3.4. Hubungan Antara Proses dan Client/Server
Sebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari pengertiannya, cara kerjanya, sampai
operasi-operasinya seperti proses pembentukannya dan proses pemberhentiannya setelah selesai melakukan
eksekusi. Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung, misal bagaimana
beberapa proses dapat saling berkomunikasi dan bekerja-sama.
Kalau pada sub-bab sebelumnya kita banyak membahas mengenai buffer, dan lingkungan yang berbagi memori.
Pada bagian ini kita lebih banyak membahas teknik komunikasi antara proses melalui kirim (send) dan terima
(receive) yang biasa dikenal sebagai IPC.
Selain itu pada bagian ini kita akan menyingung sedikit mengenai client/server proses. Beberapa topik yang akan
dibahas adalah Java Remote Method Invocation (RMI) dan Remote Procedure Call (RPC). Yang keduanya juga
menggunakan mekanisme komunikasi IPC, namun menggunakan sistem yang terdistribusi yang melibatkan
jaringan. Pada bagian ini juga akan dibahas mengenai infrastruktur dasar jaringan yaitu socket.
3.4.1. Hubungan Antara Proses
Proses yang Kooperatif
Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakan menjadi yaitu proses
independen dan proses kooperatif. Suatu proses dikatakan independen apabila proses tersebut tidak dapat
terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang
tidak membagi data apa pun (baik sementara/tetap) dengan proses lain adalah independent. Sedangkan proses
kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan
dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses
lain.
Ada empat alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif:
1. Pembagian informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama (sebagai
contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang mengizinkan akses secara
terus menerus ke tipe dari sumber-sumber tersebut.
2. Kecepatan penghitungan/komputasi: jika kita menginginkan sebuah tugas khusus untuk menjalankan lebih
cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari subtask akan dijalankan secara
parallel dengan yang lainnya. Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut
memiliki elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O).
56Bab 3. Proses dan Penjadualan
3. Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah model modular-modular,
membagi fungsi sistem menjadi beberapa proses atau thread.
4. Kenyamanan: bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan secara
bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, mencetak, dan
meng-compile secara parallel.
Gambar 3-11. Bounded Buffer
import java.util.*;
public class BoundedBuffer {
public BoundedBuffer() {
// buffer diinisialisasikan kosong
count = 0;
in = 0;
out = 0;
buffer = new Object[BUFFER_SIZE];
}
// produser memanggil method ini
public void enter( Object item ) {
while ( count == BUFFER_SIZE )
; // do nothing
// menambahkan suatu item ke dalam buffer
++count;
buffer[in] = item;
in = ( in + 1 ) % BUFFER_SIZE;
if ( count == BUFFER_SIZE )
System.out.println( "Producer Entered " +
item + " Buffer FULL" );
else
System.out.println( "Producer Entered " +
item + " Buffer Size = " + count );
}
// consumer memanggil method ini
public Object remove() {
Object item ;
while ( count == 0 )
; // do nothing
// menyingkirkan suatu item dari buffer
--count;
item = buffer[out];
out = ( out + 1 ) % BUFFER_SIZE;
if ( count == 0 )
System.out.println( "Consumer consumed " +
item + " Buffer EMPTY" );
else
System.out.println( "Consumer consumed " +
item + " Buffer Size = " +count );
return item;
}
public static final int NAP_TIME = 5;
private static final int BUFFER_SIZE = 5;
57Bab 3. Proses dan Penjadualan
private volatile int count;
private int in; // arahkan ke posisi kosong selanjutnya
private int out; // arahkan ke posisi penuh selanjutnya
private Object[] buffer;
}
Sebuah produsen proses membentuk informasi yang dapat digunakan oleh konsumen proses. Sebagai contoh
sebuah cetakan program yang membuat banyak karakter yang diterima oleh driver pencetak. Untuk
memperbolehkan produser dan konsumer proses agar dapat berjalan secara terus menerus, kita harus
menyediakan sebuah item buffer yang dapat diisi dengan proses produser dan dikosongkan oleh proses
konsumer. Proses produser dapat memproduksi sebuah item ketika konsumer sedang mengkonsumsi item yang
lain. Produser dan konsumer harus dapat selaras. Konsumer harus menunggu hingga sebuah item diproduksi.
Komunikasi Proses Dalam Sistem
Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat
proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses Inter-Process
Communication (IPC). IPC menyediakan sebuah mekanisme untuk megizinkan proses-proses untuk
berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama. IPC adalah khusus
digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap
ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC adalah penyedia
layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan
dalam banyak cara.
Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang lain tanpa perlu
menggunakan pembagian data. Sebuah fasilitas IPC menyediakan paling sedikit dua operasi yaitu kirim (pesan)
dan terima (pesan). Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau variabel.
Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem implementasi adalah sistem yang
sederhana. Pesan berukuran variabel menyediakan sistem implementasi level yang lebih kompleks.
Jika dua buah proses ingin berkomonikasi, misalnya proses P dan proses Q, mereka harus mengirim pesan atau
menerima pesan dari satu ke yang lainnya. Jalur ini dapat diimplementasikan dengan banyak cara, namun kita
hanya akan memfokuskan pada implementasi logiknya saja, bukan implementasi fisik (seperti shared memory,
hardware bus, atau jaringan). Berikut ini ada beberapa metode untuk mengimplementasikan sebuah jaringan dan
operasi pengiriman/penerimaan secara logika:
• Komunikasi langsung atau tidak langsung.
• Komunikasi secara simetris/asimetris.
• Buffer otomatis atau eksplisit.
• Pengiriman berdasarkan salinan atau referensi.
• Pesan berukuran pasti dan variabel.
Komunikasi Langsung
Proses-proses yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan yang lain.
Mereka dapat menggunakan komunikasi langsung/tidak langsung.
58Bab 3. Proses dan Penjadualan
Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau
pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat
dijabarkan sebagai:
• Send (P, message) - mengirim sebuah pesan ke proses P.
• Receive (Q, message) - menerima sebuah pesan dari proses Q.
Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
• Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin
dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.
• Sebuah jaringan adalah terdiri dari penggabungan dua proses.
• Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya
yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim
yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam
konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:
• Send (P, message) - mengirim sebuah pesan kepada proses P.
• Receive (ID, message) - menerima sebuah pesan dari semua proses. Variabel ID diatur sebagai nama dari
proses dengan komunikasi.
Kerugian dari kedua cara yang disebutkan diatas adalah adanya keterbatasan modularitas, merubah nama proses
mungkin mengharuskan kita untuk merubah semua definisi proses yang lain. Semua referensi kepada nama yang
lama harus ditemukan.
Komunikasi Tidak Langsung
Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/melalui mailbox (Kotak
Surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap
pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat
memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses
lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua
proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkan sebagai:
• Send (A, message) - mengirim pesan ke mailbox A.
• Receive (A, message) - menerima pesan dari mailbox A.
Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut:
• Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.
59Bab 3. Proses dan Penjadualan
• Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
• Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link
berhubungan pada satu mailbox.
Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika
P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang
dikirim P1? Jawabannya tergantung dari jalur yang kita pilih:
• Mengizinkan sebuah link berasosiasi dengan paling banyak dua proses.
• Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive
operation).
• Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau
P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada
pengirim.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka
kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari
mailbox (yang hanya dapat mengirim pesan ke mailbox). Selama setiap mailbox mempunyai kepemilikan yang
unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses
yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke
mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada.
Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka
sistem operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:
• Membuat mailbox baru.
• Mengirim dan menerima pesan melalui mailbox.
• Menghapus mailbox.
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali,
pemilik adalah satu-satunya proses yang dapat menerima pesan melalui mailbox ini. Bagaimanapun,
kepemilikan dan hak menerima pesan mungkin dapat dialihkan ke proses lain melalui sistem pemanggilan.
Sinkronisasi
Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat
design yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok
(blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron.
• Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving
process) atau oleh mailbox.
• Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
• Penerimaan yang diblok: Penerima memblok samapai pesan tersedia.
• Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
60Bab 3. Proses dan Penjadualan
Buffering
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara.
Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
• Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan
pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
• Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat
dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim
pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh,
pengirim harus memblok sampai terdapat ruang pada antrian.
• Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu
disini. Pengirim tidak akan pernah di blok.
Contoh Produser-Konsumer
Sekarang kita mempunyai solusi problem produser-konsumer yang menggunakan penyampaian pesan. Produser
dan konsumer akan berkomunikasi secara tidak langsung menggunakan mailbox yang dibagi. Buffer
menggunakan java.util.Vector class sehingga buffer mempunyai kapasitas tak terhingga. Dan send() dan read()
method adalah nonblocking. Ketika produser memproduksi suatu item, item tersebut diletakkan ke mailbox
melalui send() method. Konsumer menerima item dari mailbox menggunakan receive() method. Karena receive()
nonblocking, konsumer harus mengevaluasi nilai dari objek yang dikembalikan dari receive(). Jika null, mailbox
kosong.
Gambar 3-12. Producer Consumer
import java.util.*;
public class Producer extends Thread {
private MessageQueueueue mbox;
public Producer( MessageQueueueue m ) {
mbox = m;
}
public void run() {
Date message;
while ( true ) {
int sleeptime = ( int ) ( Server.NAP_TIME * Math.random() );
System.out.println( "Producer sleeping for " + sleeptime + " seconds" );
try {
Thread.sleep(sleeptime*1000);
} catch( InterruptedException e ) {}
message = new Date();
System.out.println( "Producer produced " + message );
mbox.send( message );
}
}
}
61Bab 3. Proses dan Penjadualan
Gambar 3-13. Consumer
import java.util.*;
public class Consumer extends Thread {
private MessageQueueueue mbox;
public Consumer( MessageQueueueue m ) {
mbox = m;
}
public void run() {
Date message;
while ( true ) {
int sleeptime = ( int ) ( Server.NAP_TIME * Math.random());
System.out.println("Consumer sleeping for " + sleeptime + " seconds" );
try {
Thread.sleep( sleeptime * 1000 );
} catch( InterruptedException e ) {}
message = ( Date ) mbox.receive();
if ( message != null )
System.out.println("Consumer consume " + message );
}
}
}
Kita memiliki dua aktor di sini, yaitu Produser dan Konsumer. Produser adalah thread yang menghasilkan
waktu(Date) kemudian menyimpannya ke dalam antrian pesan. Produser juga mencetak waktu tersebut di layer
(sebagai umpan balik bagi kita). Konsumer adalah thread yang akan mengakses antrian pesan untuk
mendapatkan waktu(Date) itu dan tak lupa mencetaknya di layer. Kita menginginkan supaya konsumer itu
mendapatkan waktu sesuatu dengan urutan sebagaimana produser menyimpan waktu tersebut. Kita akan
menghadapi salah satu dari dua kemungkinan situasi di bawah ini:
• Bila p1 lebih cepat dari c1, kita akan memperoleh output sebagai berikut:
Gambar 3-14. Keluaran Program (1)
. . .
Consumer consume Wed May 07 14:11:12 ICT 2003
Consumer sleeping for 3 seconds
Producer produced Wed May 07 14:11:16 ICT 2003
Producer sleeping for 4 seconds
// p1 sudah mengupdate isi mailbox waktu dari Wed May 07
// 14:11:16 ICT 2003 ke Wed May 07 14:11:17 ICT 2003,
// padahal c1 belum lagi mengambil waktu Wed May 07 14:11:16
Producer produced Wed May 07 14:11:17 ICT 2003
Producer sleeping for 4 seconds
Consumer consume Wed May 07 14:11:17 ICT 2003
Consumer sleeping for 4 seconds
// Konsumer melewatkan waktu Wed May 07 14:11:16
. . .
62Bab 3. Proses dan Penjadualan
• Bila p1 lebih lambat dari c1, kita akan memperoleh keluaran seperti berikut:
Gambar 3-15. Keluaran Program (2)
. . .
Producer produced Wed May 07 14:11:11 ICT 2003
Producer sleeping for 1 seconds
Consumer consume Wed May 07 14:11:11 ICT 2003
Consumer sleeping for 0 seconds
// c1 sudah mengambil isi dari mailbox, padahal p1 belum
// lagi megupdate isi dari mailbox dari May 07 14:11:11
// ICT 2003 ke May 07 14:11:12 ICT 2003, c1 mendapatkan
// waktu Wed May 07 14:11:11 ICT 2003 dua kali.
Consumer consume Wed May 07 14:11:11 ICT 2003
Consumer sleeping for 0 seconds
Producer sleeping for 0 seconds
Producer produced Wed May 07 14:11:12 ICT 2003
. . .
Situasi di atas dikenal dengan race conditions. Kita dapat menghindari situasi itu dengan mensinkronisasikan
aktivitas p1 dan c1 sehubungan dengan akses mereka ke mailbox. Proses tersebut akan didiskusikan pada Bagian
3.5.
Mailbox
Gambar 3-16. Mailbox
import java.util.*;
public class MessageQueue {
private Vector q;
public MessageQueue() {
q = new Vector();
}
// Mengimplementasikan pengiriman nonblocking
public void send( Object item ) {
q.addElement( item );
}
// Mengimplementasikan penerimaan nonblocking
public Object receive() {
Object item;
if ( q.size() == 0 ) {
return null;
}
else {
item = q.firstElement();
q.removeElementAt(0);
63Bab 3. Proses dan Penjadualan
return item;
}
}
}
1. Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat ruang kosong pada mailbox.
2. Menunggu paling banyak n milidetik.
3. Tidak menunggu, tetapi kembali (return) secepatnya.
4. Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walaupun mailbox yang dituju penuh.
Ketika pesan dapat disimpan pada mailbox, pesan akan dikembalikan kepada pengirim (sender). Hanya satu
pesan kepada mailbox yang penuh yang dapat diundur (pending) pada suatu waktu untuk diberikan kepada
thread pengirim.
3.4.2. Socket Client/Server System
Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuah sistem
yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metoda komunikasi antar
proses yang melibatkan jaringan komputer.
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi
dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan
menyambungkan dua buah alamat IP melalui port tertentu. Secara umum socket digunakan dalam client/server
system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak
server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.
Server dan Thread
Pada umumnya sebuah server melayani client secara konkuren, oleh sebab itu dibutuhkan thread yang
masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada
koneksi dari client yang diterima (accept).
Server menggunakan thread apabila client melakukan koneksi, sehingga server memiliki tingkat reabilitas yang
tinggi. Pada sistem yang memiliki banyak pemakai sekaligus thread mutlak dibutuhkan, karena setiap pemakai
sistem pasti menginginkan respon yang baik dari server.
Java Socket
Java menyediakan dua buah tipe socket yang berbeda dan sebuah socket spesial. Semua soket ini tersedia dalam
paket jaringan, yang merupakan paket standar java. Berikut ini soket yang disediakan oleh java:
• Connection-Oriented (TCP) socket, yang diimplementasikan pada kelas java.net.Socket
• Connectionless Socket (UDP), yang diimplentasikan oleh kelas java.net.DatagramSocket
64Bab 3. Proses dan Penjadualan
• Dan yang terakhir adalah java.net.MulticastSocket, yang merupakan perluasan (extended) dari Socket UDP.
Tipe socket ini memiliki kemampuan untuk mengirim pesan kebanyak client sekaligus (Multicast), sehingga
baik digunakan pada sistem yang memiliki jenis layanan yang sama.
Gambar 3-17. WebServer
...
public WebServer(int port, String docRoot) throws IOException
{
this.docRoot = new File(docRoot);
if(!this.docRoot.isDirectory())
{
throw new IOException(docRoot + " bukan direktori.");
}
System.out.println("Menghidupkan Web server ");
System.out.println("port: " + port);
System.out.println("docRoot: " + docRoot);
try
{
serverSocket = new ServerSocket(port);
}
catch(IOException ioe)
{
System.out.println("Port sudah digunakan");
System.exit(1);
}
}
public void run()
{
while(true)
{
try{
System.out.println("Menanti connection ... ");
Socket socket = serverSocket.accept();
String alamatClient = socket.getInetAddress().getHostAddress();
System.out.println("Menangkap connection dari " + alamatClient);
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
OutputStream outputStream = socket.getOutputStream();
...
Potongan kode diatas memperlihatkan teknik yang digunakan oleh java untuk membuka socket (pada kasus ini
server socket). Selanjutnya server dapat berkomunikasi dengan clientnya menggunakan InputStream untuk
menerima pesan dan OutputStream untuk mengirim pesan.
Remote Procedure Call
Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah
prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah komputer (server) harus menyediakan
65Bab 3. Proses dan Penjadualan
layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client
yang meminta proseduryang disediakan oleh server.
RPC masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural
programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.
RPC menggunakan soket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara
default sudah terinstall kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga
seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja, selama
sistemnya terhubung ke jaringan.
Pembuatan Objek Remote
Pendekatan kedua yang akan kita bahas adalah Remote Method Invocation (RMI), sebuah teknik pemanggilan
method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman
berorientasi objek (OOP). Dengan RMI memungkinkan kita untuk mengirim objek sebagai parameter dari
remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat
pengguna dapat mengembangkan aplikasi java yang terdistribusi pada jaringan
Untuk membuat remote method dapat diakses RMI mengimplementasikan remote object menggukan stub dan
skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang
berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan
diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus
ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah
diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang
akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).
Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan,
setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding
remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote
method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.
Akses ke Objek Remote
Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan Naming.lookup()
method. RMI menyediakan url untuk pengaksesan ke remote objek yaitu rmi://host/objek, dimana host adalah
nama server tempat kita mendaftarkan remote objek dan objek adalah parameter yang kita gunakan ketika kita
memanggil method Naming.rebind(). Client juga harus menginstall RMISecurityManager untuk memastikan
keamanan client ketika membuka soket kejaringan.
Java memiliki sistem security yang baik sehingga user dapat lebih nyaman dalam melakukan komunikasi pada
jaringan. Selain itu java sudah mendukung pemorograman berorientasi object, sehingga pengembangan software
berskala besar sangat dimungkinkan dilakukan oleh java. RMI sendiri merupakan sistem terdistribusi yang
dirancang oleh SUN pada platfrom yang spesifik yaitu Java, apabila anda tertarik untuk mengembangkan sistem
terdistribusi yang lebih portable dapat digunakan CORBA sebagai solusi alternatifnya.








Komentar