BAGIAN III
MEMORY
Basic Memory Management
Acorn Electron – 1978
1985
Monoprogramming without Swaping or Paging
Pengelolaan paling sederhana, hanya terdapat satu program pada suatu saat yang
berada pada memory serta OS
3 macam penempatan program bersama OS didalam memory:
Sisa – Waste
– 200K OS di ROM Device driver
di ROM
Proses 1 –
200K User User
Program Program
OS di RAM OS di RAM
Pada monoprogramming, dimanapun OS berada apakah pada memory bagian
bawah/atas pada RAM maupun pada ROM, tetap hanya satu buah program yang
bisa dilayani.
Sebuah program yang mempunyai kebutuhan memory yang lebih besar dari
memory yang tersisa akan ditolak, sedangkan bila terdapat program yang lebih kecil
dari memory yang tersedia akan terjadi waste memory (tidak bisa dimanfaatkan)
Multiprogramming with Fixed Partitions / Static Partitions
Salah satu pengelolaan multiprogramming yang sederhana, membagi memory
menjadi beberapa bagian (partisi) dalam jumlah dan ukuran tertentu
Jumlah partisi dan ukurannya ditentukan pada saat sistem komputer dinyalakan
(start-up) dimana jumlah dan ukuran ini tidak akan berubah sebelum sistem
komputer dimatikan (shut-down)
Pada saat sebuah job datang, job ini dapat diletakkan pada partisi yang cukup besar
untuk menampungnya, sehingga terdapat kemungkinan tidak ditempatinya sebuah
partisi yang sudah disediakan
Untuk peletakan job ke partisi bisa dipakai Separate input queue maupun Single
input queue
825
Partition 4 – 125K
Multiple Input Queue 700
Bila ada
Partition 3 – 300K kebutuhan 30 K
400
maka akan
Partition 2 – 200K menggunakan
Partition 1 – 100K
200
partisi yg mana ?
100
Operating System
0
825
Partition 4 – 125K
Single Input Queue 700
Bila ada beberapa
kebutuhan yg rata-
Partition 3 – 300K
rata di atas 200 K
400 maka akan
Partition 2 – 200K menggunakan
200
Partition 1 – 100K
100
partisi yg mana ?
Operating System
0
Multiprogramming with Variable Partitions / Dynamic Partitions
Jumlah partisi dan ukurannya berubah-ubah tergantung masuk – keluarnya job
Pada saat sebuah job datang, job ini diletakkan pada partisi yang cukup besar untuk
menampungnya dan selanjutnya akan terbentuk partisi baru (kosong) bila terdapat
sisa
Sebagai akibat yang mungkin terjadi adalah terbentuknya partisi-partisi kosong
dengan ukuran kecil yang tersebar di beberapa lokasi dimana kemungkinan besar
partisi ini tidak dapat dimanfaatkan
Pada kondisi seperti ini, dibutuhkan sebuah proses compaction untuk menyatukan
kembali partisi-partisi kecil tersebut
Bila dilakukan proses compaction juga harus dilakukan proses relocation yaitu
penghitungan kembali alamat-alamat partisi maupun alamat-alamat yang diperlukan
oleh job/program
20
E-100 E E
C-160
C C C F-150
B-60
B B B B B B
A-80
A A 80 D-70
D D D
OS OS OS OS OS OS OS OS OS
20
E-100 E
E
C-160
C C C
F-150
B-60
B B B B B
B
A-80
A A D-70
D D D
OS OS OS OS OS OS OS OS OS
Informasi (alamat awal, size, status) setiap partisi disimpan pada sebuah tabel
partisi yang diimplementasikan dengan sebuah linked-list.
Karena sangat mungkin terdapat lebih dari satu partisi yang bisa ditempati oleh
sebuah job sehingga dibutuhkan sebuah algoritma untuk memilih partisi tersebut.
Algoritma-algoritma yang dipakai adalah:
1. First Fit
Pencarian partisi kosong (free/hole) dilakukan dari awal tabel dan bila
ditemukan partisi (yang pertama kali) yang bisa menampung job maka akan
dipakai
Diketahui, ada partisi kosong dengan ukuran masing-masing 40K, 20K, 60K
Ada proses dengan kebutuhan berturut2:
30K, 10K, 5 K
40K, 20K, 60K – dicari dari awal
(1) 40K terbagi 2:
30K – Alocated
10K – Free
Free partition menjadi:
10K
20K
60K
10K menempati partisi 10K
(2) 10K digunakan langsung
Free partition menjadi:
20K
60K
5K Menempati partisi 20K
(3) 20K terbagi 2:
5K – alocated
15K – Free
Free partiton menjadi:
15K
60K
2. Next Fit
Pencarian partisi kosong (free/hole) dilakukan dari entry tabel yang sedang
ditunjuk (posisi pointer) sampai dengan ditemukan partisi yang bisa
menampung job maka akan dipakai
Bila sampai dengan akhir tabel tidak ditemukan partisi kosong, maka akan
dilanjutkan ke awal tabel sampai ke posisi akhir pointer kembali
Diketahui, ada partisi kosong dengan ukuran masing-masing 20K, 40K, 60K
Ada proses dengan kebutuhan berturut2:
30K, 10K, 5 K
(1) 30K menempati partisi 40K, terbagi menjadi:
30K – Alocated
10K – Free
Free partiotion menjadi:
20K
10K
60K
(2) 10K menempati partisi 10K
Free partition menjadi:
20K
60K
(3) 5 K menempati partisi 60K, terbagi menjadi:
5K – Alocated
55K – Free
Free partition:
20K
55K
3. Best Fit
Pencarian partisi kosong dari awal s/d akhir tabel
Partisi kosong yang menghasilkan sisa paling kecil akan dipakai
Diketahui, ada partisi kosong dengan ukuran masing-masing 20K, 40K, 60K
Ada proses dengan kebutuhan berturut2:
30K, 10K, 5 K
(1) 30K menempati 40K
20K
10K
60K
(2) 10K menempati 10K
20K
60K
(3) 5K menempati 20K
15K
60K
4. Worst Fit
Pencarian partisi kosong dari awal s/d akhir tabel
Partisi kosong yang menghasilkan sisa paling besar akan dipakai
Diketahui, ada partisi kosong dengan ukuran masing-masing 20K, 40K, 60K
Ada proses dengan kebutuhan berturut2:
30K, 10K, 5 K
(1) 30K menempati 60K
20K
40K
30K
(2) 10K menempati 40K
20K
30K
30K
(3) 5K menempati 30K
20K
25K
30K
Pada algoritma Best Fit dan Worst Fit akan memakan waktu proses yang cukup
lama apabila jumlah partisi banyak
Diatasi dengan cara mengurutkan secara Ascending (untuk Best Fit) dan
descending (untuk Worst Fit) kemudian diterapkan algoritma First Fit.l