Minggu, 10 Mei 2015

Memory Management

Pembagian memory dibutuhkan untuk mengakomodasi proses yang banyak. Memory perlu dialokasikan secara efektif sebagaimana banyaknya proses yang ada di dalam memory.

MEMORY MANAGEMENT REQUIRMENT

Relocation, disimpan di RAM. Programmer tidak tahu dimana program akan ditempatkan pada memory. Sementara proses dieksekusi, itu mungkin saja disapu dari disk dan dikembalikan ke momory utama pada alamat yang berbeda. Referensi memory harus diterjemahkan dalam kode untuk alamat fisik.


Protection. Proses tidak harus boleh mereferense ke alamat memory pada proses yang lainnya. Tidak mungkin untuk mengecek alamat pasti pada program sejak program dilokasikan ulang.


Sharing. Mengizinkan beberapa proses banyak memory yang sama besar. Lebih baik mengizinkan setiap proses untuk mengakses salinan yang sama dari program daripada memiliki salinan yang sama tapi terpisah secara memory.
Logical Organization. Program ditulis dalam bentuk modul, Modul dapat ditulis dan dikompile secara independen. Pada saat pembagian modul yang dishare adalah fungsi yang terdapat pada modul tersebut.
Physical Organization. Memory yang tersedi  untuk program ditambah datanya yang mungkin saja tidak cukup. Programmer tidak perlu tahu berapa memory yang mungkin akan tersedia.

ADDRESSING

Logical. Menunjuk pada alamat memory dari assignment sekarang. Terjemahannya dibuat untuk menjadi alamat fisik.
Relative.  Alamat yang mengekspresikan lokasi yang relatif untuk beberapa titik yang diketahui.
Physical. Secara umum dikenal sebagai alamat asli.

MULTIPROGRAMMING WITH FIXED PARTITION


Fixed memory partition. Memisahkan tumpukan input pada masing masing partisi.
Multiple input queque. Ketika job baru tiba, itu mungkin saja diletakkan kedalam queque untuk partisi yang paling kecil.
Single input queque. Tidak peduli partisi menjadi bebas, job sangat dekat sisi depan dari queque yang sesuai

MEMORY ALLOCATION ALGORITHM

To speed-up search. Memisahkan tabel untuk proses dan lubang. Daftar lubang diurutkan. Best fit = first fit, next fit = unnescesary.
  • Best - fit algorithm. Memilih salah satu blok yang ukurannya paling sesuai dengan permintaan. 
  • First - fil algorithm. Merupakan algoritma yang tercepat.
Buddy System.
Jika ukuran request 2^(u-1)<s<= 2^u, blok akan dialokasikan.
Berikut merupakan contoh dari buddy sistem.




Dead Lock

Suatu dead lock akan terjadi jika setiap proses yang ada saling menunggu satu sama lain.
Sedikit  pengenalan mengenai dead lock. Gambar di bawah akan mengilustrasikan sedikit tentang gambaran saat  dead lock terjadi.


Kondisi kondisi yang ada pada dead lock
  1. Mutual exclusion
    Hanya satu proses yang dapat berjalan.
  2. Hold and wait
    Proses yang menggunakan satu proses dan sedang menunggu proses lain.
  3. Circular wait
    Masing proses saling menunggu.
  4. No Preemption
    Tidak dapat diinterupsi jika proses telah selesai
Gambar di bawah merupakan ilustrasi dalam mengalokasi resource: (a) Holding resource (b) Request a resource (c) Deadlock


Gambar berikut akan menjelaskan momen ketika dead lock dan ketika dead lock dapat dihindari.


Dead lock

No Dead Lock
Strategi ketika terjadi deadlock adalah:
  1. Abaikan masalahnya
  2. Salah satu ada yang mengalah
  3. Pencegahan dilakukan secara dinamis
  4. Pencegahan berdasarkan kondisi yang ada
Ada dua pendekatan dalam hal deadlock avoidance yaitu:
  • Jangan memulai program yang memungkinkna terjadinya deadlock
  • Jangan menjamin penambahan resource jika berakhir dengan deadlock
Pencegahan deadlock dapat dilakukan dengan beberapa cara yaitu:
  1. Mutual exclusion
  2. Hold and wait
  3. Circular wait
  4. No preemption
Tabel di bawah akan meringkas hal hal tentang pencegahan deadlock.