• Kategori

  • Arsip

Implementasi Sinkronisasi dan Mutual Exclusion di Windows dan Linux

Sikronisasi

Koordinasi akses ke shared data, misalkan hanya satu proses yang dapat menggunakah shared var.

Contoh operasi terhadap var. “counter” harus dijamin di-eksekusi dalam satu kesatuan (atomik) :

counter := counter + 1;

counter := counter – 1;

Sinkronisasi merupakan “issue” penting dalam rancangan/implementasi OS (shared resources, data, dan multitasking).

Mutual Exclusion

Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan. Kesuksesan proses – proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren.

maka uraian mengenai implementasi sinkronisasi dan mutual exclusion di windows dan linux sebagai berikut

mengenai definisi dari apa itu sinkronisasi dan apa itu mutual exclusion telah di jelaskan pada postingan sebelumnya, jadi kali ini akan di jelaskan secara langsung perbedaan dari dua oeprasi sistem diantaranya :

  • Windows

Sinkronisasi primitive yang umum seperti semaphore, mutexes, spinlocks, timers, didasarkan dari dasar mekanisme tunggu/sinyal.

untitled

  • Linux

Sinkronisasi primitive yang umum seperti semaphore, mutexes, spinlocks, timers, didasarkan dari dasar mekanisme sleep/wake up .Linux menghadirkan variasi mekanisme untuk komunikasi interprocessor dan sinkronisasi. Berikut bisa kita ketahui bagian yang paling penting:

  • Pipes
  • Messages
  • Shared Memory
  • Semaphores
  • Signals

Pipes, messages, dan Shared Memory dapat digunakan untuk berkomunikasi data antar proses dimana semaphores dan signal digunakan untuk aksi trigger oleh proses lain.

Definisi dari Proses, Thread, Mutual Exclution, Race Condition, Sinkronisasi, Deadlock, Starvation, Monitor, dan Semaphore!

KONSEP DASAR DAN DEFINISI PROSES

Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikanvariabel global.

Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang mengkhususkan pada instruksi selanjutnya untuk dijalankan dan seperangkat sumber daya/ resource yang berkenaan dengannya.

Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian tulisan-text adalah sama, data section bervariasi. Juga adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. Kami mendiskusikan masalah tersebut pada Bagian 2.4.

Keadaan Proses

Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/ asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses mungkin adalah satu dari keadaan berikut ini:

  • New: Proses sedang dikerjakan/ dibuat.
  • Running: Instruksi sedang dikerjakan.
  • Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/Oatau penerimaan sebuah tanda/ signal).
  • Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
  • Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.

Nama-nama tersebut adalah arbitrer/ berdasar opini, istilah tersebut bervariasi disepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, sistem operasi tertentu juga lebih baik menggambarkan keadaan/ status proses. Adalah penting untuk menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun pada waktu kapan pun. Namun, banyak proses yang dapat ready atau waiting. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada Gambar 2-1.

Gambar 2-1. Keadaan Proses

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 2-2. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk ini:

  • Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
  • Program counter: Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan untuk proses ini.
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.
  • Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register, ditambah code information pada kondisi apa pun. Besertaan dengan program counter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 2-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 yangdigunakan oleh sistem operasi (lihat Bab 4).
  • 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 open berkas dan banyak lagi.
  • PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa pun yang dapat bervariasi dari prose ke proses.

Gambar 2-2. Process Control Block.


Gambar 2-3. CPU Register.

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 multithreads, agar dapat dapat secara terus menerus mengetik dalam karakter dan menjalankan pengecek ejaan didalam proses yang sama. Maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Pada Bagian 2.5 akan dibahas proses multithreaded.

Penjadualan Proses

Tujuan dari multiprogramming adalah untuk memiliki sejumlah proses yang berjalan pada sepanjang waktu, untuk memaksimalkan penggunaan CPU. Tujuan dari pembagian waktu adalah untuk mengganti CPU diantara proses-proses yang begitu sering sehingga pengguna dapat berinteraksi dengan setiap program sambil CPU bekerja. Untuk sistem uniprosesor, tidak akan ada lebih dari satu proses berjalan. Jika ada proses yang lebih dari itu, yang lainnya akan harus menunggu sampai CPU bebas dan dapat dijadualkan kembali.

RACE CONDITION

Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi. Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.

Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,… masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi seperti ini diperlihatkan oleh Gambar 3-1.

Gambar 3-1. Race Condition.

Dalam Murphy’s Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai “7” di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.

Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang bau saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.

SINKRONISASI

Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan 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 mem blok samapai pesan tersedia.
  • Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.

DEADLOCK

Pengertian Deadlock yaitu :

–          Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya

–          Analoginya seperti pada kondisi jalan raya dimana terjadi kemacetan parah

–          Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses

Strategi mengatasi Deadlock

–          Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku

–          Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker

–          Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich

Penyebab Deadlock

–          Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama-sama

–          Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang dimilikinya ketika meminta resource baru

–          Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level

Contoh circular waiting:

–          No Preemption : membolehkan adanya preemption

Detection dan Recovery

–                Membiarkan deadlock terjadi lalu mendeteksinya kemudian melakukan tindakan recovery seperlunya

–                Algoritma yang paling dikenal adalah algoritma Ostrich

–                Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil

Monitor

Konsep monitor diperkenalkan pertama kali oleh Hoare (1974) dan Brinch Hansen (1975) untuk mengatasi beberapa masalah yang timbul ketika memakai semaphore. Monitor merupakan kumpulan dari prosedur, variabel, dan struktur data dalam satu modul. Monitor hanya dapat diakses dengan menjalankan fungsinya. Kita tidak dapat mengambil variabel dari monitor tanpa melalui prosedurnya. Hal ini dilakukan untuk melindungi variabel dari akses yang tidak sah dan juga mengurangi terjadinya error.

shared variable declarations

void bodyP1 (….)

{

……

}

void bodyP2 (….)

{

……

}

…..

void bodyPn (….)

{

……

}

void main{

initialization code

}

Konstruksi monitor memastikan hanya satu proses yang aktif pada suatu waktu. Sehingga sebenarnya programmer tidak membutuhkan synchronization codes yang disisipkan secara eksplisit. Akan tetapi konstruksi monitor tidak benar-benar powerfull untuk modelisasi sebuah skema synchronization, sehingga perlu ditambahkan mekanisme sinkronisasi tambahan. Mekanisme ini disediakan oleh konstruksi conditional, seperti deklarasi variabel di bawah ini:

condition x,y;

Gambar 3 Schematic view monitor

Operasi x.wait menahan proses sampai proses lain memanggil x.signal. Operasi x.signal

melanjutkan proses yang tertahan, jika tidak ada proses yang tertahan operasi ini tidak mempunyai pengaruh apa-apa. Misalkan x.signal dipanggil oleh proses P, lalu ada proses Q tertahan dan diasosiasikan dengan kondisi x. Jelasnya jika proses Q yang tertahan diijinkan untuk melanjutkan eksekusinya, pensinyalan proses P harus menunggu. Jika tidak kedua P dan Q akan aktif secara

simultan melalui monitor. Ada dua kemungkinan yang terjadi yaitu:

1. P menunggu sampai Q meninggalkan monitor atau menunggu untuk kondisi lain

2. Q menunggu sampai Pmeninggalkan monitor atau menunggu untuk kondisi lain.

Gambar 4 Monitor dengan variabel-variabel kondisi

Monitor merupakan konsep bahasa pemrograman, sehingga kompilator bertanggung jawab dalam mengkondisikan monitor sebagai mutual eksklusif. Namun, tidak semua kompilator bias menerapkannya. Sehingga meski bahasa pemrograman yang sama mungkin tidak memiliki semaphore, akan tetapi menambahkan semaphore akan lebih mudah.

PRINSIP Concurrency dan MUTUAL EXCLUSION

Problem 5.1 (PRINSIP Concurrency)


