Oleh : Solichul Huda, M.Kom Segmentasi Oleh : Solichul Huda, M.Kom
Pendahuluan Menggunakan pemartisian Dinamis Partisi dilakukan pada waktu akan mengalkasikan proses baru ke memori utama (main memory)
Karakteristik Memerlukan pengalamatan logika khusus yang memecah image proses menjadi bagian-bagian yang disebut segmen Pembagian segmen dilakukan oleh Compiler, dan pemecahan segmen menjadi unit logika program seperti, main program, stack, subroutine, symbol table
Karakteristik Pemartisian utama terjadi secara dinamis pada saat alokasi proses Ukuran partisi diseuaikan dengan besar segmen program yang hendak dilakukan Sistem segmentasi menggunakan pengalokasian memori tak berurutan Segmentasi membutuhkan pengelolaan informasi mengenai seluruh area kosong / hole yang tersebar di memori utama Tidak terjadi fragmentasi internal
Alokasi Memori Image proses dibagi menjadi beberapa segmen yang ukurannya tidak harus sama Pada saat image proses dialokasikan ke memori utama, segmen proses ditempatkan di memori utama yang kosong dan dicatat pada segmen table Segment table berisi rekaman nilai limit yang berisi panjang segmen dan nilai base yang berisi alamat awal bagian memori utama yang dialokasikan ke segmen
Alokasi Memori 1400 Stack 2400 Segmen 0 1 Segmen 3 2 Sqrt Symbol 3 Limit Base 1000 1400 400 6300 4300 1100 3200 4700 Segmen 0 Segmen 3 segmen2 Segmen 4 segmen1 1400 Sub routine Stack 2400 1 2 3 4 Segmen 0 Segmen 3 3200 4300 4700 5700 6300 6700 Sqrt Symbol table Segmen 4 segmen4 Main program segmen2 Logical address space Segment table
Translasi Alamat (Address binding) Memori sistem komputer menggunakan alamat 16 bit, maksimal kapasitan main memory = 64 Kb Bit alamat logika dipecah menjadi nomor segmen dan alamat offset Nomor segmen 4 bit, segingga maksimal 16 segmen Offset menggunakan 12 bit, maksimum ukuran segmen 4 Kb
Translasi Alamat (Address binding) Misal dalam program terdapa instruksi jump[4848] Alamat logika 4848 : 0001001011110000 Nomor segmen 0001 Alamat offset : 752
Translasi Alamat (Address binding) Length base 001011101110 0000010000000000 011110011110 0010000000100000 1 Dari tabel terlihat segmen 1 dialokasikan pada memori pisik 8224, sehingga pada saat eksekusi alamat 4848 ditranslasi Menjadi = 8976
Translasi Alamat (Address binding) 4 12 Jump [4848] 00010010111000 752 Process segment table + 8224 0001100111011110
Proteksi Membandingkan nomor offset alamat logika yang diakses dengan nilai limit segmen pada tabel segmen Jika nilai offset (d) lebih besar dari nilai limit, berarti terjadi trap, informasi kepada SO telah terjadi kesalahan pengalamatan
Memory Sharing Logical memory proses P1 Segmen tabel P1 editor Data 1 limit base 25286 43062 4425 68348 editor Data 1 limit base 25286 43062 4425 68348 editor Data 2 Segmen table P2 Physical memory Harus ada rekaman tabel segmen