Memori biasanya dibagi menjadi dua bagian, yakni:
Sistem Operasi (Operating System)
Proses Pengguna (User Processes)
Sistem Operasi dapat dialokasikan pada memori bagian bawah (low memory) mau pun memori bagian atas (high memory). Hal ini tergantung pada letak vektor interupsi (interrupt vector) pada memori tersebut. Jika vektor interupsi lebih sering berada di memori bawah, maka sistem operasi juga biasanya diletak kan di memori bawah.
Memori memerlukan suatu perlindungan yang disebut dengan istilah memory protection yakni perlindungan memori terhadap:
sistem operasi dari proses pengguna;
proses pengguna yang satu dari proses pengguna lainnya.
Perlindungan memori tersebut dapat diakomadasikan menggunakan suatu register pengalokasian kembali (relocation register) dengan suatu register batasan (limit register)
Register batasan berisi jarak dari alamat logik (logical address), sementara register pengalokasian kembali berisi nilai dari alamat fisik (physical address) yang terkecil. Dengan adanya register pengalokasian kembali dan register batasan ini, mengakibatkan suatu alamat logik harus lebih kecil dari register batas an dan memori akan memetakan (mapping) alamat logik secara dinamik dengan menambah nilai dalam register pengalokasian kembali.
register batasan register pengalokasian kembali | | |Prosesor|-->(alamat logik)-->|<|->(ya)-->|+|-->(alamat fisik)-->|MAR| |(no) perangkap: kesalahan pengalamatan
Sebagaimana telah diketahui, bahwa pengatur jadual prosesor (CPU scheduler) bertugas mengatur dan menyusun jadual dalam proses eksekusi proses yang ada. Dalam tugasnya, pengatur jadual prosesor akan memilih suatu proses yang telah menunggu di antrian proses (process queue) untuk dieksekusi. Saat memilih satu proses dari proses yang ada di antrian tersebut, dispatcher akan mengambil register pengalokasian kembali dan register batasan dengan nilai yang benar sebagai bagian dari skalar konteks context switch.
Oleh karena setiap alamat yang ditentukan oleh prosesor diperik sa berlawanan dengan register-register ini, kita dapat melindungi sistem operasi dari program pengguna lainnya dan data dari pemodifikasian oleh proses yang sedang berjalan.
Metode yang paling sederhana dalam mengalokasikan memori ke pro ses-proses adalah dengan cara membagi memori menjadi partisi tertentu. Secara garis besar, ada 2 metode khusus yang digunakan dalam membagi-bagi lokasi memori:
Alokasi partisi tetap (Fixed Partition Allocation) yaitu metode membagi memori menjadi partisi yang telah berukuran tetap.
Kriteria-kriteria utama dalam metode ini antara lain:
Alokasi memori: proses p membutuhkan k unit memori.
Kebijakan alokasi yaitu "sesuai yang terbaik": memilih partisi terkecil yang cukup besar (memiliki ukuran = k).
Fragmentasi dalam (Internal fragmentation) yaitu bagian dari partisi tidak digunakan.
Biasanya digunakan pada sistem operasi awal ((batch)).
Metode ini cukup baik karena dia dapat menentukan ruang proses; sementara ruang proses harus konstan. Jadi sangat sesuai dengan parti si berukuran tetap yang dihasilkan metode ini.
Setiap partisi dapat berisi tepat satu proses sehingga derajat dari pemrograman banyak multiprogramming dibatasi oleh jumlah partisi yang ada.
Ketika suatu partisi bebas, satu proses dipilih dari masukan antrian dan dipindahkan ke partisi tersebut.
Setelah proses berakhir (selesai), partisi tersebut akan tersedia (available) untuk proses lain.
Alokasi partisi variabel (Variable Partition Allocation) yaitu metode dimana sistem operasi menyimpan suatu tabel yang menunjukkan partisi memori yang tersedia dan yang terisi dalam bentuk s.
Alokasi memori: proses p membutuhkan k unit memori.
Kebijakan alokasi:
Sesuai yang terbaik: memilih lubang (hole) terkecil yang cukup besar untuk keperluan proses sehingga menghasilkan sisa lubang terkecil.
Sesuai yang terburuk: memilih lubang terbesar sehingga menghasil kan sisa lubang.
Sesuai yang pertama: memilih lubang pertama yang cukup besar untuk keperluan proses
Fragmentasi luar (External Fragmentation) yakni proses mengambil ruang, sebagian digunakan, sebagian tidak digunakan.
Memori, yang tersedia untuk semua pengguna, dianggap sebagai suatu blok besar memori yang disebut dengan lubang. Pada suatu saat memori memiliki suatu daftar set lubang (free list holes).
Saat suatu proses memerlukan memori, maka kita mencari suatu lubang yang cukup besar untuk kebutuhan proses tersebut.
Jika ditemukan, kita mengalokasikan lubang tersebut ke proses tersebut sesuai dengan kebutuhan, dan sisanya disimpan untuk dapat digunakan proses lain.
Suatu proses yang telah dialokasikan memori akan dimasukkan ke memori dan selanjutnya dia akan bersaing dalam mendapatkan prosesor untuk pengeksekusiannya.
Jika suatu proses tersebut telah selesai, maka dia akan melepaskan kembali semua memori yang digunakan dan sistem operasi dapat mengalokasikannya lagi untuk proses lainnya yang sedang menunggu di antrian masukan.
Apabila memori sudah tidak mencukupi lagi untuk kebutuhan proses, sistem operasi akan menunggu sampai ada lubang yang cukup untuk dialokasikan ke suatu proses dalam antrian masukan.
Jika suatu lubang terlalu besar, maka sistem operasi akan membagi lubang tersebut menjadi 2 bagian, dimana 1 bagian untuk dialokasikan ke proses tersebut dan 1 lagi dikembalikan ke set lubang lainnya.
Setelah proses tersebut selesai dan melepaskan memori yang digunakannya, memori tersebut akan digabungkan lagi ke set lubang.
Fragmentasi luar mempunyai kriteria antara lain:
Ruang memori yang kosong dibagi menjadi partisi kecil.
Ada cukup ruang memori untuk memenuhi suatu permintaan, tetapi memori itu tidak lagi berhubungan antara satu bagian dengan bagian lain (contiguous) karena telah dibagi-bagi.
Kasus terburuk (Worst case): akan ada satu blok ruang memori yang kosong yang terbuang antara setiap dua proses.
Aturan 50 persen: dialokasikan N blok, maka akan ada 0.5N blok yang hilang akibat fragmentasi sehingga itu berarti 1/3 memori akan tidak berguna.
Perbandingan kompleksitas waktu dan ruang tiga kebijakan alokasi memori.
Waktu Ruang =================== Sesuai yang Terbaik Buruk Baik Sesuai yang Terburuk Buruk Buruk Sesuai yang Pertama Baik Baik
Sesuai yang Pertama merupakan kebijakan alokasi memori paling baik secara praktis.