Lab 07 Fork dan Pipe (revisi 140429-r01)

  1. Pelajari fungsi yang berhubungan [pipe(), fork(), close(), getpid(), write()] dengan melihat dokumentasi (manual) programnya di browser. Manual (man) tidak diimplementasikan di Tiny Core yang kita pakai, sehingga anda dapat melihatnya di internet, misalnya di situs ini.
  2. PIPE: Anda dapat menulis di suatu sisi, dan dapat membacanya dari sisi yang lain. WARNING: Terlalu banyak penulisan tanpa ada yang membaca dapat menyebabkan PIPE overflow dan crash
  3. Anda Dapat membuat sebuah pipe di dalam suatu proses dengan menggunakan system call pipe(), akan tetapi itu less fun.
  4. Sebuah proces fork dan pipe (some fun). Apapun proses (parent atau child) yang menulis, dapat di baca oleh parent dan child!
  5. Sama seperti di atas, tetapi memutuskan hubungan satu port write dan satu port read. Sekarang, suatu parent dapat menulis ke child-nya, atau suatu child dapat menulis ke parent-nya, atau keduanya.
  6. Silahkan buka Tiny Core di Virtual Box dan login dengan account tc dan password yang anda buat.
  7. Bila anda tidak membawa ova hasil export minggu lalu, lakukan tutorial Aduh Mak! Saya Lupa Bawa Ova!
  8. Masuk ke direktori KELAS/NPM di home directory tc anda, lalu buat direktori Lab07 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 Lab07
    $ cd Lab07
  9. Mari mengambil token yang akan kita gunakan untuk pekerjaan hari ini.
  10. Download, list, extract, dan hapus source file
    $ wget --no-check-certificate https://projects.ui.ac.id/attachments/7753/Lab07.tar.bz2
    $ tar tfj Lab07.tar.bz2
    $ tar xfj Lab07.tar.bz2
    $ rm Lab07.tar.bz2
    $ ls -al
    
  11. Buat dan isi file "catat-Lab07.txt" dengan:
    ZCZC [KELAS] TGS LAB07 [NPM]
    ZCZC [TOKEN] LOG [NOTES]

    Ganti [KELAS] dengan kelas anda, [NPM] dengan NPM anda, [TOKEN] dengan token anda dan [NOTES] dengan keterangan singkat, misalnya Saya mengerti bahwa dosen tidak melayani permintaan tugas untuk memperbaiki nilai bila nilai akhir OS sudah keluar.
  12. Rekam semua keluaran ke "catat-Lab07.txt":
    $ script -a catat-Lab07.txt
  13. Ganti [TOKEN], [CLASS] dan [NPM] di file forknpipe01.c, forknpipe02.c, and forknpipe03.c dengan token anda, kelas anda dan NPM anda.
  14. Pelajari program file "forknpipe01.c".
  15. Pelajari program file "forknpipe02.c".
  16. Tulis/selesaikan program file "forknpipe03.c", dimana P0 mengirimkan pesan ke P1, P1 mengirimkan pesan ke P2,..., dan Pn mengirimkan pesan ke P0.
  17. Compile dan execute semua file:
    $ cc -o forknpipe01 forknpipe01.c
    $ cc -o forknpipe02 forknpipe02.c
    $ cc -o forknpipe03 forknpipe03.c
    $ ./forknpipe01
    $ ./forknpipe02
    $ ./forknpipe03
    
  18. Jalankan exit untuk menghentikan rekaman "catat-Lab07.txt"
    $ exit
    
  19. Eksekusi script genbio
    $ genbio
  20. Lakukan tutorial md5sum.
  21. Lakukan tutorial pemeriksaan.
  22. Keluar dari direktori Lab07, lalu buat berkas KELAS-NPM-Lab07.tar.bz2 dengan isi direktori Lab07. 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-Lab07.tar.bz2 Lab07/
  23. Lakukan Pengumpulan Tugas di Scele untuk mengumpulkan berkas tar anda yang berisi:
    1. myself.txt
    2. forknpipe01
    3. forknpipe01.c
    4. forknpipe02
    5. forknpipe02.c
    6. forknpipe03
    7. forknpipe03.c
    8. catat-Lab07.txt
    9. .periksa
    10. MD5SUM
    11. MD5SUM.asc
  24. 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.
  25. Demikian tutorial hari ini.

Kembali ke Wiki

Lab07-forknpipe-02.png (57.5 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07.tar.bz2 (1.27 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07-pipe-01.png (9.68 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07-pipe-01a.png (16.9 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07-pipe-02.png (31.1 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07-pipe-03.png (24.5 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34

Lab07-forknpipe-01.png (57.1 KB) Ramot Stephanus Sihombing rast20, 29/04/2014 21:34