Modul A
Laporan Tugas Sistem Operasi
MODUL A
Disusun untuk memenuhi
Tugas Sistem Operasi
Oleh:
M.Taris Rizki
2208107010047
JURUSAN INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SYIAH KUALA
DARUSSALAM, BANDA ACEH
2023
I. Pendahuluan
Pada praktikum kali ini, kita akan mempelajari konsep synchronization
dalam pemrograman Java. Synchronization adalah teknik yang digunakan
untuk mengontrol akses bersama terhadap sumber daya bersama oleh beberapa thread.
Hal ini penting untuk menghindari masalah seperti race condition yang
dapat terjadi ketika dua atau lebih thread berusaha mengakses sumber
daya bersama secara bersamaan.
Silakan merujuk pada bahan praktikum di https://www.javatpoint.com/synchronization-in-java
untuk pemahaman yang lebih mendalam.
II. Tujuan Praktikum
- Memahami
permasalahan yang muncul tanpa penggunaan synchronization.
- Mengimplementasikan
metode synchronization pada program Java.
- Menerapkan
konsep synchronization pada dua program: TestSynchronization1.java
dan TestSynchronization2.java.
- Melakukan modifikasi pada program agar mencetak huruf A, B, C, dan seterusnya.
III. Bahan Praktikum
Program Modul A
1. TestSynchronization1.java
IV. Cara Praktikum
- Lakukan
penulisan ulang kode pada TestSynchronization1.java dan TestSynchronization2.java. pastikan program
berjalan normal.
- Jalankan kedua program dan amati hasilnya.
- Modifikasilah program agar mencetak huruf A, B, C, dan seterusnya sebagai output.
1. TestSynchronization1.java
Kode dimodifikasi agar mencetak huruf A, B, C, dan seterusnya sebagai output.
Output:
Kode ini menciptakan situasi di mana dua thread (MyThread1
dan MyThread2) menggunakan objek tunggal dari kelas Table dan
menjalankan metode printTable secara bersamaan.
Pertama, kelas Table memiliki metode printTable
yang tidak disinkronkan. Metode ini mencetak nilai Unicode dari karakter (char)(n*i)
dan kemudian menunda thread selama 400 milidetik menggunakan Thread.sleep(400).
Kemudian, ada dua kelas yang menggambarkan thread: MyThread1
dan MyThread2. Setiap kelas ini memiliki referensi ke objek Table
dan menjalankan metode printTable dengan parameter nilai Unicode yang
berbeda (65 untuk 'A' dan 70 untuk 'F').
Terakhir, dalam kelas TestSynchronization1, satu
objek dari kelas Table dibuat, dan dua thread (t1 dan t2)
dimulai untuk menjalankan metode printTable secara bersamaan.
Ada kemunkinan karena metode printTable tidak disinkronkan, sehingga jika eksekusi thread bersamaan terjadi, hasil cetakan dari kedua thread mungkin menjadi tercampur atau tidak terduga. Untuk membuatnya aman secara bersamaan, Anda dapat menggunakan kata kunci synchronized pada metode printTable dalam kelas Table.
Kode dimodifikasi agar mencetak huruf A, B, C, dan seterusnya sebagai output.
Kode Java di atas adalah contoh penggunaan metode sinkronisasi dalam pemrograman berbasis thread. Tujuannya adalah untuk mengontrol akses ke bagian tertentu dari kode oleh beberapa thread sehingga tidak terjadi konflik atau ketidaksesuaian data. Dalam kasus ini, kita memiliki kelas Table yang memiliki metode printTable yang disinkronkan. Ada dua thread (MyThread1 dan MyThread2) yang menggunakan objek Table untuk memanggil metode ini secara bersamaan.
Berikut adalah penjelasan dari setiap bagian kode:
- Kelas Table:
- Memiliki metode printTable(int n) yang disinkronkan. Metode ini digunakan untuk mencetak tabel perkalian angka atau karakter berdasarkan nilai yang diterima.
- Dalam contoh ini, metode tersebut mencetak karakter dari 'A' sampai 'E' dengan delay 400 milidetik di antara setiap cetakan.
- Kelas MyThread1 dan MyThread2:
- Dua kelas ini adalah thread yang menggunakan objek dari kelas Table.
- Setiap thread memiliki referensi ke objek Table yang sama, dan mereka memanggil metode printTable dengan parameter yang berbeda (5 dan 100).
- Kelas TestSynchronization2:
- Kelas ini berisi metode main yang merupakan titik masuk utama program.
- Satu objek dari kelas Table dibuat.
- Dua thread (MyThread1 dan MyThread2) dibuat, masing-masing menggunakan objek Table yang sama.
- Kedua thread dimulai (dengan memanggil metode start()), dan mereka secara bersamaan memanggil metode printTable yang disinkronkan dari objek Table yang sama.
Dengan menggunakan kata kunci synchronized pada metode printTable, hanya satu thread yang dapat menjalankan metode ini pada satu waktu. Sehingga, meskipun kedua thread dimulai bersamaan, mereka akan menjalankan metode tersebut secara bergantian, memastikan bahwa tidak ada konflik dalam mengakses sumber daya bersama.
VI. Kesimpulan
Praktikum ini membahas konsep synchronization dalam
pemrograman Java untuk mengatasi masalah race condition. Tujuannya adalah
memahami permasalahan tanpa synchronization, mengimplementasikan metode
synchronization, dan modifikasi program agar mencetak huruf A, B, C, dst.
Hasilnya menunjukkan bahwa TestSynchronization1.java, tanpa
synchronization, dapat menyebabkan hasil cetakan thread tercampur. Dalam
TestSynchronization2.java, penggunaan synchronized pada metode printTable
mengatasi konflik akses sumber daya bersama, memastikan hasil cetakan yang
teratur. Praktikum ini menyoroti pentingnya synchronization dalam menjaga
integritas data pada aplikasi multi-threaded.







Komentar
Posting Komentar