Manajemen Memori Pertemuan 14 & 15 Sistem Operasi (CSG3E3)
Manajemen Memori Permintaan Pengelolaan Memori Partisi Memori Paging relocation logical organization protection physical organization sharing Partisi Memori Partisi tetap Sistem Buddy Partisi tidak tetap Relocation Memori computer adalah salah satu sumber daya utama computer. Tanpa adanya memori komputer, Paging Segmentasi
Manajemen Memori Manajemen memori dilakukan dengan cara membagi-bagi memori untuk mengakomodasi banyak proses Manajemen memori dilakukan untuk menjamin agar setiap proses yang ready dapat segera memanfaatkan processor time Manajemen Memori Tujuan dari manajemen memori adalah untuk membuat
Requirement Manajemen Memori Terdapat 5 requirement manajemen memori: Relocation Protection Sharing Logical organization Physical organization
Relocation Programmer tidak tahu di bagian memori yang mana program akan ditaruh pada saat dieksekusi Pada saat program dieksekusi, dimungkinkan program tersebut akan di-swap ke disk dan kemudian diambil lagi dari disk untuk ditaruh di memori dengan lokasi yang berbeda dengan lokasi sebelumnya (terjadi relocation) Diperlukan adanya translasi antara alamat program dengan alamat fisik memori
Teknik Relocation (1) Mengapa relocation penting dalam manajemen memori ? Jika suatu program di-load ke memori, maka alamat lokasi memori (alamat absolut atau alamat fisik) yang akan ditempati harus ditentukan Alamat absolut suatu program dapat berubah-ubah sebagai akibat: Swapping Compaction
Teknik Relocation (2) Jenis-jenis alamat data: Alamat Logical Alamat suatu word relatif terhadap titik referensi tertentu Harus dilakukan translasi terhadap alamat fisik Alamat Relatif Alamat yang menunjukkan lokasi relatif terhadap alamat awal suatu program Dapat terdiri dari: Alamat instruksi dalam pencabangan Alamat instruksi call Alamat data Alamat Fisik Alamat mutlak/absolut Merupakan alamat sebenarnya dari suatu memori
Teknik Relocation (3) Alamat relatif dan alamat absolut:
Teknik Relocation (4) Gambar mekanisme penempat-an program ke memori:
Teknik Relocation (5) Jenis-jenis register yang digunakan: Base register Alamat awal suatu proses (tiap proses berbeda-beda) Ditentukan oleh sistem operasi Bound register Alamat akhir suatu proses Bound register = base register + panjang proses Kedua alamat di-set pada saat proses di-load atau kembali dari swap Setiap proses mempunyai nilai base register dan bound register sendiri-sendiri
Teknik Relocation (6) Mekanisme relocation: Alamat base register ditambahkan dengan alamat relatif sehingga diperoleh alamat absolut
Protection Suatu proses tidak boleh mengakses lokasi memori proses yang lain tanpa ijin Lokasi program di memori tidak tentu alamat mutlak pada saat compile tidak dapat diketahui Penanganan proteksi memori diserahkan kepada prosesor (secara hardware), bukan bagian sistem operasi (software) Sistem operasi tidak dapat memperkirakan penggunaan semua referensi memori dari setiap program
Teknik Protection Gambar mekanisme pemeriksa-an alamat relatif apakah valid atau tidak:
Teknik Protection dengan Relocation (6) Mekanisme relocation: Alamat base register ditambahkan dengan alamat relatif sehingga diperoleh alamat absolut Alamat yang diperoleh dibandingkan dengan nilai-nilai pada bound register Jika nilainya berada di dalam bound instruksi dilanjutkan Jika nilainya di luar bound dihasilkan interrupt: Sistem operasi harus mengambil tindakan lebih lanjut Merupakan mekanisme proteksi terhadap pengaksesan data proses yang lain
Sharing Harus dimungkinkan suatu lokasi memori dapat diakses oleh lebih dari satu proses (secara legal) Beberapa proses yang memerlukan data yang sama, maka tidak perlu setiap proses meng-copy data dari disk ke memori, cukup sebuah copy saja
Logical Organization Main memory dikelompokkan secara linier atau berdimensi satu yang berupa ruang alamat yang terdiri dari deretan byte atau word Sebagian besar program dibuat dalam bentuk modul penempatan di memori tidak linier diperlukan pengaturan secara lojik Kelebihan program dalam bentuk modul: Modul dapat ditulis dan di-compile secara terpisah Setiap modul dapat diberi tingkatan proteksi berbeda-beda (read-only, execute only) Module dapat di-share oleh beberapa proses
Physical Organization Memory dikelompokkan menjadi memori utama dan memori sekunder Diperlukan metode yang mengatur aliran data dari memori utama ke memori sekunder dan sebaliknya Pengaturan tersebut dilakukan oleh sistem operasi, bukan programmer, karena: Programmer tidak tahu berapa ruang memori yang tersedia pada saat program dijalankan Bila ruang memori yang tersedia tidak cukup untuk menampung program dan data sistem dapat melakukan overlay Overlay adalah menempatkan beberapa bagian modul/program pada area memori yang sama secara bergantian
Teknik Manajemen Memori Beberapa teknik manajemen memori yang ada: Partisi Partisi tetap (fixed) Partisi berukuran sama Ukuran partisi berbeda-beda Partisi dinamis Paging sederhana Segmentasi sederhana Virtual-memory (akan dibahas secara khusus) Virtual-memory paging Virtual-memory segmentation
Partisi Memori Tetap (fixed) (1) Sebelum digunakan memori terlebih dahulu dipartisi (ukuran partisi tidak berubah) Model ukuran partisi: Partisi berukuran sama: Setiap proses yang ukurannya lebih kecil atau sama dengan ukuran partisi dapat menempati partisi tersebut Jika semua partisi telah terisi, maka sistem operasi akan melakukan swap terhadap proses yang sudah tidak aktif Dimungkinkan adanya program yang ukurannya lebih besar daripada ukuran partisi yang tersedia programmer harus merancang program dengan overlay Penggunaan memori sangat tidak efisien Misal bila ukuran partisi adalah 8 MB, maka program berukuran 2 MB akan menyisakan ruang memori sebesar 6 MB Partisi berukuran tidak sama: Lebih baik daripada partisi berukuran sama: Penggunaan memori lebih efisien Tidak perlu overlay
Partisi Memori Tetap (fixed) (2) Jenis partisi tetap: Equal-size Unequal-size
Partisi Memori Tetap (fixed) (3) Algoritma penempatan (placement) Partisi berukuran sama Algoritmanya sederhana, partisi yang mana saja asalkan kosong boleh ditempati, karena ukurannya sama Partisi berukuran berbeda Setiap proses ditempatkan pada partisi yang menyisakan ruang bebas terkecil Terdapat 2 model antrian: Satu antrian – satu partisi Satu antrian – banyak partisi
Partisi Memori Tetap (fixed) (4) Model antrian:
Partisi Memori Tetap (fixed) (5) Satu partisi - satu antrian Setiap proses antri pada partisi yang berukuran sedikit lebih besar atau sama dengan ukuran proses Kelebihan: + Dapat meminimalisir ruang memori yang terbuang Kekurangan: – Diperlukan penjadualan antrian – Ada kemungkinan efisiensi secara keseluruhan tidak optimal Misal pada model partisi di slide hal 10 tidak ada proses yang berukuran di antara 12 – 16 MB partisi 16 MB tidak akan pernah digunakan Banyak partisi - satu antrian Setiap proses dapat menempati di sembarang partisi yang sedang tidak digunakan Dipilih partisi yang menyisakan ruang memori terkecil Bila seluruh partisi telah diisi dilakukan swapping
Partisi Memori Tetap (fixed) (6) Kelebihan: + Mudah diimplementasikan + Overhead sistem operasi hanya sedikit Kekurangan: – Tidak efisien dalam penggunaan memori akibat terjadi fragmentasi internal Fragmentasi internal: sisa ruang memori yang terjadi jika ukuran proses lebih kecil daripada partisi yang digunakan Jumlah maksimum proses yang aktif adalah tetap dan terbatas (bergantung jumlah partisi)
Partisi Memori Dinamis (1) Jumlah dan ukuran partisi tidak tetap (variabel) Ukuran partisi sama dengan ukuran proses yang akan menempatinya untuk pertama kali atau sesudah pemadatan (compaction) tidak terjadi fragmentasi internal Dapat terjadi fragmentasi eksternal Fragmentasi eksternal: sisa ruang memori yang terjadi jika ukuran proses lebih kecil daripada ruang memori yang disediakan (dibebaskan) Solusi: dilakukan compaction sehingga sisa-sisa ruang memori terkumpul menjadi satu sisa ruang memori menjadi besar
Partisi Memori Dinamis (2) Contoh partisi dinamis
Partisi Memori Dinamis (3) Keterangan: a. Tersedia 64 MB memori, 8 MB untuk sistem operasi b. Proses 1 aktif dan membutuhkan 20 MB c. Proses 2 aktif dan memerlukan 14 MB d. Proses 3 aktif dan memerlukan 18 MB, sisa memori tinggal 4 MB e. Proses 2 selesai f. Proses 4 aktif dan memerlukan 8 MB ditempatkan di ruang memori bekas proses 2 terjadi fragmentasi eksternal sebesar 6 MB g. Proses 1 telah selesai tersedia ruang bebas sebesar 20 MB h. Proses 2 aktif lagi dan titempatkan pada lokasi bekas proses 1 terjadi fragmentasi eksternal sebesar 6 MB
Partisi Memori Dinamis (4) Algoritma penempatan (placement) Permasalahan: Kapan saat untuk melakukan loading dan swapping ? Bila terdapat lebih dari satu blok memori yang dapat dibebaskan, blok memori yang mana yang akan di-swap ? Algoritma yang dapat digunakan: Best-fit First-fit Next-fit
Partisi Memori Dinamis (5) Algoritma Best-fit: Memilih blok memori yang paling sedikit menyisakan ruang memori Biasanya performansi secara keseluruhan adalah yang paling jelek: Proses pencarian lebih lama dan membebani prosesor Sisa memori berukuran kecil-kecil lebih cepat terbentuk Compaction harus lebih sering dilakukan daripada algoritma yang lain
Partisi Memori Dinamis (6) Algoritma First-fit: Pencarian blok memori kosong dimulai dari awal Blok memori yang dipilih adalah blok memori yang pertama kali ditemukan dan ukurannya sesuai Merupakan algoritma yang paling baik: Paling cepat Paling sederhana Pencarian akan melewati sejumlah proses yang terletak pada bagian ujung awal memori sebelum menemukan blok memori yang bebas
Partisi Memori Dinamis (7) Algoritma Next-fit: Pencarian blok memori kosong dimulai dari lokasi placement terakhir Lebih jelek dibanding First-fit, karena: Blok memori yang ditemukan sering berada pada ujung akhir memori yang merupakan blok memori berukuran paling besar: Blok memori yang besar akan lebih cepat terpartisi menjadi blok memori yang lebih kecil Compaction untuk memperoleh blok memori berukuran besar pada ujung akhir memori harus lebih sering dilakukan daripada First-fit
Partisi Memori Dinamis (8) Contoh algoritma placement Ukuran proses baru = 16 MB Memori sisa: Best-fit = 2 MB First-fit = 6 MB Next-fit = 20 MB
Partisi Memori Dinamis (9) Kelebihan: + Tidak terjadi fragmentasi internal + Penggunaan memori lebih efisien + Jumlah proses aktif lebih fleksibel (tidak tetap) Kekurangan: – Implementasinya lebih susah – Dapat terjadi fragmentasi eksternal Terjadi overhead penggunaan prosesor: Untuk compaction Untuk menjalankan algoritma
Buddy System (1) Merupakan kombinasi antara teknik manajemen memori partisi tetap dan dinamis Ruang memori yang tersedia selalu berukuran 2K, L K U 2L = ukuran blok terkecil yang dapat ditempati 2U = ukuran blok terbesar yang dapat ditempati, merupakan ukuran seluruh memori yang dapat digunakan
Buddy System (2) Algoritma Buddy system: Mula-mula ukuran memori yang tersedia akan berukuran 2U Jika ada permintaan memori sebesar s, dimana 2U-1 < s <= 2U, maka seluruh memori akan ditempati Jika s <= 2U-1, maka blok memori tersebut akan dibagi menjadi 2 bagian sama besar Pembagian akan terjadi terus menerus sehingga blok terkecil yang diperoleh berukuran sama atau lebih besar dari s (dapat untuk menampung program yang akan dieksekusi) Bila terdapat 2 buah blok memori berukuran sama, terdapat dalam cabang yang sama, dan tidak digunakan, maka kedua blok memori tersebut akan digabung menjadi satu
Buddy System (3) Contoh Buddy system
Buddy System (4) Contoh pohon biner
Question ? Teknik manajemen memori yang manakah yang menyebabkan alamat absolut tidak berubah (selalu sama meskipun terjadi swap) ? Model partisi tetap berukuran tidak sama dan menggunakan aturan satu partisi satu antrian ???
Paging sederhana (1) Paging sederhana dilakukan dengan cara Membagi-bagi memori menjadi bagian-bagian kecil yang bersifat tetap dan ukurannya sama (mirip partisi tetap) dan selanjutnya disebut dengan frame Membagi-bagi proses menjadi bagian-bagian kecil yang ukurannya sama dengan bagian-bagian memori yang selanjutnya disebut dengan page Sistem operasi menggunakan page table untuk mencatat alokasi memori Setiap proses mempunyai page table sendiri-sendiri Page table = tabel dengan 2 kolom (kolom Nomor page dan kolom Nomor frame)
Paging sederhana (2) Penempatan page ke dalam frame:
Paging sederhana (3) Penempatan page ke dalam frame: (lanjutan)
Paging sederhana (4) Status akhir page table untuk setiap proses berdasarkan gambar pada slide sebelumnya: Nomor page selalu diawali dengan nol No. page No. frame
Paging sederhana (5) Apa perbedaan antara paging sederhana dengan partisi tetap ? Ukuran partisi lebih kecil Program boleh menempati lebih dari satu partisi Letak program di dalam memori boleh tidak berurutan Fragmentasi internal yang terjadi mempunyai ukuran lebih kecil (kurang dari satu page) Apa persamaannya ?
Paging sederhana (6) Alamat lojik = nomor page + offset satu offset = satu alamat Cara mentranslasikan alamat relatif atau alamat lojik ke alamat absolut: Pisahkan bit-bit nomor page yang terletak pada bit-bit sebelah kiri dari bit- bit alamat relatif sebesar n bit, n = jumlah bit untuk nomor page Gunakan nomor page tersebut sebagai indeks untuk mengetahui nomor frame k pada page table Alamat awal dari alamat fisik adalah k x 2m Alamat fisik dapat diperoleh dengan cara menambahkan alamat awal tersebut dengan offset Cara mendapatkan alamat fisik yang lebih sederhana (tidak perlu melakukan penjumlahan) adalah dengan menggabungkan bit-bit nomor frame dengan bit-bit offset
Paging sederhana (7) Contoh paging sederhana: Sebuah memori menggunakan pengalamatan 16 bit dan dipartisi dengan model paging sederhana dimana ukuran setiap page adalah 1 kB (1024 byte). Berapakah alamat absolut untuk alamat relatif 1502 atau alamat lojik dengan page# = 1 dan offset = 478 dimana page tersebut ditaruh pada frame nomor 6 ? Jawaban: Ukuran 1 page = 1024 byte diperlukan 10 bit Ukuran offset maksimum adalah sebesar ukuran satu page (1024) Maka: Jumlah bit untuk page = jumlah bit untuk offset = 10 bit Jumlah bit untuk nomor page adalah 16-10 = 6 bit jumlah page maksimum = 26 = 64 page masing-masing berukuran 1 KB Berapa kapasitas memori maksimum yang tersedia ???
Paging sederhana (10) Contoh paging sederhana: (cont’d) Alamat relatif 1502 kalau ditulis dalam biner adalah 0000010111011110 Alamat tersebut sama dengan alamat lojik sbb: Nomor page# = 1 (000001) Nilai offset = 478 (0111011110) Jika nomor frame untuk page# 1 (000001) pada page table adalah 6 (000110), maka: Alamat fisik dari alamat relatif 1502 adalah 000110 (nomor frame) digabung dengan 0111011110 (offset) sehingga menjadi 0001100111011110 atau 6622
Paging sederhana (8) Contoh paging sederhana: (cont’d)
Paging sederhana (9)
Paging sederhana (11) Kelebihan pengalamatan pada paging sederhana: (+) Model alamat lojik mudah diartikan oleh programmer, assembler, dan linker karena setiap alamat lojik (nomor page, offset) suatu program adalah identik dengan alamat relatifnya (+) Fungsi untuk melakukan translasi dari alamat lojik ke alamat absolut dapat dengan mudah diimplementasikan dengan hardware (hanya penggabungan bit, tidak perlu fungsi aritmatika)
Segmentasi sederhana (1) Program dan data dibagi-bagi dalam sejumlah segment Ukuran setiap segment boleh berbeda-beda Panjang segment mempunyai batasan maksimum Format alamat lojik terdiri dari 2 bagian yaitu nomor segment dan offset Segment table terdiri dari nomor segment, panjang segment, dan awal alamat fisik Segmentasi sederhana identik dengan partisi dinamis, karena ukuran segment berbeda-beda
Segmentasi sederhana (2) Apa perbedaan antara segmentasi sederhana dengan partisi dinamis ? Program boleh menempati lebih dari satu partisi Letak program di dalam memori boleh tidak berurutan (terpisah- pisah) Eksternal fragmentasi masih dapat terjadi tetapi ukurannya lebih kecil (kurang dari satu segment) Apa persamaannya ?
Segmentasi sederhana (3) Cara mentranslasikan alamat relatif ke alamat absolut: Pisahkan bit-bit nomor segment yang terletak pada bit-bit sebelah kiri dari bit-bit alamat relatif sebesar n bit Gunakan nomor segment tersebut sebagai indeks untuk mengetahui awal dari alamat fisik pada segment table Bandingkan nilai offset dengan panjang segment Jika nilai offset lebih besar atau sama dengan panjang segment alamat tersebut tidak valid (proteksi terhadap ilegal akses) Alamat fisik diperoleh dengan cara menjumlahkan awal alamat fisik suatu segment dengan offset
Segmentasi sederhana (4) Contoh segmentasi sederhana: Sebuah memori menggunakan pengalamatan 16 bit dan dipartisi dengan model segmentasi sederhana dimana jumlah bit untuk nomor segment sebesar 4 bit. Berapakah alamat absolut untuk alamat lojik dengan segment# = 1 dan offset = 752 ? Jawaban: Nomor segment terdiri dari 4 bit, maka: Jumlah segment maksimum = 24 = 16 segment Jumlah bit offset = 16-4 = 12 bit ukuran segment maksimum adalah 212 = 4096
Segmentasi sederhana (5)
Segmentasi sederhana (6)
Segmentasi sederhana (7) Contoh segmentasi sederhana: (cont’d) Alamat lojik dengan segment# = 1 dan offset = 752 dalam biner adalah, maka: Segment# = 1 0001 Offset = 752 001011110000 Alamat dalam biner adalah 0001001011110000 Jika awal alamat fisik pada segment table untuk alamat lojik tersebut adalah adalah 0010000000100000, maka: Alamat fisik dari alamat lojik tersebut adalah penjumlahan awal alamat fisik dengan offset = 0010000000100000 + 001011110000 sehingga menjadi 0010001100010000 atau 8976
Segmentasi sederhana (8) Kelebihan pengalamatan pada segmentasi sederhana: Untuk tujuan modularitas, programmer dapat membagi-bagi programnya dan ditempatkan pada segment-segment berbeda di dalam memori lebih fleksibel Kelemahannya: Programmer harus mengetahui ukuran maksimum dari segment Implementasi translasi ke dalam hardware lebih kompleks
Referensi: [STA09] Stallings, William. 2009. Operating System: Internal and Design Principles. 6th edition. Prentice Hall