 |
| Gambar Sistem Buddy |
Karena UNIX dimaksudkan untuk tidak tergantung pada mesin, skema memory manajemen nya akan bervariasi dari satu sistem ke yang lain. Versi sebelumya dari UNIX secara langsung menggunakan partisi variable tanpa skema virtual memori. Implementasi saat ini dari UNIX dan Solaris menggunakan virtual memory yang sudah dipage.
Dalam SVR4 dan Solaris, sebenarnya terdapat dua skema manajemen memori yang terpisah. Paging system menyediakan sebuah kemampuan virtual memory yang menyediakan page frame dalam main memory untuk process dan juga menyediakan page frame untuk buffer pada blok disk(piringan harddisk). Walaupun ini adalah sebuah skema manajemen memory yang efektif untuk process pengguna dan I/O disk, skema virtual memori yang sudah dipage kurang cocok untuk mengelola alokasi memori untuk kernel. Untuk tujuan yang berikutnya, sebuah kernel memory allocator digunakan. Kita akan membahas kedua mekanisme sesuai urutan.
Paging System
Struktur Data untuk paged memori virtual , UNIX menggunakan sejumlah struktur data yang dengan sedikit penyesuaian bersifat machine independent :
- Page table: secara khusus, akan ada satu page table per process, dengan satu entry untuk tiap page dalam virtual memory untuk process tersebut.
- Disk block descriptor: Berhubungan dengan tiap page dari sebuah process adalah sebuah entry dalam tabel ini yang menjelaskan salinan disk dari virtual page.
- Page frame data table: menjelaskan tiap frame dari memory yang sebenarnya dan diindeks oleh nomer frame. Tabel ini digunakan oleh algoritma replacement(penggantian).
- Swap-use table: terdapat satu tabel swap-use untuk tiap device swap, dengan satu entri untuk tiap page pada device.
Kebanyakan field yang dijelaskan dalam tabel parameter manajemen memori sudah cukup jelas. Beberapa menyediakan penjelasan yang cukup untuk komentar lebih jauh. Field Age dalam entry tabel page adalah menandakan seberapa lama entri tersebut telah ada sejak sebuah program dirujuk pada frame ini. Namun, jumlah bit dan frekuensi update dari field ini tergatung pada implementasi. Sehingga, tidak ada penggunaan UNIX yang universal dari field ini untuk policy(kebijakan) page replacement.
Field Type of Storage dala disk block descriptor dibutuhkan untuk alasan berikut: ketika file executable pertama kali digunakan untuk menciptakan sebuah process baru, hanya sebuah bagian dari program dan data untuk file tersebut bisa dimasukkan ke dalam memori yang sebenarnya. Kemudian, ketika kesalahan page terjadi, bagian baru dari program dan data dimasukkan. Hanya pada saat pertama kali memasukka,n page virtual memori tersebut dibuat dan ditugaskan pada lokasi pada salah satu device yang digunakan untuk swapping. Pada saat tersebut, OS dikatakan apakah harus membersihkan (diset ke 0) lokasi dalam fram page sebelum loading pertama kali untuk blok program atau data.
Table Parameter Manajemen Memori pada UNIX SVR4
Page Table Entry
Page frame number
Merujuk pada frame dalam memori yang sebenarnya.
Age
Menunjukkan seberapa lama page tersebut telah berada dalam memory tanpa dirujuk. Panjang dan isi field ini tergantung pada processor.
Copy on write
Dinyalakan ketika lebih dari satu proses berbagi sebuah page, sebuah salinan page terpisah harus dibuat untuk semua process yang lain yang berbagi page tersebut. Fiitur ini memungkinkan operasi copy untuk ditunda sampai dibutuhkan dan dihindari dalam kasus dimana fitur tersebut menjadi tidak dibutuhkan.
Modify
Menandakan page telah dimodifikasi
Reference
Menandakan page telah dirujuk. Bit ini akan diset ke 0 ketika page pertamakali dimasukkan dan mungkin secara periodis me-reset algoritma penggantian page.
Valid
menandakan page terdapat dalam main memory.
Protect
Menandakan apakah diperbolehkan melakukan operasi write
Disk Block Descriptor
Swap device number
Nomer logika device dari device sekunder yang menyimpan page yang berpasangan. Nomer ini memungkinkan lebih dari satu devi untuk digunakan untuk swapping.
Device block number
Lokasi Blok dari page pada device yang digunakan untuk swap.
Type of storage
Penyimpanan mungkin berupa unit swap atau file yang bisa dieksekusi. Dalam kasus lainnya, terdapat sebuah indikasi apakah memori virtual yang akan dialokasikan harus dibersihkan terlebih dahulu.
Page Frame Data Table Entry
Page State
Menandakan apakah fram ini tersedia atau mempunyai sebuah page yang berhubungan. Dalam kasus lebih lanjut, status dari page ini dikhususkan: pada device swap, dalam file yang bisa dieksekusi, atau dalam DMA dalam progress.
Reference count
Jumlah process yang merujuk pada page.
Logical device
Device logika yang menyimpan sebuah salinan page
Block number
Lokasi blok dari salinan page pada device logis
Pfdata pointer
Pointer pada pfdata entri tabel yang yang lainnya pada daftar page yang bebas dan pada sebuah antrian hash dari page.
Swap-Use Table Entry
Reference count
Jumlah entri pada tabel page yang merujuk pada sebuah page pada device swap.
Page/storage unit number
Tanda pengenal Page pada unit penyimpanan.