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.

 Bahan Referensi

Silakan merujuk pada bahan praktikum di https://www.javatpoint.com/synchronization-in-java untuk pemahaman yang lebih mendalam.

II. Tujuan Praktikum

  1. Memahami permasalahan yang muncul tanpa penggunaan synchronization.
  2. Mengimplementasikan metode synchronization pada program Java.
  3. Menerapkan konsep synchronization pada dua program: TestSynchronization1.java dan TestSynchronization2.java.
  4. Melakukan modifikasi pada program agar mencetak huruf A, B, C, dan seterusnya.

III. Bahan Praktikum

Program Modul A

1. TestSynchronization1.java


2. TestSynchronization2.java


IV. Cara Praktikum

  1. Lakukan penulisan ulang kode pada TestSynchronization1.java dan TestSynchronization2.java. pastikan program berjalan normal.
  2. Jalankan kedua program dan amati hasilnya.
  3. Modifikasilah program agar mencetak huruf A, B, C, dan seterusnya sebagai output.
V. Hasil dan Modifikasi

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.

 2. TestSynchronization2.java

Kode dimodifikasi agar mencetak huruf A, B, C, dan seterusnya sebagai output.


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:

  1. 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.
  2. 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).
  3. 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

Postingan populer dari blog ini

Modul B

Modul C