Anda di halaman 1dari 22

SEGMENTATION

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.

-next: 5 segmen yang independen

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)

Segmentasi dengan paging di MULTICS


Sistem Operasi Multics running di mesin Honeywell

6000 Menyediakan 218 (262.144) segment


Setiap segmen dapat sampai 65.536 word 36-bit Pada masing-masing segmen, menerapkan sistem paging

Setiap program Multics memiliki segment table

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

anggap ada di memori dan segment tablenya ada di memori

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

hanya 18 bit 6 bit digunakan untuk word

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

Algoritma mapping address


Ketika memory reference muncul algoritma berikut dilakukan
Segment number digunakan untuk mencari segment

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.

Konversi 2-bagian address MULTICS ke address memori utama

TLB (Translation Lookaside Buffer)


Multics hardware memiliki TLB 16-word Ketika address diacu, pertama mengecek jika

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

Segmentation with Paging di Pentium


Pentium menyediakan 16 K segment (Multics 256K) Setiap segmen terdiri dari 1 milliar word 32 bit

(Multics: 65.536 word 36-bit) Inti dari virtual memori Pentium terdiri dari dua table
LDT (Local Descriptor Table) GDT (Global Descriptor Table)

Setiap program memiliki LDT, namun hanya ada 1

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

Segmentation with Paging di Pentium- contd


Untuk mengakses segment, program Pentium saat

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

Segmentation with Paging di Pentium- contd

Pada saat selector di-load ke segment register,

deskriptor yang terkait dijemput dari LDT atau GDT dan disimpan di register micropgram
Descriptor terdiri dari 8 byte terdiri dari segments

base address, size, dan informasi lain

Segmentation with Paging di Pentium- contd


Konversi ke physical address
Setelah mendapatkan descriptor terkait

Jika segmen tidak ada (selector 0), trap terjadi


Kemudian hardware menggunakan field Limit untuk mengecek apakah

offset di luar akhir dari segmen (dapat menyebabkan trap).

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

Sebaliknya, jika paging enable, linear address

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

Segmentation with Paging di Pentium- contd


Setiap program running

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:

Dir: index ke page directory

Page: index ke page table untuk mendapatkan alamat page frame

untuk mendapatkan page table tertentu

Offset: ditambahkan ke address page frame untuk mendapatkan physical address dari byte atau word yang diperlukan

Segmentation with Paging di Pentium- contd


Entri page table 32 bit, terdiri dari
20 bit berisi page frame number Sisanya bit untuk access, dirty bit, protection bit, dll

Setiap page table memiliki entri untuk 1024 page frame


Segment yang lebih pendek dari 4 MB akan memiliki sebuah

yang 4 KB, sehingga satu page table dapat menangani 4 MB memori


page directory dengan single entry.

Anda mungkin juga menyukai