Manajemen memori adalah salah satu fungsi dasar sistem operasi. Sistem operasi modern memungkinkan setiap proses untuk mendapatkan lebih banyak memori virtual daripada ukuran total memori (fisik) aktual pada sistem komputer yang diberikan. Tujuan utama manajemen memori adalah dengan menggabungkan memori besar tapi lambat dengan memori kecil tapi berkecepatan tinggi, untuk mencapai efek memori berkecepatan tinggi lebih besar..
Memisahkan antara partisi tetap dan variabel tidak efektif dalam hal pemanfaatan memori, karena partisi tetap menghasilkan internal, sementara dinamis dalam fragmentasi eksternal. Solusi yang mungkin untuk masalah fragmentasi adalah untuk memungkinkan proses tidak ditulis ke blok memori berkelanjutan. Program ini dapat tersebar secara sewenang-wenang di memori. Dalam hal ini, memori yang bekerja dibagi menjadi blok yang lebih kecil dari ukuran tetap yang disebut bingkai. Ruang alamat logis dari program ini juga dibagi menjadi beberapa blok dengan ukuran yang sama, yang disebut halaman. Ketika suatu program dimasukkan ke dalam memori, halaman-halaman ditulis ke dalam bingkai memori bebas. Untuk memudahkan mentransfer program dari disk ke memori yang berfungsi, disk juga dibagi menjadi bingkai dengan ukuran yang sama dengan bingkai memori. Jadi, satu frame dari disk ditulis ke dalam satu frame dari memori yang bekerja. Sistem paging beroperasi dengan cara berikut: ketika program diterima untuk dieksekusi, ukurannya dihitung, yang dinyatakan dengan jumlah halaman yang diperlukan. Jika sejumlah frame bebas, proses direkam dalam halaman memori per halaman. Pada saat yang sama, jumlah frame di mana setiap halaman ditulis dimasukkan dalam tabel frame.
Program pengguna dan data terkait dapat dibagi menjadi beberapa segmen. Segmen semua program tidak harus memiliki ukuran yang sama, meskipun ada panjang segmen maksimum. Seperti halnya paging, alamat logis yang menggunakan segmentasi terdiri dari dua bagian, dalam hal ini jumlah segmen dan dislokasi dalam segmen itu. Karena penggunaan segmen dengan ukuran yang berbeda, segmentasi mirip dengan partisi dinamis. Dengan tidak adanya skema overlay atau penggunaan memori virtual, semua segmen program harus dimuat ke dalam memori untuk dieksekusi. Perbedaan dibandingkan dengan partisi dinamis adalah bahwa segmentasi dapat mengambil lebih dari satu partisi, dan partisi itu tidak harus berdekatan. Segmentasi memecahkan masalah fragmentasi internal, tetapi juga partisi dinamis, masalah fragmentasi eksternal tetap. Namun, karena prosesnya dibagi menjadi beberapa bagian yang lebih kecil, fragmentasi eksternal biasanya lebih kecil. Tidak seperti paging yang tidak terlihat oleh programmer, segmentasi biasanya terlihat dan cocok untuk mengatur program dan data. Untuk tujuan pemrograman modular, program atau data dapat dibagi lagi menjadi beberapa segmen yang lebih kecil. Kelemahan dari teknik ini adalah bahwa programmer harus mengetahui batasan ukuran segmen maksimum. Kemudahan berikutnya menggunakan segmen dengan ukuran yang berbeda adalah bahwa tidak ada koneksi prospektif antara alamat logis dan fisik. Mirip dengan paging, teknik segmentasi sederhana menggunakan tabel segmen untuk setiap proses dan daftar blok yang tersedia di memori utama.
Paging memberikan ruang alamat virtual dan fisik, dan ruang memori sekunder pada blok (halaman) dengan panjang yang sama. Ini memungkinkan ruang alamat virtual kontinu dialokasikan untuk proses dispersi (tidak harus selalu didistribusikan secara kontinu) dalam ruang alamat nyata dan memori sekunder. Bahkan halaman, sebagai sebuah istilah, merujuk pada memori daripada objek logis yang terlihat di tingkat program. Segmentasi memberikan ruang alamat virtual pada blok (segmen) yang secara langsung berhubungan dengan objek di tingkat program. Karena itu, segmen tidak memiliki panjang tetap, sehingga ukuran segmen bahkan dapat diubah selama eksekusi program. Perlindungan dan pembagian, oleh karena itu, dimungkinkan pada tingkat objek, dan ada proses yang terlihat di mana segmentasi dilakukan.
Pengembang aplikasi tidak mengetahui halamannya. Dia menulis program seolah-olah memori itu linear, dan sistem operasi dan prosesor khawatir tentang pemartisian dan konversi ke alamat virtual. Programmer pada sistem segmentasi, bagaimanapun, mencantumkan dua bagian dari alamat, segmen dan halaman dalam program mereka. Semua halaman memiliki ukuran yang sama sementara segmennya berbeda. Segmentasi memiliki beberapa ruang alamat linear, dan paging hanya satu. Segmen memungkinkan partisi logis dan perlindungan komponen aplikasi, dan halaman tidak.
Paging, yang transparan bagi programmer, menghilangkan fragmentasi eksternal dan dengan demikian memastikan penggunaan memori utama secara efisien. Potongan-potongan yang bergerak masuk dan keluar dari memori utama adalah tetap dan ukuran yang sama, sehingga dimungkinkan untuk mengembangkan algoritma manajemen memori canggih yang mengeksploitasi perilaku program. Segmentasi terlihat oleh pengembang dan memiliki kemampuan untuk mengelola pertumbuhan struktur data, modularitas, dan dukungan untuk pertukaran dan perlindungan.
Paging | Segmentasi |
ukuran halaman tetap | ukuran segmen tidak tetap |
tidak terlihat oleh programmer | terlihat untuk programmer |
satu ruang alamat linear | beberapa ruang alamat linear |
tidak memungkinkan partisi logis dan perlindungan komponen aplikasi | memungkinkan |