Sepintas, mungkin tampak bahwa interleaving dan tumpang tindih merupakan modus fundamental berbeda dari eksekusi dan masalah yang berbeda sekarang. Bahkan, baik teknik dapat dilihat sebagai contoh pengolahan bersamaan, dan keduanya hadir sama masalah. Dalam kasus sebuah uniprocessor, masalah berasal dari dasar karakteristik sistem multiprogramming: Kecepatan relatif pelaksanaan proses yang tidak dapat diprediksi. Tergantung pada proses kegiatan lain, cara menangani OS menyela, dan kebijakan penjadwalan dari OS. Itu kesulitan berikut muncul:

  1. Berbagi sumber daya global penuh bahaya. Misalnya, jika dua proses baik menggunakan variabel global yang sama dan keduanya melakukan membaca dan menulis pada variabel itu, maka urutan yang membaca dan menulis berbagai dieksekusi adalah kritis. Satu contoh masalah ini ditunjukkan dalam ayat berikut.
  2. Hal ini menjadi sangat sulit untuk menemukan kesalahan pemrograman karena hasilnya biasanya tidak deterministik dan direproduksi

Race Condition
A race condition terjadi ketika banyak proses atau benang membaca dan menulis data item sehingga hasil akhir tergantung pada urutan pelaksanaan instruksi dalam beberapa proses. Mari kita mempertimbangkan dua contoh sederhana. Sebagai contoh pertama, anggaplah bahwa dua proses, P1 dan P2, berbagi global variabel a. Pada titik tertentu dalam pelaksanaannya, P1 update ke nilai 1, dan di beberapa titik dalam pelaksanaannya, update P2 ke nilai 2. Jadi, dua tugas dalam perlombaan ke menulis variabel a. Dalam contoh ini yang kalah “” dari perlombaan (proses yang update terakhir) menentukan nilai akhir a. Sebagai contoh kami yang kedua, mempertimbangkan dua proses, P3 dan P4, berbagi global variabel b dan c, dengan nilai awal b = 1 dan c = 2. Pada titik tertentu dalam perusahaan eksekutif-SI, P3 melaksanakan tugas b = b + c, dan pada beberapa titik dalam pelaksanaannya, P4 melaksanakan tugas c = b + c. Perhatikan bahwa dua proses update yang berbeda variabel. Namun demikian, nilai akhir dari kedua variabel tergantung pada urutan yang kedua proses menjalankan kedua tugas. Jika P3 menjalankan perusahaan menetapkanan pernyataan pertama, maka nilai final b = 3 dan c = 5. Jika P4 menjalankan perusahaan Tugas pertama pernyataan, maka nilai final dan b = 4 c = 3. Sulit bagi OS untuk mengelola alokasi sumber daya secara optimal. Misalnya, proses A dapat meminta penggunaan, dan diberikan kontrol, yang saya khusus / O saluran dan kemudian dihentikan sebelum menggunakan saluran tersebut. Ini mungkin tidak diinginkan untuk OS hanya untuk mengunci saluran tersebut dan mencegah penggunaannya oleh proses lain, memang ini dapat mengakibatkan kondisi deadlock.

Operating System Concerns

Apa desain dan isu-isu manajemen yang dibangkitkan oleh adanya konkurensi? Kita bisa daftar keprihatinan berikut:

  1. OS harus dapat melacak berbagai proses. Hal ini dilakukan dengan penggunaan blok kontrol proses dan diuraikan dalam Bab 4.
  2. OS harus mengalokasikan dan deallocate berbagai sumber daya untuk setiap proses aktif. Pada kali, beberapa proses menginginkan akses ke sumber daya yang sama. Sumber daya ini memasukkan
    • Processor waktu: ini adalah fungsi penjadwalan, dibahas dalam Bagian Keempat.
    • Memori: Sebagian besar sistem operasi menggunakan skema memori virtual. Topik kali ini adalahdibahas dalam Bagian Ketiga.
    • File: Dibahas di Bab 12.
    • perangkat I / O: Dibahas di Bab 11.
  3. OS harus melindungi data dan sumber daya fisik setiap proses terhadap yang dimaksudkan gangguan proses lainnya. Hal ini melibatkan teknik yang berhubungan dengan memori, berkas, dan I / O device. Perawatan umum ditemukan di perlindungan Bab 14.
  4. Fungsi proses, dan output yang dihasilkannya, harus independen kecepatan di mana pelaksanaannya dilakukan relatif terhadap kecepatan lain
  5. konkuren proses. Ini merupakan pokok bab ini.

Untuk memahami bagaimana masalah kecepatan kemerdekaan dapat diatasi, kita perlu melihat cara-cara proses dapat berinteraksi.

Process Interaction

  • Proses tidak menyadari satu sama lain: Ini adalah proses independen yang tidak dimaksudkan untuk bekerja sama. Contoh terbaik dari situasi ini adalah multiprogramming beberapa proses independen. Ini dapat menjadi batch pekerjaan atau sesi interaktif atau campuran. Meskipun proses tidak bekerja bersama-sama, OS perlu khawatir tentang persaingan untuk sumber daya. Misalnya, dua aplikasi independen mungkin baik ingin mengakses sama disk atau file atau printer. OS harus mengatur akses ini.
  • Proses tidak langsung mengenali satu sama lain: Ini adalah proses yang tidak selalu menyadari satu sama lain dengan ID masing-masing proses tapi berbagi akses ke beberapa objek, seperti I / O buffer. Proses tersebut menunjukkan kerjasamadalam berbagi objek umum.
  • Proses langsung mengenali satu sama lain: Ini adalah proses yang dapat berkomunikasi satu sama lain dengan ID dan proses yang dirancang untuk bekerja bersama pada beberapa kegiatan. Sekali lagi, proses seperti pameran kerjasama. Kondisi tidak akan selalu sama yang jelas seperti yang disarankan dalam Tabel 5.2. Sebaliknya, beberapa proses mungkin menunjukkan aspek dari kompetisi dan kerjasama. Namun demikian, adalah produktif untuk memeriksa masing-masing dari tiga item dalam daftar sebelumnya secara terpisah dan implikasinya untuk menentukan OS.

Competition among Processes for Resources
Proses datang bersamaan ke dalam konflik satu sama lain ketika mereka bersaing untuk penggunaan sumber daya yang sama. Dalam bentuk murni, kita dapat menggambarkan situasi sebagai berikut ini. Dua atau lebih proses perlu untuk mengakses sumber daya selama eksekusi mereka. Setiap proses menyadari adanya proses lainnya, dan setiap yang akan terpengaruh oleh eksekusi proses lain. Memang benar bahwa setiap proses harus meninggalkan negara dari setiap sumber daya yang menggunakan terpengaruh. Contoh sumber daya termasuk I / O, memori, waktu prosesor, dan jam. Tidak ada pertukaran informasi antara proses bersaing. Namun, pelaksanaan satu proses dapat mempengaruhi perilaku proses bersaing. Secara khusus, jika akses dua proses kedua ingin satu sumber daya, maka satu proses akan dialokasikan bahwa sumber daya oleh OS, dan yang lain harus menunggu. Oleh karena itu, proses yang ditolak akses akan melambat. Dalam kasus yang ekstrim, diblokir proses mungkin tidak pernah mendapatkan akses ke sumber daya dan karenanya tidak akan pernah berakhir dengan sukses. Dalam hal proses bersaing tiga masalah kontrol harus dihadapi. Pertama adalah kebutuhan untuk saling pengecualian. Misalkan dua atau lebih proses membutuhkan akses ke sumber daya nonsharable tunggal, seperti printer. Selama eksekusi, setiap proses akan mengirimkan perintah ke I / O device, menerima informasi status, mengirim data, dan / atau menerima data. Kita akan lihat seperti sumber daya sebagai sumber daya kritis, dan bagian dari program yang menggunakannya kritis Bagian dari program. Adalah penting bahwa hanya satu program pada satu waktu diizinkan pada bagian yang kritis. Kita tidak bisa hanya bergantung pada OS untuk memahami dan menegakkan pembatasan ini karena persyaratan rinci mungkin tidak jelas. Dalam hal printer, misalnya, kita menginginkan proses individu untuk memiliki kontrol terhadap sedangkan printer mencetak seluruh file. Jika tidak, baris dari proses bersaing akan akan disisipkan.

