Segmentasi dan Paging Pada Intel Pentium Heri Kurniawan OS-Genap 2007/2008
Tujuan Pembelajaran ●
●
Memahami konsep segmentasi Memahami implementasi segmentasi dan paging pada mesin intel pentium
Segmentasi ●
Mengapa segmentasi ? –
Misalkan compiler C mempunyai lima tabel selama proses kompilasi : ● ●
●
●
●
Tabel source Text Tabel symbol untuk menampung nama variabel beserta attribut Tabel untuk menampung integer & Konstanta floating-point yang digunakan Tabel Parse Tree untuk syntatic dan analisis program Tabel Stack untuk menampung procedure call dalam compiler
Segmentasi
Versi Virtual address satu dimensi
Satu dimensi ruang logika dengan tabel yang bertambah ●Satu tabel dapat saling berhimpitan ●
Versi segmentasi
Setiap tabel dapat bertambah atau berkurang secara independen
●
Segmentasi
Tampilan memori fisik dari sisi user
Segmentasi 1 4
1 2
3
2
4
3
user space
physical memory space Deskripsi logis segmentasi
Segmentasi ●
●
● ●
Sebuah program terdiri dari sebuah koleksi dari banyak segment. Setiap segmen dapat berisikan prosedur, fungsi, stack, symbol table, array, dan lain-lain. Masing-masing segmen Independen Karakteristik : – 1 proses = n blok segmen – besar blok tidak tetap
Segmentasi ●
Keuntungan segmentasi –
Kemudahan dalam mengatur struktur data yang sewaktu-waktu dapat bertambah dan berkurang
–
Proses linking antar procedure beda segmen menjadi lebih mudah
–
Perubahan besaran pada sebuah prosedur tidak berdampak ke prosedur lain
–
Kebijakan proteksi masing-masing segmen dapat berbeda
Segmentasi ●
Kekurangan –
Pada memori fisik terjadi fragmentasi eksternal
–
Sulit untuk mengalokasikan memori yang berurutan (contiguous) pada segmen
Segmentasi ●
●
●
Logical address terdiri dari pasangan: <nomor segmen, offset> Petakan dua dimensi alamat (<nomorsegmen, offset>) ke satu dimensi alamat fisik dengan segment table Segment table : – base – alamat awal segmen di memori fisik. –
limit – panjang segmen
Segmentasi
alur segmentasi
Segmentasi Alamat logika = <no segmen, offset> Alamat logika = <2,53> Alamat Fisik = 4300+53 =4353 Alamat logika = <3,852> Alamat Fisik = 3200+852 = 4052 Alamat logika = <0,1222> Alamat Fisik = trapped !
contoh pemetaan dengan segmentasi
Segmentasi
perbandingan segmentasi dengan paging
Intel Pentium ● ● ●
●
Mendukung segmentasi, paging dan keduanya Mendukung jumlah segmen hingga 16K Max ruang virtual address untuk masing-masing segmen 4Gb (232 bytes) hadware : – 6 Segment register: cs, ss, ds, es, fs, gs –
isi : selector Microprogram register (@8 byte)
–
isi : Base/limit, code/data privileges, type Task segment descriptor (TSS)
–
isi : menampung context proses Segment descriptor tables: GDT, LDT(s)
●
●
●
Segmentasi intel pentium ●
Logical address sebuah proses dibagi menjadi dua tabel: –
Local Descriptor Table (LDT) ●
Menampung informasi segmen up to 8K
●
Dimiliki masing-masing proses (private)
●
–
Informasi dalam LDT -> code, data ,stack, procedure, dll
Global Descriptor Table (GDT) ●
Menampung informasi segmen up to 8K
●
Shared dengan proses lain
●
Informasi dalam GDT -> system segmen
Pengalamatan memori dalam Pentium ●
CPU menghasilkan logical address –
Dikirim ke segmentation unit ●
–
Menghasilkan linear address
Linear address diberikan ke paging unit
Menghasilkan physical address dalam main memory Jika pure segmentation, maka proses paging diabaikan dan linear address dianggap sebagai alamat fisik ●
●
●
Jika tidak, segmentation dilanjutkan dengan paging, maka linear address akan diubah menjadi physical address.
Penerjemahan alamat logika ke alamat fisik pada pentium
Segmentasi Intel Pentium
Arsitektur Paging diPentium
Pentium menggunakan paging dua tingkat untuk page size 4KB
Linux di sistem pentium ●
●
●
Menggunakan 6 segmen : kernel code, kernel data, user code, user data, TSS (taks state segmen) dan default LDT Menggunakan paging tiga tingkat (three level paging) untuk mesin 32 bit dan 64 bit Nilai bit untuk middle directory=0, jika menggunakan two level paging pada mesin pentium
Linear address di linux
Linux di sistem pentium
Paging tiga level di sistem pentium