os211

W04:

  1. What is virtual memory? – Gary explains
    Apa sih yang dimaksud dengan virtual memory? Video ini yang dengan sangat baik menjelaskan hal tersebut. Virtual memory adalah konsep di mana memori yang suatu program pikir dia pakai tidak mesti sama dengan memori fisik yang sebenarnya dia sedang pakai. Misalkan suatu program ingin memakai alamat memori dari 0-266140, maka pada realitanya program tersebut akan dialokasikan untuk memakai alamat 524880-7854320 dan 13107200-20436640. Mapping tersebut biasanya dilakukan oleh MMU (Memory Management Unit) milik OS. Mengapa hal ini perlu dilakukan? Tanpa melakukan virtualisasi, penggunaan memori dapat berjalan tidak efisien. Misalkan bila suatu program A memakai alamat memori 0-266140, kemudian program B memakai 266141-524880. Ketika program A selesai, program C berjalan dan mengambil tempat 0-166140. Karena hal itu akan terdapat gap tak terpakai di memori tersebut yang disebut memory fragmentation. Selain itu virtual memory juga berguna untuk menghindari overwriting.

  2. Virtual Memory byDavid Black-Schaffer
    Playlist youtube ini menjelaskan secara lebih detail mengenai virtual memory dan bagaimana cara kerjanya. Dalam MMU terdapat suatu mapping antara address yang diinginkan oleh program dan alamat asli yang akan dialokasikan. Mapping ini disebut sebagai “page table”. Page table berisi mapping antara satu range address ke range address yang lain. Agar translasi dan akses memori dapat berjalan lebih cepat, maka harus terdapat suatu cache di antara program dan MMU yang bernama Translation Lookaside Buffer (TLB). TLB ini bekerja seperti cache yang kita pelajari di POK dan TLB ini sendiri pun juga berinteraksi dengan cache yang terdapat di komputer.

  3. Endianness Explained With an Egg - Computerphile
    Apa itu little endian dan big endian? Little endian adalah cara menyimpan suatu data binari dengan menulis least-significant bit dari data tersebut terlebih dahulu dari kiri ke kanan. Sebaliknya, big endian menuliskan most-significant bit terlebih dahulu layaknya bagaimana manusia menulis angka binari. Terdapat cerita lucu di bagian komentar video ini seseorang menceritakan pengalamannya dengan masalah endian. Dia diminta membuat driver untuk kamera Sony, tetapi selalu gagal hingga berminggu-minggu hingga akhirnya dia sadar bahwa penyebab kegagalannya adalah endian yang programnya pakai dan endian di kamera Sony ternyata berbeda.

  4. Intel Chips Store Numbers Backwards - Little Endian vs Big Endian
    Video ini menjelaskan mengenai perbedaan dan kelebihan serta kekurangan little vs big endian. Little endian lebih mudah “dicerna” oleh komputer karena proses aritmatik biasanya memproses least-significant bit terlebih dahulu baru kemudian ke most-significant bit. Ini adalah salah satu alasan kenapa Intel memakai sistem little endian. Kerugian dari little endian tentu saja adalah sistem ini lebih sulit untuk dibaca ketimbang big endian. Selain itu, bit shifting lebih mudah dilakukan dengan big endian. Menurut pembawa video ini, big endian sebenarnya lebih baik ketimbang little endian untuk zaman ini karena pada jaringan internet, big endian lah yang dipakai karena mudah untuk dibaca manusia. Menurut dia juga, kekuatan komputasi dan teknologi sekarang juga membuat komputer sudah dapat memproses big endian.

  5. What is a File Format?
    Mungkin ini adalah salah satu video yang paling “mind-blowing” bagi saya di minggu ini. Pembawa video ini menunjukkan sebuah file bernama “test.zip.pdf” yang bila dibuka oleh browser akan menghasilkan sebuah pdf, tetapi ketika kita menghapus “pdf” dari nama filenya, dia berubah menjadi sebuah file zip yang isinya adalah sebuah file txt berisi “This is a test”. Ternyata kita dapat memanipulasi suatu file sehingga dapat dibaca oleh banyak program dan menghasilkan hasil yang berbeda-beda di setiap programnya. Bagaimana bisa? Singkatnya suatu program hanya akan membaca bagian yang penting baginya saja dari suatu file dan membiarkan bagian yang tak penting. Dengan hal ini kita dapat menumpuk isi dari suatu file agar dapat dibaca oleh banyak program. Hal ini sering dimanfaatkan oleh pembuat virus untuk mengecoh anti-virus. Anti-virus akan membaca file berisi virus dan menyatakan file itu aman padahal ada bagian dari file tersebut yang berisi virus.

  6. C Programming Tutorial 98 - Working with Structs (Part 1)
    Video pengenalan mengenai apa itu Struct di C. Dari yang saya lihat di video ini, struct sangat mirip dengan class di Java, hanya saja tidak ada fitur-fitur java class di struct seperti methods dan inheritance. Menurut yang saya baca, kita dapat memanipulasi struct sedemikian rupa untuk melakukan OOP di C.

  7. What is Disk Fragmentation? Disk Fragmentation and Defragmentation Explained.
    Apa itu disk fragmentation? Disk fragmentation adalah konsep di mana kita dapat memecah-mecah suatu data untuk ditaruh di disk agar disk dapat menyimpan data tersebut secara efisien. Konsep ini saya lihat mirip dengan virtualisasi memory di mana data dapat dipecah-pecah dalam penyimpanan baik di memori atau disk agar kapasitas memori atau disk terpakai secara efisien tanpa ada gap yang kosong. Namun, CPU akan lebih sulit dan lama dalam membaca disk bila kita menggunakan fragmentation karena banyak data yang terpecah-pecah. Untuk menyelesaikan masalah ini, kita dapat melakukan defragmentation yang akan “merapikan” data-data yang ada di disk agar tidak terpecah-pecah sehingga lebih mudah untuk dibaca.

  8. Static vs. Shared Libraries
    Library adalah file yang berisi kumpulan kode yang dipakai untuk menjalankan pekerjaan-pekerjaan umum bagi komputer sehingga para developer tidak perlu membuat kode-kode tersebut dari awal. Lantas apa perbedaan shared dan static library? Shared library (.so, .dll) dipakai oleh program saat runtime dengan cara menyerahkan suatu pekerjaan ke file library tersebut sehingga setiap program berjalan, file library tersebut harus ada untuk menemani jalannya program tersebut. Berbeda dengan itu, static library dipakai oleh program saat compile time sehingga cukup sekali program mengambil kode dari library dan setelah itu, eksekusi program tidak membutuhkan library lagi karena program tersebut sudah mengambil kode dari library. Kelemahan static library adalah ukuran program dapat menjadi sangat besar bila program tersebut membutuhkan banyak library.

  9. What is Cheat Engine? What does it do? How does it work?
    Sejak zaman kejayaan PB hingga sekarang saya sering mendengar istilah ini, tetapi tidak tau bagaimana cara kerjanya.Ternyata cheat engine adalah sebuah program yang digunakan untuk mengedit nilai-nilai dalam memori yang digunakan oleh game. Misalnya bila kita ingin mengganti skill point kita dari 200 menjadi 9999999, cheat engine akan melakukan scan pada memori kita untuk mencari alamat mana yang menyimpan nilai dari skill point kita. Bila kita dapat menemukannya, kita tinggal mengganti nilainya saja. Kalau dipikir-pikir program seperti ini juga sepertinya berguna tidak hanya untuk cheat, tetapi juga untuk melakukan debugging ketika kita membuat sebuah game atau aplikasi.

  10. Contiguous Allocation
    Bagaimana cara OS mengalokasikan penggunaan memori? Salah satu caranya adalah alokasi memori secara contiguous. Alokasi memori yang contiguous akan menyambungkan serangkaian potongan blok dari suatu data di memori. Hal ini Berbeda dengan alokasi non-contiguous yang memasukkan data dari ke dalam blok-blok yang tidak bersambung. Dengan menggunakan alokasi memori contiguous, kita dapat mengalokasikan memori secara simpel dan data akan mudah dibaca. Namun, file akan sulit diperbesar jika kita menggunakan contiguous allocation.