os221

Week01

  1. Learn Basic of Markdown
    Link ini pada dasarnya berisikan tentang markdown. Pada link ini cocok untuk siapapun yang ingin berkutat dengan markdown, baik itu pemula maupun untuk mereka yang sudah advanced. Pada link ini terdapat berbagai segment, dari mulai Get Started yang cocok untuk pemula hingga Extended Syntax untuk mereka yang ingin mengembangkan skill markdownnya lebih jauh. Selain itu ada segment hack yang sekiranya dapat mempercepat workflow kita dalam menggunakan markdown.
  2. Mastering Markdown using Cheatsheet
    Link ini sebenarnya berisi tentang cheatsheet, namun saya merasa link ini sebenarnya summary dari markdown itu sendiri. Saya merasa link ini cocok untuk mereka yang ingin ‘sat-set-sat-set’ dalam bekerja menggunakan markdown. Selain dapat mempermudah pekerjaan, juga cukup compact mengingat content didalamnya langsung to the point.
  3. Everything about Jekyll
    Link ini berisi tentang segala hal terkait jekyll. Pada awalnya saya ingin mengimplementasikan jekyll pada github page ini, nemun setelah dipikir pikir sepertinya akan cukup berat juga tidak disarankan oleh Pak RMS. Namun saya tetap menggunakan jekyll ini pada project saya lainnya untuk berlatih. Sejujurnya link sangat informatif dan menyenangkan, karena disamping dokumentasinya sendiri cukup compact dan lengkap juga bahasa yang digunakan ramah untuk pemula :) cukup sesuai lah untuk saya.

Week02

  1. Cryptography: Crash Course Computer Science #33
    Pada week 02 ini topik utamanya tentang security, salah satu domain yang saya senangi dari dunia security adalah terkait cryptography. Kenapa demikian? Alasannya terdapat pada link yang saya lampirkan ini. Pada link tersebut dijelaskan tentang sejarah cryptography, pengembangan cryptography dan manfaat cryptography pada dunia modern. Menurut saya link ini menarik karena saya jadi paham apa yang mendasari cryptography itu sendiri, mengingat saya cukup sering menggunakan cryptography dalam hal crypting password. Tipe encryption yang sering saya gunakan adalah bcrypt. Cukup menyenangkan sejujurnya.
  2. GnuPG
    Pada link ini sebenarnya tentang GnuPG dan dokumentasi seputar GnuPG. Saya tertarik membaca hal ini karena assignment #01 terkait dengan GnuPG dan GPG, hal itu lah yang mendorong saya untuk mempelajari dan membaca seputar hal ini. Secara sekilas GnuPG adalah software memungkinkan kita untuk encrypt dan sign data, baik dokumen formal maupun informal juga komunikasi kita. Di dalamnya mengandung key management system untuk menyimpan key yang kita gunakan. Termasuk public dan private keynya sendiri.
  3. SHA-256
    Masih terkait dengan security, kini saya menyertakan link terkait salah satu implementasi dari cryptography, yakni SHA-256. Pada link ini membagikan informasi dan penjelasan seputar apa itu hash, apa itu SHA-256, kenapa SHA-256 cukup aman dibandingkan MD5, bagaimana cara kerja secure hash algorithms. Yang menarik dari link ini adalah, tidak hanya memberikan penjelasan secara tertulis namun juga memberi penjelasan dalam bentuk video. Sehingga bisa saling menutupi satu sama lain, misalkan pada video terdapat miss, dapat dicover oleh penjelasan pada tulisan, vice versa.

Week03

  1. What is File System?
    Week 03 ini berkaitan seputar dengan file system. Pada link yang saya berikan ini menjelaskan tentang apa itu file system dan arsitektur dari file system secara sederhana. Terdapat berbagai macam file system, diantaranya RT-11, FAT (File Allocation Table), BSD: Unix File. Masing-masing jenis file system tersebut dijelaskan dari mulai definisi, arsitektur hingga kelebihan dan kekurangan. Hal itulah yang menurut saya link ini menarik.
  2. Hierarchy Structure of file in Linux
    Pada link ini menjelaskan tentang hierarki file pada sistem operasi linux. Dari yang tertinggi adalah / (root) hingga cabang-cabang yang dibawahnya. Selain itu, dijelaskan pula maksud dan tujuan dari masing-masing komponen pada hierarkinya. Selain itu dijelaskan juga command yang terdapat pada file tersebut. Yang membuat link ini menarik adalah link ini berhasil mencerahkan saya terkait apa itu linux, karena saya sering tersesat apabila explore file di linux.
  3. File Allocation
    Link ini memaparkan terkait hal-hal apa saja yang berkaitan dengan file allocation, terutama method-method yang tersedia. Seperti Contiguous Allocation, Linked Allocation, Indexed Allocation. Tujuan dari allocation ini adalah untuk memanfaatkan ukuran disk yang ada secara efisien, alias tidak boros tempat. Juga kecepatan akses file, karena terkadang apabila proses indexing dan penyimpanannya salah akan berpengaruh pada performance mesinnya juga. Hal yang menarik dari link ini adalah tidak hanya memaparkan teorinya, namun juga dukungan visual (gambar) sehingga jadi lebih mudah dibayangkan.

