Manajemen Memori
Menggali seluk-beluk Manajemen Memori:
- Pahami dasar-dasar memori, ikatannya (Binding), Dynamic Loading, Dynamic Linking, dan Overlay.
- Bedakan antara alamat logis dan fisik.
- Swapping: apa itu dan bagaimana cara kerjanya?
- Pelajari alokasi berurutan, apa saja keuntungannya?
- Jangan lupa pelajari alokasi tak berurutan dan manfaatnya
Dasar Konsep dalam Memori
- Memori jadi wadah penyimpanan instruksi/data dari program
- Memori jadi pusat aktivitas pada PC, karena setiap tindakan yang bakal dijalankan, harus lewat memori dulu dong!
- Supaya bisa dijalankan, program harus dipindah ke memori dan jadi satu proses.
Dasar-dasar manajemen memori membahas:
- Pelacakan penggunaan memori (siapa dan seberapa besar)pemilihan program yang akan dimuat ke memori, serta alokasi dan dealokasi memori fisik untuk program atau proses dalam address space.
- Tugas utama sistem operasi adalah mengatur penempatan banyak proses pada memori, sehingga memori dapat digunakan secara efisien dan dapat memuat banyak proses secara bersamaan.
KONSEP BINDING
- Sebelum melaju, program berada di dalam disk. Sehingga, ketika program mulai dijalankan, ia butuh tempat khusus dalam memori fisik.
- Address Binding adalah teknik di mana instruksi dan data (yang awalnya berada di disk sebagai file executable) dicocokkan dengan alamat memori tertentu.
- Alamat (address) pada program asli biasanya berupa alamat simbolik. Compiler memerlukan pengikatan (binding) antara alamat simbolik dengan alamat relokasi.
Hayo, ngerti gak sih bagaimana Sistem Operasi menempatkan program di memori? Nih, ada beberapa tahapannya: pertama, Kompilasi dan Linking akan menerjemahkan semua simbol data berdasarkan alamat acuan absolut. Selanjutnya, proses relokasi akan memetakan program ke lokasi memori. Kemudian, jika program sudah berada di memori, maka semua alamat lojik dalam program harus dikonversi ke alamat fisik. Ada dua cara nih untuk relokasi alamat, yaitu secara statis yang dilakukan sebelum program dijalankan atau dinamis yang dilakukan pada saat referensi setiap instruksi atau data. Gimana, pada paham kan sekarang?
LODING DINAMIS
- Dalam loading dinamis, suatu rutin tidak dimuat sampai saat dipanggil. Semua rutin disimpan pada disk sebagai format relocatable load.
- Mekanisme dasarnya:
- Program utama dimuat terlebih dahulu dan dijalankan.
- Ketika suatu rutin memerlukan panggilan ke rutin lain, rutin yang dipanggil diperiksa apakah sudah dimuat. Jika belum, loader linking relocatable dipanggil untuk memuat rutin yang diminta ke memori dan mengubah tabel alamat program yang mencerminkan perubahan tersebut.
Menunda Linking hingga Waktu Eksekusi
Program-program pengguna tidak perlu menyalin library sistem dengan Dynamic Linking. Library sistem digunakan bersama-sama, mengurangi penggunaan ruang memori, sehingga satu rutin library dapat digunakan secara bersama oleh sekelompok proses. Contohnya, DLL Win32, yang menggunakan stub (potongan kode kecil yang menunjukkan cara memuat library jika rutin tidak tersedia saat itu). Ketika stub dijalankan, ia memeriksa apakah rutin tersebut sudah ada dalam memori (diakses oleh proses lain yang berjalan). Jika belum ada, maka rutin tersebut dimuat, dan stub menempatkan dirinya pada alamat rutin dan mengeksekusi rutin tersebut.
Untuk menghidupkan Dynamic Linking, OS memerlukan dukungan tambahan, misalnya:
- Jika ada proses saling dilindungi di memori utama, maka OS akan mengecek apakah rutin yang diminta berada di luar alamat.
- Beberapa proses diberikan izin untuk mengakses memori di alamat yang sama.
- Berkas dynamic linking menggunakan ekstensi .dll, .sys, .drv.
OVERLAY
- Simpan hanya instruksi dan data yang dibutuhkan pada saat itu saja di memori
- Overlay digunakan ketika ukuran proses melebihi memori yang diberikan
- Overlay tidak memerlukan dukungan khusus dari sistem operasi
- Pengguna dapat menerapkan overlay secara penuh menggunakan struktur file sederhana
- Sistem operasi memberi tahu hanya jika terdapat masalah I/O yang tidak biasa.
Mari mengintip Sepintas Alamat Ruang Fisik dan Logika
- Alamat Logika, alias Alamat Virtual, adalah sihir CPU yang menghasilkan alamat
- Alamat Fisik, sebaliknya, adalah alamat sesungguhnya di memori
- Namun, perlu sebuah terjemahan (atau transalasi) agar alamat logika dan fisik bisa berbicara satu sama lain
- Nah, itulah tugas MMU (Memory Management Unit), yang jadi perangkat keras andalan untuk memetakan alamat logika ke fisik.
Dalam pengaturan MMU yang keren ini:
- Ada alat register yang bisa diatur oleh CPU: setiap tugas punya set data register itu (diunduh ke PCB)
- Harga dalam basis register / penyesuaian dihitung ke setiap alamat penggunaan tugas ketika dijalankan di memori
- Program pengguna hanya peduli dengan alamat logika mereka saja
SWAPPING
• Meskipun proses harus berada di memori untuk dieksekusi, tapi proses dapat di swap (tukar) sementara keluar memori ke backing store dan kemudian membawanya kembali ke memori untuk eksekusi lanjutan
• Penukaran dapat terjadi pada lingkungan dengan multiprogramming dengan penjadwalan CPU Round Robin atau Priority.
• Bila waktu kuantum habis atau proses yang datang mempunyai prioritas lebih tinggi, maka memory manager akan mulai swap out proses yang telah selesai atau proses yang yang prioritasnya lebih rendah dan swap in proses lainnya ke memori
Mari mengintip cara kerja si mesin ajaib! Ketika si sistem mengeluarkan sebuah proses, ia akan menukar kembali ke memori yang sama seperti sebelumnya. Tentu saja, untuk menukar memerlukan sebuah backing storage. Ketika si jago CPU memilih untuk mengeksekusi proses, si sistem operasi memanggil dispatcher untuk tampil di panggung. Dispatcher kemudian memeriksa siapakah proses selanjutnya di ready queue, yang ada di memori atau tidak. Jika tidak dan si memori sedang penuh sesak, si dispatcher akan mengganti proses yang ada di dalam memori dan menukarnya dengan calon bintang baru.
Virtual memori adalah trik ajaib yang memungkinkan sistem operasi untuk mengelola lebih banyak proses daripada memori fisik yang ada. Jadi, saat si sistem kehabisan memori, ia bakal meluncurkan beberapa memori ke hard disk. Tapi jangan khawatir, saat si sistem membutuhkan kembali memori yang disimpan di hard disk, ia akan secepat kilat mengembalikannya ke dalam memori fisik.
Teknik ini juga memungkinkan setiap proses memiliki area memori virtual yang unik, sehingga tidak ada perang memori antara mereka. Seru kan? Dengan teknik virtual memori, beberapa proses bahkan dapat berbagi memori dan menghemat memori fisik yang ada!
Namun, seperti keajaiban lainnya, teknik ini memiliki kelemahan. Si sistem bisa jadi lebih lambat karena harus memproses data tambahan. Selain itu, akses ke data pada hard disk juga bisa jadi lebih lambat, yang bisa mempengaruhi performa si sistem.
Mari kita bahas tanggung jawab serius Sistem Operasi dalam mengendalikan sumber daya sistem. Salah satunya adalah pengaturan memori. Ada dua jenis pengalokasian memori, yaitu pengalokasian berurutan untuk yang rapih dan pengalokasian tidak berurutan untuk yang fleksibel.
Alokasi Memori yang Berkelanjutan
Di dalam dunia multiprogramming, memori utama perlu memperuntukkan tempat untuk sistem operasi dan sejumlah proses pengguna. Memori harus mampu menampung kedua-duanya. Agar memori dapat digunakan secara optimal, memori dibagi menjadi dua partisi:
- Bagian untuk sistem operasi yang berkedudukan tetap di memori.
- Bagian untuk Proses Pengguna.
Dalam alokasi memori yang berkelanjutan, terdapat dua jenis partisi yang dapat digunakan:
- Partisi Tunggal (Single Partition)
- Partisi Banyak (Multiple Partition)
Pada skema keren ini, OS duduk manis di memori bawah dan tugas pengguna diberi tempat duduk di memori atas. Biar aman dari serangan, ada register relokasi dan register limit yang berfungsi. Si register relokasi punya data alamat fisik terendah, sementara si register limit punya rentang alamat logika. Penting banget untuk menjaga keamanan sistem dengan memastikan alamat logika lebih kecil dari register limit.
Mari bahas tentang manajemen alokasi memori yang kontigu.
Alokasi Dengan Partisi Ganda
- Memori memiliki blok-blok berukuran beragam, tersebar di seluruh memori
- Proses dialokasikan pada blok kosong yang cukup besar untuk memuatnya
Sistem operasi mengelola informasi terkait alokasi memori, termasuk:
- Partisi yang telah dialokasikan
- Partisi yang masih kosong
Contoh alokasi ganda dapat dilihat di sini:
Partisi Banyak (Multiple Partition)
Terdapat 2 skema dalam alokasi Multiple Partition, yaitu:
- Partisi Ukuran Tetap (MFT)
Memori dibagi menjadi beberapa blok dengan ukuran yang sama. Setiap partisi hanya dapat menampung satu proses. IBM OS/360 menggunakan Multiprogramming with a Fixed Number of Task (MFT) untuk mengimplementasikan skema ini. Namun, MFT memiliki masalah sebagai berikut:
- Program bersifat dinamis dalam alokasi dan dealokasi memori
- Memori yang dialokasikan mungkin lebih besar dari yang diminta, sehingga menyebabkan fragmentasi internal
- Partisi Ukuran Variabel (MVT)
Memori dibagi berdasarkan permintaan dari proses yang ada. Pengelolaan memori menjadi semakin penting dengan adanya daftar partisi yang digunakan, yang bebas, dan lain-lain. Namun, MVT memiliki masalah sebagai berikut:
- Terjadi fragmentasi eksternal, yaitu ruang memori yang bebas tidak saling berdekatan
- Terdapat lubang di antara proses yang tidak dapat digunakan karena proses yang ingin menggunakannya terlalu besar
MVT OS: Strategi Alokasi Memori yang Efektif
Tabel MVT OS menyimpan daftar bagian memori yang tersedia dan yang sedang digunakan. Berikut adalah langkah-langkah dalam strategi alokasi memori MVT OS:
- Semua memori awalnya tersedia untuk proses pengguna sebagai satu blok besar (large hole).
- Ketika proses memerlukan memori, sistem akan mencari hole yang cukup untuk proses tersebut.
- Setelah ditemukan, memory manager akan mengalokasikan sejumlah memori yang dibutuhkan dan menyimpan sisanya untuk permintaan selanjutnya.
Contoh kasus:
- Tersedia memori 2560 Kb, dengan 400 Kb digunakan untuk OS dan sisanya 2160 Kb digunakan untuk proses pengguna.
- Terdapat 5 job (P1 s/d P5) pada input queue.
- Penjadwalan FCFS digunakan untuk memuat job ke memori.
- Penjadwalan CPU menggunakan Round Robin dengan quantum time = 1 untuk penjadwalan job yang sudah ada di memori.
Dalam MVT, terdapat beberapa hole untuk ukuran yang berbeda. Alokasi memori dinamis dapat dilakukan untuk memenuhi permintaan ukuran n dari hole yang tersedia. Beberapa algoritma yang dapat digunakan antara lain:
- First Fit: alokasi hole pertama yang memenuhi permintaan.
- Best Fit: alokasi hole terkecil yang memenuhi permintaan.
- Worst Fit: alokasi hole terbesar.
Algoritma First Fit dan Best Fit lebih efektif dibandingkan Worst Fit dalam hal menurunkan waktu dan utilitas penyimpanan. First Fit juga lebih cepat dibandingkan dua algoritma lainnya. Namun, pencarian hole harus dilakukan secara keseluruhan, kecuali jika ukuran hole sudah terurut.
Dari beberapa algoritma di atas, First Fit dan Best Fit terbukti lebih unggul dibandingkan Worst Fit dalam mengurangi waktu dan memaksimalkan penggunaan penyimpanan. Tidak hanya itu, First Fit juga terbukti lebih cepat.
Sistem Buddy: Alokasi Memori Keren yang Awet
Sistem Buddy adalah teknik andalan untuk mengelola memori utama yang kerap bermain-main dengan bilangan biner (2^k; k = 0,1,2 …). Contohnya: ketika memori utama memiliki slot raksasa 1 MB dan proses A yang butuh 90 KB ingin bergabung, dia akan diselamatkan ke lokasi terdekat, 128 KB. Kalau slot itu penuh, blok gede 1 MB-nya akan dibagi dua, masing-masing jadi 512 KB. Padahal, sebenarnya kamu tahu, teknik ini bisa jadi lebih keren kalau dibeberapa kasus, namun tak dipungkiri, ia bakal awet dan handal selamanya.
Mengatasi Fragmentasi Internal dan Eksternal
Jangan biarkan lubang-lubang kecil di antara blok-blok memori mengacaukan kinerja sistemmu! Tapi jangan khawatir, ada trik jitu untuk mengatasi masalah ini, yaitu dengan melakukan memori compaction. Caranya adalah dengan menggabungkan semua lubang kecil menjadi satu lubang besar dan memindahkan semua proses agar mereka saling berdampingan. Dengan trik ini, kamu bisa menyingkirkan fragmentasi internal dan eksternal yang mengganggu.
Alokasi Non-Kontigu dalam Paging
Paging merupakan solusi atas masalah fragmentasi eksternal. Memori fisik dibagi menjadi blok-blok dengan ukuran tetap yang disebut “frame”, sedangkan memori logis dibagi menjadi blok-blok dengan ukuran yang sama yang disebut “page”. Untuk menjalankan program yang terdiri dari n page, sistem harus mencari n frame kosong untuk memuat program tersebut. Untuk menerjemahkan alamat logis ke alamat fisik, digunakan tabel halaman (page table) yang berisi alamat basis dari setiap page pada memori fisik. Alamat yang dibangkitkan oleh CPU dibagi menjadi dua bagian: nomor page (p) dan page offset (d). Nomor page digunakan sebagai indeks ke tabel halaman, sedangkan page offset dikombinasikan dengan alamat basis untuk menentukan alamat fisik yang dikirim ke unit memori.4
Yuk, simak fakta-fakta seru mengenai ukuran page:
- Ukuran page pada PC ditentukan oleh si hardware
- Ukuran page biasanya adalah bilangan 2 pangkat k, kisaran k antara 9 dan 13
- Ukuran page normalnya berada di rentang 512 hingga 8192, tergantung dari arsitektur PC yang digunakan.
Segmentasi
Segmen merupakan suatu metode pengaturan memori yang memungkinkan pengguna untuk memvisualisasikan memori tersebut. Setiap segmen diberi nama dan memiliki panjang yang berbeda. Dalam perspektif pengguna, segmentasi mempermudah dalam mengakses memori.
Wahai kawanku, dengarkanlah! Aku akan mengupas habis tentang Segmentasi Alokasi Nonkontigu. Jadi begini, Segmentasi adalah cara kerja memori di mana kita bisa melihat isian memori yang bisa dipakai. Di sini, setiap segmen punya nama dan panjang masing-masing. Jadi kita bisa tahu persis nih berapa memori yang masih bisa digunakan. Keren kan?!
- Pemotongan wilayah
- Mainan teknologi:
- Mengikuti peta alamat fisik dari tabel segmen.
- Setiap tabel segmen punya base dan limit untuk kawasan tertentu.
- Dukungan Perangkat Keras:
- Pemetaan alamat fisik melalui tabel segmen. Setiap tabel segmen memuat base dan limit.