You are on page 1of 11

LOGICAL CLOCK AND SYNCHRONIZATION

KELOMPOK 5 : TIME AND COORDINATION

NPM NAMA
10107005 ABDUL AZIZ

10107146 ALIF ANANDITO

12107054 ANDRI IRAWAN ISA PUTRA

10107203 ANGGI PURNAMA

10107765 HABIBI SEGAP AL HAMID

Universitas gunadarma
Logical clock and synchronization
Waktu adalah hal yang penting dalam sistem terdistribusi karena beberapa hal. Pertama,
waktu adalah satuan akurasi. Untuk mengetahui kapan suatu peristiwa terjadi, dibutuhkan
sinkronisasi clock pada sistem dan di luar sistem. Sebagai contoh, transaksi e-commerce terjadi
di komputer pengguna dan komputer bank. Kejadian tersebut haruslah dicatat waktunya secara
akurat untuk keperluan audit. Kedua, algoritma mengenai sinkronisasi clock memiliki beberapa
masalah, antara lain mempertahankan konsistensi data yang didistribusikan, otentikasi request
yang dikirim ke server, dan menghapus proses yang terduplikasi.

Jika dianalogikan, seperti teori relativitas milik Einstein. Suatu kejadian yang diamati
oleh pengamat yang satu bisa saja berbeda dengan pengamat lainnya dalam hal interval (jeda)
waktu. Dalam sistem terdistribusi, masalahnya adalah mencatat waktu terjadinya suatu kejadian
pada node yang berbeda-beda secara akurat sehingga dapat diketahui mana yang hanya terjadi
dan mana yang terjadi secara serempak.

1. Clock, Kejadian, dan Process State

1.1 Clock (Jam)


Setiap komputer pasti memiliki clock fisik. Clock adalah alat elektronik yang menghitung
osilasi yang terjadi pada kristal pada frekuensi tertentu, dan menyimpannya dalam counter
register. Sistem operasi membaca clock fisik tersebut dan menerjemahkannya ke software clock.
Software clock tidak selalu akurat sehingga pewaktuan hardware dan software memiliki
perbedaan walaupun sangat kecil. Namun, software clock tetap menjadi acuan pencatatan waktu
setiap kejadian proses. Kejadian yang terjadi setelah suatu kejadian akan tercatat di waktu yang
berbeda apabila resolusi clock (periode update software clock) lebih kecil daripada interval
waktu antar kejadian.
1.2 Clock Skew And Clock Drift

Clock milik tiap-tiap komputer tidak selalu sama. Perbedaan antara pembacaan dua clock
komputer berbeda disebut skew. Sedangkan perbedaan clock rate disebut clock drift. Pada clock
fisik, osilasi, frekuensi, dan temperatur mempengaruhi perbedaan clock tiap komputer.
Perbedaannya mungkin sangat kecil, tetapi akumulasi perbedaan tersebut dapat mencapai tahap
yang bisa diamati dengan mata telanjang walaupun sudah disamakan nilainya. Clock drift rate
adalah perubahan perbedaan pembacaan antara clock dan perfect reference clock (clock yang
dijadikan acuan).

1.3 Waktu Universal Terkoordinasi (Coordinated Universal Time)

Clock komputer dapat disinkronkan dengan clock luar yang akurasinya tinggi. Clock
yang akurasinya paling tinggi menggunakan osilator atom. Keluaran clock ini digunakan sebagai
standar waktu international. Coordinated Universal Time (UTC) adalah standar internasional
untuk penjagaan waktu (timekeeping). Sinyal UTC disiarkan dari stasiun radio dan satelit ke
seluruh dunia. Komputer dengan penerima sinyal di seluruh dunia dapat mensinkronkan
clocknya dengan sinyal ini.

2. Sinkronasi Clock Fisik


