Tugas Sinkronisasi dan Deadlock (revisi 141014-r03)

Kembali ke Lab 05

  1. Ambil berkas untuk sesi lab ini dengan perintah
    $ wget --no-check-certificate https://projects.ui.ac.id/attachments/download/7862/Lab05-SRC.tar.bz2
    
  2. Lihat isi berkas terkompresi dengan perintah
    $ tar tjf Lab05-SRC.tar.bz2
    
  3. Ekstrak isi berkas terkompresi dengan perintah
    $ tar xjf Lab05-SRC.tar.bz2
    
  4. Hapus berkas Lab05-SRC.tar.bz2 dengan perintah
    $ rm Lab05-SRC.tar.bz2
    
  5. Edit seluruh berkas dengan menggunakan vi di bagian di bawah ini:
    ZCZC [TOKEN] [NPM]
    

    Ganti [TOKEN] dengan token anda, [NPM] dengan NPM anda, contoh ZCZC NO4LAY 1202000818.
  6. Pelajari berkas Makefile agar anda bisa mengerti bagaimana berkas ini mempermudah anda mengompilasi program main1, main2, main3, main4, main5, dan main6.
  7. Eksekusi berkas Makefile dengan perintah
    $ make

    Tips: untuk lab ini, setiap kali anda mengubah berkas .c, untuk compile anda bisa langsung mengetik "make" saja, tidak perlu mengetik gcc. Make secara otomatis akan mendeteksi berkas mana saja yang anda ubah lalu melakukan kompilasi sesuai setting make.
  8. Pelajari seluruh berkas .c dan .h
  9. Eksekusi satu per satu seluruh program (main1 sampai dengan main6).
  10. Tugas anda yang dikumpulkan adalah memodifikasi berkas "main3.c".
  11. Modifikasi program ini dengan mengubah program "main2.c" sehingga:
    1. Meminta input jumlah thread masakan padang yang diproses.
    2. Mencetak "Thread masakan padang" dengan nomor thread ganjil dahulu baru genap!
    3. Untuk jelasnya lihat contoh jawaban di bawah:
  12. Sebagai tugas pilihan (nilai bonus 20 - 30 poin bila dikerjakan), anda dipersilahkan menyelesaikan main6.c:
    1. Tantangan standar: Modifikasi program ini dengan mengubah program "main5.c" sehingga writer dan reader harus bergantian, setiap satu writer menghasilkan tulisan, harus ada reader yang membaca terlebih dahulu sebelum ada writer lain yang masuk dan menulis, dan demikian sebaliknya.
    2. Untuk jelasnya lihat contoh jawaban di bawah.
    3. Tantangan mahir: modifikasi lebih lanjut program anda bisa membatasi para writer sehingga jika satu writer sudah menghasilkan tulisan, dia tidak akan menulis lagi sampai semua writer juga sudah menghasilkan tulisan. Jadi misalnya jika ada 3 writer dan writer 1 menghasilkan tulisan, maka dia harus menunggu writer 2 dan 3 menghasilkan tulisan dulu baru dia bisa menulis lagi, demikian sebaliknya.
    4. Untuk jelasnya lihat contoh jawaban di bawah:
  13. Sekali lagi diingatkan bahwa main6 bukan tugas yang harus dikerjakan, tetapi bila dikerjakan dan benar anda mendapat bonus 20 - 30 poin tergantung tantangan yang anda selesaikan. Jika tidak mengerjakan anda hanya perlu mengumpulkan program kosong.
  14. Demikian Tugas Sinkronisasi dan Deadlock hari ini.

Kembali ke Lab 05
Kembali