-->
g2QFCKwavghUp2yzjKrIFwEeG13RASCerFTCMH35

Segmentasi Intel Pentium


Pendahuluan
Aspek penting dari memori menajemen yang menjadi tak terhindarkan dengan paging adalah memori dari sudut pandang pengguna dan memori fisk yang sebenarnya. Sudut pandang pengguna terhadap memori tidak sama dengan memori fisik. sudut pandang pengguna ini dipetakan pada memori fisik, dimana dengan pemetaan tersebut mengizinkan perbedaan antara memori lojik dengan memori fisik. Pernahkah pengguna mebayangkan sebuah memori sebagai sebuah array linier dari suatu byte, beberapanya terdiri dari instruksi dan sebagian yang lain berisi data? Sebagian besar orang akan berkata TIDAK. User lebih suka memandang sebuah memori sebagai sekumpulan variabel-variabel
yang berada dalam segment-segmen dalam ukuran tertentu. Jika kita membayangkan sebuah program yang terdiri dari main program, sub routin, fungsi dan modul-modul. Bisa juga terdapat berbagai struktur data seperti: tabel, array, stack, variabel dan lain-lain. Masing-masing modul atau elemen data mengacu pada sebuah nama. Sehingga jika
membicarakan tabel simbol, fungsi sqrt atau main program tanpa mempedulikan alamatdi memori tetapi tetap dapat mendapatkannya. Juga kita tidak mempedulikan apakah fungsi sqrt disimpan setelah atau sebelum main program. Masing-masing segment ini adalah panjang varibael: Panjang ini terdefinisikan secara intrinsik sebagai tujuan dari pensegmenan dari sebuah program. Elemen-elemen dalam sebuah segmen teridentifikasi oleh offset-offsetnya dari awal segmennya.
Alamat Lojik
Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat lojik merupakan sekumpulan dari segmen-segmen. Masing-masing segment mempunyai panjang dan nama. Alamat diartikan sebagai nama segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan implementasi, segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segment. Sehingga, alamat lojik terdiri dari dua tupple: [segment-number, offset]
Segmentasi Perangkat Keras
Meskipun seorang pengguna dapat memandang suatu objek dalam suatu program sebagai alamat berdimensi dua, memori fisik yang sebenarnya tentu saja masih satu dimensi barisan byte. Jadi kita harus bisa mendefinisikan pemetaan dari dua dimensi alamat yang didefinisikan oleh pengguna ke satu dimensi alamat fisik. Pemetaan ini disebut sebagai sebuah segment table. Masing-masing masukan dari mempunyai segment base dan segment limit. Segment base merupakan alamat fisik dan segmen limit diartikan sebagai panjang dari segmen.
Arsitektur Segmentasi
Ilustrasi penggunaan segmen dapat dilihat pada Gambar “Arsitektur Segmentasi”. Suatu
alamat lojik terdiri dari dua bagian, yaitu nomor segmen(s), dan offset pada segmen(d). Nomor segmen digunakan sebagai indeks dalam segmen table. Offset d alamat lojik harus antara 0 hingga dengan segmen limit. Jika tidak maka diberikan pada sistem operasi. Jika offset ini legal maka akan dijumlahkan dengan segmen base untuk menjadikannya suatu alamat di memori fisik dari byte yang diinginkan. Jadi segmen table ini merupakan suatu array dari pasangan base dan limit register.
Segmentasi
Sebagai contoh, Lihat pada Gambar “Arsitektur Segmentasi”. Kita mempunyai nomor segmen dari 0 sampai dengan 4. Segmen-segmen ini disimpan dalam suatu memori fisik. Tabel segmen berisi data untuk masing-masing segmen, yang memberikan informasi tentang awal alamat dari segmen di fisik memori (atau base) dan panjang dari segmen (atau limit). Misalkan, segmen 2 mempunyai panjang 400 dan dimulai pada lokasi 4300. Jadi, referensi di byte 53 dari segmen 2 dipetakan ke lokasi 4300 + 53 = 5353. Suatu referensi ke segmen 3, byte 852, dipetakan ke 3200 (sebagai base dari segmen) + 852 = 4052. Referensi ke byte 1222 dari segmen 0 akan menghasilkan suatu trap ke sistem operasi, karena segmen ini hanya mempunyai panjang 1000 byte.
Keuntungan Segmentasi
Kelebihan Pemberian Halaman: tidak ada fragmentasi luar-alokasinya cepat.
Kelebihan Segmentasi: saling berbagi-proteksi.
Segmentasi dengan Pemberian Halaman
Keuntungan pemakaian cara segmentasi ini adalah sebagai berikut:
1. Menyederhanakan penanganan struktur data yang berkembang. Seringkali penanganan struktur data menuntut perubahan panjang data. Hal ini dimungkinkan dengan adanya segmentasi. Jadi dengan segmentasi membuat penanganan struktur data menjadi fleksibel.
2. Kompilasi ulang independen tanpa mentautkan kembali seluruh program. Teknik ini
memungkinkan program-program dikompilasi ulang secara independen tanpa perlu mentautkan kembali seluruh program dan dimuatkan kembali. Jika masing-masing prosedur terdapat di segmen terpisah beralamat 0 sebagai alamat awal, maka pentautan prosedur-prosedur yang dikompilasi secara terpisah sangat lebih mudah. Setelah semua
prosedur dikompilasi dan ditautkan, panggilan ke prosedur di segmen n akan menggunakan
alamat dua bagian yaitu (n,0) mengacu ke word alamat 0 (sebagai titik masuk) segmen ke n.  Jika prosedur di segmen n dimodifikasi dan dikompilasi ulang, prosedur lain tidak perlu diubah (karena tidak ada modifikasi alamat awal) walau versi baru lebih besar dibanding versi lama.
3. Memudahkan pemakaian memori bersama diantara proses-proses Teknik ini memudahkan pemakaian memori bersama diantara proses-proses. Pemrogram dapat menempatkan program utilitas atau tabel data berguna di segmen yang dapat diacu oleh proses-proses lain. Segmentasi memberi fasilitas pemakaian bersama terhadap prosedur dan data untuk dapat diproses, berupa shared library. Pada workstation modern yang menjalankan sistem Windows sering mempunyai pustaka grafis sangat besar. Pustaka ini diacu hampir semua program. Pada sistem bersegmen, pustaka grafis diletakan di satu segmen dan dipakai secara bersama banyak proses sehingga menghilangkan
mempunyai pustaka ditiap ruang alamat proses. Shared libraries di sistem pengalamantan murni lebih rumit, yaitu dengan simulasi segmentasi.
4. Memudahkan proteksi karena segmen dapat dikonstruksi berisi sekumpulan prosedur atau data terdefinisi baik, pemrogram atau administrator sistem dapat memberikan kewenangan pengaksesan secara nyaman.
Penggunaan Segmentasi Pentium
Segmentasi dengan Pemberian Halaman (INTEL 30386)
Arsitektur Pentium memperbolehkan segmen sebanyak 4 GB dan jumlah maksimum segmen per proses adalah 16 KB. Ruang alamat lojik dari proses dibagi menjadi 2 partisi. Partisi pertama terdiri atas segmen-segmen hingga 8 KB (tersendiri dari proses). Partisi kedua terdiri atas segmen-segmen hingga 8 KB yang berbagi dengan semua proses-proses. Informasi partisi pertama terletak di LDT (Local Descriptor Table), informasi partisi kedua terletak di GDT (Global Descriptor Table). Masing-masing entri dari LDT dan GDT terdiri atas 8 byte segmen descriptor dengan informasi yang rinci tentang segmen-segmen tertentu, termasuk lokasi base dan limit dari segmen itu. Alamat logikal adalah sepasang (selector, offset), dimana berjumlah 16 bit.
Gambarnya adalah sebagai berikut:

