Sistem Operasi
“ Manajemen Memori ”
Oleh : Farhat, ST, MMSI, MSc
1. Pencatatan Pemakaian Memori
Memori yang tersedia harus dikelola, dilakukan dengan pencatatan pemakaian memori. Terdapat dua cara utama pencatatan pemakaian memori, yaitu
Peta Bit (Bit Map)
Memori dibagi menjadi unit-unit alokasi, berkorespondensi dengan tiap unit alokasi adalah satu bit pada bit map.
Nilai 0 pada peta bit berarti unit itu masih bebas. Nilai 1 berarti unit digunakan.
Masalah pada peta bit adalah penetapan mengenai ukuran unit alokasi memori, yaitu : Unit lokasi memori berukuran kecil berarti membesarkan ukuran peta bit. Unit alokasi memori n berukuran besar berarti peta bit kecil tapi memori
banyak disiakan pada unit terakhir jika ukuran proses bukan kelipatan unit alokasi.
Keunggulan :
Dealokasi dapat dilakukan secara mudah, hanya tinggal menset bit yang berkorespondensi dengan unit yang telah tidak digunakan dengan 0.
Kelemahan :
Harus dilakukan penghitungan blok lubang memori saat unit memori bebas. Memerlukan ukutan bit map besar untuk memori yang besar.
Linked List
Sistem operasi mengelola senarai berkait (linked list) untuk segmen-segmen memori yang telah dialokasikan dan bebas. Segmen memori menyatakan memori untuk proses atau memori yang bebas (lubang). Senarai segmen diurutkan sesuai alamat blok. Setiap node list terdiri atas : informasi yang menyatakan adanya proses (p) dan hole (H), lokasi awal dan panjang lokasi.
Keunggulan :
Tidak harus dilakukan perhitungan blok lubang memori karena sudah tercatat di node.
Memori yang diperlukan relatif lebih kecil dibandingkan peta bit. Kelemahan :
Dealokasi sulit dilaksanakan mengingat akan terjadinya penggabungan antara beberapa node.
2. Monoprogramming
Bila program komputer yang dijalankan hanya satu jenis selama proses berlangsung maka dikatakan mode kerja komputer itu adalah monoprogramming. Semua sumber daya sepenuhnya dikuasai proses yang sedang berjalan. Selama komputer itu bekerja
maka memori RAM seluruhnya di kuasai oleh program tersebut. Jadi RAM tidak dapat di masuki oleh program lain. Mode serupa ini di temui pada komputer berbasis DOS. Penempatan program di memori diatur sedemikain rupa sehingga :
a) BIOS selalu di ROM (BIOS)
b) Sistem Operasi di RAM bawah (alamat rendah)
c) Program Aplikasi di RAM tengah (alamat sesudah OS terakhir) d) Data Sementara di RAM atas (alamat sesudah Aplikasi terakhir).
Ciri-ciri :
Hanya satu proses pada satu saat
Hanya satu proses menggunakan semua memori
Pemakai memuatkan program ke seluruh memori dari disk atau tape Program mengambil kendali seluruh mesin
3. Pengalokasian Berurutan (Contigous Allocation)
Terdapat beberapa alasan kenapa multiprogramming digunakan, yaitu : a) Mempermudah pemrogram
Pemrogram dapat memecah program menjadi dua proses atau lebih.
b) Agar dapat memberi layanan interaktif ke beberapa orang secara simultan.Untuk itu diperlukan kemampuan untuk mempunyai lebih dari satu proses dimemori agar memperoleh kinerja yang baik.
c) Efisiensi penggunaan sumber daya.
Bila pada multiprogramming maka proses tersebut diblocked (hanya DMA yang bekerja) dan proses lain mendapat jatah waktu pemroses, maka DMA dapat meningkatkan efisiensi sistem.
d) Eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil. e) Dapat mengerjakan sejumlah job secara simultan.
Multiprogramming dengan Partisi Statis
Multiprogramming dapat dilakukan dengan pemartisian statis, yaitu memori dibagi menjadi beberapa sejumlah partisi tetap. Pada partisi-partisi tersebut proses-proses ditempatkan. Pemartisian statis berdasarkan ukuran partisi-partisinya terbagi dua, yaitu :
1) Pemartisian menjadi partisi-partisi berukuran sama, yaitu ukuran semua partisi memori adalah sama.
2) Pemartisian menjadi partisi-partisi berukuran berbeda, yaitu ukuran semua partisi memori adalah berbeda.
Multiprogramming dengan Partisi Dinamis
Multiprogramming dengan pemartisian statis tidak menarik karena terlalu banyak diboroskan proses-proses yang lebih kecil dibanding partisi yang ditempatinya. Dengan
pemartisian dinamis maka jumlah, lokasi dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. Proses yang akan masuk ke memori segera dibuatkan paritisi untuknya sesuai kebutuhannya. Teknik ini meningkatkan utilitasi memori. Kelemahan pemartisian dinamis adalah :
a. Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai b. Merumitkan alokasi dan dealokasi memori
Sistem Buddy
Sistem buddy merupakan cara mengelola memori utama dengan memanfaatkan kelebihan penggunaan bilangan biner dalam pegalamatan memori. Karakteristik bilangan biner digunakan untuk mempercepat penggabungan lubang-lubang berdekatan ketika proses terakhir atau dikeluarkan. Manajer memori mengelola senarai blok-blok bebas berukuran 1, 2, 4, 8, 16 byte dan seterusnya sampai kapasita memori. Pada komputer dengan 1 Mbyte memori maka dapat terdapat 21 senarai yaitu dari 1 byte sampai 1 Mbyte.
Jika suatu proses berukuran 35 Kbyte, maka proses tersebut akan di tempatkan pada lubang 64 Kbyte, dan akan menyisakan 29 Kbyte. Hal ini sering disebut dengan istilah internal fragmentation, sebab sisi memori yang terbuang tersebut berasal dari segmen internalnya sendiri. Namun, dengan memakai sistem buddy ini, dealokasi proses dapat dilakukan dengan cepat.
Keunggulan :
Sistem buddy mempunyai keunggulan dibanding algoritma-algoritma yang mengurutkan blok-blok berdasarkan ukuran. Ketika blok berukuran 2k dibebaskan, maka manajer memori hanya mencari pada senarai lubang 2k untuk memeriksa apakah dapat dilakukan penggabungan. Pada algoritma-algoritma lain yang memungkinkan blok-blok memori dipecah dalam sembarang ukuran, seluruh senarai harus dicari.
Dealokasi pada sistem buddy dapat dilakukan dengan cepat. Kelemahan :
Utilisasi memori pada sistem buddy sangat tidak efisien. Masalah ini muncul dari dari kenyataan bahwa semua permintaan dibulatkan ke 2k terdekat yang dapat memuat. Proses berukuran 35 kb harus dialokasikandi 64 kb, terdapat 29 kb yang disiakan. Overhead ini disebut fragmentasi internal karena memori yang disiakan adalah internal terhadap segmen-segmenyang dialokasikan.
4. Pengalokasian Tak Berurutan (Non Contigous Allocation)
Salah satu cara mengatasi external fragmentation (munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaan dari proses) adalah membentuk teknik
Paging
Paging adalah teknik yang berorientasi hardware untuk mengelola memori fisik. Paging digunakan agar program yang besar dapat berjalan pada komputer yang mempunyai memori fisik yang kecil. Dalam sistem paging, hardware memori virtual membagi alamat logis menjadi dua bagian, yaitu virtual page number atau disebut juga page number dan word offset dalam page. Hardware melakukan pembagian ini dengan menyekat atau memisahkan bit alamat, yaitu bit high order menjadi page number dan bit low order menjadi offset. Unit memori yang menyimpan page disebut page frame (kerangka frame), atau juga disebut block, untuk membedakan mereka dengan page virtual. Untuk sistem yang baru, page mframe mempunyai jangkauan 512 sampai 4096 byte.
Sebagai bagian dari peta page, sistem pengoperasian memelihara atau mengelola page tabel yang menyimpan berbagai bagian informasi mengenai page program. Page tabel terdiri atas sejumlah page tabel entries, dan setiap page tabel entries menyimpan informasi mengenai page tertentu. Virtual page number berfungsi sebagai offset terhadap page table.
Sistem Paging
Kerugian dan keuntungan paging
1) Jika kita membuat ukuran dari masing-masing pages menjadi besar: Keuntungan: akses memori akan relatif lebih cepat.
Kerugian: kemungkinan terjadinya fragmentasi internal yang sangat besar. 2) Jika kita membuat ukuran dari masing-masing pages menjadi kecil:
Keuntungan: akses memori akan relatif lebih lambat.
Kerugian: kemungkinan terjadinya fragmentasi internal akan menjadi lebih kecil.
Segmentasi
Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut.
Segmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. Segmen dibentuk secara otomatis oleh compiler. Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain.
Secara sederhana segmentasi bisa diartikan sebagai suatu ruang alamat atau segment
yang berada di memori. Segmentasi adalah skema pengaturan memori yang mendukung
Setiap segment berisi alamat 0 sampai maksimum secara linier. Panjang setiap segment berbeda-beda sampai panjang maksimun, perubahan panjang segment terjadi selama proses eksekusi.
Keunggulan :
Segment-segment tersebut saling berhubungan dengan unit-unit program, sehingga segment-segment ideal untuk proteksi dan pemakaian bersama.
Kelemahan :
Segment – segment berukuran bervariasi menyebabkan fragmentasi eksternal dan sulit menyelesaikan pertumbuhan dinamis. Segment-segment tidak memetakan blok-blok disk untuk memori maya secara alami.