Selasa, 30 Maret 2021

 

Pengenalan Sinkronisasi Proses

Atas dasar sinkronisasi, proses dikategorikan sebagai salah satu dari dua jenis berikut:

  • Proses Independen : Eksekusi satu proses tidak memengaruhi eksekusi proses lainnya.
  • Proses Kerjasama : Eksekusi satu proses mempengaruhi pelaksanaan proses lainnya.

Masalah sinkronisasi proses muncul dalam kasus proses Koperasi juga karena sumber daya digunakan bersama dalam proses Koperasi.
 
Kondisi Balapan
Ketika lebih dari satu proses mengeksekusi kode yang sama atau mengakses memori yang sama atau variabel yang dibagi dalam kondisi itu ada kemungkinan bahwa output atau nilai variabel bersama salah sehingga semua proses melakukan perlombaan untuk mengatakan bahwa keluaran saya benar kondisi ini dikenal sebagai kondisi balapan. Beberapa proses mengakses dan memproses manipulasi atas data yang sama secara bersamaan, kemudian hasilnya bergantung pada urutan tertentu di mana akses tersebut terjadi.
Kondisi balapan adalah situasi yang mungkin terjadi di dalam bagian kritis. Hal ini terjadi jika hasil eksekusi beberapa utas di bagian kritis berbeda sesuai dengan urutan eksekusi utas.

Kondisi balapan di bagian kritis dapat dihindari jika bagian kritis diperlakukan sebagai instruksi atom. Selain itu, sinkronisasi utas yang tepat menggunakan kunci atau variabel atom dapat mencegah kondisi balapan.
 
Masalah Bagian Kritis

Bagian kritis adalah segmen kode yang dapat diakses hanya dengan satu proses dalam satu waktu. Bagian kritis berisi variabel bersama yang perlu disinkronkan untuk menjaga konsistensi variabel data.
masalah bagian kritis

Di bagian entri, proses meminta entri di Bagian Kritis.





Setiap solusi untuk masalah bagian kritis harus memenuhi tiga persyaratan:

  • Saling Pengecualian : Jika suatu proses sedang dijalankan di bagian kritisnya, maka tidak ada proses lain yang diizinkan untuk dijalankan di bagian kritis.
  • Kemajuan : Jika tidak ada proses yang dijalankan di bagian kritis dan proses lain menunggu di luar bagian kritis, maka hanya proses yang tidak dijalankan di bagian sisanya yang dapat berpartisipasi dalam memutuskan mana yang akan masuk ke bagian kritis berikutnya, dan pemilihan dapat tidak ditunda tanpa batas waktu.
  • Bounded Waiting : Harus ada batasan berapa kali proses lain diizinkan untuk memasuki bagian kritisnya setelah proses membuat permintaan untuk masuk ke bagian kritisnya dan sebelum permintaan tersebut dikabulkan.

 
Solusi
Peterson Solusi Peterson adalah solusi berbasis perangkat lunak klasik untuk masalah bagian kritis.

Dalam solusi Peterson, kami memiliki dua variabel bersama:

  • boolean flag [i]: Diinisialisasi menjadi FALSE, awalnya tidak ada yang tertarik masuk ke bagian kritis
  • int turn: Proses yang gilirannya memasuki bagian kritis.

peterson
 
Solusi Peterson mempertahankan ketiga kondisi:

  • Saling Pengecualian dijamin karena hanya satu proses yang dapat mengakses bagian penting kapan saja.
  • Kemajuan juga terjamin, karena proses di luar bagian kritis tidak menghalangi proses lain untuk memasuki bagian kritis.
  • Bounded Waiting dipertahankan karena setiap proses mendapat peluang yang adil.

     
    Kerugian dari Solusi Peterson

    • Ini melibatkan penantian yang sibuk
    • Dibatasi pada 2 proses.

     

    TestAndSet
    TestAndSet adalah solusi perangkat keras untuk masalah sinkronisasi. Di TestAndSet, kami memiliki variabel kunci bersama yang dapat mengambil salah satu dari dua nilai, 0 atau 1.

    0 Buka kunci
    1 Kunci
    

    Sebelum masuk ke bagian kritis, sebuah proses menanyakan tentang kunci. Jika terkunci, ia terus menunggu hingga menjadi gratis dan jika tidak terkunci, ia mengambil kunci dan menjalankan bagian kritis.



    Di TestAndSet, Saling pengecualian dan kemajuan dipertahankan tetapi menunggu terbatas tidak dapat dipertahankan.
     
    Pertanyaan: Fungsi enter_CS () dan leave_CS () untuk mengimplementasikan bagian kritis dari suatu proses direalisasikan menggunakan instruksi test-and-set sebagai berikut:

    int TestAndSet (int & kunci) {
        int inisial = kunci;
        kunci = 1;
        kembali awal;
    }
    
    batal enter_CS (X)
    {
      saat test-and-set (X);
    }
    
    batal cuti_CS (X)
    {
      X = 0;
    }
    

    Dalam solusi di atas, X adalah lokasi memori yang terkait dengan CS dan diinisialisasi ke 0. Sekarang, pertimbangkan pernyataan berikut:
    I. Solusi di atas untuk masalah CS adalah bebas-jalan buntu
    II. Solusinya adalah bebas kelaparan.
    AKU AKU AKU. Proses masuk CS dalam urutan FIFO.
    IV. Lebih dari satu proses dapat masuk CS secara bersamaan.
     
    Manakah dari pernyataan di atas yang BENAR?
    (A) I
    (B) II dan III
    (C) II dan IV
    (D) IV

    Klik di sini untuk Solusinya . Semaphores
     sejati

    Semafor adalah mekanisme pensinyalan dan utas yang menunggu di semafor dapat ditandai oleh utas lain. Ini berbeda dari mutex karena mutex hanya dapat ditandai oleh utas yang memanggil fungsi tunggu.

    Semaphore menggunakan dua operasi atom, tunggu dan sinyal untuk sinkronisasi proses.
    Semaphore adalah variabel integer, yang hanya dapat diakses melalui dua operasi wait () dan signal () .
    Ada dua jenis semaphore: Binary Semaphore dan Counting Semaphore

    • Semaphore Biner: Mereka hanya bisa 0 atau 1. Mereka juga dikenal sebagai kunci mutex, karena kunci dapat memberikan pengecualian timbal balik. Semua proses dapat berbagi semaphore mutex yang sama yang diinisialisasi ke 1. Kemudian, proses harus menunggu hingga kunci menjadi 0. Kemudian, proses dapat membuat mutex semaphore 1 dan memulai bagian kritisnya. Ketika menyelesaikan bagian kritisnya, itu dapat mengatur ulang nilai mutex semaphore menjadi 0 dan beberapa proses lain dapat memasuki bagian kritisnya.
    • Menghitung Semaphores: Mereka dapat memiliki nilai apa pun dan tidak dibatasi pada domain tertentu. Mereka dapat digunakan untuk mengontrol akses ke sumber daya yang memiliki batasan pada jumlah akses simultan. Semaphore dapat diinisialisasi ke jumlah instance sumber daya. Kapan pun sebuah proses ingin menggunakan sumber daya itu, ia memeriksa apakah jumlah instance yang tersisa lebih dari nol, yaitu, proses tersebut memiliki instance yang tersedia. Kemudian, proses dapat memasuki bagia

    Software Requirements Specification for Aplikasi Sistem Informasi    Akademik Mahasiswa Berbasis Web   Version 1.0 appro...