kemudian manajemen memori, ini adalah bagian yang dikerjakan sistem operasi untuk mengatur penggunaan memori utama atau yang sering kita sebut sebagai RAM pada sistem operasi unit programming atau single programming, memori akan menjadi dua bagian yaitu yang pertama bagian yang digunakan oleh sistem operasi atau resident monitor pada sistem batch kemudian bagian satunya digunakan oleh program yang sedang dieksekusi Programnya kan cuma satu, berarti cukup satu bagian saja. Kemudian pada multi-programming, user ini adalah bagian dari memori yang dibagi untuk mengakomodasi proses yang aktif. Jadi pembagiannya bermacam-macam. Ada yang mirip seperti unit programming, ada yang pembagian cara yang lain.
Nah ini adalah beberapa problem pada manajemen memori. Yang pertama adalah ketika program-program ini mengakses I.O. kecepatan I.O kita tahu jauh lebih lambat dari CPU bahkan dalam sistem multi programming sekalipun sebenarnya CPU bisa menganggur dalam waktu yang cukup lama seperti contoh yang sebelumnya dimana CPU itu ada dalam kondisi menganggur karena semua program yang sedang dieksekusi itu mengakses I.O jadi CPU menunggu siapa yang lebih dulu selesai mengakses I.O selama menunggu itu CPU tidak terpakai solusinya yang pertama meningkatkan memori utama atau meningkatkan jumlah memori utama ya sehingga banyak program yang bisa dijalankan nah solusi ini mahal kemudian ini juga bisa membuat program-program yang dibuat itu ukurannya semakin besarnya contoh kasus sekarang saja ya memori semakin besar kapasitasnya RAM ya semakin besar tapi program yang kita pakai itu juga semakin besar ukurannya program-program yang biasa kita pakai, mungkin 5 tahun yang lalu ukurannya cuma 500 MB sekarang sudah 2 GB untuk versi yang berbeda versi yang terbarunya, misalnya sekarang sudah 2 GB program yang sama, 5 tahun yang lalu ukurannya cuma 500 MB solusi yang kedua adalah menggunakan konsep swapping, ini cara meningkatkan ukuran memori tanpa harus membeli atau memasang memori utama tambahan swapping ini masuk ke penjadwalan jangka menengah dimana proses yang sedang berjalan atau sedang ada di memori utama itu disimpan pada hard disk disini di swap, proses yang sedang ada di memori itu di swap ke storage atau ke disk ketika proses selesai atau ada proses yang sudah selesai di memori utama sehingga memori utamanya kosong maka proses yang ada di disk tersebut yang sudah di swap itu bisa dikembalikan lagi ke memori utama jadi swap ini terjadi ketika proses tersebut tidak dalam kondisi running, masuk dalam kondisi waiting biasanya di-swap dari memori utama ke storage kemudian ketika RAM nya itu kosong kemudian proses ini yang masuk storage itu masuk kondisi ready maka akan dikirim kembali ke memori utama dalam bentuk proses, masih dalam bentuk proses kemudian jika tidak ada proses dalam memori yang siap atau masuk kondisi ready maka akan di-wrap out Semua proses-proses tadi akan diblokir ke antrian menengah. Jadi proses tadi akan, misalnya proses-proses yang dalam kondisi waiting, tidak ada dalam kondisi siap, itu akan dipindah ke storage atau ke disk. Namanya swap out.
Kemudian swap in adalah ketika proses masuk kondisi siap atau ready. Nah maka proses-proses ini akan dipindah kembali ke memori utama, namanya swap in. Problemnya swap in ini adalah proses IO, di mana proses IO itu butuh waktu yang cukup lama.
Ini problem lagi sebenarnya. ini gambaran swapping, pada pencatualan yang sederhana hanya ada long term scheduler dan short term scheduler dimana program-program yang dieksekusi ini masuk pencatualan jangka panjang dari hard disk atau storage ke memori utama, kemudian setelah selesai memori utama dikosongkan hanya saja program yang bisa dieksekusi itu sebatas ukuran memori utama yang diminta adalah semua program bisa dieksekusi walaupun memorinya sudah penuh maka menggunakan penjadwalan jangka menengah disini ketika program dieksekusi ini penjadwalan jangka panjang masuk ke memory kemudian ketika program dalam kondisi waiting terlalu lama misalnya waitingnya maka proses tersebut akan dipindah namanya swap out ke storage namanya intermediate queue atau antrian menengah kemudian ketika proses ini masuk kondisi ready maka akan di swap in kembali masuk ke memori utama kembali sehingga bisa dieksekusi oleh CPU kalau sudah selesai baru proses ini dihapus dari memori utama dan tujuannya adalah proses-proses yang tidak butuh eksekusi CPU ini masuk ke storage ke harddisk misalnya sehingga memorinya kosong banyak atau kalau proses ini ada di kondisi wait dia tidak butuh eksekusi CPU dan tidak perlu ada di memori utama ini adalah partitioning memori, memori utama maksudnya ini adalah membagi memori menjadi beberapa bagian untuk dialokasikan ke beberapa proses termasuk proses sistem operasi itu sendiri. Partisi ini bisa berukuran tetap, ada juga partisi yang tidak tetap atau variasi ukurannya. Nah, ini adalah partisi yang ukurannya tetap. Jadi, ketika sistem operasi berjalan atau komputer dinyalakan, RAM-nya atau memori utamanya akan dibagi-bagi menjadi beberapa bagian.
Bagian paling awal tentu saja digunakan oleh sistem operasi. Bagian yang lain itu akan digunakan oleh program aplikasi. Nah, ini pemartisiannya.
ada dua macam untuk ukuran tetap ada yang ukurannya sama semua ada yang ukurannya bervariasi yang bervariasi memiliki kelebihan jadi kalau ada proses yang ukurannya kecil maka akan ditempatkan di partisi yang kecil kalau ada proses yang ukurannya besar maka akan ditempatkan di partisi yang besar ini ditempatkan di partisi yang mendekati maksimal kemudian ada partisi berukuran dinamis dimana ukurannya tidak tetap disesuaikan dengan proses yang sedang menggunakan memori tersebut ini meminimalkan adanya hole atau bagian yang tidak terpakai kalau tadi misalnya pada partisi ini programnya semuanya 6M di partisi sebelah kiri maka setiap partisi akan ada hole 2M yang tidak bisa di gunakan jadi banyak yang tidak terpakai disini juga bisa saja terjadi banyak hole ketika ini sudah terpakai semua disini ada 4M program, disini ada program 4M lagi maka akan mengakibatkan hole yang sangat besar atau banyak partisi dinamis meminimalkan adanya hole-hole tersebut nah ini misalnya kasus memori berukuran 64M 8M nya digunakan oleh sistem operasi atau resident monitor kemudian kalau ada proses berukuran 20M maka akan dibuatkan partisi untuk proses tersebut berukuran 20 MB, sisanya 36 MB. Kemudian kalau ada proses 2, proses berikutnya 14 MB juga sama, sisanya tidak dipartisi. Kemudian kalau ada proses ketiga, 18 MB, maka sisanya tinggal 4 MB. Jadi hole yang diciptakan sedikit dan relatif kecil. Gimana kalau misalnya proses 2 itu selesai?
maka akan muncul hole, ini problem juga di tengah ukurannya 14M kalau di total jadi 18M kemudian ada proses baru proses 4 8M maka dia akan menempati ruang yang cukup yaitu ruang 14M maka akan muncul hole 6M berikutnya proses 1 selesai problem lagi, ada 20M partisi kosong kalau di total, totalnya bisa sampai 30M tapi tidak bisa digunakan oleh program yang ukur yang 30 Mega karena terpisah-pisah kemudian proses dua jalan lagi muncul hole 6 Mega 6 Mega 2 dan 4 Mega 1 berarti totalnya ada 16 Mega tapi dalam bentuk hole-hole yang terpisah ini terjadi fragmentasi namanya solusi dari fragmentasi adalah dengan menggabungkan beberapa hole ini sehingga membentuk satu hole yang ukurannya besar pada kasus ini bisa misalnya 16 Mega digabung proses 4 dinaikkan proses 3 dinaikkan sehingga hole-nya menjadi satu tempat yaitu 16 Mega nah ini mirip seperti kalau di storage hard disk ya dari Windows itu ada istilah namanya defragment atau defragmentasi itu pemadatan dimana ruang-ruang yang terpakai itu dikumpulkan menjadi satu tempat sehingga hole-hole yang kecil-kecil ini akan terkumpul menjadi satu hole yang berukuran besar. Kemudian penggunaan memori, selain menggunakan partisi ada yang menggunakan istilahnya paging. Ini yang banyak digunakan oleh sim operasi-sim operasi sekarang. Itu memecah memori ke beberapa ukuran yang sama dengan bentuk potongan-potongan yang kecil, istilahnya namanya patch frame.
Kemudian proses yang berjalan itu juga dipotong-potong lagi, dibagi ke ukuran yang kecil, yang dinamakan sebagai patch. Nah, ukuran patch frame dan ukuran patch itu sama. Kemudian proses yang berjalan, yang ada di memory, itu patch-nya itu tidak harus ditempatkan di page frame yang berurutan terus cara menggabungnya bagaimana? nanti akan ada yang namanya tabel page atau page table yang digunakan untuk melacak posisi-posisi page di frame-frame memory nah ini contohnya, ini adalah proses A proses A itu ada 4 page yang dipecah-pecah jadi 4 page page 0 sama page 3 nah kemudian disini memori utama yang sedang digunakan.
Nah disini adalah potongannya ya kebetulan ini frame 13 mulainya, frame 16 dan 17 serta 19 itu sedang digunakan oleh proses lain. Yang kosong disini ada frame 13, 14, 15, 18 dan 20. Nah saat proses A dieksekusi maka proses A itu membutuhkan 4 frame. Frame ini bisa menggunakan frame-frame yang kosong.
misalnya page 0 ditempatkan di frame 18, page 1 di frame 13, page 2 di frame 14, dan page 3 di frame 15 kalau kita lihat tidak berurutan, page 0 di 18 di bawah, page 1 di atas cara mengurut ini bagaimana? disini ada yang namanya page table yang menandakan setiap setiap pagenya ada di frame berapa ini page 0 di frame 18 page 1 di frame 13 2 di frame 14 dan page 3 di frame 15 ini alokasi frame pada page table pengaksesannya pengaksesan program-program yang ada di memorinya jadi nanti akan menggunakan alamat yang ada di page table jadi nanti alamatnya ada dua alamat fisik dan alamat logis alamat fisik ini adalah alamat sebenarnya dari masing-masing page alamat logis ini adalah alamat yang ada di page table misalnya alamat logisnya adalah 1 ini page 1, alamat logisnya 1 page 0, alamat logisnya tetap 0 jadi nanti si program, si operasi atau si program aplikasi ketika dipanggil ya alamatnya menggunakan alamat logis nanti oleh sistem operasi akan diterjemahkan, sistem operasi akan mencari lokasi page-page tersebut di frame mana menggunakan alamat fisik kemudian virtual memory atau memory virtual, mungkin sering dengar ya ini adalah penggunaan memory yang lebih banyak dari yang diperlukan sehingga perlu alokasi khusus pada disk, ya ini mirip seperti swapping hanya saja memory virtual itu sudah menggunakan konsep paging sehingga menggunakan domain paging dimana nanti paging ini akan menggunakan beberapa storage untuk menyimpan patch-patch yang sedang tidak dalam kondisi running patch-patch yang ada yaitu berisi proses-proses tadi potongan proses ini hanya dimasukkan ke memory utama saat diperlukan atau saat kondisi ready ketika sebuah program itu membutuhkan sebuah patch dan pagenya tidak ada di memori utama maka akan terjadi patch fault kalau terjadi patch fault, maka proses yang ada di memori sekunder atau storage itu harus dipindah ke memori utama bagaimana kalau memori utamanya sudah penuh? patch fault, harus dipindah ke memori utama kalau memori utama penuh, bagaimana?
maka harus di replace patch-patch atau proses yang ada di memori utama itu harus dipindah ke storage ke hard disk, baru memori atau patch yang dibutuhkan itu bisa dipindah ke memori utama dalam demand paging ini bisa terjadi dengan tracing, itu mengeluarkan dan memasukkan patch selama berkali-kali ini sangat sering terjadi, patch fault ini kalau kita menggunakan storage hard disk biasa ya, hard disk piring cakram itu juga bisa memperlambat kinerja, faultnya tinggi kalian bisa lihat di task manager, mungkin kalau lambat mungkin salah satunya penyebutnya adalah patch fault memory dilihat saja grafik patch fault nya seberapa tinggi, kalau semakin tinggi itu pasti membuat kinerja komputer lambat karena saat terjadi patch fault berarti sistem operasi harus memindah proses atau patch-patch yang ada di hard disk ke memory berarti ada pembacaan storage file di storage yaitu file dari si patch atau dari proses ini kalau patch volume rendah pasti lancar-lancar saja ini adalah struktur patch table pada memory virtual dimana di page table disini akan selain memiliki alamat frame juga terdapat penanda apakah labelnya ada di memori atau tidak kemudian berikutnya adalah segmentasi, ini adalah cara lain membagi-bagi alamat memori nah ini mirip dengan paging dan bisa dikombinasikan pada segmentasi ini menjadikan programmer untuk melihat memori sebagai ruang alamat yang banyak pada segmentasi ini alamat-alamat ini bisa dilihat oleh programmer beda dengan demand paging atau paging yang alamatnya tidak bisa dilihat oleh programmer pada segmentasi ini tidak memerlukan alokasi khusus karena sistem operasi akan mengatur alokasinya kemudian alamat ini juga bisa di-share antar proses tapi juga bisa diberikan proteksi khusus nah ini adalah beberapa model-model pembagian atau pengelolaan memori oleh sistem operasi mungkin kalau kalian menggunakan sistem operasi Windows itu pendekatannya lebih ke demand paging dimana nanti ada patch yang tersimpan di storage yang defaultnya biasanya ada di drive C kemudian akan terjadi patch fault ketika banyak sekali patch-patch yang dibutuhkan ternyata patchnya ada di storage atau di hard disk oke sekian dulu materi tentang sistem operasi Terima kasih. Assalamualaikum warahmatullahi wabarakatuh.