Cooperation among Processes by Sharing
Kasus kerjasama oleh berbagi mencakup proses yang berinteraksi dengan proses-proses lain tanpa secara eksplisit menyadarinya. Sebagai contoh, beberapa proses mungkin memiliki akses ke variabel bersama atau berbagi file atau database. Proses dapat menggunakan dan memperbarui data bersama tanpa referensi untuk proses yang lain tapi tahu bahwa proses lain mungkin memiliki akses ke sama data. Dengan demikian proses harus bekerja sama untuk memastikan bahwa data mereka berbagi telah dikelola secara baik. Mekanisme kontrol harus menjamin integritas berbagi data. Karena data yang diadakan pada sumber daya (perangkat, memori), masalah kontrol saling pengucilan, kebuntuan, dan kelaparan yang kembali hadir. Satunya perbedaan adalah bahwa item data dapat diakses dalam dua mode yang berbeda, membaca dan menulis, dan hanya operasi menulis harus saling eksklusif.
Cooperation among Processes by Communication


kedua kasus pertama yang telah kita bahas, setiap proses memiliki lingkungan yang terisolasi sendiri yang tidak termasuk proses lainnya. Interaksi di antara proses-proses yang tidak langsung. Dalam kedua kasus, ada berbagi. Dalam kasus persaingan, mereka berbagi sumber daya tanpa menyadari proses lainnya. Pada kasus kedua, mereka berbagi nilai-nilai, dan meskipun masing-masing proses tidak secara eksplisit menyadari proses-proses lain, sadar dari kebutuhan untuk mempertahankan integritas data. Ketika proses bekerja sama dengan komunikasi, namun berbagai proses berpartisipasi dalam upaya umum yang menghubungkan semua proses. Komunikasi menyediakan cara untuk sinkronisasi, atau koordinat, yang berbagai kegiatan. Biasanya, komunikasi dapat dicirikan sebagai terdiri dari pesan-pesan beberapa macam. Primitif untuk mengirim dan menerima pesan mungkin disediakan sebagai bagian dari bahasa pemrograman atau disediakan oleh kernel OS. Karena tidak ada yang dibagi antara proses dalam tindakan lewat pesan, saling pengecualian bukan persyaratan kontrol untuk kerjasama semacam ini. Namun, masalah kebuntuan dan kelaparan yang masih ada. Sebagai contoh tentang kunci, dua proses mungkin tersumbat, masing-masing menunggu untuk komunikasi dari lainnya. Sebagai contoh kelaparan, pertimbangkan tiga proses, P1, P2, dan P3, bahwa mantan hibit perilaku berikut. P1 berulang kali berusaha untuk berkomunikasi dengan baik P2 atau P3, dan P2 dan P3 keduanya berusaha untuk berkomunikasi dengan P1. A urutan bisa muncul di mana pertukaran informasi P1 dan P2 berulang kali, sedangkan P3 diblokir menunggu untuk komunikasi dari P1. Tidak ada jalan buntu, karena P1 tetap aktif, tapi P3 adalah kelaparan

Requirements for Mutual Exclusion
Setiap fasilitas atau kemampuan yang memberikan dukungan untuk dikecualikan harus saling memenuhi persyaratan sebagai berikut:

  1. Reksa pengecualian harus dilaksanakan: Hanya satu proses pada suatu waktu yang dibolehkan masuk bagian kritis, di antara semua proses yang memiliki bagian penting untuk hal yang sama berbagi sumber daya atau objek.
  2. Sebuah proses yang menghentikan di bagian tidak kritis yang harus melakukannya tanpa mempengaruhi proses lainnya.
  3. Ini tidak boleh mungkin untuk proses yang membutuhkan akses ke critical section harus meletakkan tanpa batas: tidak ada jalan buntu atau kelaparan.
  4. Ketika proses tidak ada bagian kritis, proses apapun yang masuk ke permintaan yang critical bagian harus diperbolehkan untuk masuk tanpa penundaan.
  5. Tidak ada asumsi yang dibuat tentang kecepatan relatif proses atau jumlah prosesor.
  6. Sebuah proses tetap dalam bagian penting dalam waktu yang terbatas saja.

Problem 5.2 (MUTUAL EXCLUSION: HARDWARE SUPPORT)


Dalam sistem uniprocessor, proses konkuren tidak dapat memiliki eksekusi tumpang tindih; mereka hanya dapat disisipkan. Selain itu, proses akan terus berjalan sampai memanggil layanan OS atau sampai terganggu. Oleh karena itu, untuk menjamin saling pengecualian, itu sudah cukup untuk mencegah proses dari diganggu. Kemampuan ini dapat diberikan dalam bentuk primitif didefinisikan oleh kernel OS untuk menonaktifkan dan memungkinkan interupsi. Sebuah proses kemudian dapat menegakkan saling pengecualian dengan cara berikut

(true) { while
/* disable interrupts */;
/* critical section */;
/* enable interrupts */;
/* remainder */;
}

Karena bagian kritis tidak dapat terganggu, saling pengecualian dijamin. Harga pendekatan ini, bagaimanapun, adalah tinggi. Efisiensi eksekusi bisa akan tampak rusak karena prosesor terbatas pada kemampuannya untuk interleave proses.

Special Machine Instructions
Pada tingkat perangkat keras, seperti yang disebutkan, akses ke lokasi memori mengecualikan setiap akses lain ke lokasi yang sama. Dengan ini sebagai landasan, prosesor desainer telah mengusulkan beberapa instruksi mesin yang melakukan dua tindakan atomically, 2 seperti membaca dan menulis atau membaca dan pengujian, dengan memori tunggal lokasi dengan satu instruksi mengambil siklus. Selama pelaksanaan instruksi, akses ke lokasi memori yang diblokir untuk referensi instruksi lainnya yang lokasi.

Compare&Swap Instruction

int compare_and_swap (int *word, int testval, int newval)
{ int oldval;
oldval = *word
if (oldval == testval) *word = newval;
return oldval;
}

Versi dari cek instruksi lokasi memori (* kata) terhadap nilai tes (testval). Jika nilai sekarang lokasi memori adalah testval, itu diganti dengan newval, kalau dibiarkan tidak berubah. Nilai memori tua selalu kembali; demikian, lokasi memori telah diperbarui jika nilai dikembalikan adalah sama dengan nilai tes. Oleh karena itu instruksi atom ini memiliki dua bagian: A membandingkan adalah dibuat antara nilai memori dan nilai tes, jika nilai berbeda swap terjadi. The membandingkan seluruh & swap fungsi dilakukan atomically, yaitu, tidak tunduk untuk interupsi. Versi lain dari instruksi ini mengembalikan nilai Boolean: true jika swap terjadi; palsu sebaliknya. Beberapa versi dari instruksi ini tersedia di hampir semua prosesor keluarga (x86, IA64, sparc, / 390, dll), dan sebagian besar sistem operasi menggunakan instruksi untuk mendukung konkurensi.

Exchange Instruction

void exchange (int register, int memory)
{ temp;
int
temp = memory;
memory = register;
register = temp;
}

Instruksi pertukaran isi register dengan sebuah lokasi memori. Kedua arsitektur Intel IA-32 (Pentium) dan arsitektur IA-64 (Itanium) mengandung instruksi XCHG. Menunjukkan protokol pengecualian timbal balik yang didasarkan pada penggunaan pertukaran instruksi. Sebuah baut bersama variabel diinisialisasi ke 0. Setiap proses menggunakan lokal variabel kunci yang diawali dengan 1. Proses hanya yang dapat masuk critical section adalah salah satu yang menemukan baut sama dengan 0. Ini termasuk semua proses lain dari kritis bagian dengan mengatur baut ke 1. Ketika sebuah proses meninggalkan critical section, ia ulang baut untuk 0, memungkinkan proses lain untuk mendapatkan akses ke critical section.