Week04

  1. Little Endian vs Big Endian
    Pada link ini menjelaskan dengan baik dan sederhana terkaitt apa itu endian dan perbedaan dari little endian dan big endian. Sebenarnya endian itu hanyalah cara komputer menyimpan byte data. Tidak ada yang lebih bagus antara little dan big, ini hanya masalah cara komputer menyimpan byte data saja. Yang saya suka dari link ini adalah menjelaskan dengan mudah terkait perbedaan antara keduanya. Pada big endian, dapat dipahami seperti BE (Big End-first). Sedangkan pada little endian, dapat dipahami seperti LE (Little End-First). Kita ambil contoh, 0x123456; pada format big endian disimpan sebagai 12 34 56 sedangkan pada format disimpan sebagai 56 34 12. Sangat menarik!
  2. Makefile?
    Link ini sebenarnya merupakan tutorial terkait apa itu makefile. Bagi saya link ini benar-benar membantu saya memahami apa itu makefile. Karena sebelumnya saya cukup bingung terkait apa itu makefile, tujuan makefile dan kegunaannya. Setelah membaca dan mempelajari terkait makefile pada web ini menjadi cukup paham. Yang membuat menariknya adalah terdapat bantuan visualisasi gambar, sehingga jadi lebih mudah memahaminya. Jadi pada dasarnya makefile adalah suatu tool untuk membantu kita sebagai programmer untuk menentukan file mana yang perlu dicompile ataupun direcompile. Misalkan kita punya suatu sistem yang terdiri dari 10 file program. Dari 10 program tersebut, kita melakukan perubahan pada 4 filenya. Dengan makefile kita tidak perlu melakukan kompilasi pada keempat file tersebut secara manual. Cukup gunakan command “make” maka keempat file tersebut dapat dikompilasi secara otomatis. Keren bukan!
  3. Memory Allocation
    Saat saya mempelajari terkait bahasa pemrograman C, saya cukup bingung dengan konsep malloc (memory allocation). Maka dari itu saya memutuskan untuk mencari apa itu malloc dan kenapa memory allocation diperlukan pada program seperti C. Pada link ini diberi penjelasan dengan cukup baik terkait definisi memory allocation dan komponen pernyertanya. Pada dasarnya seperti namanya saja, kita meminta komputer untuk mengalokasikan sekian memory bagi program kita untuk menyimpan suatu variable atau data. Terdapat dua jenis memory allocation, yakni static dan dynamic. Bedanya adalah pada static, alokasi memory dilakukan pada saat proses compile berlangsung sedangkan pada dynamic, alokasi memory dilakukan pada saat runtime. Yang menarik pada link ini adalah mereka memberikan penyajiannya cukup runut, setelah memory allocation terdapat link untuk membaca terkait memory management juga sebelumnya terdapatt terkait virtual memory. Sehingga seolah-olah kita seperti dituntun dalam mempelajarinya.

