Sinkronisasi Proses


🎯 Capaian Pembelajaran

Setelah mempelajari materi ini, mahasiswa diharapkan mampu:

  • Memahami konsep sinkronisasi proses
  • Mengidentifikasi race condition dan critical section
  • Menjelaskan mekanisme sinkronisasi (mutex, semaphore, monitor)
  • Menganalisis masalah klasik sinkronisasi
  • Menerapkan konsep sinkronisasi dalam pemrograman

1. 🧠 Konsep Dasar Sinkronisasi Proses

1.1 Pengertian

Sinkronisasi proses adalah mekanisme untuk mengatur eksekusi proses/thread agar tidak terjadi konflik saat mengakses sumber daya bersama (shared resource).

πŸ“Œ Narasi:
Dalam sistem multitasking, banyak proses berjalan bersamaan. Jika dua proses mengakses data yang sama tanpa aturan, hasilnya bisa tidak konsisten.


πŸ–ΌοΈ Ilustrasi Shared Resource

https://images.openai.com/static-rsc-4/Wh7hTtXV-0A7PuBOqyJfFhybo0OJcRaSGDB1-BIqW-d64DGktD9xEV7NSTK7BV3WVNYl-ZNn0bA2Jz-kIGPr3nPmCQI2JzvqPANU0FLZhEG2NFS2_yja6f4cK14iYHxzWkAgsoxfLtni4LGTwgcoVALqgJv_bBCwl07requ2FU85olAy-aFmorD-0XzgfHDT?purpose=fullsize
https://images.openai.com/static-rsc-4/rIExUFrnxKI9hJtwOuN790Hoh6IIwVieAsO7UP7te6bryGSUWCvf496zzPUXZHtK-qF-FARf-fwGGB9D8xCgtAj1UdkCvd1AJCuQAb81pz6A_RdnFmpnulS3xffto2UD-o2TZEzjnOMBjkflzWhLMJrcDSwa_VerZcrE17Q3Jy-kGahBe4G-QAeyzu5c3HQI?purpose=fullsize
https://images.openai.com/static-rsc-4/euJtEmxRazvAymiqyi6jBU68MpOJRxsZZO-mouc6yQyXspxHXVJ3NZ6NX44gKrrWtqLTIn_C1RNAcUhZbseitShF9ffa_NvINUzBbNqPACf_uQfGN_E2ahEeLUmzG624X2g3qLAgBBV9zRm1IsfsyOeegDDZdhBk3pnltcfoskcFeDXZA_w6haK4hsyErA0M?purpose=fullsize

7

πŸ“Œ Contoh:

  • Dua thread mengubah variabel yang sama
  • Hasil akhir menjadi tidak terduga

2. ⚠️ Race Condition

2.1 Pengertian

Race condition terjadi ketika hasil eksekusi bergantung pada urutan eksekusi proses/thread.


πŸ–ΌοΈ Diagram Race Condition

https://images.openai.com/static-rsc-4/h3vKfzGGonDAed-Bd5mm33x7nAl93YTn9FlKS3WA57vDCMqM8STpv8He0flryDEF_QHGTDCmudrI2TQgtWP3Xuiba533Kzkshu9htLOI41xXEgrluHMs1wfw67DwhUDKYA1uVI9ZdeHEqKPoqj7UPfgv6kR1ZrqwO21qfazVP5D0DcW5QiDgNdlP8NR3nudR?purpose=fullsize
https://images.openai.com/static-rsc-4/rIExUFrnxKI9hJtwOuN790Hoh6IIwVieAsO7UP7te6bryGSUWCvf496zzPUXZHtK-qF-FARf-fwGGB9D8xCgtAj1UdkCvd1AJCuQAb81pz6A_RdnFmpnulS3xffto2UD-o2TZEzjnOMBjkflzWhLMJrcDSwa_VerZcrE17Q3Jy-kGahBe4G-QAeyzu5c3HQI?purpose=fullsize
https://images.openai.com/static-rsc-4/xukKApej_kIALMUGCrF9gtc60nzcjUEoLe1jqUCjIPyWYFu4dLtFbm15pFQgHuJauQ9FToO3LV7uy_1FlCSb7VwtOtMLaOHyGYw4_9LPUTfFBXSffBYRFpoM2s4GYca3G9lNp4leJf7Rnw-eQsHCLHu0d-nP-SPAVvFTTP-HOpFmEy21HINW7zW0fbbPing5?purpose=fullsize