Properties of the Machine-Instruction Approach
Penggunaan khusus instruksi mesin untuk menegakkan pengecualian saling memiliki sejumlah keuntungan:

  • Hal ini berlaku untuk sejumlah proses di kedua prosesor tunggal atau beberapa prosesor berbagi memori utama.
  • Sangat sederhana dan karena itu mudah untuk memverifikasi.
  • Hal ini dapat digunakan untuk mendukung beberapa bagian kritis; setiap bagian kritis dapat didefinisikan oleh variabel sendiri. Ada beberapa kelemahan serius:
  • Sibuk menunggu digunakan. Jadi, sementara proses sedang menunggu akses ke bagian kritis, terus untuk mengkonsumsi waktu prosesor.
  • Kelaparan adalah mungkin. Ketika sebuah proses meninggalkan critical section dan lebih dari satu proses sedang menunggu, pemilihan proses menunggu adalah sewenang-wenang. Dengan demikian, beberapa proses tanpa batas bisa mengakses.
  • Deadlock adalah mungkin. Pertimbangkan skenario berikut pada prosesor-tunggal sistem. Proses P1 mengeksekusi instruksi khusus (misalnya, membandingkan & swap,pertukaran) dan memasuki critical section. P1 kemudian menyela untuk memberikan prosesor untuk P2, yang memiliki prioritas lebih tinggi. Jika P2 sekarang mencoba untuk menggunakan sumber daya yang sama dengan P1, itu tidak akan dapat mengakses karena saling eksklusi mekanisme. Oleh karena itu akan masuk ke dalam lingkaran menunggu sibuk. Namun, P1 akan pernah dikirim karena prioritas lebih rendah daripada proses lain siap, P2.

Mikrokernel dan kelebihannya, kinerja, rancangan, manajemen memory, komunikasi antar proses, manajemen I/O & Interupsi

Pengertian Mikrokernel

Mikrokernel adalah inti OS kecil yang menyediakan dasar untuk modular extensesi. 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.

Mikro Kernel meiliki beberpa kelebihan diantaranya:

  1. Interface yang seragam. Proses tidak lagi dibedakan, baik antara kernel-level maupun user-level, karena semuanya berkomunikasi via message passing.
  2. Extensibility. Bisa menambahkan fitur-fitur baru tanpa perlu melakukan kompilasi ulang
  3. Flexibility. Fitur-fitur yang sudah ada bisa dikurangi, atau dimodifikasi sesuai dengan kebutuhan sehingga menjadi lebih efisien. Misalnya tidak semua pengguna membutuhkan security yang sangat ketat, atau kemampuan untuk melakukan distributed computing.
  4. Portability. Pada mikro kernel, semua atau sebagian besar kode yang prosesor-spesifik berada di dalamnya. Jadi, proses porting ke prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada kelompok desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai seberapa lama itu bisa bertahan? Karena itulah, portability adalah salah satu isu yang sangat penting.
  5. Reliability. Semakin besar suatu software, maka tentulah semakin sulit untuk menjamin reliabilitynya. Desain dengan pendekatan berlapis sangatlah membantu, dan dengan pendekatan mikro kernel bisa lebih lagi. Mikro kernel dapat diuji secara ekstensif karena dia menggunakan API yang sedikit,sehingga bisa meningkatkan kualitas code di luar kernel.
  6. Support for object-oriendted OS. Model mikro kernel sangat sesuai untuk mengembangkan sistem operasi yang berbasis object-oriented. Contoh sistem operasi yang menggunakan mikro kernel adalah Mac OS X dan QNX.Microkernel hanya memiliki fungsi manajemen sederhana untuk mendeliver services :
  • low-level address space management : sistem pengalamatan physical atau virtual untuk memory, network host, peripheral, dan lain-lain.
  • thread management : pengaturan proses (=’molekul’) yang terpecah menjadi thread (=’atom’) dan dijalankan secara paralel.
  • inter-process communication (IPC) : pengaturan komunikasi antar thread pada satu atau beberapa proses. IPC bisa punya ruang lingkup di dalam atau antar computer.

Untuk mengatur kegiatan proses mereka perlu saling berkomunikasi. Linux mendukung berbagai mekanisme komunikasi antar proses (KAP). Sinyal dan pemipaan merupakan dua di antaranya, tapi linux juga mendukung system sistem ke lima mekanisme KAP. Manajemen I/O berguna Untuk mengelola perangkat masukan/keluaran, dimana perangkat tersebut digunakan proses tertenty, sehingga perlu dijaga agar proses lain tidak memakainya. Sistem operasi perlu mengetahui status operasi masukan/keluaran dan lokasi memori utama yang digunakan untuk transfer data. Manajemen Memory Manajemen memory level bawah (low- level): Memetakan setiap page virtual ke frame fisik, – Sebagian besar tugas manajemen memory terjadi dalam user space.

Komunikasi Antar Proses (IPC)

  • Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel adalah melalui message.
  • Suatu message menyertakan:
  • Header yang mengidetifikasi proses pengiriman dan penerimaan, dan – Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses.

Manajemen I/O & interrupt – Di dalam mikrokernel, adalah mungkin menangani interupsi hardware sebagai message dan menyertakan port I/O dalam ruang alamat. – Proses user-level tertentu dilewatkan ke interrupt & kernel memelihara pemetaan tersebut.

Kinerjanya Mikrokernel
Dalam teorinya, sistem operasi yang menggunakan microkernel disebut jauh lebih
stabil dibandingkan dengan monolithic kernel, karena sebuah server yang gagal
bekerja, tidak akan menyebabkan kernel menjadi tidak dapat berjalan, dan server
tersebut akan dihentikan oleh kernel utama. Akan tetapi, dalam prakteknya, bagian dari system state dapat hilang oleh server yang gagal bekerja tersebut, dan biasanya untuk melakukan proses eksekusi aplikasi pun menjadi sulit, atau bahkan untuk menjalankan server-server lainnya. Sistem operasi yang menggunakan microkernel umumnya secara dramatis memiliki kinerja di bawah kinerja sistem operasi yang menggunakan monolithic kernel. Hal ini disebabkan oleh adanya overhead yang terjadi akibat proses input/output dalam kernel yang ditujukan untuk mengganti konteks (context switch) untuk memindahkan data antara aplikasi dan server. Beberapa sistem operasi yang menggunakan microkernel:

  • IBM AIX, sebuah versi UNIX dari IBM
  • Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi
  • Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP, dan Mac OS/X
  • Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan
    edukasi
  • Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device, embedded device, dan PDA Phone.

Rancangan Mikrokernel
Pada pembahasan “Struktur Sederhana”, sempat disinggung istilah “kernel”. Apakah kernel itu? Kernel adalah komponen sentral dari sistem operasi. Ia mengatur hal-hal seperti interrupt handler(untuk menyediakan layanan interupsi), process scheduler(membagi-bagi proses dalam prosesor), memory management, I/O, dan sebagainya. Atau dengan kata lain, ia adalah jembatan antara hardware dengan software. Cara tradisional untuk membangun sistem operasi adalah dengan membuat kernel monolitis, yaitu semua fungsi disediakan oleh kernel, dan ini menjadikan kernel suatu program yang besar dan kompleks.
Cara yang lebih modern, adalah dengan menggunakan kernel mikro. Pada awalnya, konsep mikro kernel dikembangkan pada sistem operasi Mach. Ide dasar dari pengembangan kernel mikro adalah bahwa hanya fitur-fitur yang perlu saja yang diimplementasikan dalam kernel (mengenai fitur-fitur apa saja yang perlu diimplementasikan, ini bisa berbeda tergantung desain sistem operasi).
Walaupun garis pembatas mengenai apa saja yang berada di dalam dan luar kernel mikro bisa berbeda antara desain yang satu dengan yang lain, namun ada karakteristik yang umum, yaitu servis-servis yang umumnya menjadi bagian sistem operasi menjadi subsistem eksternal yang bisa berinteraksi satu sama lain dan dengan kernel tentunya. Ini mencakup device driver, file system, virtual memory manager, windowing system, dan security devices. Pendekatan kernel mikro menggantikan pendekatan berlapis yang vertikal tradisional.
Komponen-komponen sistem operasi yang berada di luar kernel mikro diimplementasikan sebagai server process dan berkomunikasi dengan message passing via kernel mikro. Misalnya jika user ingin membuat berkas baru, dia mengirim pesan ke file system server, atau jika ingin membuat proses baru, dia mengirimkan pesan ke process server.
Gambar Struktur kernel mikro

