Segmentasi
Segmentasi
Segmentation
Virtual memori ---satu
dimensi yaitu virtual address dari 0 s/d maksimum Dalam beberapa kasus, diperlukan memiliki dua atau lebih address space yang terpisah Segmentasi adalah alternatif untuk membuat beberapa address space yang terpisah dan independen. Misalnya data program dan instruksi dapat dibagi menjadi block yang disebut segmen.
-next
Setiap segmen terdiri dari sequence of
address linear dari 0 s/d maksimum Panjang setiap segmen berbeda dan dapat berubah pada saat execution time. Karena setiap segmen terbentuk dari address space yang terpisah, masing-masing segmen dapat meningkat atau menyusut Untuk menentukan sebuah address pada segmen ini, program harus menyediakan dua bagian address yaitu segment number dan address di dalam segment itu.
Kelebihan Segmentasi
Pure Segmentation
Implementasi segmentation berbeda dari paging
secar a esensial
Page size tetap sementara segment size dapat berubah Setelah sistem running sebentar, memori diibagi menjadi
beberapa bagian yang berisi segmen dan hole (external fragmentation atau checkerboarding; ditangani dengan compaction)
dengan satu descriptor per segment Segment table itu sendiri sebuah segment dan menerapkan sistem paging Segment decriptor berisi indikasi apakah sebuah segment ada di memori utama atau tidak
Jika sebagian dari segment ada di memori, segment di
Segmentasi .. -cont
Jika segment ada di
memori, descriptornya berisi pointer 18-bit ke page table nya. Physical address 24 bit dan page frame 64 byte
Address page table
Segmentasi .. -cont
Descriptor juga berisi segment size, protection bit, dan beberapa item lain.
Address segment dari secondary memory,
berada pada table yang lain yang digunakan oleh segment fault handler . Segment Descriptor
Address di MULTICS
Terdiri dari 2 bagian:
Segment address
Address di dalam segment yang terdiri dari Page number dan word di dalam page
descriptor Sebuah check dibuat untuk melihat apak ah page table dari segmen ada di memori atau tidak. Jika ada, dilocated. Jika tidak ada, segment fault terjadi. Entri page table untuk virtual page diminta, diperiksa. Jika page itu sendiri tidak ada di memori, page fault ditrigger. Jika ada di memori , address memori utama dari page di esktrak dari page table entry. Offset ditambahkan ke page untuk memberikan address memori utama dimana word dicari. Membaca atau menulis selesai.
virtual adress ada di TLB. Jika ada, page frame number langsung ditemukan dan membentuk address physical, tanpa harus melihat decriptor segment atau page table. Address dari 16 page yang banyak di acu disimpan di TLB
TLB-continued
Program yang memiliki working set < TLB;
akan tepat bila seluruh address page dari working set ada di dalam TLB. Jika page tidak ada di TLB, segment descriptor dapat diacu untuk menemukan page frame number, dan TLB di-update, menyertakan page tersebut. Field age mencatat entry mana yang paling sedikit digunakan
(Multics: 65.536 word 36-bit) Inti dari virtual memori Pentium terdiri dari dua table
LDT (Local Descriptor Table) GDT (Global Descriptor Table)
GDT yang dibagi oleh semua program di komputer LDT menggambarkan segment local untuk setiap program , termasuk code, stack, dll GDT menggambarkan system segment, termasuk sistem operasi
pertama me-load sebuah selector untuk segment itu ke salah satu dari 6 register komputer (CS: untuk code segment; DS: untuk Data Segment) Setiap selector adalah 16-bit.
Salah satu bit memberitahukan apakah segment tersebut
local (LDT) atau global (GDT) 13 bit menentukan entry number dari LDT atau GDT 2 bit terkait dengan protection Descriptor 0 forbidden
deskriptor yang terkait dijemput dari LDT atau GDT dan disimpan di register micropgram
Descriptor terdiri dari 8 byte terdiri dari segments
Secara logik ada 32 bit dalam descriptor memberikan ukuran segmen, tetapi hanya 20 bit yang tersedia. Jika G bit (Granularity) 0, field Limit persis ukuran segmen, 1 MB. Jika 1, field Limit memberikan informasi bahwa ukuran segmen dalam page buka bytes Ukuran page Pentium 4 KB sehingga 20 bit cukup bagi segmen s/d 232 bytes
Asumsi: segment dalam memori dan offset masih dalam range,
kemudian Pentium menambahkan 32-bit Base field di dalam deskriptor ke offset untuk membentuk linear address
Segmentation with Paging di Pentium- contd Field base dipecah ke dalam 3 bagian dan menyebar di seluruh descriptor (agar kompatible dengan 286, yang memiliki base hanya 24-bit) Jika paging disable, linear address diintepretasi sebagai physical addres dan dikirim ke memori untuk baca atau tulis
pure segmentation Setiap base address tersedia di dalam descriptor
diinterpretasi sebagai virtual address dan dipetakan ke physical address menggunakan page table
Cat: 32 bit virtual address dan 4 KB page size setiap
segment memiliki 1 jutaan page, perlu 2 level pemetaan untuk mengurangi ukuran page table
memiliki sebuah page directory terdiri dari 1024 entri (32 bit). Ini dicari pada sebuah address yang diacu oleh sebuah global register Setiap entri di dalam direktori mengacu ke sebuah page table yang juga berisi 1024 entri (32 bit). Entri page table menunjuk ke page frames
Linear address dibagi ke
dalam 3 field:
Offset: ditambahkan ke address page frame untuk mendapatkan physical address dari byte atau word yang diperlukan