A quick dive into Virtual Memory
Video ini membahas definisi serta konsep dari virtual memory secara singkat. Ketika kita membahas virtual
memory, konsep apa yang pertama kali kepikiran di otak? Kalau dari saya, yang saya pikirkan yaitu virtual memory
merupakan sebuah ilusi, hence “virtual”. Dan memang virtual memory bisa dianggap sebagai sebuah ilusi. Konsep
virtual memory ini berangkat dari permasalahan yang dialami komputer ketika mencoba untuk mengakses RAM lebih
dari yang dimiliki komputer tersebut. Virtual memory membantu untuk membuat layer “indirection” atau mapping,
yang dapat mengarahkan data ke tempat lain (misalnya harddisk) ketika RAM penuh. Menurut saya konsep virtual
memory dimana komputer seolah-olah dibuat mempercayai ilusi bahwa RAM yang dimiliki komputer tersebut unlimited
menarik. Dengan adanya Virtual Memory, komputer dapat menggunakan RAM secara lebih fleksibel.
Table of process? What the heck is
that?
Forum QnA singkat ini membahas mengenai definisi dari process table. Table of process (atau bisa disebut juga
process table) merupakan sebuah struktur data pada RAM yang memberitahukan kita informasi mengenai process /
aktivitas apa saja yang sedang terjadi / dilakukan pada sistem operasi kita. Pernahkah kalian mencoba untuk
akses local host 8080 (ataupun port lainnya) lalu mendapatkan error message “port XXXX already in use”? Waktu
saya mengerjakan tutorial mata kuliah lain, saya sering mendapatkan pesan ini. Setelah GSGS, ternyata port tidak
bisa diakses karena ada dikarenakan sudah ada sebuah process lain yang mengakses port tersebut. Agar saya bisa
menggunakan port XXXX tersebut, saya harus “kill” process yang menghalangi saya dalam menggunakan port tersebut.
Saya melakukannya melalui command netstat, dan dari command tersebut saya bisa melihat process table beserta
informasi lainnya seperti PID (id dari process) dll. Saya menemukan QnA tersebut menarik karena saya jadi
flashback waktu pertama kali tahu mengenai process table.
Memory allocation, a snippet
Artikel ini membahas mengenai memory allocation pada Linux. Dari artikel ini, saya jadi tahu ada yang namanya
kmalloc(), yaitu sebuah function untuk allocate memory pada kernel. Saya juga menjadi tahu bahw ada 5 cara untuk
allocate memory pada kernel (3 cara melalui dynamic allocation, 2 cara melalui static allocation). Sebenernya
isi dari artikel ini masih rada sulit buat saya cerna secara mendalam, namun bagi yang sudah mahir dengan Linux
dan ingin mengetahui apa saja yang perlu diperhatikan sebelum menulis Linux kernel code, dipersilahkan untuk
mengecek artikel tersebut.
Working-set model
Website ini membahas sedikit mengenai working-set model. Working-set model berangkat dari konsep locality, dan
berhubungan dengan frames (yaitu memori yang dibagi rata menjadi beberapa bagian). Yang saya tangkap dari
website ini yaitu working-set model merupakan salah satu method untuk handle thrashing.
All about NUMA and its twins, UMA and
COMA
Website ini menjelaskan mengenai NUMA dan UMA. Multiprocessors dapat dikategorikan menjadi 3 shared-memory
model, yaitu NUMA (Non-uniform Memory Access), UMA (Uniform Memory Access) dan COMA (Cache-only Memory Access).
UMA menggunakan Single memory controller sedangkan NUMA menggunakan Different memory controller.
Thrashing (no it’s not a verb)
Website ini membahas mengenai memory thrashing pada OS. Awalnya saya kira thrashing merupakan sebuah aktivitas
yang “gone wild” pada OS. Ternyata saya salah besar. Thrashing adalah kejadian dimana sistem melakukan swapping
pages ataupun operasi paging lainnya pada virtual memory pada rate yang tinggi. Operasi paging dan/atau swapping
tersebut dilakukan hingga menjadi overuse dan process tidak dapat fokus untuk execute task-nya. Sistem tersebut
menjadi sangat lambat (atau bahkan bisa sampai crash). Memory thrashing terjadi ketika memory lebih banyak
daripada physical memory dan dibutuhkan, namun tidak ada.
Kernel memory and how to allocate it
Website ini membahas mengenai allocating kernel memory. Untuk dapat mengatur free memory yang akan di assign ke
kernel process, kita dapat menggunakan 2 strategi, yaitu slab allocation dan buddy system allocation. Buddy
system mengalokasikan memory dari fixed-size pages. Sedangkan slab merupakan cache yang berisikan commonly-used
objects yang sudah berada pada tahap inisialisasi sehingga dapat digunakan kapanpun oleh kernel. Slab terdiri
dari satu atau lebih page, dan cache (pada slab allocation) terdiri dari satu atau lebih slab.
Pages and frames in OS
Website ini membahas menjelaskan mengenai pages dan frames pada OS. Dari website ini saya mendapatkan Aha!
moment pertama saya pada materi virtual memory. Saya jadi ngeh dan baru tahu bahwa ada yang namanya pages dan
frames (sebelumnya saya kira keduanya berhubungan dengan GUI namun saya salah…). Frames merupakan main memory
yang dibagi rata menjadi beberapa bagian, sedangkan page adalah process yang dibagi menjadi beberapa fragmen
kecil. Pengetahuan ini merupakan basics yang perlu diketahui sebelum terjun bebas ke bab virtual memory
(dikarenakan kedua istilah tersebut sering muncul).
Virtual memory isn’t really what you think it
is
Website ini menjelaskan mengenai kesalahpahaman/miskonsepsi yang sering terjadi tentang virtual memory. Saya
menemukan website ini menarik karena disini dijelaskan apa itu virtual memory sebenarnya. Seringkali saya suka
menyimpulkan definisi suatu konsep setelah membacanya sekilas, dan hal itu terjadi ketika saya mencoba untuk
memahami virtual memory. Memang secara sekilas virtual memory merupakan suatu cara untuk extend memory, tapi hal
tersebut kurang tepat. Virtual memory bukan/kurang tepat bila dianggap sebagai suatu cara untuk extend RAM
dengan menggunakan hard drive sebagai sistem memori tambahan yang lambat (dan hard drive baru akan digunakan
ketika sistem kehabisan memori). Hal tersebut justru disebut dengan swap space.
Pages + Frames = Page
tables
Website ini membahas mengenai page tables. Saya menemukan judul website tersebut menarik, sehingga saya GSGS
mengenai page tables. Saya baru tahu bahwa salah satu tugas dari OS adalah untuk melacak virtual page mana yang
menunjuk ke physical frame mana. Informasi tersebut disimpan dalam suatu page table. Informasi tersebut penting
ketika process sedang request memory.