Dimana s menandakan nomor segmen, g mengindikasikan apakah segmen GDT atau LDT, dan p mengenai proteksi. Offsetnya berjumlah 32 bit yang menspesifikasi lokasi byte (atau word) dalam segmentasi Pentium. Pada Pentium mempunyai 6 register mikroprogram 8 byte, yang mengijinkan 6 segmen tadi untuk dialamatkan kapan saja. 6 register ini berfungsi untuk menangani deskriptor-deskriptor yang sesuai dengan LDT atau GDT. Cache ini juga mengijinkan Pentium untuk tidak membca deskriptor dari memori. Alamat linear pada Pentium panjangnya 32 bit dan prosesnya adalah register segmen menunjuk pada entry yang sesuai dalam LDT atau GDT. Informasi base dan limit tentang segmen Pentium
digunakan untuk menghasilkan alamat linear. Pertama, limit digunakan untuk memeriksa valid tidaknya suatu alamat. Jika alamat tidak valid, maka kesalahan memori akan terjadi yang menimbulkan trap pada sistem operasi. Jika alamat valid, maka nilai offset dijumlahkan dengan nilai base, yang menghasilkan alamat linear 32 bit. Hal ini ditunjukkan seperti pada gambar berikut:
Segmentasi-Intel-Pentium
Segmentasi Linux
Pada Pentium, Linux hanya menggunakan 6 segmen:
1. Segmen untuk kode kernel.
2. Segmen untuk data kernel.
3. Segmen untuk kode pengguna.
4. Segmen untuk data pengguna.
5. Segmen Task-state (TSS).
6. Segmen default LDT.
Segmen untuk kode pengguna dan data pengguna berbagi dengan semua proses yang running pada pengguna mode, karena semua proses menggunakan ruang alamat lojik yang sama dan semua descriptor segmen terletak di GDT. TSS (Task-state Segment) digunakan untuk menyimpan context hardware dari tiap proses selama context switch. Tiap proses mempunyai TSS sendiri, dimana deskriptornya terletak di GDT. Segmen default LDT normalnya berbagi dengan semua proses dan biasanya tidak digunakan. Jika suatu proses membutuhkan LDT-nya, maka proses dapat membuatnya dan tidak menggunakan default LDT. Seperti yang telah dijelaskan, tiap selektor segmen mempunyai 2 bit proteksi. Mak, Pentium mengijinkan proteksi 4 level. Dari 4 level ini, Linux hanya mengenal 2 level, yaitu pengguna mode dan kernel mode.
Sumber :bedagres.wordpress.com
Related Posts

Related Posts

Post a Comment