Manajemen Memory
Pada umumnya mikrokernel mendukung proses dan menajemen memori yang minimal, sebagai tambahan untuk fasilitas komunikasi. Bagian ini menjelaskan bagaimana linux menangani memori dalam sistem. Memori managemen merupakan salah satu bagian terpenting dalam sistem operasi. Karena adanya keterbatasan memori, diperlukan suatu strategi dalam menangani masalah ini. Jalan keluarnya adalah dengan menggunakan memori virtual. Dengan memori virtual, memori tampak lebih besar daripada ukuran yang sebenarnya.

Dengan memori virtual kita dapat:

  1. Ruang alamat yang besar
    Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya. Memori virtual bisa beberapa kali lebih besar daripada memori fisiknya.
  2. Pembagian memori fisik yang adil
    Managemen memori membuat pembagian yang adil dalam pengalokasian memori antara proses-proses.
  3. Perlindungan
    Memori managemen menjamin setiap proses dalam sistem terlindung dari proses-proses lainnya. Dengan demikian, program yang crash tidak akan mempengaruhi proses lain dalam sistem tersebut.
  4. Penggunaan memori virtual bersama
    Memori virtual mengizinkan dua buah proses berbagi memori diantara keduanya, contohnya dalam shared library. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua program yang berbeda.

Memori Virtual
Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang disebut page. Page ini memiliki ukuran yang sama besar. Tiap page ini punya nomor yang unik, yaitu Page Frame Number (PFN). Untuk setiap instruksi dalam program, CPU melakukan mapping dari alamat virtual ke memori fisik yang sebenarnya.
Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU menggunakan tabel page untuk proses x dan proses y. Ini menunjukkan virtial PFN 0 dari proses x dimap ke memori fisik PFN 1. Setiap anggota tabel page mengandung informasi berikut ini:

  1. Virtual PFN
  2. PFN fisik
  3. informasi akses page dari page tersebut

Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus menangani alamat virtual PFN dan offsetnya di virtual page. CPU mencari tabel page proses dan mancari anggota yang sesuai degan virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil PFN fisik dan mengalikannya dengan besar page untuk mendapat alamat basis page tersebut di dalam memori fisik. Terakhir, CPU menambahkan offset ke instruksi atau data yang dibutuhkan. Dengan cara ini, memori virtual dapat dimap ke page fisik dengan urutan yang teracak.
Demand Paging
Cara untuk menghemat memori fisik adalah dengan hanya meload page virtual yang sedang digunakan oleh program yang sedang dieksekusi. Tehnik dimana hanya meload page virtual ke memori hanya ketika program dijalankan disebut demand paging.
Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori, CPU tidak dapat menemukan anggota tabel page. Contohnya, dalam gambar, tidak ada anggota tabel page untuk proses x untuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual PFN 2, CPU tidak dapat menterjemahkan alamat ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk menangani masalah ini. CPU menginformasikan kepada sistem operasi bahwa page fault telah terjadi, dan sistem operasi membuat proses menunggu selama sistem operasi menagani masalah ini.
CPU harus membawa page yang benar ke memori dari image di disk. Akses disk membutuhkan waktu yang sangat lama dan proses harus menunggu sampai page selesai diambil. Jika ada proses lain yang dapat dijalankan, maka sistem operai akan memilihnya untuk kemudian dijalankan. Page yang diambil kemudian dituliskan di dalam page fisik yang masih kosong dan anggota dari virtual PFN ditambahkan dalam tabel page proses. Proses kemudian dimulai lagi pada tempat dimana page fault terjadi. Saat ini terjadi pengaksesan memori virtual, CPU membuat penerjemahan dan kemudian proses dijalankan kembali.
Demand paging terjadi saat sistem sedang sibuk atau saat image pertama kali diload ke memori. Mekanisme ini berarti sebuah proses dapat mengeksekusi image dimana hanya sebagian dari image tersebut terdapat dalam memori fisik.
Swaping
Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah page ke memori, sistem operasi harus memutuskan apa yang harus dilakukan. Sistem operasi harus adil dalam mambagi page fisik dalam sistem diantara proses yang ada, bisa juga sistem operasi menghapus satu atau lebih page dari memori untuk membuat ruang untuk page baru yang dibawa ke memori. Cara page virtual dipilih dari memori fisik berpengaruh pada efisiensi sistem.
Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan dihapus dari sistem. Ini berarti setiap page memiliki usia sesuai dengan berapa sering page itu diakses. Semakin sering sebuah page diakses, semakin muda page tersebut. Page yang tua adalah kandidat untuk diswap.
Pengaksesan Memori Virtual Bersama
Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori menggunakan tabel page. Proses yang akan berbagi memori virtual yang sama, page fisik yang sama direference oleh banyak proses. Tabel page untuk setiap proses mengandung anggota page table yang mempunyai PFN fisik yang sama.
Efisiensi
Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping membuat prosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapa cache dalam managemen memori di linux:

  1. Page Cache
    Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, page dicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang lain, page ini dapat segera diambil dari page cache.
  2. Buffer Cache
    Page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.
  3. Swap Cache
    Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat akses disk yang tidak perlu.
    Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota tabel page. Dalam hal ini, CPU tidak secara langsung membaca tabel page, tetap mencache terjemahan page yang dibutuhkan.

Load dan Eksekusi Program

  1. Penempatan program dalam memori
    Linux membuat tabel-tabel fungsi untuk loading program, memberikan kesempatan kepada setiap fungsi untuk meload file yang diberikan saat sistem call exec dijalankan. Pertama-tama file binari dari page ditempatkan pada memori virtual. Hanya pada saat program mencoba mengakses page yang telah diberikan terjadi page fault, maka page akan diload ke memori fisik.
  2. Linking statis dan linking dinamis
  1. Linking statis:
    librari-librari yang digunakan oleh program ditaruh secara langsung dalam file binari yang dapat dieksekusi. Kerugian dari linking statis adalah setiap program harus mengandung kopi library sistem yang umum.
  2. Linking dinamis:
    hanya sekali meload librari sistem menuju memori. Linking dinamis lebih efisien dalam hal memori fisik dan ruang disk.

Komunikasi Antar Proses
Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel adalah melalui message.

  1. Suatu message menyertakan:
    * Header yang mengidetifikasi proses
  2. pengiriman dan penerimaan, dan
    * Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi kontrol mengenai proses.

Manajemen I/O & Interupsi
Di dalam mikrokernel, adalah mungkin menangani interupsi hardware sebagai message dan menyertakan port I/O dalam ruang alamat.
Proses user-level tertentu dilewatkan ke interrupt & kernel memelihara pemetaan tersebut.

Jawaban Problems 3.1 & 3.2, 4.1 & 4.2

3.1 Proses

// <![CDATA[/ Definisi proses Secara tidak langsung, proses adalah 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 method, 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 mecakup program counter , register, dan variabel di dalamnya. termasuk
• Suatu program dalam pelaksanaan
• Sebuah contoh dari program yang berjalan pada komputer
• Entitas yang dapat ditugaskan dan dijalankan pada prosesor
• Sebuah unit aktivitas ditandai dengan pelaksanaan suatu urutan instruksi,keadaan saat ini, dan terkait set sumber daya sistem Juga dapat memikirkan suatu proses sebagai entitas yang terdiri dari sejumlah elemen. Dua unsur penting dari sebuah proses adalah program kode (yang dapat dipergunakan bersama dengan proses lain yang melaksanakan program yang sama) dan satu set data yang terkait dengan kode itu. Mari kita anggap bahwa prosesor mulai menjalankan program ini, sementara melaksanakan program ini, proses ini dapat ditandai dengan unik
jumlah elemen, termasuk yang berikut:
• Identifier: Sebuah pengenal unik yang diasosiasikan dengan proses ini, untuk membedakannya
dari semua proses lainnya.
• State: Jika proses saat ini melaksanakan, itu adalah dalam keadaan berjalan.
• Prioritas: Prioritas tingkat relatif terhadap proses lainnya.
• Program counter: Alamat dari instruksi berikutnya dalam program yang akan dieksekusi.
• Memori pointer: termasuk pointer ke kode program dan data yang terkait dengan proses ini, ditambah blok memori yang digunakan bersama proses lain.
• Konteks data: Ini adalah data yang ada dalam register dalam prosesor sedangkan proses yang mengeksekusi.
• I / O status informasi: Termasuk beredar I / O, I / O perangkat (misalnya, tape drive) ditugaskan untuk proses ini, sebuah daftar file yang digunakan oleh proses, dan sebagainya.

