Sistem Operasi Pertemuan 12
Komunikasi Antar Proses Konsep proses yang memiliki ruang alamat logika yang independen dan terisolasi dari proses lain, merupakan salah satu cara agar perebutan terhadap sumber daya tersebut tidak perlu ditangani langsung oleh pemogram aplikasi, tapi ditangani oleh sistem operasi dan dibantu dukungan perangkat keras yaitu MMU (Memory Management Unit) Ada kalanya proses-proses yang berjalan tersebut saling bekerja sama sehingga sistem operasi harus menyediakan fasilitas komunikasi antar proses (IPC, Inter Process Communication)
Dua macam model komunikasi antar proses yang saling bekerja sama Model bertukar pesan (message passing) Model berbagai pakai memori (shared memori)
1. Mekanisme IPC Message Passing Mekanisme message passing melibatkan intervensi sistem operasi secara langsung. Misalnya proses A hendak menyampaikan suatu pesan M ke proses B maka proses A akan mengirimkan pesannya ke kernel sistem operasi(1), yang kemudian diteruskan ke proses B (2). Catatan : Pesan M harus mengandung informasi alamat tujuan dari pesan tersebut. Hal ini sama halnya jika kita ingin mengirim kartu pos ke orang lain. Pada kartu pos dicantumkan pesan dan alamat tujuannya. Kemudian kita menyampaikan kartu pos tersebut ke kantor pos, dan kemudian pihak kantor pos menyampaikan pesan tersebut ke pihak penerima. Process A M M Process B 2 1 kernel M
2. Mekanisme IPC Shared Memory Mekanisme ini melibatkan sistem operasi pada saat mengalokasikan memori ke proses-proses yang akan saling berkomunikasi lewat fasilitas ini. Caranya adalah bagian tertentu dari ruang alamat dua proses tersebut dipetakan ke suatu lokasi memori fisik yang sama sehingga proses-proses tersebut dapat menulis maupun membaca dari lokasi memori ini. Proses A mengirimkan pesan dengan cara menulis pesannya diruang memori bersama. Proses B menerima pesan tersebut dengan membacanya dari ruang memori tersebut. Perhatikan, dari perspektif masing-masing proses, mereka menulis atau membaca ruang alamat mereka sendiri. Pengaksesan ke memori bersama ini umumnya membutuhkan sinkronisasi agar tidak terjadi perebutan akses bersamaan yang dapat menyebabkan ketidak konsistenan data yang diakses. Process A Shared memory Process B kernel
Model Komunikasi Message Passing Komunikasi Langsung Komunikasi Tidak Langsung
Sintaks Pada komunikasi langsung, alamat identitasatau alamat penerima dinyatakan secara eksplisit dalam sintak pengiriman pesan, yaitu : Send(pesan, proses tujuan) Pada komunikasi tak langsung, pengiriman dan penerimaan pesan dilakukan menggunakan suatu perantara yang disebut dengan mailbox ataupun port. Jadi pengirim akan menyampaikan pesan ke mailbox dengan sintak : Send(pesan, alamat mailbox) Setiap proses yang dapat membaca dari mailbox yang digunakan, otomatis dapat menjadi pihak penerima pesan. Penerima mengambil pesan dari mailbox dengan sintak : Receive(pesan, alamat mailbox)
Komunikasi Langsung Send(pesan, P2) bidirectional Ciri-ciri komunikasi langsung : Terdapat sambungan yg dapat bekerja secara otomatis antara proses-proses yang ingin berkomunikasi. Tiap sambungan menghubungkan tepat dua proses, antar setiap pasangan proses terdapat tepat satu jalur sambungan. Sambungan dapat bersifat satu arah (unidirectional), namun biasanya bersifat dua arah(bidirectional). Send(pesan, P2) P1 P2 bidirectional
Komunikasi Tidak Langsung Ciri-ciri komunikasi tidak langsung : Komunikasi antar dua proses dapat terjadi jika dua-duanya memiliki akses ke suatu mailbox yg sama. Tiap mailbox dapat menghubungkan lebih dari dua proses, dan dimungkinkan terdapat lebih dari satu sambungan u/ setiap pasangan proses yg hendak berkomunikasi. Setiap sambungan akan menggunakan suatu mailbox Sambungan dapat bersifat satu arah, tetapi umumnya bersifat dua arah P2 P1 M1 (Mailbox 1) Send(pesan, M1) Receive(pesan, M1)
Komunikasi Tidak Langsung P2 P1 M1 (Mailbox 1) M2 (Mailbox 2) P3
Komunikasi tak langsung antara proses-proses dengan menggunakan lebih dari satu mailbox. Dari gambar terlihat ada tiga sambungan(link) komunikasi tak langsung yg mungkin dilakukan. Pertama adalah antara P1 dan P3 lewat M2 dan komunikasinya bersifat bidirectional. Kedua, antara P1 dan P3 lewat M1 dan komunikasinya bersifat unidirectional, yaitu dari P1 ke P3 saja dan tidak sebaliknya. Ketiga, antara P1 dan P2 lewat M1 dan komunikasinya bersifat unidirectional yaitu dari P1 ke P2 saja. Perhatikan, sekalipun P2 dan P3 punya akses ke M1, namun keduanya tidak dapat menyelenggarakan komunikasi. Ini dikarenakan keduanya hanya memiliki akses baca dari M1.
Kepemilikan mailbox dapat bersifat pribadi atau public Kepemilikan mailbox dapat bersifat pribadi atau public. Jika kepemilikan mailbox bersifat pribadi, maka hanya pemilik tunggal mailbox tersebut yang berhak membaca pesan yang masuk ke mailbox tersebut.
Race Condition Yaitu kondisi saat lebih dari satu proses berusaha mengakses suatu sumber daya pada saat yang bersamaan Ilustrasi R P1 P2 TIMELINE
Ilustrasi Race Condition Dua proses terpisah sedang melakukan transfer uang sebesar 10 (proses P1), dan sebesar 20 (proses P2) ke suatu nomor rekening yang sama yang memiliki saldo awal sebesar 100. Jika kedua aktivitas transfer uang tersebut berjalan secara benar, maka saldo akhir rekening mestinya 130. Namun terlihat dari contoh, bahwa jika proses transfer P1 dan P2, yang berjalan terpisah namun konkuren tidak dikoordinasi dengan baik maka mungkin terjadi race condition dan menghasilkan saldo akhir yg salah, yaitu 110 atau 120. Permasalahannya terletak pada kode yang melakukan akses ke sumber daya yg digunakan bersama oleh proses P1 dan P2, yaitu variabel balance atau saldo rekening. Kedua proses P1 dan P2 membaca nilai balance dan mengubah, atau lebih tepatnya menjumlahkan dengan suatu nilai sesuai dengan uang yang ditransfer oleh masing-masing proses.
Jika Proses benar seperti ini : 100 130 P2=20
Sinkronisasi Proses Kondisi race condition dapat diatasi dengan menerapkan bentuk sinkronisasi pada bagian kode yg melakukan pengaksesan atau pengubahan ke sumber daya yg digunakan bersama. Sinkronisasi berkaitan dengan pengaturan urutan eksekusi proses-proses yang terkait
Ilustrasi terjadi race condition Terdapat dua aktivitas yang berjalan secara asinkron yaitu X dan Y. Yang merupakan critical section pada masing-masing aktivitasnya yaitu aktivitas 2 dari proses Y dan aktivitas 3 dari proses X. karena kedua aktifitas ini memanipulasi sumber daya B yang sama maka race conditon terjadi. X Y 1 3 2 B
Ilustrasi Sinkronisasi Untuk mengatasi race condition maka urutan eksekusi aktivitas 2 dari Y dan aktivitas 3 dari X harus dibuat menjadi sinkron, yaitu salah satu aktivitas harus selesai dahulu baru aktivitas lainnya dimulai. Mekanisme sinkronisasi seperti ini yang memastikan hanya satu proses yang berhak memanipulasi suatu sumber daya pada suatu waktu disebut juga dengan mutual exclusive (mutex) X Y 1 2 B 3
Implementasi Sinkronisasi Mekanisme sinkronisasi memastikan operasi terhadap sumber daya tersebut secara mutual exclusive, yaitu setiap saat hanya diijinkan satu proses yg dapat mengakses dan memanipulasi sumber daya tersebut. Namun jika suatu sumber daya mengizinkan untuk diakses secara konkuren oleh N proses maka sinkronisasi bertugas memastikan pada suatu waktu, maksimal hanya sejumlah N proses yang dapat mengakses sumber daya tersebut.
Persyaratan Implementasi sinkronisasi proses Mutual Exclusion : ketika suatu proses memasuki eksekusi kode critical section-nya maka tidak boleh ada proses lain yang juga memasuki critical section yang terkait. Sifat ini terutama benar untuk sumber daya yang pengaksesannya bersifat mutual exclusive. Sifat ini dapat didefinisikan ulang untuk sumber daya yang dapat diakses konkuren oleh sejumlah N proses. Progress : yaitu ketika ada proses yang hendak memasuki critical sectionnya dan pada saat itu tidak ada proses lain yang sedang melakukan critical section, permintaan untuk masuk ke critical sectionnya haruslah dipenuhi. Bounded Waiting : Haruslah ada batasan tentang berapa kali proses lain boleh menyalib suatu proses yang telah lebih dahulu meminta ijin untuk memasuki critical sectionnya.