8

🧠 Narasi:

Misal:

x = 5
Thread A: x = x + 1
Thread B: x = x + 1

Hasil seharusnya = 7
Tetapi bisa menjadi = 6 karena eksekusi tidak sinkron


3. πŸ”’ Critical Section Problem

3.1 Pengertian

Critical Section adalah bagian kode yang mengakses resource bersama.


πŸ–ΌοΈ Diagram Critical Section

https://images.openai.com/static-rsc-4/scYNT73pbLVQW8H30NaGRj2Ae_4EX7APabDC7nzRhD3qzFwRlzbb87knANsR-ofdm6IEm7wGHvPrATA1aNZG2xCoLNwfMSW8mZwsKbhTm7aRJDNJ3-gxacuAeBwcxmWIVVnX0tloLLx8PYHl2fXeNhIubaNnblg8G0n0ZgmuBFiPdp-lWNCxiHD50go1dIyY?purpose=fullsize
https://images.openai.com/static-rsc-4/vLv8xE_9Eq9r2dpfF5OKBrQHtG0hdpPAa1bngQrcRXGp3MjaWRThKhClub5nc0NyziNNczGu2s-VRdZZNObdx2SN_WngYaKwz8xnfYmaF3fFmH2EQPT_3__hwJ0JwFWZRhY2JvuEdLc2UlB3DN8g1x2RyJ_W7uv48c6I86wQusKY8D6KeO9d1d81aSsr_-Lu?purpose=fullsize
https://images.openai.com/static-rsc-4/Qa8s29CKJl9Tf4D_wISW_XmHHLyUqvYDR83-Enm3K2wcbKTZhXw1LYF3Idw5Pr15-uoKV9bW8Gk0R2TG3FLYRuaYPLmFFB7Q4pU3iZr93O0lnDJhu2wvAFXeTTsEJM2J1bOhAlu_mz9Q3u1JnvSUEkcr6KS3NUKvGYcDCXzMj_a--wH_CZ1mTKGcBAaAkaTs?purpose=fullsize

7


3.2 Syarat Solusi:

  1. Mutual Exclusion β†’ hanya satu proses
  2. Progress β†’ tidak deadlock
  3. Bounded Waiting β†’ tidak starvation

4. πŸ” Solusi Sinkronisasi


4.1 Mutex (Mutual Exclusion)

🧠 Pengertian:

Lock untuk memastikan hanya satu proses masuk critical section


πŸ–ΌοΈ Mutex Diagram

https://images.openai.com/static-rsc-4/EViofHVLFkh3GOlDcuFhR59zfzO_t-W4yZpaKs8DnR6i7dRHyMiz9cqWLaea4ea1am90Zpxcpk4tU83vBvHe0dpj_LwzQLyTPt-V-lDgqbOt-v61l1f8fF_E6nDYV8bwSjNOX0lAiGSfq1GWtcYN6If5tKPSEeeCMgSnbuKTIAj1uq_X1RxGGLqD5wGA1F_R?purpose=fullsize
https://images.openai.com/static-rsc-4/Wh7hTtXV-0A7PuBOqyJfFhybo0OJcRaSGDB1-BIqW-d64DGktD9xEV7NSTK7BV3WVNYl-ZNn0bA2Jz-kIGPr3nPmCQI2JzvqPANU0FLZhEG2NFS2_yja6f4cK14iYHxzWkAgsoxfLtni4LGTwgcoVALqgJv_bBCwl07requ2FU85olAy-aFmorD-0XzgfHDT?purpose=fullsize
https://images.openai.com/static-rsc-4/0CMPAXlJc69XV7Zd650i8QvC8_axK-Ux-GOmmjx_xGvCE_m3TDAStQ5j7uO3oywr4Nr1LsjOY7xoTH6GxsAxnJU46AjRl8bTtCqN4nN_P2Pi4-6ZK50KXObatGy62H-SMz-JmOuyNhcuv4xFReOEubIXulaodZBpJXLkIKfbru93Fb_buozAqrKiF3gl1y05?purpose=fullsize