Untuk mengetahui kapan sebuah peristiwa terjadi secara akurat pada proses system
terdistribusi, diperlukan sinkronisasi dengan sumber waktu dari luar, yang disebut sinkronisasi
eksternal (external synchronization). Dan jika satu clock tersinkronisasi dengan clock yang lain
dengan derajat akurasi yang diketahui, maka kita bisa mengukur interval terjadinya dua peristiwa
pada komputer yang berbeda, walaupun tidak tersinkronisasi ke sumber waktu dari luar. Hal ini
disebut sinkronisasi internal (internal synchronization).

Beberapa gagasan pengkoreksian (correctness) untuk clock sudah pernah diajukan.


Hardware clock H selalu dikoreksi apabila drift-nya sudah mencapai angka tertentu (ρ > 0). Jadi,
galat (error) perhitungan interval antara waktu sebenarnya t dan t’ (t > t’) adalah:

(1 - ρ)(t' - t) ≤ H(t') - H(t) ≤ (1 + ρ)(t' -t)

Clock yang tidak menerima pengkoreksian apapun dinyatakan faulty. Clock dinyatakan crash
failure ketika berhenti berdetik sama sekali. Kegagalan clock lainnya adalah arbitrary failure.
Contoh arbitrary failure adalah ‘Y2K bug’ yang terjadi pada pergantian tahun 1999 ke 2000.
Setelah 31 Desember 1999 dilanjutkan ke 1 Januari 1900. Catatan: clock tidak harus akurat
untuk menjadi benar.

2.1 Sinkronisasi pada Sistem Sinkron

Pada sistem sinkron, sebuah proses mengirim waktu t dari clock lokalnya ke proses
lainnya dalam pesan m. Proses seharusnya menerima dan mencocokkannya dengan clock
lokalnya sendiri dengan t + Ttrans, di mana Ttrans adalah waktu transmisi. Sayangnya Ttrans
bervariasi dan sulit diketahui. Namun, waktu minimal transmisi min tetap dapat diperkirakan
apabila jaringan lancar dan tidak ada proses lain yang berjalan bersamaan. Sistem terdistribusi
yang banyak digunakan adalah asinkron. Delay pesan tidak terbatas atau tergantung masing-
masing clock komputer. Pada sistem asinkron, Ttrans = min + x, di mana x ≥ 0. Nilai x tidak
diketahui, tetapi dapat diukur.

2.2 Metode Cristian untuk Sinkronisasi Clock


Cristian menyarankan untuk menggunakan server yang menerima sinyal UTC untuk
mensiknronisasikan komputer secara eksternal. Sebuah proses p meminta waktu dalam pesan m
kepada server S, kemudian menerima nilai waktu t dalam pesan mt. Proses p merekam total
waktu yang dibutuhkan Tround untuk mengirim permintaan dan menerima balasan. Dengan
begini, waktu yang akurat dapat diperhitungkan. Permasalahannya adalah server yang
menyimpan waktu hanya satu, yang apabila gagal maka untuk sementara waktu sinkronisasi
tidak dapat dilakukan. Cristian menyarankan untuk menggunakan beberapa server yang sudah
tersinkronasi. Jadi, klien meminta ke semua server dan hanya menggunakan balasan yang
pertama kali diterima.

2.3 Algoritma Berkeley

Gusella dan Zatti mengembangkan algoritma untuk sinkronisasi internal. Mereka


mengembangkan algoritma ini pada komputer berbasis Barkeley UNIX. Pada lagoritma ini,
sebuah komputer ditunjuk sebagai coordinator yang disebut master. Komputer ini kemudian
memilih komputer-komputer untuk dimintai sinkronisasi, yang disebut slave, dengan master
secara periodik. Slave-slave membalas dengan nilai clock miliknya. Master menghitung
clocknya sendiri dengan memperhitungkan waktu perjalanan data dan rata-rata dari nilai clock
yang didapat. Algoritma ini tidak akan membaca clock yang faulty. Clock yang hanya berbeda
sedikit, dengan jumlah tertentu, dengan clock lainnya yang dipilih untuk dirata-rata. Hal ini
disebut fault tolerant average. Sehingga, ketika ada satu clock yang gagal atau rusak, tidak
mempengaruhi clock Master.

2.4 Protokol Waktu Jaringan (Network Time Protocol)


Metode Cristian dan algoritma Berkeley pada dasarnya digunakan untuk komunikasi
intranet. Protokol Waktu Jaringan (NTP) mendefinisikan arsitektur untuk pelayanan waktu dan
protocol untuk distribusi informasi waktu lewat internet. Tujuan dan fitur NTP, antara lain:

• Untuk menyediakan layanan yang memungkinkan klien di Internet yang akan


disinkronkan akurat UTC:

• Untuk menyediakan layanan yang bisa bertahan di jaringan mengalami loss karena jarak.

• Untuk mengaktifkan klien untuk mensinkronisasi cukup sering untuk


mengimbangi tingkat drift ditemukan di kebanyakan komputer: NTP

• Untuk menyediakan perlindungan terhadap interferensi dari layanan waktu, baik galat
maupun ketidaksengajaan.

Layanan NTP tersebar pada banyak server di internet. Server utama tersambung langsung
ke sumber waktu, seperti penerima sinyal radio UTC. Server sekunder disinkronisasi dengan
server primer. Server-servernya tersambung dalam hierarkikal logika yang disebut
synchronization subnet seperti Gambar 3. Semakin keatas levelnya akan semakin akurat clock-
nya. Galat terjadi setiap melewati satu level. Server-server NTP bersinkronasi satu sama lain
dengan tiga cara, antara lain multicast, procedure-call, dan symmetric.
1. Multicast ditujukan untuk LAN berkecepatan tinggi. Satu atau lebih server secara periodik
menyebar waktu clock ke server di komputer lain yang tersambung di LAN. Mode ini akurasinya
rendah tetapi cocok untuk berbagai kepentingan.

2. Procedure-call hampir sama dengan algoritma Cristian. Server menerima request dari
komputer lain dan membalasnya dengan pembacaan clock saat pengiriman. Mode ini cocok
ketika keakurasian tinggi dibutuhkan atau ketika multicast tidak dappat dilakukan.

3. Mode symmetric ditujukan untuk server yang mensuplai waktu dalam LAN atau pada level
tertinggi dari sebuah synchronization subnet.

Pada mode procedure-call dan symmetric mode, memroses pertukaran bagian-bagian


pesan. Tiap pesan memiliki catatan waktu dari peristiwa yang baru saja terjadi, yaitu waktu local
ketika pesan tersebut dikirimkan. Seperti pada Gambar 4, pesan m menyimpan catatan waktu
setiap akan ditransmisikan, yaitu Ti-3 dan Ti-1, dan ketika diterima, yaitu Ti-2 dan Ti.
Kemudian NTP menghitung jeda waktu antara dua clock komputer.

3. Logical Time and Logical Clock


Dari sudut pandang dari setiap single proses, event-event diurutkan berdasakan waktu
seperti pada local clock. Tetapi, seperti yang dikatakan oleh Lamport [1978], kita tidak dapat
melakukan singkronisasi clock secara sempurna pada sebuah sistem terdistribusi. Kita tidak
dapat secara umum menggunakan physical time untuk menentukan urutan dari suatu event yang
terjadi. Secara umum, kita dapat menggunakan sebuah skema yang mirip dengan physical, tapi
pada sistem terdistribusi digunakan untuk mengurutkan event-event yang terjadi pada proses
yang berbeda. Pengurutan ini berdasarkan pada dua hal yang simple dan intuitif :

• Jika dua event terjadi bersamaam pada satu process yang sama pi (i = 1,2, … ,N),
kemudian event-event tersebut terjadi sesuai dengan urutan pi yang kita sebutkan diatas.

• Kapan saja sebuah message dikirim diantara proses-proses, event dari pengiriman
message terjadi sebelum event dari penerimaan message

Lamport menyebutkan partial ordering diperoleh dengan men-generalalisasikan kedua hubungan


ini, relasi happened-before. Istilah ini biasa juga disebut causal ordering atau potential causal
ordering. Kita dapat mendefinisikan relasi happened-before, dinotasikan dengan �, seperti
berikut :

HB1 : Jika ᴲ process pi : e e’, maka e


i e’.

HB2 : untuk setiap message m, send(m) receive(m)

- Dimana send(m) adalah event dari pengiriman message dan receive(m) adalah event dari
penerimaan message

HB3 : Jika e, e’ dan e” adalah event dimana e e’ dan e’ e” maka e e”

Relasi diilustrasikan pada gambar 5. Pada ketiga proses tersebut, dapat dikombinasikan

menjadi a f. Antar a dan e tidak ada relasi, maka ditulis a║ e


3.1 Logical Clocks
Lamport menemukan sebuah mekanisme yang simple untuk mengurutkan happened-
before secara numeris. Mekanisme ini disebut logical clock. Lamport logical clock adalah
software counter yang bertambah secara monoton dimana nilainya tidak perlu menanggung
hubungan tertentu ke suatu physical clock. Setiap proses pi tetap berada pada logical clock
masing-masing. Timestamp dari suatu event e pada pi disini dinotasikan dengan Li(e) dan L(e).
Untuk notasi dalam suatu prose adalah sebagai berikut :

LC 1 : Li bertambah sebelum setiap event muncul pada proses pi Li := Li + 1

LC 2 : (a) Ketika sebuah proses pi mengirim sebuah message m, nilai L juga ditempelkan pada
nilai m , t = Li

(b) pada saat menerima pesan (m,t), sebuah proses pj menghitung L j := max(Lj ,t) dan lalu
mengaplikasikan LC1 sebelum melakukan timestamp untuk event receive(m).
3.2 Totally ordered logical clocks

Beberapa pasang event yang berbeda, yang dihasilkan oleh proses yang berbeda, telah
diidentifikasi dengan Lamport timestamp secara numeris. Namun, kita dapat menciptakan sebuah
urutan total peristiwa yaitu, satu untuk yang semua pasangan dari event yang berbeda terjadi.
Jika e adalah sebuah peristiwa yang terjadi di pi dengan local timestamp Ti dan e' adalah sebuah
event yang terjadi di pj dengan local timestamp Tj, kita mendefinisikan global logic timestamp
untuk event ini menjadi (Ti, i) dan (Tj, j). Dan kita define (Ti, i) <(Tj, j) jika hanya jika salah Ti
<Tj atau Ti = Tj dan i <j terpenuhi. Urutan ini tidak memiliki arti fisik umum (karena
pengidentifikasi proses yang tidak beraturan), tetapi kadang-kadang berguna. Lamport
menggunakannya, misalnya, untuk mengurutkan proses masuknya ke bagian kritis.

3.3 Vector clocks

Mattern [1989] dan Fidge [1991] mengembangkan vector clocks untuk mengatasi
kekurangan pada Lamport clocks : fakta bahwa dari L(e) < L(e’) kita tidak dapat menyimpulkan
bahwa e e’ . Vektor clock untuk sebuah sistem dari N proses adalah sebuah array dari N
integer. Setiap proses berada pada vektor clock Vi masing-masing. Aturan adalah sebagai berikut

VC1 : Inisialisasi Vi [j] = 0 for i,j = 1,2,… , N

VC2 : sesaat sebelum pi men-timestamp sebuah event, diset Vi[i] := Vi[i] + 1

VC3 : pi memasukan nilai t = Vi pada setiap message yang diirim

VC4 : Ketika pi menarima sebuah timestamp t pada sebuah sebuah message, pi di set Vi[j] :=
max(Vi[j], t[j]) , for j = 1,2,…,N.
DAFTAR PUSTAKA

• Herusetyo, Arif , Time and Global State , UGM Publisher, Yogyakarta,


2006.

• L. Lamport , Time, Clocks And The Ordering Of Events In A Distributed


System, Computer Science Laboratory SRI International , Massachusett,
1990.

• Coulouris , George , Distributed System: Concept and Design, Addison


Press, Wesley 2001.

You might also like