• Informasi Akuntansi: Mei meliputi jumlah waktu prosesor dan jam waktu yang digunakan, batas waktu, nomor rekening, dan sebagainya.

Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian text-section adalah sama, data section -nya bervariasi.

Informasi dalam daftar sebelumnya disimpan dalam struktur data, biasanya disebut proses kontrol blok, yang dibuat dan dikelola oleh OS. Titik signifikan tentang blok kontrol proses yang cukup mengandung informasi sehingga ada kemungkinan untuk mengganggu proses berjalan dan kemudian melanjutkan eksekusi seakan gangguan itu tidak terjadi. Blok kontrol proses merupakan kunci alat yang memungkinkan OS untuk mendukung proses ganda dan untuk multiprocessing. Ketika sebuah proses terputus, nilai saat ini dari program counter dan register prosesor (data konteks) yang disimpan dalam bidang yang sesuai blok kontrol proses yang sesuai, dan keadaan proses ini berubah menjadi beberapa nilai lain, seperti diblokir atau siap (dijelaskan kemudian). OS sekarang bebas untuk menaruh beberapa proses lainnya dalam keadaan berjalan. Konter konteks program dan data untuk proses ini dimuat ke register prosesor dan proses ini sekarang mulai mengeksekusi. Dengan demikian, kita dapat mengatakan bahwa proses yang terdiri dari kode program dan data yang terkait ditambah blok proses kontrol. Untuk komputer-prosesor tunggal, pada waktu tertentu, pada paling satu proses adalah melaksanakan dan proses yang ada di negara berjalan.

Gambar 3-2. Process Control Block

3.2 Status Proses

Quantcast Seperti hanya dibahas, untuk program yang akan dieksekusi, proses, atau tugas, diciptakan untuk itu program. Dari prosesor sudut pandang, itu menjalankan instruksi dari repertoar dalam beberapa urutan ditentukan oleh nilai-nilai perubahan dalam program counter register. Seiring waktu, program counter bisa merujuk ke kode dalam program-program berbeda yang adalah bagian dari proses yang berbeda. Dari sudut pandang program individu, yang eksekusi melibatkan urutan instruksi dalam program itu. Kita bisa mencirikan perilaku proses individual dengan membuat daftar urutan instruksi yang melaksanakan proses itu. Seperti sebuah daftar disebut sebagai jejak proses. Kita bisa mencirikan perilaku prosesor dengan menunjukkan bagaimana jejak-jejak dari berbagai proses disisipkan. Kami mengasumsikan bahwa OS hanya memungkinkan proses untuk melanjutkan eksekusi untuk maksimal enam siklus instruksi, setelah itu terganggu; ini mencegah setiap proses tunggal dari waktu memonopoli prosesor, enam pertama instruksi dari proses yang dijalankan, diikuti dengan time-out dan pelaksanaan beberapa kode di operator, yang melaksanakan enam instruksi sebelum. Didalam Status Proses ada dua macam model yaitu model proses dua status dan model proses lima status Model Proses Dua Status Proses dapat berada pada salah satu dari dua status – Berjalan (running) berarti program sedang melaksanakan perintah dan sedang dieksekusi serta proses exit – Not-running berarti program tidak dalam proses eksekusi melainkan persiapan akan dieksekusi Model Proses Lima Status Model proses lima status diantaranya adalah * New adalah Proses sedang dikerjakan/dibuat. * Running adalah Instruksi sednag dikerjakan. * Waiting adalah Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/O atau penerimaan sebuah tanda/signal). * Ready adalah Proses sedang menunggu untuk ditugaskan pada sebuah prosesor. * Terminated adalah Proses telah selsesai melaksanakan tugasnya/mengeksekusi. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada gambar dibawah ini : Gambar diatas menunjukkan kemungkinan terjadinya proses transisi diantaranya sebagai berikut: * Null -New : Sebuah proses baru yang dibuat untuk menjalankan sebuah event terjadi program * New -Ready : proses akan berpindah ke tempat yang baru siap ketika sudah siap untuk melakukan proses tambahan. Kebanyakan sistem menetapkan beberapa batas berdasarkan jumlah proses yang ada atau jumlah memori virtual berkomitmen untuk proses yang ada. * Ready – Running : Ketika waktu untuk memilih menjalankan proses OS memilih salah satu proses di siap state. Pekerjaan ini yang menjadwal atau memberangkatkan. * Running -Exit : proses yang sedang berjalan diakhiri oleh OS jika proses menunjukkan bahwa ia telah selesai atau jika aborts. * Running – Ready :alasan yang paling umum untuk transisi ini adalah proses yang berjalan telah mencapai batas maksimum yang diijinkan untuk terganggu waktu pelaksanaan hampir semua sistem operasi multiprogramming menentukan jenis waktu yang tepat. * Running -Blocked : Sebuah proses diletakkan di Diblokir jika permintaan sesuatu yang harus menunggu. Permintaan untuk OS biasanya dalam bentuk sistem layanan panggilan yaitu panggilan dari program untuk menjalankan prosedur yang merupakan bagian dari sistem operasi kode. * Blocked -Ready : Sebuah proses blokir tersebut akan dipindahkan yang Siap saat acara yang telah menunggu terjadi. * Ready -Exit : Untuk jelasnya, transisi ini tidak akan ditampilkan pada diagram . Dalam beberapa sistem induk dapat proses setiap saat Juga jika induk terminates dihentikan maka semua proses yang terkait dengan induk tersebut akan dihentikan. * Blocked – Exit : Komentar di bawah item sebelumnya berlaku.

4.1 Proses dan Threads

// <![CDATA[/ Proses

Proses memiliki dua karakteristik namun kedua karakteristik dilakukan secara independen oleh sistem operasi:

  • Resource ownership (kepemilikan sumber daya) – proses mempunyai ruang alamat virtual untuk menangani image proses yang didefinisikan dalam PCB
  • Scheduling-execution (penjadwalan-eksekusi) – Mengikuti suatu path eksekusi (trace), ada pergatian dari satu proses ke lainnya

Unit dari kepemilikan sumber daya diacu sebagai proses atau task

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>Thread

Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter , register set , dan stack . Sebuah Thread berbagi code section , data section , dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process . Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu

Keuntungan dari program yang multithrading pada suatu proses dapat dipisah menjadi empat kategori :

  1. Responsi : Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading , sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
  2. Berbagi sumber daya : thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
  3. Ekonomi : dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.
  4. Utilisasi arsitektur multiprocessor : Keuntungan dari multithreading bisa sangat meningkat pada arsitektur multiprocessor , dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu( satu -satuan waktu pada CPU biasa disebut time slice atau quantum ).

User dan Kernel Thread

User thread

User thread didukung diatas kernel dan diimplementasi oleh thread library pada user level. Library meneyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads.

Kernel thread

Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajeman thread dilakukan oleh kernel pada kernel space . Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor , kernel bisa menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.

Model Multithreading
Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk kernel bersangkutan dapat bejalan secara paralel pada multiprocessor. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel menjalankan therads didukung dan diatur secara langusng oleh sistem operasi.
Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:
Model Many to One: Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model

Model One to One: Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini ialah setiap pembuatan thread
pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.

Model Many To Many: Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer

untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.

Cancellation

Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.

Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :

  1. Asynchronous cancellation : suatu thread seketika itu juga memberhentikan target thread.
  2. Defered cancellation : target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.

Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.

