Time And Coordinaton
A. Logical Clock & SynchronisationLogical Clock
Logical clock adalah software counter yang bertambah secara monoton dimana nilainya tidak perlu menanggung hubungan tertentu ke suatu physical clock.
Hampir seluruh komputer memiliki sebuah circuit untuk menunjukkan waktu. Pada kenyataannya circuit tersebut bukanlah penunjuk waktu (jam) yang sebenarnya. Kata yang tepat untuk mendeskripsikan circuit tersebut adalah timer. Timer pada suatu komputer pada umumnya merupakan suatu crystal quartz yang termekanisasi. Jika dihadapkan pada suatu tekanan, kristal tersebut akan berosilasi pada frekuensi tertentu bergantung pada jenis kristal dan bagaimana kristal tersebut dipotong serta seberapa besar tekanan yang diberikan. Terdapat 2 register yang berasosiasi dengan kristal tersebut. Sebuah counter dan holding register. Setiap interript akan diregenerasi dan counter akan kembali terisi oleh nilai yang terdapat pada holding register. Dengan begini sangat memungkinkan untuk memrogram sebuah timer untuk meregenerasi 60 interrupt tiap detiknya atau sesuai dengan frekuensi yang diinginkan. Setiap interrupt disebut dengan satu clock tick.
Synchronisation
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Secara garis besar mungkin sinkronisasi adalah menyamakan sesuatu secara bersamaan. Sinkronisasi adalah suatu proses pengendalian akses dari sumber daya terbagi pakai (shared resource) oleh banyak thread sedemikian sehingga hanya satu thread yang dapat mengakses sumber daya tertentu pada satu waktu.
Sinkronisasi adalah satu kunci kerja dari komunikasi data. Transmiter mengirimkan pesan 1 bit pada satu saat melalui medium ke receiver. Receiver harus menandai awal dan akhir blok dari bit, juga harus diketahui durasi untuk masing-masing bit sehingga dapat sample lajur dari timing untuk membaca masing-masing bit (merupakan tugas dari timming).
Contoh : jika ada perbedaan misalkan 1 % (clock receiver 1% lebih lambat atau lebih cepat daripada clock transmitter), maka pada pensamplingan pertama akan meleset dari tengah bit dan setelah jumlah waktu tertentu, akan mengalami error.
Sinkronisasi di bagi menjadi 2, yaitu : 1. Asynchronous
Untuk mencegah problem timming dengan tidak mengirim aliran bit panjang yang tidak putus putusnya. Bit-bit dikirim per-karakter pada setiap waktu yang mana masing-masing karakter mempunyai panjang 5-8 bit. Timing atau synchronisasi harus dipertahankan antara tiap karakter; receiver mempunyai kesempatan untuk men-synchron-kan awal dari tiap karakter baru.
Gambar 1
Keterangan
1. Idle (biasanya =‟1‟) jika tidak ada karakter yang ditransmisikan dan start bit = “0”, sedangkan jumlah karakter yang ditransmisikan antara 5-8 bit.
2. Bit paritas digunakan untuk mendeteksi error, diatur oleh pengirim agar jumlah total “1‟ termasuk bit paritas adalah genap, dan stop bit = “1‟, yang panjangnya 1 ; 1,5 ; 2 kali durasi bit pada umumnya
3. Komunikasi asinkron adalah sederhana dan murah, tetapi memerlukan overhead dari 2 ke 3 bit per karakter, prosentasi overhead dapat dikurangi dengan mengirimkan blok-blok bit besar antara bit start dan bit stop
2. Synchronous / timing
Lebih efisien, karena blok-blok karakter / bit-bit ditransmisikan tanpa kode start dan stop, tetapi tiap blok blok dimulai dengan suatu pola preamble bit dan diakhiri dengan pola postamble bit. Pola-pola ini adalah kontrol informasi.Waktu kedatangan dan keberangkatan untuk masing-masing bit dapat diramalkan. Frame adalah data plus kontrol informasi. Format framenya tergantung dari metode transmisi, yaitu:
1. Transmisi orientasi karakter
• Blok-blok data dikerjakan sebagai barisan karakter (biasanya 8 bit karakter), frame dimulai dengan 1 atau lebih karakter sinkronisasi. Karakter sinkronisasi biasanya disebut dengan “SYN” yang merupakan bit pattern unik sinyal yang diterima penerima permulaan dari blok.
• Penerima kemudian merubah blok-blok data yang datang oleh karakter SYN dan menerima data sampai karakter postamble (informasi yang terletak pada bagian belakang blok data yang dikirimkan) terlihat dan begitu seterusnya
2. Transmisi bit.
Blok-blok data dikerjakan sebagai barisan bit-bit, tidak ada data maupun informasi kontrol diperlukan untuk menginter-prestasikan dalam satuan karakter 8 bit
Perbandingan asinkron dan sinkron
• Untuk blok-blok data yang cukup besar, transmisi sinkronisasi jauh lebih efisien daripada asinkron. Transmisi asinkron memerlukan overhead 20 % atau lebih.
• Bila menggunakan transmisi sinkron biasanya lebih kecil dari 1000 bit, yang mengandung 48 bit kontrol informasi (termasuk flag), maka untuk pesan 1000 bit, overheadnya adalah 48 / 1048 X 100% = 4.6%
Urutan pengerjaan sinkronisasi yaitu :
• Sinkronisasi bit: Ditandai awal & akhir untuk masing-masing bit
• Sinkronisasi karakter / kata: Ditandai awal dan akhir untuk masing-masing karakter / satuan kecil lainnya dari data
• Sinkronisasi blok / pesan :Ditandai awal dan akhir dari satuan besar data. Dan untuk pesan yang besar, dibagi-bagi menjadi beberapa blok kemudian baru dikirimkan pengurutan blok-blok yang telah dibagi tersebut adalah tugas dari timming. Sedangkan pengaturan level sinyal adalah tugas dari sintax dan untuk melihat arti dari pesan adalah tugas dari semantik.
B. Koordinasi Terdistribusi
Dalam sistem terdistribusi berbasis koordinasi, fokusnya adalah pada bagaimana koordinasi antara proses berlangsung. Jika ada lebih dari satu proses yang siap running, maka Sistem Operasi akan menentukan salah satu proses untuk running lebih dulu.
Aktivitas Koordinasi Terdistribusi : 1. Pengurutan Event
• Memori & clock tidak tunggal
• Tidak mungkin menyatakan urutan dua kejadian
• Hanya dapat ditentukan partial ordering (pengurutan sebagian) relasi Happened-Before (Hukum sebab-akibat : suatu pesan dapat diterima setelah pesan tersebut dikirim. Jika A dan B adalah event pada proses yg sama, dan A dieksekusi sebelum B, maka A → B)
2. Mutual Exclusion
a. Pendekatan Tersentralisasi (Centralized)
• Menggunakan pesan request-reply-release untuk masuk ke CS • (+) : menjamin mutex, dpt menjamin fairness (no starvation) • (--) : jika koordinator gagal → perlu dipilih kembali
b. Pendekatan Terdistribusi Penuh (Fully Distributed)
• Untuk masuk ke CS, proses mengirimkan pesan request (Pi, TS) ke semua proses • Pengiriman reply oleh Pi ke Pk :
– Jika Pi sedang berada di CS, reply ke Pk ditunda
– Jika Pi tidak akan masuk ke CS, reply langsung dikirim ke Pk
– Jika Pi akan masuk ke CS dan TS(Pi) < TS(Pk) maka reply ke Pk ditunda • (+) : menjamin mutex, bebas deadlock dan starvation
• (--) : jumlah pesan minimum 2(n-1), proses harus tahu identitas semua proses lain, tidak berfungsi jika ada proses yang gagal, mengganggu proses lain yang tidak akan masuk ke CS
c. Pendekatan Token Passing
• Menggunakan satu token yang beredar diantara proses
• Hanya proses yg memiliki token saat itu yg dapat masuk ke CS • Syarat: adanya lingkaran lojik yang menghubungkan semua proses • (+) : menjamin mutex, bebas starvation
• (--) : jika token gagal → perlu digenerate kembali, jika proses gagal → perlu dibentuk ring lojik baru. 3. Atomisitas Tiap situs memiliki koordinator transaksi yg berfungsi menjamin atomisitas
eksekusi transaksi, dengan cara: • memulai eksekusi transaksi
• memecah menjadi beberapa sub-transaksi dan mendistribusikannya pada situs-situs yg cocok utk dieksekusi
• mengkoordinasikan terminasi transaksi (commit, atau abort) • Tiap situs menyimpan log untuk tujuan recovery
4. Concurrency Control Manajer transaksi berfungsi mengelola eksekusi transaksi yang mengakses data
• Berpartisipasi dalam skema kontrol-konkurensi untuk mengkoordinasi eksekusi transaksi 5. Penanganan Deadlock
Deadlock Prevention
• Pencegahan : Faktor-faktor penyebab deadlock yang harus dicegah untuk terjadi 4 faktor yang harus dipenuhi untuk terjadi deadlock :
- Mutual Exclusion : pemakaian resources. - Hold and Wait : cara menggunakan resources. - No preemption resource : otoritas/hak.
- Circular wait: kondisi saling menunggu.
• Jika salah satu bisa dicegah maka deadlock pasti tidak terjadi Deadlock Detection
Mencegah dan menghidari dari deadlock sulit dilakukan : • Kurang efisien dan utilitas sistim
• Sulit diterapkan: tidak praktis, boros resources • Mengizinkan sistim untuk masuk ke “state deadlock” • Gunakan algoritma deteksi (jika terjadi deadlock) • Skema recovery untuk mengembalikan ke “safe state” 6. Algoritma Pemilihan
Algoritma Bully Adalah (Gracia-Moliana 1982) algoritma yang mengijinkan proses mengalami crash pada saat terjadi pemilihan (election), meskipun pengiriman pesan antar proses adalah reliable.
Ada tiga tipe pada algoritma ini, yaitu :
1. election message : digunakan untuk pemberitahuan akan adanya pemilihan 2. answer message : merupakan jawaban dari election message
3. coordinator message : digunakan untuk memberitahukan identitas dari proses pemilihan
Sebuah proses dimulai dengan pemilihan ketika telah diperintahkan, melewati timeout, saat coordinator gagal. Ketika sebuah proses menerima pesan coordinator proses tersebut akan menset variabelnya menjadi elected. Jika sebuah proses menerima proses election
proses tersebut akan mengirim jawaban dan akan memulai proses terpilih tersebut, kecuali telah mulai sebelumnya.
Algoritma Ring
Tujuan dari algoritma ini adalah untuk memilih sebuah proses tunggal yang disebut koordinator, yang merupakan proses dengan identifier terbesar. Awalnya, setiap proses ditandai sebagai non-peserta dalam pemilihan. Setiap proses bisa mulai pemilihan. Hal hasil dengan menandai dirinya sebagai salah satu peserta, menempatkan para identifier dalam pemilihan pesan dan mengirimkannya kepada tetangga searah jarum jam. Ketika sebuah proses menerima pesan pemilihan, itu membandingkan pengenal dalam pesan dengan sendiri. Jika identifier yang tiba lebih besar, maka meneruskan pesan 10 tetangganya. Jika identifier yang tiba lebih kecil dan penerima bukan merupakan peserta maka pengganti pengenal sendiri dalam pesan dan ke depan itu, tetapi tidak meneruskan pesan jika sudah menjadi peserta. Pada pemilihan penerusan pesan dalam beberapa kasus, proses menandai dirinya sebagai peserta.
C. Model sinkronisasi & Asinkronisasi
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Secara garis besar mungkin sinkronisasi adalah menyamakan sesuatu secara bersamaan. Sinkronisasi adalah suatu proses pengendalian akses dari sumber daya terbagi pakai (shared resource) oleh banyak thread sedemikian sehingga hanya satu thread yang dapat mengakses sumber daya tertentu pada satu waktu. Sistem Asynchronous - seperti object-oriented software - biasanya dibuat dari modular 'benda keras', masing-masing dengan komunikasi yang terdefinisi dengan baik antarmuka. Ini modul dapat beroperasi pada kecepatan variabel, apakah karena pengolahan data-dependent, skala tegangan dinamis , atau variasi proses.
Modul kemudian dapat digabungkan bersama-sama untuk membentuk suatu sistem kerja yang benar, tanpa mengacu pada global sinyal clock . Biasanya, daya rendah diperoleh karena komponen diaktifkan hanya pada permintaan. Selain itu, beberapa gaya asynchronous telah terbukti untuk mengakomodasi antarmuka clock, dan dengan demikian mendukung desain campuran-waktu. Oleh karena itu, sistem asynchronous cocok dengan baik kebutuhan yang benar-by-konstruksi metodologi dalam perakitan sistem heterogen dan scalable skala besar.