Week05

  1. What is Virtual Memory
    Pada link ini dijelaskan terkait apa itu virtual memory dengan cukup komprehensif dan dengan bahasa yang sederhana. Berdasarkan definisi yang saya pahami berdasarkan pada link ini, virtual memory adalah suatu sistem alokasi penyimpanan sekunder yang perannya seperti main memory. Pada dasarnya virtual memory menggunakan reference address untuk membedakan dengan main memory. Yang menariknya lagi adalah dijelaskan pula pada link ini macam macam virtual memory, seperti demand paging dan swapping.
  2. Paging vs Segmentation
    Link ini secara khusus menjelaskan terkait perbedaan pada paging dan segmentation. Secara umum perbedaan antara keduanya hanyalah pada page length pada masing-masing. Pada paging, ukuran page selalu fixed, tidak dapat bertumbuh maupun menyusut. Sedangkan pada segmentation, ukuran tiap pagenya lebih dinamis, seperti program’s main function, data structures, utility functions, etc. Selain itu pula terdapat kelebihan dan kekurangan masing-masing yang juga dijabarkan pada website ini. Cukup menarik dan lengkap untuk sebuah website.
  3. Swapping?
    Link ini menjelaskan secara khusus apa itu swapping dan apa tujuan dari swapping. Yang membuat link ini menarik adalah penggunaan bahasa yang ramah bagi pemula dan penjelasan yang cukup komprehensif. Berdasarkan yang saya baca pada link ini, swapping pada dasarnya adalah suatu mekanisme yang memungkinkan kita untuk memindahkan konten dari main memory ke suatu backing store untuk memungkinkan terdapat space tersisa pada main memory menjalankan proses yang berlangsung, apabila proses tersebut sudah selesai maka konten yang dipindahkan ke backing store tadi dikembalikan ke main memory. Lalu apa tujuan dari swapping? Seperti yang sudah saya sampaikan tadi, tujuannya adalah untuk memaksimalkan kinerja sistem dan main memory dalam menjalankan program yang sedang berlangsung dengan memindahkan konten yang tidak ada kaitannya dengan program tsb. Semoga jelas ya :)

Week06

  1. Concurrency
    Ketika melihat web geeksforgeeks muncul dalam hasil pencarian, maka web tersebut pastinya pertama kali yang saya buka. Pada link ini menjelaskan secara umum terkait apa itu concurrency dalam Operating System. Setelah membaca web ini, yang dapat saya tangkap terkait concurrency adalah proses eksekusi instruksi secara bersamaan dalam kurun waktu yang bersamaan. Hal ini terjadi ketika terdapat threads yang berjalan secara paralel. Yang membuat website ini menarik adalah menjelaskan kelebihan dan kelemahan dari concurrency itu sendiri. Sehingga hal tersebut dapat menjadi ilmu dan pertimbangan apabila ingin menerapkan konsep concurrency kedepannya.
  2. Threadding
    Pada point nomor 1 saya menyebut kata thread. Pada poin kedua ini saya berikan penjelasan singkat terkait thread. Pada web yang saya baca, pada dasarnya adalah suatu urutan eksekusi program dalam sebuah process. Mungkin kalian bertanya, lalu apa bedanya thread dengan process itu sendiri? Nah jawabannya terdapat pada web tersebut. Hal itu lah yang membuat web ini menurut saya menarik, karena entah kenapa seolah-olah dapat memprediksi pertanyaan yang akan diajukan oleh pembaca. Selain itu apabila pembaca ingin explore lebih dalam, dapat membaca table of contents.
  3. Thread vs Process
    Pada poin nomor 2, saya menyebutkan konteks terkait perbedaan antara process dengan thread. Nah pada poin nomor 3 ini, saya akan berikan penjelasan singkat terkait perbedaan keduanya berdasarkan informasi yang saya baca pada web yang saya lampirkan. Berdasarkan web tersebut, perbedaan antara thread dengan process adalah process merupakan suatu kondisi dimana mesin melakukan eksekusi terhadap program yang ingin dijalankan sedangkan thread adalah alur/urutan eksekusi program dalam sebuah process. Jadi apabila disederhanakan, process merupakan superset dari thread. Yang membuat website ini menarik adalah terdapat perbandingan antara keduanya secara komprehensif juga definisi dari masing-masing. Sehingga serasa dibahas secara khusus tanpa perlu browse sumber lain.

Week07

  1. Race condition
    Berdasarkan link yang saya baca diatas, race condition adalah suatu permasalahan dalam dunia concurrency yang terdapat didalam critical section. Pada dasarnya critical section adalah suatu block of code yang dieksekusi oleh multiple threads yang mana pada masing-masing thread terdapat urutan yang mengakibatkan perbedaan dalam hasil eksekusi. Yang membuat website ini menarik adalah diberikan pula contoh code yang menyebabkan terjadinya race condition serta penyelesaiannya.
  2. Mutex –> Mutual Exclusion
    Salah satu upaya untuk menangani permasalahan race condition adalah dengan menerapkan mutual exclusion (mutex). Sederhananya mutex adalah suatu kondisi dimana memaksa hanya terdapat satu pihak yang mengakses suatu resource. Dalam proses pengaksesan resource tersebut tidak boleh lebih dari satu, untuk mencegah terjadinya perbedaan result dari hasil eksekusi masing-masingnya. Yang membuat website tersebut menarik adalah dijelaskan secara komprehensif terkait apa itu semaphore dan jeroan-jeroannya. Sehingga memudahkan kita untuk mendapatkan kaitan dan hubungan masing-masingnya.
  3. Deadlock?
    Terdapat permasalahan lain dari terminologi concurrency, yakni deadlock. Deadlock adalah suatu kondisi dimana tidak adanya pihak yang mengakses suatu resource karena masing-masing pihak menunggu satu sama lain. Pada link tersebut adalah salah satu solusi untuk mengatasi deadlock dengan menerapkan algoritma banker. Namun pada umumnya apabila kita menghadapi permasalahan deadlock di dunia nyata, kita cenderung memutuskan untuk melakukan hard reboot pada mesin kita. Namun yang membuat website ini menarik adalah penyajiannya yang sederhana namun tetap padat. Sehingga cocok bagi kalian yang perlu mendapat point lebih cepat dan ringkas.