Alternatifnya adalah dengan menggunakan Deffered cancellation . Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points .

Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred cancellation . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation .

Penanganan Sinyal

Sebuah sinyal digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal bisa diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal.

Semua sinyal( asynchronous dan synchronous ) mengikuti pola yang sama :

  1. Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.
  2. Sinyal yang dimunculkan tersebut dikirim ke proses.
  3. Sesudah dikirim, sinyal tersebut harus ditangani.

Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard( alt-f4 ) maka sinyal asynchronous dikirim ke proses tersebut. Jadi ketika suatu sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalan maka proses tersebut menerima sinyal tersebut secara asynchronous .

Setiap sinyal bisa ditangani oleh salah satu dari 2 penerima sinyal :

  1. Penerima sinyal yang merupakan set awal dari sistem operasi.
  2. Penerima sinyal yang didefinisikan sendiri ole user.

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengrimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang multithreading , karena sebuah proses bisa memiliki beberapa thread.

Secara umum ada 4 pilihan kemana sinyal harus dikirim :

  1. Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.
  2. Mengirimkan sinyal ke setiap thread pada proses tersebut.
  3. Mengirimkan sinyal ke thread tertentu dalam proses.
  4. 4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.

Cara untuk mengirimkan sebuah sinyal tergantung dari tipe sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses ( contoh : alt-f4 ) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengijinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls( APCs ) . Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima notifikasi peristiwa tertentu.

Thread Pools

Pada web server yang multithreading ada 2 masalah yang timbul :

  1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.
  2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools , dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.

Keuntungan thread pool :

  1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
  2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .

Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent .

Hal-Hal Lainnya dari Thread

Pthreads

Pthreads merujuk kepada POSIX standard( IEEE 1003.1 c ) mendefinisikan sebuah API untuk pembuatan thread dan sinkronisasi. Pthreads adalah spesifikasi untuk thread dan bukan merupakan suatu implementasi. Desainer sistem operasi boleh mengimplementasikan spesifikasi tersebut dalam berbagai cara yang mereka inginkan. Secara umum Libraries yang mengimplementasikan Pthreads dilarang pada sistem berbasis UNIX seperti Solaris 2. Sistem operasi Windows secara umum belum mendukung Pthreads, walaupun versi shareware -nya sudah ada di domain publik.

4.2 Symmetric Multiprocessing (SMP)


SMP Arsitektur

Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung perangkat keras symmetric multiprocessor (SMP). Proses mau pun thread yang berbeda dapat dieksekusi secara paralel dengan processor yang berbeda. Tapi bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasi yang tidak dapat di-preemptive dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satu processor yang dapat dieksekusi dengan kode mode kernel pada suatu saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan aturan ini. Spinlock ini tidak memunculkan permasalahan untuk pekerjaan yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaan yang melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat mengkhawatirkan.

Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel spinlock tunggal menjadi banyak kunci yang masing-masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini, pengembangan kernel yang terbaru mengizinkan banyak processor untuk dieksekusi oleh kode mode kernel secara bersamaan.

Hal ini berguna untuk melihat di mana SMP arsitektur muat ke dalam kategori keseluruhan paralel prosesor. Sebuah taksonomi yang menyoroti sistem prosesor paralel pertama kali diperkenalkan oleh Flynn [FLYN72] masih merupakan cara paling umum mengkategorikan sistem tersebut. Flynn
diusulkan dengan kategori sebagai berikut sistem komputer:
instruksi tunggal data tunggal (SISD) stream: Sebuah prosesor tunggal menjalankan sebuah aliran instruksi untuk beroperasi pada data yang tersimpan dalam memori tunggal.

Single instruksi multiple data (SIMD) stream: Sebuah mesin tunggal instruksi mengontrol eksekusi simultan dari sejumlah elemen pengolahan pada dasar berbaris. Setiap elemen pemrosesan memiliki memori data yang terkait, sehingga bahwa setiap instruksi dieksekusi pada satu set data yang berbeda oleh berbagai prosesor. Array prosesor vektor dan termasuk dalam kategori ini.
Beberapa instruksi data tunggal (MISD) stream: Sebuah urutan data ditransmisikan ke satu set prosesor, masing-masing melaksanakan instruksi yang berbeda urutan. Struktur ini tidak pernah dilaksanakan.
Beberapa instruksi multiple data (MIMD) stream: Satu set prosesor secara simultan mengeksekusi urutan instruksi yang berbeda pada set data yang berbeda.

Organisasi SMP

Ada multiprosesor, masing-masing berisi kontrol unit sendiri, unit aritmatika-logika, dan register. Setiap prosesor memiliki akses ke memori utama bersama dan perangkat I / O melalui beberapa bentuk mekanisme interkoneksi; bus bersama adalah fasilitas umum. Itu prosesor dapat berkomunikasi satu sama lain melalui memori (pesan dan status informasi yang tersisa dalam ruang alamat bersama-sama). Hal ini juga dapat dibuat untuk prosesor untuk pertukaran sinyal secara langsung. memori ini sering diselenggarakan simultan sehingga akses ganda untuk blok terpisah dari memori yang mungkin. Pada komputer modern, prosesor umumnya memiliki setidaknya satu tingkat cache memori yang swasta untuk prosesor. Penggunaan cache ini memperkenalkan beberapa pertimbangan desain baru. Karena setiap cache lokal berisi gambar sebagian utama memori, jika sebuah kata berubah dalam satu cache, itu menurut pikiran bisa membatalkan kata dalam cache lain. Untuk mencegah hal ini, prosesor lain harus diberitahu bahwa pembaruan telah terjadi. Masalah ini dikenal sebagai masalah koherensi cache dan biasanya dibahas dalam perangkat keras daripada oleh OS.7

Multiprosesor Sistem Operasi Pertimbangan Desain

Sebuah sistem operasi SMP mengelola sumber daya prosesor dan komputer lainnya sehingga pengguna dapat melihat sistem dengan cara yang sama sebagai sistem uniprocessor multiprogramming. Seorang pengguna dapat membangun aplikasi yang menggunakan beberapa proses atau beberapa benang dalam proses tanpa memperhatikan apakah prosesor tunggal atau beberapa prosesor akan tersedia. Jadi multiprosesor OS harus menyediakan semua fungsi sistem multiprogramming ditambah fitur-fitur tambahan untuk mengakomodasi beberapa prosesor. Isu-isu kunci perancangan meliputi:
simultan bersamaan proses atau thread: Kernel rutinitas perlu reentrant untuk memungkinkan beberapa prosesor untuk menjalankan kode kernel yang sama simultneously. Dengan prosesor menjalankan beberapa bagian yang sama atau berbeda dari kernel, kernel tabel dan struktur manajemen harus dikelola dengan baik untuk menghindari jalan buntu atau operasi yang tidak valid.
Penjadwalan: Penjadwalan dapat dilakukan oleh prosesor, jadi konflik harus dihindari. Jika kernel-tingkat multithreading digunakan, maka ada kesempatan untuk jadwal beberapa benang dari proses yang sama secara bersamaan pada beberapa prosesor. Multiprosesor penjadwalan diperiksa dalam Bab 10.
Sinkronisasi: Dengan beberapa proses yang aktif memiliki akses yang potensial berkaitan alamat ruang bersama atau bersama I / O sumber daya, perhatian harus diambil untuk memberikan efektif sinkronisasi. Sinkronisasi adalah fasilitas yang saling memaksa pengecualian dan acara pemesanan. Mekanisme yang umum digunakan dalam sinkronisasi multiprosesor sistem operasi adalah kunci, dijelaskan dalam Bab 5.

Manajemen memori: Memori manajemen pada multiprosesor harus berurusan dengan semua masalah yang ditemukan pada komputer uniprocessor dan dibahas dalam Bagian Tiga. Selain itu, perlu OS mengeksploitasi paralelisme perangkat keras yang tersedia, seperti kenangan multiported, untuk mencapai kinerja terbaik. paging ini mekanisme pada prosesor yang berbeda harus dikoordinasikan untuk menegakkan konsistensi ketika beberapa prosesor berbagi halaman atau segmen dan memutuskan pada halaman penggantian.

