This page needs JavaScript activated to work correctly !

This page will be redirect in 3 second !

Memory Management: Fixed, Dynamic, Paging, & Segmentation - Networking | IDRaya.com

Memory Management: Fixed, Dynamic, Paging, & Segmentation

Triawan NETWORKING 13/11/2020 0 Discuss 2.2K Views
Memory Management: Fixed, Dynamic, Paging, & Segmentation

Tujuan utama dari sistem komputer adalah untuk mengeksekusi/menjalankan program. Program-program yang berjalan tersebut bersama dengan data yang diakses paling tidak secara parsial/sebahagian berada di main memory selama eksekusi. Agar proses yang memiliki state ready dapat melakukan utilisasi CPU secepat mungkin, maka harus disimpkan kedalam memory, sehingga dapat memberikan response-time yang cepat kepada user. Untuk mencapai hal ini maka diperlukan teknik manajemen memory dengan berbagai algoritma.

Pada arsitektur komputer modern memory adalah pusat pengoprasian program maupun data. Main memory terdiri dari sejumlah besar susunan atau bytes array yang memiliki alamatnya masing-masing. Misal untuk menjalakan program, pertama CPU mengambil instruksi dari memory sesuai dengan nilai program counter, kemudian melakukan decoding, dan setelah dieksekusi pada operands, hasilnya bisa aja disimpan kembali kedalam main memory. Unit memory hanya dapat melihat stream dari memory address, atau dengan kata lain unit memory tidak mengetahui bagaimana aliran/stream tersebut dibuat/generated, sehingga kita dapat berfokus pada berbagai urutan (sequence) memory address yang dihasilkan dari program yang sedang berjalan/running.

Terdapat istilah dasar yang perlu diketahui pada pembahasan mengenai memory management, seperti address yang dibuat oleh CPU biasanya disebut sebagi logic address atau virtual address, sedangkan address yang dilihat oleh unit memory yaitu ketika dimuat/loaded kedalam memory address register disebut sebagi physical address. Himpunan semua logical address yang dibuat oleh program adalah logical address space. Himpunan semua physical address yang sesuai dengan logical addresses adalah physical address space. Oleh karena itu pada skema execution-time-address-binding, logical address dan physical address spaces berbeda.

Apa dan Mengapa Memory Management?

Memory management adalah proses mengontrol dan mengkoordinasikan memori komputer yang ditangani oleh sistem operasi dengan cara menentukan porsi yang dikenal sebagai block atau segment dari berbagai program yang sedang berjalan (proses) untuk mengoptimalkan kinerja sistem secara keseluruhan. Berikut beberapa alasan mengapa memory management digunakan.

  1. Untuk memeriksa berapa banyak memory yang perlu dialokasikan ke proses pada waktu diputuskan oleh processor. Sehingga menjamin setiap proses dengan status ready dapat segera memanfaatkan processor time.
  2. Melacak setiap kali memory dilepas karena telah selesai digunakan oleh poses, untuk selanjutnya memperbaharui status memory tersebut menjadi tidak dialokasikan (unlocated), sehingga dapat segera dialokasikan untuk proses lainnya yang membutuhkan memory.
  3. Membantu melindungi proses yang berbeda satu sama lain, agar tidak saling mengganggu.

Terminologi Memory Management

Beberapa istilah yang diperlukan untuk membahas memory management lebih lanjut.

  1. Memory allocation – proses dimana program komputer diberikan memory.
  2. Segment – sebahagian kecil dari memory yang dialokasikan untuk suatu proses.
  3. Pysical address – alamat sebenarnya (mutlak/absolut) dari data atau program yang disimpan dalam memory.
  4. Logical/Virtual address – alamat yang berhubungan (relatif) dengan address space awal dari suatu proses atau alamat yang menunjukkan lokasi relatif terhadap alamat absolut awal suatu proses.
  5. Overlay – membagi program besar menjadi bagian-bagian kecil kemudian menempatkan beberapa bagian modul/program tersebut pada area memory yang sama secara bergantian yang dilakukan oleh sistem operasi. Biasanya diterapkan pada pengalokasian memory dengan mekanisme fixed-partition yaitu ketika ukuran proses lebih besar dari ukuran partisi memroy manapun yang tersedia.
  6. Base register address – alamat awal dari setiap proses yang ditentukan oleh sistem operasi.
  7. Bound register address – alamat akhir dari suatu proses yaitu: base register + panjang proses.

Terdapat istilah atau terminologi lainnya yang harus dijabarkan terlebih dahulu sebelum membahas lebih lanjut mengenai memory management, yaitu: swapping, fragmentation, compaction, dan paging.

Teknik Swapping

Swapping adalah metode dimana proses harus ditukar/dipindahkan sementara dari main memory ke penyimpanan cadangan (backing store), yang nantinya akan dikembalikan lagi oleh sistem operasi ke main memory untuk melanjutkan eksekusinya. Ini dilakukan ketika main memory penuh yaitu hanya pada proses yang dapat melakukan penghentian sementara seperti menunggu operasi I/O atau proses yang sedang tidak aktif, dan tidak berada dalam antrian dengan status ready. Proses yang dapat di-swap berarti proses tersebut harus melepaskan memory yang sedang ia gunakan (holding) secara menyeluruh.