Week08

  1. Pre-emptive vs Non Pre-emptive
    Pada link yang saja berikan ini pada dasarnya menjelaskan terkait definisi masing-masing pre-emptive dan non pre-emptive barulah kemudian menjelaskan perbedaan antara keduanya. Perbedaan yang paling mudah diidentifikasi dalam hal ini adalah pada pre-emptive, suatu proses dapat di interrupt sedangkan pada non pre-emptive prosesnya tidak dapat di interrupt. Yang membuat link ini menarik adalah karena perbedaan antara keduanya dipaparkan dalam bentuk point per point, sehingga kita tidak perlu membaca penjelasan secara panjangnya.
  2. Scheduling
    Pada link ini membahas terkait definisi dari scheduling. Kenapa saya sertakan link ini, karena mungkin beberapa dari kalian bertanya-tanya kenapa pada point pertama saya langsung sertakan perbedaan antara pre-emptive dengan non pre-emptive sedangkan tema utama pembahasannya belum diberikan. Maka dari itu saya sertakan lah link ini. Yang membuat website ini menarik adalah dapat dijelaskan secara sederhana dan komprehensif terkait definisi, macam-macam, alur kerja dari scheduling itu sendiri. Penjelasannya pun cukup mendalam, sehingga saya merasa tidak perlu browse sumber lagi untuk mencari missing objectsnya.
  3. Symmetric vs Asymmetric multiprocessing
    Link ini secara umum menjelaskan terkait perbedaan antara symmetric dengan asymmetric. Perbedaan mendasar antara keduanya terletak pada penggunaan processor dalam mengerjakan suatu task. Pada asymmetric, task dikerjakan oleh master processor sedangkan pada symmetric, task dikerjakan oleh individual processor. Maka dari itulah, proses yang dikerjakan oleh symmetric jauh lebih mahal ketimbang proses yang dikerjakan oleh asymmetric. Selain itu dari segi perancangannya, asymmetric jauh lebih mudah untuk dirancang ketimbang pada symmetric. Yang membuat website ini menarik adalah terdapat perbedaan yang disajikan dengan point per point, sehingga saya bisa langsung tahu bagaimana cara kerja keduanya. Selain itu pada website inipun dijelaskan secara sederhana terkait apa itu asymmetric dan symmetric itu sendiri.

Week 09

  1. RAID
    Pada website ini menjelaskan terkait apa itu RAID (Redundant Arrays of Independent Disks), menjelaskan kenapa dapat terjadi redundancy pada data, jenis-jenis RAID, dsb. Yang membuat website ini menarik adalah, pada website ini diberikan contoh gambar serta penjelasan yang menyeluruh terkait masing-masing jenis RAID. Sehingga dapat lebih mudah memahami definisi dan cara kerja dari masing-masing jenis RAID.
  2. NVM (Non-Volative Memory)
    Pada website ini menjelaskan dengan cukup padat dan menyeluruh terkait apa yang dimaksud dengan non-volatile memory. Sederhananya non-volatile memory adalah type memory yang tetap menyimpan data & informasi meskipun tidak ada supply power. Yang membuat website ini menarik adalah penjelasan yang diberikan sangat compact dan to the point. Sehingga cocok untuk mereka yang membutuhkan penjelasan yang cepat dan ringkas.
  3. Scheduling (Disk)
    Pada website ini menjelaskan terkait apa itu scheduling tepatnya pada disk. Seperti yang kita ketahui, terdapat dua jenis process time yakni CPU time dan I/O time. Nah, pada I/O time ini merupakan proses yang melibatkan kinerja dari disk. Yang membuat website ini menarik adalah adanya video yang memberikan penjelasan singkat terkait proses scheduling pada disk serta tambahan penjelasan diluar dari video tersebut. Sehingga hal ini benar-benar membantu sekiranya kalian kurang paham terkait penjelasan yang terdapat pada teks.