SEGMENTASI
Segmentasi adalah skema manajemen memori dengan cara membagi memori menjadi
segmen-segmen. Dengan demikian, sebuah program dibagi menjadi segmen-segmen. Segmen adalah sebuah unit logis , yaitu unit yang terdiri dari beberapa
bagian yang berjenis yang sama. Contoh: program utama, variabel lokal, procedure
dan sebagainya. Berbeda dengan halaman, ukuran tiap segmen tidak harus sama dan
memiliki 'ciri' tertentu. Ciri tertentu itu adalah nama segmen dan panjang
segmen. Nama segmen dirujuk oleh nomor segmen sedangkan panjang segmen
ditentukan oleh offset .
Arsitektur
Segmentasi
Ukuran
tiap segmen tidak harus sama. Saat sebuah program atau proses dimasukkan ke
CPU, segmen yang berbeda dapat ditempatkan dimana saja di dalam memori utama
(dapat menggunakan cara first-fit atau best-fit ).
Alamat
logis dari sebuah segmen adalah alamat dua dimensi, sedangkan alamat fisik
memori adalah alamat satu dimensi. Oleh karena itu, agar implementasinya
menjadi mudah ( dari alamat logis ke alamat fisik ) diperlukan Tabel Segmen
yang yang terdiri dari base dan limit . Base menunjukkan
alamat awal segmen (dari alamat fisik) dan limit menunjukkan panjang
segmen.
Arsitektur Segmentasi
alamat logisnya : s dan d , s adalah nomor
segmen / index di dalam tabel segmen d adalah offset . Jika offset
kurang dari nol dan tidak lebih besar dari besarnya limit maka base
akan dijumlahkan dengan d ( offset ) , yang dijumlahkan itu adalah
alamat fisik dari segmen tersebut.
Saling
Berbagi dan Proteksi
Segmen dapat terbagi jika terdapat elemen di tabel segmen yang
berasal dari dua proses yang berbeda yang menunjuk pada alamat fisik yang sama.
Saling berbagi ini muncul di level segmen dan pada saat ini terjadi semua
informasidapat turut terbagi. Proteksi dapat terjadi karena ada bit-proteksi
yang berhubungan dengan setiap elemen dari segmen tabel. Bit-proteksi ini
berguna untuk mencegah akses ilegal ke memori. Caranya: menempatkan sebuah array
di dalam segmen itu sehingga perangkat keras manajemen memori secara otomatis
akan mengecek indeks array -nya legal atau tidak.
Alokasi
yang Dinamis
Masalah dalam Segmentasi
·
Segmen dapat Membesar
·
Muncul Fragmentasi Luar
·
Bila Ada Proses yang Besar
Segmentasi dengan Pemberian Halaman
Kelebihan
Pemberian Halaman : tidak ada fragmentasi luar - alokasinya cepat.
Kelebihan
Segmentasi: saling berbagi - proteksi.
Segmentasi dengan
Pemberian Halaman
Arsitektur Segmentasi
Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan
(nomor segmen, offset)
Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari
• Segmen basis (base) berisi alamat fisik awal
• Segmen limit merupakan panjang segmen
Seperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori.
• Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table.
• Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program.
• Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < STLR), kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke memori dari segment table. Perangkat keras yang digunakan pada sistem segmentasi dapat dilihat pada Gambar 7-21. Pemetaan dari alamat logika ke alamat fisik membutuhkan 2 acuan memori untuk setiap alamat logika. Hal ini akan menurunkan kecepatan sistem dengan faktor 2. Solusi standard yang digunakan adalah dengan cache (atau associative register) untuk menyimpan entri tabel segmen yang sering digunakan. Pemetaan alamat logika ke alamat fisik dengan menggunakan tabel segmen dapat dilihat pada Gambar 7-22. Misalnya alamat logika dengan nomor segment 0 offset 88 akan dipetakan ke alamat fisik 1400 + 88 = 1488 karena offset < limit (88 < 1000). Alamat logika dengan nomor segment 1 offset 412 akan terjadi error karena offset > limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 =
4620 karena offset < limit (320 < 400).
Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan
(nomor segmen, offset)
Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari
• Segmen basis (base) berisi alamat fisik awal
• Segmen limit merupakan panjang segmen
Seperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori.
• Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table.
• Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program.
• Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < STLR), kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke memori dari segment table. Perangkat keras yang digunakan pada sistem segmentasi dapat dilihat pada Gambar 7-21. Pemetaan dari alamat logika ke alamat fisik membutuhkan 2 acuan memori untuk setiap alamat logika. Hal ini akan menurunkan kecepatan sistem dengan faktor 2. Solusi standard yang digunakan adalah dengan cache (atau associative register) untuk menyimpan entri tabel segmen yang sering digunakan. Pemetaan alamat logika ke alamat fisik dengan menggunakan tabel segmen dapat dilihat pada Gambar 7-22. Misalnya alamat logika dengan nomor segment 0 offset 88 akan dipetakan ke alamat fisik 1400 + 88 = 1488 karena offset < limit (88 < 1000). Alamat logika dengan nomor segment 1 offset 412 akan terjadi error karena offset > limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 =
4620 karena offset < limit (320 < 400).
• Segmentation Registers
Logical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs.
• Segment Descriptor
Setiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).
• Segment Selectors
Untuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector mengandung hal-hal berikut :
- Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.
- Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).
- Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level cPu tepat saat segment selector yang berhubungan di-load ke register cs.
• Segmentation Unit
Segmentatipn Unit melakukan operasi-operasi berikut :
- Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table berada pada segment descriptor.
- Menghitung alamat dari segment descriptor dari index filed segment selector.
- Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address.
mantull nih min
BalasHapusSolder uap
mau tanya ini segmentasinya windows
BalasHapus