swapping backing-store Gambar swapping dari dua proses menggunakan HDD sebagai backing-store.

Pada gambar diatas backing-store dapat berupa hard disk (HDD) atau perangkat secondary storage lainnya yang biasanya memilik kapasitas lebih besar dari main memory. Waktu yang diperlukan untuk pengalihan konteks dalam proses swapping cukup tinggi, misal terdapat proses user sebesar 100 MB (mega bytes) dan kecepatan transfer rate hard disk 50 MB per detik. Maka waktu transfer rate yang dibutukan sebenarnya dari proses tersebut dari atau ke (out/in) main memory adalah 100-MB/50-MB = 2 detik atau 200 milidetik. Karena proses swapping membutuhkan dua tahapan yaitu swap out dan swap in maka total waktu yang dibutuhkan adalah 2 x 200 = 400 milidetik.

Terjadinya Fragmentation

Fragmentation adalah slot/ruang kosong pada memory yang tidak dapat dialokasikan atau digunakan oleh proses lainnya karena ukurannya terlalu kecil atau disebut sebagai lubang (hole). Selain ukuran yang terlalu kecil, bisa saja blok memory tersebut merupakan non-sharable resource sehingga menjadi critical section pada suatu proses. Fragmentation terjadi pada saat menyimpan proses, atau pada saat proses tersebut dihapus dari main memory sehingga dianggap sebagai pemecah block memory menjadi bagian-bagian kecil serta menghabiskan cost komputasi dalam hal waktu untuk terus melacaknya secara berulang tetapi tidak berguna, sehingga fragmentation penting untuk dihindari. Terdapat dua bentuk fragmentasi yang umumnya dikenal yaitu.

  1. Internal fragmentation – terjadi ketika memory dialokasikan menggunakan mekanisme fixed-partition dalam menentukan ukurannya, kemudian diisi oleh proses yang memiliki ukuran lebih kecil dari ruang partisi atau slot yang ditempati, sehingga terdapat sisa ruang kosong yang tidak dapat digunakan oleh proses lainnya.
  2. External fragmentation – terjadi ketika memory dialokasikan menggunakan mekanisme dynamic-partition dalam menentukan ukurannya, setelah slot kosong selesai digunakan oleh berbagai proses, justru memungkinkan menghasilkan berbagai slot kosong dalam jumlah yang besar tetapi tidak efisien yaitu tidak dapat digunakan oleh proses lainnya (tidak ada ukuran blok memory yang mencukupi), karena berbagai ruang/slot kosong tersebut terpencar (tidak berdekatan) dengan ukuran yang kecil atau tidak membentuk satu block.

Internal Fragmentation Gambar Internal Fragmentation occurs on Fixed Partition.

External Fragmentation Gambar External Fragmentation occurs on Dynamic Partition.

Baik framgentasi internal dan ekternal tetap mengehasilan ruang memory yang tidak efisien atau terbuang, namum dapat diminimalisir. Pada fragmentasi internal dapat diminimalisir dengan cara menetapkan ukuran partisi terkecil yang masih cukup baik untuk menjalankan seluruh proses. Sedangkan pada fragmentasi eksternal dapat diminimalisir dengan menyusun ulang konten memori untuk ditempatkan ke dalam satu blok memory yang kosong.

Mekanisme Compaction

Compaction/pemadatan adalah proses pemindahan fragmentation memory menjadi satu hole yang besar agar menjadi block sehingga dapat digunakan oleh proses lainnya. Pada backing/secondary-storage dikenal sebagai disk defragmentation berupa utilitas yang sering digunakan pada kebanyakan sistem operasi. Tentunya proses compaction ini membutuhkan waktu yang cukup lama (expensive time).

Teknik Memory Management

Berikut ini video pembahasan mengenai teknik memory management pada sistem operasi, diantaranya yaitu fixed-partitioning, dynamic-partitioning, simple-paging, dan simple-segmentation Selain teknik management memory, juga dibahas mengenai fragmentation, swapping, dan compaction.

Referensi

  1. Operating Systems: Internals and Design Principles (8th Edition), William Stallings, 2014.
  2. Operating System Concepts (9th Edition in Chinese) by Abraham Silberschatz et al.
  3. The Linux Programming Interface: A Linux and UNIX System Programming Handbook, Michael Kerrisk.
  4. https://www.enterprisestorageforum.com/storage-hardware/paging-and-segmentation.html
  5. https://www.differencebetween.com/difference-between-internal-and-vs-external-fragmentation/

Agus Triawan/Triawan

 matriawan@gmail.com

Triawan is just an ordinary person, founder idraya[dot]com who just a little bit knows also likes try and error about devices, networks and programming/applications to solve challenges related to information technology.

If there is question, please discuss below. Very welcome and expected to provide corrections, criticisms, and suggestions.


We'll not share/display your email.
Example: Say <b>Hello</b> &lt;?php echo 'World'; ?&gt;
Output: Say Hello <?php echo 'World'; ?>
Words can come true for you, so be wise in speaking.

Be the first :D