VIII. Manajemen Memory - VIII. Manajemen Memory
- Pada uniprograming, main memory dibagi menjadi dua yaitu untuk sistem operasi (resident monitor, kernel) dan program yang dieksekusi sedangkan dalam multiprograming, main memory yang digunakan user dibagi-bagi untuk beberapa proses. Tugas pembagian ini yang disebut manajemen memori
- Fungsi manajemen memori
- Mengelola informasi memori yang dipakai dan tidak dipakai
- Mengalokasikan memori dari proses yang telah selesai
- Mendealokasikan memori dari proses yang telah selesai
- Mengelola swapping antar main memory dan virtual
Manajemen Memori
Sistem Khusus untuk pemakai tunggal Alokasi absolut Nyata
Partisi tetap (Main memory) Relokasi Sistem multiprograming
Partisi dinamis Paging murni Maya (Virtual memory) Sistem multiprograming
Segmentasi murni Kombinasi paging dan segmentasi
VIII.1. Fixed Memory
- Main Memory dibagi menjadi sejumlah partisi tetap dan pada partisi tersebut ditempatkan proses-proses
- Berdasarkan ukurannya dapat dibedakan menjadi partisi dengan ukuran sama dan partisi dengan ukuran berbeda
Operating system
512 k 512 k 512 k 512 k 512 k 512 k 512 k 512 k
Operating system
512 k 128 k 256 k 320 k 576 k 768 k
1 M 512 k Kesulitan partisi tetap dengan ukuran yang sama
- Bila program ukurannya lebih besar dibanding partisi yang tersedia maka tidak dapat dimuatkan. Pemrogram harus mempersiapkan overlay sehingga hanya bagian program yang benar-benar dieksekusi yang dimasukkan ke main memory
- Untuk program yang sangat kecil dibanding ukuran partisi akan terjadi ketidakefisien yang disebut fragmentasi internal
- Untuk partisi tetap dengan ukuran yang sama, penempatan proses di main memory dilakukan dengan trivial, selama ada partisi yang tersedia proses dapat di load ke partisi tersebut.Bila sudah penuh digunakan swapping.
- Untuk partisi tetap dengan ukuran berbeda dua cara penempatan proses kedalam partisi :
1. Satu antrian proses untuk tiap partisi
2. Satu antrian proses untuk seluruh partisi
- Proses ditempatkan pada partisi yang ukuranya paling kecil yang dapat memuat proses tersebut
Operating system 512 k
128 k 256 k 320 k 576 k 768 k
1 M 512 k
New Process (b) Single process queque
Operating system 512 k
128 k 256 k 320 k 576 k 768 k
1 M 512 k
New Process (a) One process queque per partition
Masalah di dalam partisi tetap
- Relokasi Penempatan proses sesuai alamat fisik yang bisa berubah tergantung penempatannya dalam partisi
- Proteksi Suatu proses tidak boleh masuk ke alamat partisi yang telah berisi proses lain
Partisi Dinamik
- Partisi yang digunakan memiliki panjang dan jumlah yang bervariasi
- Saat suatu proses dibawa ke main memory, proses tersebut dialokasikan dengan ukuran memori yang tepat sama dengan yang diperlukan
- Berikut ini contoh efek partisi dinamik pada main memory 1 MB
Process space Operating
System 128 k
896 k (a) Process space Operating
System 128 k
System 128 k
Process space Operating
System 128 k
Process 2 224 k
Process 2 224 k Operating
Process 3 64 k
(d) Process 1 288 k 320 k
(c) Process 1 352 k 320 k
(b) Process 1 576 k 320 k
(e) Process 1 288 k 320 k
224 k Process 3 64 k Operating
System 128 k (f) Process 1
288 k 320 k 128 k Process 3
64 k Process 4 96 k Operating
System 128 k (g) 288 k
320 k 128 k Process 3 64 k Process 4 96 k
Operating System 128 k (h) Process 2
288 k 224 k 128 k Process 3
64 k Process 4 96 k 96 k
Operating System 128 k
- (a) mula-mula memori kosong hanya ada sistem operasi
- (b, c, d) proses 1, 2, 3 diload ke main memory
Pada (d) terdapat “hole” di akhir memori yang tidak cukup untuk proses 4
- (e) Karena belum ada proses yang ready, proses 2 diswap sehingga cukup untuk proses 4
- (f) Proses 4 berukuran lebih kecil dari proses 2 sehingga terbentuk hole lain
- (g) Kemudian proses 2 menjadi ready, karena ukuran memori tersedia belum cukup maka proses 1 yang diswap
- (h) proses 2 menempati ruang memori dan menghasilkan hole baru
- Partisi dinamik ini menghasilkan beberapa lubang
(hole) di memori yang semakin lama memori akan semakin ter-fragment dan penggunaan memori berkurang. Fenomena ini disebut Fragmentasi Eksternal
- Teknik untuk mengatasi Fragmentasi Eksternal dengan
Compaction (pemadatan). Dari waktu ke waktu sistem operasi menggeser proses-proses sehingga menjadi berdampingan (contiguous) dan free memory dijadikan satu blok. Misal dari gambar (h) akan diperoleh free memory 256 k sebagai hasil dari compaction
- Kesulitan dari compaction adalah prosedurnya menyita waktu prosesor dan diperlukan kemampuan relokasi dinamik
RELOCATION
- Penempatan suatu proses yang telah diswap kembali ke main memory. Pada partisi tetap suatu proses yang diswap balik (swap in) akan menempati partisi yang sama seperti sebelum diswap. Ini merupakan contoh relokasi sederhana. Saat pertama diload, seluruh acuan memori relatif dalam bentuk code akan digantikn alamat main memory absolut yang ditentukan oleh base address dari proses yang diload
- Sedangkan pada single-process queue untuk unequal-size partition dan partisi dinamik suatu proses bisa menempati partisi yang berbeda pada saat diswap balik ke main memory atau saat terjadi pergeseran (shift). Sehingga alamat suatu proses tidak tetap di main memory.
Untuk itu dibedakan beberapa jenis alamat
- Logical Address :
Acuan pada suatu lokasi memory yang tergantung pengerjaan data ke memory, penerjemahan ke alamat fisik harus dilakukan terlebih dahulu sebelum memori diakses
- Relative Address :
Contoh khusus dari logical address, alamat dinyatakan sebagai suatu lokasi yang relatif pada titik yang diketahui, biasanya awal dari program
- Physical Address/Absolute Address :
Lokasi aktual di main memory
Penerjemahan ke alamat fisik di main memory
Relative Address Process Control Block Base Register
Program Adder Bound Register Comparator Absolute address Data
Interrupt to Operating System Stack
• Saat suatu proses ditugaskan menjadi status running, base register diisi
alamat awal proses di main memory. Juga terdapat sebuah bound
register yang menunjukkan lokasi akhir dari program, nilai akhir ini
harus diatur saat program diload atau process image diswap masuk (ke main memory)- Pada saat proses dieksekusi, alamat relatif dilibatkan. Alamat relatif terdiri dari isi instruction register (IR), alamat instruksi yang terjadi di dalam cabang dan instruksi pemanggilan, dan alamat data yang terjadi saat instruksi load dan store
- Tiap-tiap alamat relatif mengalami 2 langkah manipulasi oleh prosesor :
1. Nilai di dalam base register ditambahkan pada relative address untuk menghasilkan absolute address
Jika alamatnya di dalam range nilai ini maka instruksi eksekusi akan dikerjakan dan jika tidak akan dibangkitkan interrupt ke sistem operasi berupa error
Placement Algorithm
- Diperlukan algoritma penempatan untuk menutup lubang yaitu pada saat load atau swap proses ke main memory terdapat beberapa blok memori bebas yang ukurannya cukup maka sistem operasi akan memutuskan yang mana yang akan dialokasikan
- Terdapat 3 algoritma penempatan : best-fit, first-fit dan next-fit
- Best-fit memilih blok memori yang ukurannya sangat dekat dengan ukuran proses yang dibawa
- First-fit mulai dengan menscan memori dari awal dan memilih blok memori yang pertama ditemui yang memiliki ukuran yang cukup besar
- Next-fit mulai menscan memori dari lokasi terakhir penempatan dan memilih blok berikutnya yang
8 k 8 k First-fit
12 k 12 k 22 k
6 k Best-fit Block terakhir yang 18 k
2 k dialokasi 8 k
8 k 6 k 6 k 14 k
14 k Next-fit
Algoritma yang terbaik adalah First-fit meskipun akan menghasilkan memori bebas berukuran kecil diawal memori. Yang kedua adalah Next-fit dan yang paling buruk adalah algoritma Best-fit karena akan menghasilkan memori bebas
berukuran kecil yang banyak sehingga compaction harus
lebih sering dilakukanReplacement Algorithm
- Pada sistem multiprogramming menggunakan partisi
dinamik terdapat suatu waktu saat seluruh proses di main
memory dalam status block dan meski telah dilakukan compaction masih kekurangan memori untuk penambahan proses baru - Maka ada proses yang diswap dari main memory untuk proses baru atau proses dengan status ready suspend. Pemilihan proses yang akan diswap memerlukan algoritma
Simple Paging
- Main memory dipartisi menjadi potongan memory berukuran relatif kecil dan setiap proses juga dibagi menjadi potongan kecil berukuran sama dengan potongan memory yang disebut page.
- Page ini dapat ditempatkan pada potongan main memory yang disebut frame.
- Berikut ini contoh penggunaan page dan frame
14 (f) Load Proses D
12
5
4
3
2
1
A.0 A.1 A.2 A.3 C.0 C.1 C.2 C.3
14 (d) Load Proses C
13
11
7
10
9
8
7
6
5
4
3
2
6
8
A.0 A.1 A.2 A.3 B.0 B.1 B.2 C.0 C.1 C.2 C.3
5
13
12
11
10
9
8
7
6
4
9
3
2
1
A.0 A.1 A.2 A.3 D.0 D.1 D.2 C.0 C.1 C.2 C.3 D.3 D.4
14 (e) Swap B out
13
12
11
10
1
14 (c) Load Proses B
1
12
4
3
2
1
(a) 15 page tersedia A.0 A.1 A.2 A.3
Number Main memory
14 Frame
13
11
6
10
9
8
7
6
5
4
3
2
5
7
13
4
12
11
10
9
8
7
6
5
3
8
2
1
A.0 A.1 A.2 A.3 B.0 B.1 B.2
14 (b) Load Proses A
13
12
11
10
9
- (a), (b), (c), (d) proses A (4 page), B (3 page), C (4 page) menempati frame yang kosong
- (e) kemudian proses B suspended dan diswap out dari main memory
- Sistem Operasi menyediakan page table untuk setiap proses, page table ini berisi lokasi frame untuk tiap page dari proses. Di dalam program setiap logical address berisi nomor page dan offset
- Menggunakan logical address (page number, offset) dan page table, prosesor akan menentukan physical address (frame number, offset)
- Pages table untuk contoh di atas
4
1
5
13 7 -----
1
14
1 1 -----
1
8
2
6
2
2
2
2
9 3 -----
11
3
3
10
12
3
4 Process B Free Frame Page Table List Process A
Process C Process D Page Table Page Table Page Table
- Untuk memudahkan ukuran page dan ukuran frame ditentukan sebagai kelipatan 2. Sehingga relative address menjadi sama dengan logical address. Contoh : digunakan pengalamatan 16 bit dan ukuran page 1 k = 1024 byte. Relative address 1502 yang dalam bentuk biner : 000001 0111011110 Dengan ukuran page 1 k diperlukan offset 10 bit sehingga 6 bit sisa untuk nomor page. Sehingga
6
program maksimum dapat terdiri dari 2 = 64 page berukuran 1 kb
000001 0111011110 (a) partitioning User
Process 2700 byte Relative Address
000001 0111011110 (b) Paging (page size = 1 k) Page 0
Page# = 1, Offset = 478
Logical Address
Page 2 Page 1 478 Internal fragmentation
- Relative Address 1502 sesuai dengan offset = 478 dan page = 1
000001 0111011110 1502
1 Langkah-langkah menterjemahkan alamat untuk alamat n + m bit
1. Ekstrak page number dari n bit paling kiri pada logical address
2. Gunakan page number untuk mencari frame
number (k) di page table m3. Physical Address awal = k x 2 Physical Address dari byte yang diacu : m k x 2 + offset
Simple segmentation
- Program dan datanya dibagi menjadi beberapa segmentasi. Ukuran tiap segmentasi tidak perlu sama. Logical Address yang menggunakan segmentasi terdiri dari segment number dan offset.
Logical Address 0001 001 011110000 Segment 0 750 byte
752 Segment 1 1950 byte
Langkah menerjemahkan alamat n+m bit
1. Ekstrak segment number dari n bit paling kiri pada logical address
2. Gunakan segment number ini untuk mencari awal physical address dari segmentasi pada segment table
3. Bandingkan offset (m bit paling kanan) dengan panjang segment. Jika offset lebih besar dari panjang segment berarti alamat tidak absah (valid)
4. Alamat fisik diperoleh dengan menjumlahkan awal physical address dengan offset A. PAGING 16 bit logical address 6 bit page 10 bit number offset
0000010111011110 000101 1 000110 000110 0111011110
2 011001 16 bit Physical Address
16 bit logical address 4 bit 12 bit segment offset number
0001001011110000 Process Segment Table Length Base 001011101110 0000010000000000
- 1 011110011110 0010000000100000 0010001100010000 16 bit Physical Address