Cicak Bin Kadal
Top 10 List of Week 06
Steven --- North Jakarta

Top 10 List of Week 06

  1. Linux processes, background processes and what can we do with them
    Pastikan anda juga melihat part 2 disini! Topik utama dari W06 adalah processes serta concurrency, namun kita harus mulai dari konsep dasarnya dahulu. Video ini cukup memberikan paparan dasar yang lumayan untuk kita mulai mengerti tentang processes. Masih ingat xeyes yang pernah dipresentasikan di kelas? Ternyata program itu termasuk sebagai kita menjalankan process. Di video ini terdapat program yang mirip juga yaitu xlogo untuk mendemonstrasikan process berjalan, bahkan bash yang anda jalankan sekarang juga termasuk process!. Inti dari video adalah kita bisa membuat background process (Daemon) dengan menambahkan tanda & di perintah, dan juga menggunakan perintah kill untuk mematikan, freeze, atau continue sebuah process. Serta juga ada cara untuk membawa process dari background ke foreground. Alasan link ini dipilih: Demonstrasi dasar dari process dan kill command di linux yang sederhana dan cukup familiar dengan apa yang sudah kita lihat di kelas.

  2. Fork vs. exec dan varietasnya
    Saya sarankan anda coba dahulu demo W06 sebelum melihat penjelasan di video tersebut setidaknya sampai anda bertanya apa itu execlp dan fork. Mulai dari fork, itu intinya kita membuat child process yang parentnya adalah main process dimana kita membuat perintah untuk membuat child process dengan PID berbeda. Lalu ada exec yang tugasnya adalah “mereplace” gambaran dari process yang sekarang dengan program yang kita tujukan di perintah exec* (bukan membuat child process dan PID nya tetap sama!). Perintah exec memiliki beberapa varietas (namun exec sendiri tidak ada) seperti execlp yang kita temui di demo W06 untuk melakukan eksekusi kepada file seperti perintah di /bin contohnya ls atau cd, dkk. Alasan link ini dipilih: Sebuah topik yang cukup dipertanyakan sudah dijelaskan sampai ke perbedaan dan use-case masing-masing dengan jelas.

  3. CPU Process Scheduling Algorithms
    Throwback ke materi memory management ada sistem seperti FIFO dan LIFO, sekarang disini karena kita tidak bermain dengan penyimpanan data melainkan siapa dulu yang mau diurus ada sistem seperti First Come First Serve, Round Robin, atau juga Shortest First. Agar lebih mudah anda bisa anggap seperti strategi kasir untuk mengurusi pelanggan yang berbaris untuk membayar, apakah mau adil saja? mau lebih banyak pelanggan yang selesai? atau mau ratakan saja, dan disitulah ada parameter-parameter seperti Arrival, Burst (waktu diperlukan utk process diselesaikan), Completion, Turnaround (Jarak arrival ke completion), dan Waiting time berperan, manakah parameter yang ingin diutamakan? Akan tergantung pada algoritma yang digunakan/ Alasan link ini dipilih: Playlist ini sudah lengkap untuk mempelajari algoritma process scheduling. Penjelasan juga sudah jelas dan sesuai dengan teorinya.

  4. pipe() function for inter process communication
    Kita sebelumnya sudah mempelajari tentang fork() untuk membuat child process, namun bagaimana apabila kita ingin melakukan komunikasi antara process-process tersebut? Salah satunya adalah dengan pipe() function yang memanfaatkan shared files yang direferensikan dengan file descriptor (ingat ini dari week sebelumnya?). Intinya dengan memanggil function pipe() kita akan passing array of integers dengan size 2, dimana index 0 akan menjadi file descriptor untuk read, dan index 1 untuk write-nya, lalu kita bisa manfaatkan dengan system call read() dan juga write(). Lengkapnya anda lebih baik melihat contohnya sendiri di link karena cukup heavy topic. Alasan link ini dipilih: Contoh yang to the point disertai dengan penjelasan yang baik. Juga memberikan gambaran tentang bagaimana dan apa saja yang mungkin terjadi untuk interprocess communication

  5. Process vs. Thread
    Di matakuliah Pemrograman Lanjut saya rasa anda sudah familiar dengan konsep Thread namun apa bedanya dengan process yang sendirinya juga untuk berjalan bersamaan? Thread adalah bagian dari Process, sebuah program bisa memiliki beberapa thread untuk menjalani bagian-bagian program yang berbeda di runtime yang sama. Namun untuk process sifatnya lebih isolated dengan tujuan yang sama dengan thread yaitu concurrency, hanya process itu lebih merepresentasikan keseluruhan state program beserta thread-thread yang berjalan didalamnya. Alasan link ini dipilih: Mirip dengan link ke-2 yaitu topik yang sering dipertanyakan sudah dijawab dengan analogi kehidupan nyata yang baik.

  6. Threads basics: creating and joining threads
    Seperti yang sudah dijelaskan di mata kuliah Pemrograman Lanjut, kita bisa membuat beberapa threads dan menjalankan beberapa instansi dari thread tersebut (namun entah dijalankan secara paralel atau tidak itu urusan berbeda lagi, hanya pastinya secara concurrent). Namun ada satu konsep yang kita belum temui yaitu joining threads, intinya adalah agar main thread tidak berhenti dulu sebelum thread yang dijoin itu sudah selesai. Saya sarankan anda menonton video yang ada di link untuk melihat contoh yang cukup intuitif tentang threading. Alasan link ini dipilih: Tidak hanya penjelasan, namun disertai demo program yang cukup intuitif dan menyeluruh tentang threading.

  7. Concurrency vs. Parallelism
    Dari yang sudah saya bawakan di link ke-6, urusan parallel dan concurrency itu berbeda namun dimana bedanya? Sebenarnya bila bingung di awal-awal atau tertukar juga tidak apa-apa karena memang definisi yang mirip dan kata-katanya cukup mudah terbelit. Namun intinya parallelism itu berjalan di waktu yang sama secara bersamaan. Sedangkan concurrency itu kita sekaligus jalankan dalam 1 barisan yang sama, jadi tidak selalu bersamaan, hanya kita bisa seakan step 1 A, lalu step 1 B, lalu balik lagi ke step 2 A. Alasan link ini dipilih: Video ini membawakan contoh dengan bahasa Java yang sudah kita kenal dan familiar selama perkuliahan dan juga memberikan konsep-konsep umum yang berhubungan dengan topik seperti threats to concurrency serta locking.

  8. printf, flushing, dan newline char
    Sedikit cerita saja, saya awalnya bingung dengan topik ini dari demo W06 tentang flushing karena saat saya membuat program sendiri terkait flushing malah hasilnya langsung di flush ke stdout daripada di buffer dahulu. Ternyata setelah bertanya ke dosen di sesi sync zoom saya diberi informasi kalau \n akan menyebabkan function printf langsung melakukan flush out ke stdout yang memiliki sistem buffering. Alasan link ini dipilih: Saya rasa pertanyaan saya pasti juga ditanyakan oleh lainnya juga dan link tersebut telah memberikan jawaban yang sudah jelas ditambah informasi tentang stderr.

  9. Orphans, Zombies, and Daemons
    Sekilas terdengar seperti judul film thriller horror, namun sebenarnya ketiga istilah itu sering digunakan dalam process di OS. Mulai dari Orphan yang kita awalnya sudah ketahui process memiliki parent dan bisa memiliki child, sudah jelas dari namanya berarti Orphans adalah child processes dimana parent process nya sudah selesai duluan (dan di UNIX system, akan di “adopsi” atau parent nya di set ke init process yaitu parent segala process) Untuk Daemon itu juga termasuk process yang sengaja dibuat orphan supaya kita bisa memiliki background process, jadinya tidak bergantung ke process apapun selain main process. Sedangkan untuk Zombies sudah dijelaskan juga di zoom meeting, intinya process yang sudah selesai akan tetapi tidak dimatikan oleh parentnya, jadinya resourcenya tidak di deallocated (semacam memory leak). Alasan link ini dipilih: Penjelasan yang tidak hanya definisi, melainkan diberikan sebab akibat seperti penyebab Daemon process sengaja dibuat orphan atau kasus lainnya terjadinya orphan process yang tidak sengaja

  10. States of a process
    Saya asumsikan anda sudah mengetahui dahulu tentang wait() function di C untuk membaca ini. Di dalam demo fork, kita sudah diperkenalkan dengan function fork() dan juga wait(NULL) yaitu wait hingga child process mengembalikan status yang tidak spesifik. Dengan kita menggunakan function wait, kita sudah meletakkan process dalam status Blocked dari yang tadinya berada di Running. Tentunya masih ada banyak status selain 2 itu saja, seperti Terminated apabila process sudah selesai dan akan dibuang segala alokasi memory yang berhubungan dengan process tersebut. Saya saran anda juga sambil GSGS apabila ingin memahami materi di artikel tersebut. Alasan link ini dipilih: Cheat sheet tambahan untuk GSGS tentang process yang cukup jelas, karena state dari process selalu ditekankan dalam penjelasan mengenai process.


© 2021-2021 --- Steven --- File Revision: 0027---27-Feb-2021.