7

πŸ“Œ Cara kerja:

  • Lock β†’ masuk
  • Unlock β†’ keluar

βœ… Kelebihan:

  • Sederhana

❌ Kekurangan:

  • Bisa menyebabkan deadlock

4.2 Semaphore

🧠 Pengertian:

Variabel yang mengontrol akses ke resource


πŸ–ΌοΈ Semaphore Diagram

https://images.openai.com/static-rsc-4/6n7cSvYV7PxAOlJ8d9hxxfVVacTvdkKhfgqiD05zCfWMznaCbkKOlAsEmliqIZWvvWAnHswdveKmqYahGEFwWLxj4mSh-h5E3-A_U1jgOf0-C_h5Vh8JK2N9Zrccltjk4du9qag2YdY8hO4jnyc_PGUPBKwwybwcsZiZlCSO_HNxQyiE0pg1w1N2MRDhYl4N?purpose=fullsize
https://images.openai.com/static-rsc-4/vGkLXwGxvudDWU19oUOCoccXEetXadxR6_LM11UZemkRv-9qOmroRyXiqOq9gPGPrHim_y7Rkqm5KQGsqdxb0bLwaqi8ohcATfs3BgCZDZe4YEwdESUf-ci2DDUDNvjFy0eBJjA-I40BMuK3JWluXOP88w22HR5olIQ95Yis2HSGf6mchb4nOhDHYURraS5D?purpose=fullsize
https://images.openai.com/static-rsc-4/uFH0XQX3PNP-0RB20D0wcxsO4Su0djgTd05bVEMxPIkdpn2I7LGvkYP1g4f8AlnhVxUjIZQjjcYd0N7cwo1KImwmGJ6iY5gHgZJ3J-kWyNW0KQZsHHp3zXGm1ljEYJpv_7LEta5GvI385HG7QF303RuCprWhwJ8igKO07_tv6gDN6nXueCiEV-Ivqco_SqBa?purpose=fullsize

7


Jenis:

  • Binary Semaphore (0/1)
  • Counting Semaphore

Operasi:

  • wait()
  • signal()

πŸ“Œ Contoh:

wait(S)
critical section
signal(S)

4.3 Monitor

🧠 Pengertian:

Struktur tingkat tinggi untuk sinkronisasi


πŸ–ΌοΈ Monitor Diagram

https://images.openai.com/static-rsc-4/z8Q-p2odCrhEP1lr7SmdFw4VguJtGno2nHNkjiZPEbjS_1UlmqxJ13l49dbDASs3HlsQJjZ7ByKb9nKZvPvu6pPDskbDf6eTuQ3gsQeIvDYM39v_UrdIcm2eqb7kewWdLMHuKtT-shaS2qE6nxCIJnms8YW6-rREVyz2pfGDyPXOf43X-BqXZAeW-qPT0yMZ?purpose=fullsize
https://images.openai.com/static-rsc-4/Nvu7d0WHkQFD0mvaeuE8iIX3bfdzVf0xQt8LY05HNQ7Vx27VpcD0Dvj0k0oP5_hUoWECWhe9QDApsqurErKAjEtw6ycrmoIecHfGMe3SS8aqmWRtiOzdyP0rtIrWMgKAuMHBs0cRyGawV8SzJ47SX6z6InN1DbserOHBiL8MmHG9_CHrvsnDxaksuIQEgi96?purpose=fullsize
https://images.openai.com/static-rsc-4/AIWqwTL83BsUFtiJUEXVcYIrP8ihjjmlQkDgFSPfo9O2hajv1389BI-ZxgstqHwfpRm3F1Y39ME8OTJqIpNxOwdoCb-RWpAvTshY6mAxlt8NreaQmlGWJYwwFQg6dWmxVik2vqmZWyjXzxbi18ZD9hy8BHkaa0N6DjU3ae-2cHsWkiUiArI-BvitAFhuYtZW?purpose=fullsize

