Lab 05 Thread dan Sinkronisasi (revisi 131010-r01)

  1. Buka ova Core Plus yang anda pakai minggu lalu di Virtual Box dan buka Terminal. Bila anda lupa membawa ova Core Plus minggu lalu, silahkan menjalankan tutorial Aduh! Lupa Bawa Ova.
  2. Update direktori kerja anda di KELAS/NPM/ dengan revisi terakhir. Sebagai contoh disini KELAS adalah TESTING dan NPM_anda adalah 1202000818. Ganti dengan kelas anda dan NPM anda!
    $ cd TESTING/1202000818/
    $ svn update
    $ UPCEK
  3. Ambil token anda hari ini di apps os.
  4. Buat direktori Lab05 di dalam direktori KELAS/NPM anda. Semua hasil pekerjaan hari ini dimasukkan ke dalam direktori tersebut.
    $ mkdir Lab05
    $ svn add Lab05
    $ svn commit -m "Lab 5 gampang banggeett!" 
    $ cd Lab05/
  5. Ambil berkas untuk sesi lab ini dengan perintah
    $ wget --no-check-certificate https://projects.ui.ac.id/attachments/7284/Lab05-SRC.tar.bz2
    
  6. Lihat isi berkas terkompresi dengan perintah
    $ tar tjf Lab05-SRC.tar.bz2
    
  7. Ekstrak isi berkas terkompresi dengan perintah
    $ tar xjf Lab05-SRC.tar.bz2
    
  8. Hapus berkas Lab05-SRC.tar.bz2 dengan perintah
    $ rm Lab05-SRC.tar.bz2
    
  9. 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.
  10. Pelajari berkas Makefile agar anda bisa mengerti bagaimana berkas ini mempermudah anda mengompilasi program main1, main2, main3, main4, main5, dan main6.
  11. 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.
  12. Pelajari seluruh berkas .c dan .h
  13. Buat berkas "catat-Lab05.txt" yang berisi:
    ZCZC [KELAS] TGS LAB05 [TANGGAL]
    ZCZC [TOKEN] LOG [KETERANGAN]
    

    Ganti [KELAS] dengan kelas anda, [TANGGAL] dengan tanggal hari ini dengan format DD-MM-YYYY, [TOKEN] dengan token anda, dan [KETERANGAN] dengan keterangan singkat, contohnya:
    ZCZC TESTING TGS LAB05 28-02-2013
    ZCZC NO4LAY LOG Tugasnya terlalu gampang, kak!
  14. Catat seluruh keluaran layar selama tutorial thread dan sinkronisasi dengan perintah
    $ script -a catat-Lab05.txt
    
  15. Eksekusi satu per satu seluruh program (main1 sampai dengan main6).
  16. Tugas anda adalah memodifikasi berkas "main3.c" dan "main6.c".
  17. Untuk main3.c:
    1. Modifikasi program ini dengan mengubah program "main2.c" sehingga bisa mencetak "Thread masakan padang" dengan nomor thread ganjil dahulu baru genap!
    2. Untuk jelasnya lihat contoh jawaban di bawah:
    3. Bonus 10% jika program anda bisa meminta input jumlah thread masakan padang yang diproses.
    4. Untuk jelasnya lihat contoh jawaban di bawah:
  18. Untuk main6.c:
    1. 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. Bonus 10% jika 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:
  19. Setelah seluruh program dieksekusi, hentikan program "script" dengan perintah
    $ exit
    
  20. Lakukan MD5SUM.
  21. Periksa dan kumpulkan pekerjaan anda.

Kembali ke Wiki

main3_bonus.png (8.4 KB) 1106087875 - M. Redho Ayassa, 09/10/2013 10:28

main3_standar.png (10.8 KB) 1106087875 - M. Redho Ayassa, 09/10/2013 10:28

main6_bonus.png (31.6 KB) 1106087875 - M. Redho Ayassa, 09/10/2013 10:28

main6_standar.png (31.6 KB) 1106087875 - M. Redho Ayassa, 09/10/2013 10:28

Lab05-SRC.tar.bz2 (3.08 KB) 1106087875 - M. Redho Ayassa, 09/10/2013 10:28