Lab 07 Fork dan Pipe (revisi 130823-r02)

  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. Buka ova Core Plus yang anda pakai beberapa minggu lalu di Virtual Box dan buka Terminal. Bila anda lupa membawa ova Core Plus yang lalu, silahkan menjalankan tutorial Aduh! Lupa Bawa Ova.
  7. 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
  8. Ambil token anda hari ini di apps os.
  9. Buat direktori Lab07 di dalam direktori KELAS/NPM anda. Semua hasil pekerjaan hari ini dimasukkan ke dalam direktori tersebut.
    $ mkdir Lab07
    $ svn add Lab07
    $ svn commit -m "Insert your grumble here" 
    $ cd Lab07/
  10. Download, list, extract, dan hapus source file
    $ wget --no-check-certificate https://projects.ui.ac.id/attachments/7368/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. Lakukan MD5SUM.
  20. Periksa dan kumpulkan pekerjaan anda.
  21. Jangan lupa untuk memeriksa repository.

Kembali ke Wiki

Lab07-forknpipe-02.png (57.5 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07-pipe-01.png (9.68 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07-pipe-01a.png (16.9 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07-pipe-02.png (31.1 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07-pipe-03.png (24.5 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07-forknpipe-01.png (57.1 KB) Ramot Stephanus Sihombing rast20, 30/10/2013 15:33

Lab07.tar.bz2 (1.27 KB) Ramot Stephanus Sihombing rast20, 06/11/2013 09:22