7


Keunggulan:

  • Lebih aman
  • Otomatis mengatur akses

5. πŸ”„ Masalah Klasik Sinkronisasi


5.1 Producer-Consumer Problem

πŸ–ΌοΈ Producer Consumer

https://images.openai.com/static-rsc-4/wb-q-7Ca6VGEXPsIrm3yxPU5EqlUvFSKhfn4NCt0BGOgzQctKkLtQEKxmQ5mJMyMzERQUDdWQbN7GUomBKnk9FfyTvN31OzzqlhNNimWAHaPnWZXeI7yTASt5NxadyrKXqD-WxHLmPc8Znr3eoNLVbdzWPeZPeEhSumu-lH2LLj-uvEx6Kx9EaxP_JniJ8dY?purpose=fullsize
https://images.openai.com/static-rsc-4/7mivORr6N-CBqfTjhmDu58H_y0EvZQU_d90aE5rTdM0FjGLD09RJbZFUSHBNy569u4pdx7OhJmxXvdjn08myshK5uBgX3y2qiiTUxULfTjuhXChLN-YEOXhHtVnlTNuOk4dJsHN0DoaxC0WuduS93eXJ3iIG21GMDhXa5-84bNFyrn201aVcj8q0XWYzTZ-5?purpose=fullsize
https://images.openai.com/static-rsc-4/8Hj9MWNo4X7I9YgeD-_uKkKPdcz2DRqMiPcO8l04F_ZPGdnN9NExBDOFa7r3N1qziX-KQT747bFARmLO-YGRuOXlVVVOMwO7G4G6_xxIDIk0w9JYxsCbOMgSLx58XKVgSV3SzAGzs3VJMiiMkTvU5tSXufXspiNBmvTiULgTwFYQNuCs_SItszzPkzZvtTnW?purpose=fullsize

7

🧠 Narasi:

  • Producer menghasilkan data
  • Consumer mengkonsumsi data
  • Buffer harus diatur

5.2 Dining Philosophers Problem

πŸ–ΌοΈ Dining Philosophers

https://images.openai.com/static-rsc-4/-yPuy3dobCSHKJfhYYj9zpDeCGutCMiZ-SnW6_pgJfoJOm5kZEEViMmVWdUMpBg4Yxs39NOufGii4k096kCpPiAwEo3Q0WOIwumDNyCJk6HR3Fub1J5BqTiTlFVUXfPGeQC-W4hDJSN0S4o7GPKrqEWJGYqadxk58cOOOxD-7usZO0EGlhCpxQ9GlGpMFWiy?purpose=fullsize
https://images.openai.com/static-rsc-4/9epu9tcvaV2ZfVhRpA-l3IjyseFNgGeqtrbfmSMB8XkhmrNU05urjKq1B8lDwW1EL-aw3kv4dPmWbZYkSvVHmKqC8foytdRVogMT6x9se_wY5iPoMOb3oWtj6NTblVUzC3i0-kGW87-832l7RqQrE2-5vCpq5bItJGvmxnYLPYlB9WkQGPhBfOoMTsleI5ie?purpose=fullsize
https://images.openai.com/static-rsc-4/7Xk1CuHsdELalR4roEFGO5Ee5dhwoa1NAf7kXNFB2NNX7vSd0Cfqehb_t9DIpWXNg4Jb3zghPgQZecVZJNLFyo2DbClfzuKeHKjCk2iIVpdreKEbs1wZFiWv9NzsNsYrengKASr4dw1Ktw9jcAjP3MoG1T6XMe8kQdHRKp-EuYmOrRf-4PN6m6747nVjWw5E?purpose=fullsize

