SISTEM OPERASI Pertemuan 19
Topik Manajemen Memori : Manajemen memori pemartisian dinamis Perbedaan partisi statis dan dinamis Strategi alokasi memori partisi dinamis
Multiprogramming dengan pemartisian Dinamis Pemartisian statis tidak menarik karena memori terlalu banyak diboroskan proses-proses lebih kecil dibandingkan dengan partisi yg ditempatinya. Dengan pemartisian dinamis maka jumlah, lokasi dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. Proses yg akan masuk ke memori segera dibuatkan partisi untuknya sesuai kebutuhan. Teknik ini meningkatkan utilitas memori Kelemahan pemartisian dinamis adalah : Dapat terjadi lubang-lubang kecil memori diantara partisi-partisi yg dipakai . Merumitkan alokasi dan dealokasi
Contoh Terjadinya Lubang-lubang Kecil Memori Memori untuk Sistem Operasi Proses 0 Proses 1 Proses 2 Proses 3 Proses 4 Proses 5 Proses 6 Proses 1 berakhir dan membebaskan memorinya Memori untuk Sistem Operasi Proses 0 Proses 2 Proses 3 Proses 4 Proses 5 Proses 6
Memori untuk Sistem Operasi Memori untuk Sistem Operasi Proses 0 Proses 3 berakhir dan membebaskan memorinya Proses 5berakhir dan membebaskan memorinya Memori untuk Sistem Operasi Proses 0 Proses 2 Proses 4 Proses 6 Memori untuk Sistem Operasi Proses 0 bebas bebas Proses 2 bebas bebas Proses 4 Proses 5 bebas Proses 6
Lubang-lubang kecil (berwarna putih) diantara blok-blok memori yg digunakan dapat diatasi dengan pemadatan memori (memori completion). Pemadatan memori adalah operasi menggabungkan semua lubang kecil menjadi satu lubang besar dengan memindahkan semua proses agar saling berdekatan.
Lubang-lubang memori dan pemadatan memori Memori untuk Sistem Operasi Proses 0 Proses 2 Proses 4 Proses 6 Memori untuk Sistem Operasi Proses 0 Proses 2 bebas Proses 4 bebas Proses 6 bebas bebas
Kelemahan utama teknik pemadatan memori Memerlukan waktu yang sangat banyak Sistem harus menghentikan sementara semua proses selagi melakukan pemadatan. Hal ini meningkatan waktu tanggapan di sistem interaktif dan tidak mungkin digunakan di sistem waktu nyata.
Proses Tumbuh dan Berkembang Masalah lain pada pemartisian dinamis adalah proses dapat tumbuh berkembang, segmen data proses dapat tumbuh, misalnya karena : Heap u/ data dinamis Stack u/ pemanggilan prosedur dan variabel lokal Solusi masalah ini adalah bila proses bersebelahan dengan lubang memori tidak dipakai, proses tumbuh memakai lubang itu. Masalah menjadi lebih parah bila proses bersebelahan dengan proses-proses lain. Peringkat alternatif penyelesaian adalah : Bila masih terdapat lubang besar yg dapat memuat proses, maka proses dipindah ke lubang memori yg cukup dapat memuat. Satu proses atau lebih di-swap ke disk agar memberi lubang cukup besar u/ proses yg berkembang. Jika proses tidak dapat tumbuh di memori dan daerah swap di disk telah penuh, proses harus menunggu atau ddisingkirkan.
Pencatatan Pemakaian Memori Memori yg tersedia harus dikelola, dilakukan dengan pencatatan pemakaian memori. Terdapat 3 cara utama pencatatan pemakaian memori, yaitu : Pencatatan memakai peta bit (bit map) Pencatatan memakai senarai berkait Pencatatan memakai sistem buddy
Pencatatan Memakai Peta Bit Memori dibagi menjadi unit-unit alokasi, berkorespondensi dengan tiap unit alokasi adalah satu bit pada peta bit (bit map). Nilai 0 pada peta bit berarti unit itu masih bebas Nilai 1 berarti unit digunakan.
Peta Bit untuk Pengelolaan Pemakaian Memori 1 2 3 4 5 6 7 1 A 1 B 2 C 3 4
Masalah Masalah pada peta bit adalah penetapan mengenai ukuran unit lokasi memori, yaitu : Unit alokasi 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 masing-masing proses jika ukuran proses bukan kelipatan unit alokasi Keunggulan Dealokasi dapat dilakukan secara mudah, hanya tinggal meng-set bit yang berkorespondensi dengan unit yg telah tidak digunakan dengan 0. Kelemahan 1. Harus dilakukan penghitungan blok lubang memori saat unit memori bebas 2. Memerlukan ukuran peta bit besar untuk memori yang besar
Pencatatan Memakai Senarai Berkait
Pencatatan Memakai Senarai Berkait Keunggulan : Tidak ada penghitungan blok lubang memori karena sudah tercatat di simpul. Memori yg diperlukan relatif lebih kecil Kelemahan : Dealokasi sulit dilakukan karena terjadi beberapa operasi penggabungan simpul-simpul di senarai
STRATEGI ALOKASI MEMORI Alokasi harus mencari sekumpulan blok memori yg ukurannya mencukupi untuk memuat proses yaitu lubang kosong yang sama atau lebih besar dibanding ukuran memori yg diperlukan proses First-fit-algorithm Manajer memori menelusuri peta bit atau senarai berkait sampai menemukan lubang besar yg memadai u/ ditempati proses. Lubang dibagi dua, untuk proses dan lubang yg tidak digunakan kecuali ketika besar lubang itu tepat sama dengan ukuran yg diperlukan proses Next-fit-algorithm Algoritma ini sama dengan algoritma First-fit-algorithm, hanya penelusuran tidak dimulai dari awal tapi dimulai dari posisi terakhir kali menemukan segmen u/ proses. Best-fit-algorithm Algoritma ini mencari sampai akhir dan mengambil lubang terkecil yg dapat memuat proses. Algoritma tsb menemukan lubang yg mendekati ukuran yg diperlukan Worst-fit-algorithm Algoritmanya selalu mencari lubang besar yg tersedia sehingga lubang dapat dipecah menjadi cukup besar agar berguna untuk proses-proses berikutnya Quick-fit-algorithm Algoritma ini menggunakan pencatatan memori dengan senarai berkait dengan cara mempercepat keempat algoritma diatas dengan mengelola 2 senarai, yaitu : senarai u/ proses dan senarai u/ lubang memori
Sistem Buddy Sistem buddy merupakan algoritma pengelolaan alokasi memori dimana pengalokasian memori untuk suatu proses dilakukan dengan memecah satu blok memori bebas menjadi dua bagian yang sama besar. Pemecahan dilakukan secara rekursif sehingga didapat blok yang besarnya sesuai kebutuhan.
Ilustrasi alokasi memori dengan sistem buddy
Mekanisme alokasi memori dengan sistem Buddy Pada awalnya terdapat satu blok memori bebas berukuran 1 MB Proses A dengan ukuran 80 KB memasuki memori tersebut. Karena tidak tersedia blok berukuran 80 KB, maka blok 1MB dipecah menjadi 2 blok 512 KB. Blok-blok pecahan ini disebut buddies. Blok pertama beralamat mulai dari 0 dan blok lainnya mulai alamat 512. Kemudian Blok 512 KB pertama dipecah lagi menjadi dua blok buddies 256 KB. Blok 256 KB pertama dipecah lagi menjadi dua blok buddies 128 KB. Jika blok 128 dipecah lagi menjadi 2 blok buddies 64 KB, maka blok tersebut tidak bisa memenuhi request proses tersebut yang besarnya 80 KB. Oleh karena itu blok yang dialokasikan untuk proses 80 KB tersebut adalah blok pertama yang berukuran sebesar 128 KB. Proses B dengan ukuran 210 KB memasuki memori tersebut. Karena blok pertama sudah dialokasikan untuk proses A, maka dicarilah blok berikutnya yang masih dalam keadaan bebas. Namun karena blok selanjutnya hanya berukuran 128 KB, maka proses tersebut dialokasikan ke blok berikutnya yang berukuran 256 KB. Proses C dengan ukuran 55 KB memasuki memori tersebut. Sama seperti sebelumnya, karena blok pertama sudah dialokasikan, maka dicarilah blok berikutnya yang masih dalam keadaan bebas. Karena blok kedua belum dialokasikan dan masih berukuran 128 KB, maka blok tersebut dipecah lagi menjadi dua blok buddies berukuran 64 KB. Proses C dialokasikan pada blok 64 KB pertama. Kemudian, proses A dibebaskan. Proses D dengan ukuran sebesar 45 KB datang memasuki memori. Karena blok pertama sudah bebas, maka blok pertama dapat dialokasikan. Blok tersebut dipecah lagi menjadi dua blok buddies berukuran 64 KB. Proses D dengan ukuran 45 KB mendapat alokasi memori sebesar 64 KB. Proses C dibebaskan. Dengan sistem buddy, kernel akan melakukan penggabungan dari pasangan blok buddy yang bebas dengan ukuran k ke dalam blok tunggal dengan ukuran 2k. Maka ketika proses C dibebaskan, blok tersebut akan digabung dengan blok bebas di sebelahnya menjadi blok tunggal bebas sebesar 128 KB. Sama juga halnya ketika proses D dan B di-release.
Contoh skema alokasi memori dengan sistem buddy
Sistem Buddy Kelemahan : Keunggulan : Sistem buddy mempunyai keunggulan dibandingkan dengan algoritma-algoritma yg mengurutkan blok-blok berdasar ukuran. Ketika blok berukuran 2 π dibebaskan, maka manajer memori hanya mencari pada senarai lubang 2 π untuk memeriksa apakah dapat dilakukan penggabungan. Pada algoritma-algoritma lain yg memungkinkan blok-blok memori dipecah dalam sembarang ukuran, seluruh senarai harus dicari. Alokasi dan dealokasi pada sistem buddy dpt dilakukan dengan cepat Kelemahan : Utilisasi memori pada sistem buddy sangat tidak efisien. Masalah ini muncul dari kenyataan semua permintaan dibulatkan ke 2 π terdekat yg dapat memuat. Proses berukuran 35 Kilobyte harus dialokasikan di 64 Kilobyte, terdapat 29 Kilobyte yg disia- siakan. Overhead ini disebut fragmentasi internal karena memori yg disia-siakan a/ internal terhadap segmen-segmen yg dialokasikan.
Alokasi Ruang Swap pada Disk Strategi dan algoritma yg dibahas adalah u/ mencatat memori utama. Ketika proses akan dimasukkan ke memori utama (swap in), sistem dapat menemukan ruang u/ proses-proses itu. Terdapat dua strategi utama penempatan proses yg dikeluarkan dari memori utama (swap out) ke disk, yaitu : Ruang disk tempat swap dialokasikan begitu diperlukan Ruang disk tempat swap dialokasikan lebih dahulu
DUA STRATEGI UTAMA PENEMPATAN PROSES YG DIKELUARKAN DARI MEMORI UTAMA Ruang Disk Tempat Swap Dialokasikan Begitu Diperlukan Ketika proses harus dikeluarkan dari memori utama, ruang disk segera dialokasikan sesuai ukuran proses . Untuk itu, diperlukan algoritma u/ mengelola ruang disk seperti u/ mengelola memori utama. Ketika proses dimasukkan kembali ke memori utama, sgera ruang disk u/ swap didealokasikan Ruang Disk Tempat Swap Dialokasikan Lebih Dahulu Saat proses diciptakan, ruang swap pada disk dialokasikan. Ketika proses harus dikeluarkan dari memori utama, proses selalu ditempatkan ke ruang yg telah dialokasikan , bukan ke tempat βtempat berbeda setiap kali terjadi swap out. Ketika proses berakhir, ruang swap pada disk didealokasikan.