Lab 05 Thread dan Sinkronisasi (revisi 140317-r01)

  1. Silahkan buka Tiny Core di Virtual Box dan login dengan account tc dan password yang anda buat.
  2. Bila anda tidak membawa ova hasil export minggu lalu, lakukan tutorial Astagah! Saya Lupa Bawa Ova!
  3. Masuk ke direktori KELAS/NPM di home directory tc anda, lalu buat direktori Lab05 dan masuk ke dalamnya. Sebagai contoh di sini KELAS saya adalah TESTING dan NPM saya adalah 1202000818, ganti dengan KELAS anda (A140, B140, C140, D140, E140, EXT140) dan NPM anda.
    $ cd TESTING/1202000818/
    $ mkdir Lab05
    $ cd Lab05
  4. Mari mengambil token yang akan kita gunakan untuk pekerjaan hari ini.
  5. Ambil berkas untuk sesi lab ini dengan perintah
    $ wget --no-check-certificate https://projects.ui.ac.id/attachments/7717/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 18-03-2014
    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. Eksekusi script genbio
    $ genbio
  21. Lakukan tutorial md5sum.
  22. Lakukan tutorial pemeriksaan.
  23. Keluar dari direktori Lab05, lalu buat berkas KELAS-NPM-Lab05.tar.bz2 dengan isi direktori Lab05. Sebagai contoh di sini KELAS saya adalah TESTING dan NPM saya adalah 1202000818, ganti dengan KELAS anda (A140, B140, C140, D140, E140, EXT140) dan NPM anda.
    $ cd ..
    $ tar cvjf TESTING-1202000818-Lab05.tar.bz2 Lab05/
  24. Lakukan Pengumpulan Tugas di Scele untuk mengumpulkan berkas tar anda yang berisi:
    1. myself.txt
    2. Makefile
    3. main1.c
    4. main1
    5. main2.c
    6. main2
    7. main3.c
    8. main3
    9. main4.c
    10. main4
    11. main5.c
    12. main5
    13. main6.c
    14. main6
    15. catat-Lab05.txt
    16. .periksa
    17. MD5SUM
    18. MD5SUM.asc
  25. Lalu jalankan lagi Tutorial Export Tiny Core yang sudah diubah di Virtual Box. Simpan berkas hasil export ke flash disk anda untuk dibawa minggu depan.
  26. Demikian tutorial hari ini.

Kembali ke Wiki

main3_bonus.png (8.4 KB) Ramot Stephanus Sihombing rast20, 17/03/2014 12:35

main3_standar.png (10.8 KB) Ramot Stephanus Sihombing rast20, 17/03/2014 12:35

main6_bonus.png (31.6 KB) Ramot Stephanus Sihombing rast20, 17/03/2014 12:35

main6_standar.png (31.6 KB) Ramot Stephanus Sihombing rast20, 17/03/2014 12:35

Lab05-SRC.tar.bz2 (3.08 KB) Ramot Stephanus Sihombing rast20, 17/03/2014 12:35