5

🧠 Narasi:

  • 5 filsuf makan
  • Butuh 2 garpu
  • Bisa terjadi deadlock

5.3 Readers-Writers Problem

πŸ–ΌοΈ Readers Writers

https://images.openai.com/static-rsc-4/2A6RvQTCDBveFRjdYI3qgD7_3uUkpjkqI_I_j5jXouPzvePOSp6h-GV9YwPg0ALO53Qm1ajfRDPN7QlDM8P3p8krldM3nwFBd2AiJj6zsSnzIvPgBNQv-yWHq941CHTXYImhyZnUoRmLDv_u2w9Ofn7C1iLeTyFdwLEmlmKV_j-tZfg_OUSy1HlTD1TzvMui?purpose=fullsize
https://images.openai.com/static-rsc-4/Gjs7OPxqtRikafmx87T-k6jIK7zAfsIcBhq4L89K5m3RcCr0becm9DDHNU8eJRTdzIjWFIRIbi4mu-tmkoOnleewRaSCMJfCJvZSZGgTTRylt80vmp0a7S82BsSf4r9Qg2NNg7r-gyt9aVxjYzeg3HneSAYPGWncP5QE5QROifCLDUx3cOmllP6k0OzZZrcm?purpose=fullsize
https://images.openai.com/static-rsc-4/AIWqwTL83BsUFtiJUEXVcYIrP8ihjjmlQkDgFSPfo9O2hajv1389BI-ZxgstqHwfpRm3F1Y39ME8OTJqIpNxOwdoCb-RWpAvTshY6mAxlt8NreaQmlGWJYwwFQg6dWmxVik2vqmZWyjXzxbi18ZD9hy8BHkaa0N6DjU3ae-2cHsWkiUiArI-BvitAFhuYtZW?purpose=fullsize

7

🧠 Narasi:

  • Reader bisa banyak
  • Writer harus eksklusif

6. ⚠️ Masalah dalam Sinkronisasi

6.1 Deadlock

Proses saling menunggu

6.2 Starvation

Proses tidak mendapat giliran

6.3 Livelock

Proses terus berubah tapi tidak selesai


7. πŸ’» Implementasi Sederhana (Python)

import threadinglock = threading.Lock()def critical():
lock.acquire()
print("Critical section")
lock.release()t1 = threading.Thread(target=critical)
t1.start()

8. 🧠 Studi Kasus Nyata

Kasus:

Aplikasi bank

πŸ“Œ Analisis:

  • Banyak user akses saldo
  • Harus sinkron
  • Gunakan mutex/semaphore

9. πŸ“Š Perbandingan Mekanisme Sinkronisasi

MekanismeKelebihanKekurangan
MutexSederhanaDeadlock
SemaphoreFleksibelKompleks
MonitorAmanOverhead

10. πŸ“ Latihan

  1. Apa itu race condition?
  2. Jelaskan critical section!
  3. Apa perbedaan mutex dan semaphore?
  4. Jelaskan masalah dining philosophers!

🎯 Kesimpulan

  • Sinkronisasi penting dalam sistem multitasking
  • Race condition harus dihindari
  • Banyak solusi dengan kelebihan masing-masing
  • Sinkronisasi meningkatkan keandalan sistem

πŸš€ Pengembangan Materi Selanjutnya

➑ Deadlock (lebih mendalam)
➑ Manajemen Memori
➑ Virtual Memory