Umur Memori Virtual

Kernel berperan penting dalam manajemen memori virtual, dimana kernel akan membentuk ruang alamat yang baru di memori virtual dalam dua kondisi:

  1. Proses menjalankan suatu program dengan system call exec(). Ketika system call exec() dipanggil oleh proses untuk menjalankan suatu program, maka proses akan diberikan ruang alamat virtual yang masih kosong. Kemudian routine-routine akan bekerja me-load program dan mengisi ruang alamat ini.
  2. Pembentukan proses baru dengan system call fork(). Intinya menyalin secara keseluruhan ruang alamat virtual dari proses yang ada. Langkah-langkahnya adalah sebagai berikut:
    1. kernel menyalin descriptor vm_area_struct dari proses induk,
    2. kernel membentuk tabel halaman untuk proses anak,
    3. kernel menyalin isi tabel halaman proses induk ke proses anak,
    4. setelah fork(), maka induk dan anak akan berbagi halaman fisik yang sama.

Di samping itu, ada kasus khusus yang harus diperhatikan, yaitu ketika proses penyalinan dilakukan terhadap blok di memori virtual yang bersifat private, dimana blok tersebut dipakai lebih dari satu proses selain proses induk dan anak yang memang berbagi halaman yang sama dan ada proses yang hendak menulis blok tersebut. Jika ini terjadi maka akan dilakukan mekanisme Copy-On-Write, yang berarti mengubah dan memakai salinannya.