Keandalan dan toleransi kesalahan: OS harus menyediakan degradasi anggun wajah kegagalan prosesor. Scheduler dan bagian-bagian lain dari OS harus mengakui kehilangan prosesor dan merestrukturisasi manajemen sesuai tabel.
Karena OS multiprocessor masalah desain umumnya melibatkan ekstensi untuk solusi untuk multiprogramming uniprocessor masalah desain, kita tidak memperlakukan multiprosesor sistem operasi terpisah.

Tugas Pertemuan 3 (2)

1. Jelaskan alasan pembuatan & penghentian suatu proses!

Alasan Pembuatan : tanpa adanya proses sebuah sistem operasi tidak dapat berjalan sebagaimana mestinya,karena tugas dari so adalah mengatur eksekusi,dimana sebuah eksekusi itu berjalan karena adanya manajemen proses.definisi dari proses itu sendiri adalah unit aktifitas yang dicirikan oleh eksekusi serangkaian instruksi, current state (status terkini) & himpunan instruksi sistem terkait (associated).

Alasan penghentian suatu proses : masih banyak aplikasi yang membutuhkan sumber daya sehingga Processor di-switch antar banyak aplikasi sehingga perangkat I/O dapat digunakan secara efisien dan juga menghindari komputer mengambang ( hang )

2. Jelaskan tentang model proses lima status beserta kemungkinan transisinya!

Model proses lima status adalah model alur proses kerja dengan menggunakan lima pos atau lima pengaturan jalan proses sehingga alur dan penjadwalan proses dapat terkontrol.

Proses baru akan masuk lewar pos new. kemudian masuk pada pos Ready untuk antri giliran panggilan proses oleh Dispatch. Setelah dipanggil Dispatch akan diproses pasa pos Running. Bila waktu giliran habis namun proses belum selesai maka proses akan menuju pos Blocked untuk menunggu giliran masuk pos Ready untuk menyelesaikan sisa proses. Bila proses selesai sebelum waktu giliran habis maka proses akan keluar melalui pos exit dan akan diganti proses berikutnya. Mengikuti soal sebelumnya, tetapi pada kehadiran dua status suspended.

3. Mengikuti soal sebelumnya, tetapi pada kehadiran dua status suspended.

Model proses pada status dua suspended merupakan model proses yang mengakibatkan processor lebih cepat daripada I/O sehingga semua proses dapat menunggu I/O.Swap proses sedemikian ke disk untuk membebaskan lebih banyak memory & menugaskan processor pada lebih banyak proses.Dimana Status Blocked berubah menjadi Suspend ketika proses dialihkan ke disk.

kemungkinan transisinya:

  • Swapping : SO harus membebaskan cukup main memory agar suatu proses siap eksekusi.
  • Request User Interaktif: Misalnya, debugging atau berhubungan dengan

pemanfaatan sumber daya.

  • Timing :Proses dapat dieksekusi secara periodik (misal, sistem monitoring sistem atau accounting) & boleh di-suspend selama menunggu waktu berikutnya.
  • Request Proses Induk Proses induk berkeinginan men-suspend eksekusi dari suatu turunan untuk menguji atau mengubah proses turunan tersebut atau mengkoordinasikan aktifitas dari berbagai keturunannya.

4. Jelaskan elemen-elemen dari Process Control Block (PCB)!


Tugas Pertemuan 3 (1)

sistem operasi Linux dan Windows (studi literatur)

Proses pada windows dan linux

Proses merupakan konsep pokok pada sistem operasi, karena salah satu tugas utama sistem operasi adalah bagaimana mengatur proses – proses yang berjalan di sistem. Sebenarnya apakah Proses itu?

Berikut beberapa definisi proses pada sistem operasi adalah :

1. Program yang sedang dalam keadaan dieksekusi.

2. Unit kerja terkecil yang secara individu memiliki sumber daya dan dijadwalkan oleh system operasi.

Sistem operasi mengolah seluruh proses yang ada di sistem dan bertugas mengalokasikan sumber daya sumber daya ke proses yang membutuhkan sesuai dengan kebijaksanaan tertentu. Sumber daya yang dibutuhkan proses diantaranya CPU, memori, file serta I/O device.

Keadaan Proses

Proses – proses yang dikelola oleh sistem operasi akan melalui serangkaian keadaan yang merupakan bagian dari aktivitasnya. Keadaan proses ini disebut sebagai status proses yang terdiri dari:

Status New yaitu status dimana proses sedang dibuat.

Status Ready yaitu status dimana proses siap dieksekusi tetapi CPU mengerjakan proses lain.

Status Waiting yaitu status dimana proses sedang menunggu suatu kejadian menunggu operasi I/O selesai, menunggu signal dari proses lain, tersedianya

Status Running yaitu status dimana proses dieksekusi. Pada status ini instruksi – instruksi pada proses.

Status Terminated yaitu status dimana proses diakhiri. Kelima status proses tersebut dapat digambarkan pada diagram berikut:

Sebuah proses menjadi Waiting karena proses tersebut menunggu suatu kejadian tertentu seperti selesainya operasi I/O, misalnya perekaman data ke disk karena pada saat perekaman dilakukan proses sedang tidak menggunakan CPU maka scheduler segera mengalokasikan CPU ke proses lain yang telah Ready. Apabila kejadian yang ditunggu telah selesai maka proses dipindahkan kembali ke antrian Ready dan siap dijadwalkan.

– Sebuah proses dari keadaan Running dapat menjadi Ready kembali karena diinterupsi oleh proses lain. Interupsi dapat disebabkan karena jatah waktu yang diberikan CPU ke proses tersebut telah habis sementara proses masih memerlukan sejumlah waktu untuk selesai. Jatah waktu yang diberikan sering disebut sebagai quantum time (time slice) yang dapat berkisar antara 1 hingga 100 milidetik. Interupsi suatu proses terkait erat dengan strategi penjadwalan proses yang digunakan sistem operasi yaitu strategi preemptive dimana suatu proses dapat saja disela oleh proses lain pada saat Running.

– Sebuah proses menjadi Terminated disebabkan oleh beberapa hal diantaranya:

1. Proses memang sudah sele sai mengerjakan tugasnya, sehingga diakhiri secara normal

2. Melewati batas waktu yang telah diberikan.New Ready Running Terminated Waiting

3. Terjadi kesalahan perhitungan misalnya mengerjakan instruksi pembagian dengan nol (division by zero) , atau menyimpan angka yang lebih besar daripada yang dapat diakomodasi oleh perangkat keras.

4. Terjadi kegagalan I/O seperti kegagalan pembacaan dan penulisan file.

5. Proses induknya berakhir, pada kasus ini suatu proses dibuat oleh proses lain, proses pembuat disebut sebagai parent, sedangkan proses yang dibuat disebut sebagai child . Sistem dirancang untuk mengakhiri secara otomatis proses – proses childnya bila proses parent berakhir.

6. Proses child diakhiri atas permintaan proses parentnya. Pada kasus ini parent mengirim signal tertentu untuk mengakhiri childnya misalnya mengirim signal SIGQUIT, SIGKILL atau SIGTERM.

Gunakan Shell Linux, jelaskan fungsi & cara menggunakan perintah (plus contoh):

  • top

Perintah top digunakan untuk menampilkan proses pada CPU.Perintah ini untuk menampilkan proses yang sedang berjalan secara realtime (kontinue) dan bisa digunakan untuk menampilkan proses dan penggunaan resource yang paling aktif. Contohnya :

  • Grep

Perintah grep digunakan untuk menyaring masukanya dan menampilkan baris-baris yang hanya mengandung pola yang Anda tentukan. Pola ini disebut reguler expression dan Perintah grep digunakan untuk menampilkan string yang sesuai dengan input yang berasal dari perintah lainnya.Contoh :

  • cat

Perintah cat digunakan untuk menampilkan isi berkas.cat juga dapat digunakan untuk menulis isi sebuah file teks Contoh :