Sabtu, 22 Juni 2013

Sistem Paging dan Segmentasi




Sistem Paging

Sistem paging adalah suatu sistem manajemen pada sistem operasi yang mengatur program yang sedang berjalan. Metode dasar dari paging adalah dengan memecah memori fisik menjadi blok-blok yang berukuran tertentu yang disebut dengan frame dan memecah memori logika menjadi bok-blok yang berukuran sama dengan frame yang disebut page. Untuk mengatasi apabila suatu program lebih besar dibandingkan dengan memori utama adalah dengan konsep overlay dan konsep memori maya(virtual memori):

# Konsep Overlay,
yaitu dimana program yang di jalankan dipecah menjadi beberapa bagian yang dapat dimuat oleh memory (overlay), sedangkan yang belum dieksekusi akan disimpan di dalam disk, yang nantinya akan dimuat ke memori begitu diperlukan dalam ekekusi.

# Konsep Memori Maya
yaitu kemampuan untuk mengalamati ruang memori melebihi memori utama yang tersedia.


Implementasi Sistem Paging
Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page. Beberapa sistem operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel page disimpan dengan nilai register lainnya dari PCB. Pada dasarnya terdapat 3 metode yang berbeda untuk implementasi tabel page :
  1. Tabel page diimplementasikan sebagai kumpulan dari “dedicated” register. Register berupa rangkaian logika berkecepatan sangat tinggi untuk efisiensi translasi alamat paging. Contoh : DEC PDP-11. Alamat terdiri dari 16 bit dan ukuran page 8K. Sehingga tabel page berisi 8 entri yang disimpan pada register. Penggunaan register memenuhi jika tabel page kecil (tidak lebih dari 256 entry).
  2. Tabel page disimpan pada main memori dan menggunakan page table base registe” (PTBR) untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan memori untuk mengimplementasikan tabel page akan memungkinkan tabel page sangat besar (sekitar 1 juta entry). Perubahan tabel page hanya mengubah PTBR dan menurunkan waktu context-switch. Akan tetapi penggunaan metode ini memperlambat akses memori dengan faktor 2. Hal ini dikarenakan untuk mengakses memori perlu dua langkah : pertama untuk lokasi tabel page dan kedua untuk lokasi alamat fisik yang diperlukan.
  3. Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang disebut associative register atau translation look-aside buffers (TLBs). Merupakan solusi standar untuk permasalahan penggunaan memori untuk implementasi tabel page. Sekumpulan associative register berupa memori kecepatan tinggi. Setiap register terdiri dari 2 bagian yaitu key dan value. Jika associative register memberikan item, akan dibandingkan dengan semua key secara simultan. Jika item ditemukan nilai yang berhubungan diberikan. Model ini menawarkan pencarian cepat tetapi perangkat keras masih mahal. Jumlah entry pada TLB bervariasi antara 8 s/d 2048.

Sekarang apa bedanya dari table page: 

#    Perbedaannya adalah bahwa paging itu memecah memori fisik menjadi blok-blok yang berukuran tertentu di sebut frame, dan memecah memori logika menjadi blok-blok yang disebut page, seperti di jelaskan dalam point pengertian di atas, Jadi karena ada program yang melebihi memori utama, maka dengan paging ini, dapat di pecah-pecah menjadi beberapa bagian, sehingga program dapat di eksekusi.

#       Sedangkan tabel page digunakan untuk menerjemahkan memori logika ke memori fisik, dengan perantara MMU (Memory Management Unit), dan pengeksekusian proses akan mencari memori berdasarkan table page ini. Sehingga pada waktu memori logika di pecah-pecah maka dengan tabel page ini akan diterjemahkan dan eksekusi dengan menggunakan tabel tersebut.


Segmentasi


Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat logika 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 logika 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.


Setiap alamat dibangkitkan oleh CPU dengan membagi ke dalam 2 bagian yaitu :
  • Page number (p) digunakan sebagai indeks ke dalam table page (page table). Page table berisi alamat basis dari setiap page pada memori fisik.
  • Page offset (d) mengkombinasikan alamat basis dengan page offset untuk mendefinisikan alamat memori fisik yang dikirim ke unit memori.

Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain. Pandangan user terhadap sistem segmentasi dapat dilihat pada Gambar 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. 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 . 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).





Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode. Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap.

• 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.



Perbedaan Segmentasi dan Paging

Ada beberapa perbedaan antara Segmentasi dan Paging diantaranya adalah: 
  1. Segmentasi melibatkan programer (programer perlu tahu teknik yang digunakan), sedangkan dengan paging, programer tidak perlu tahu teknik yang digunakan.
  2. Pada segmentasi kompilasi dilakukan secara terpisah sedangkan pada paging, kompilasinya tidak terpisah. 
  3. Pada segmentasi proteksinya terpisah sedangkan pada paging proteksinya tidak terpisah. 
  4. Pada segmentasi ada shared code sedangkan pada paging tidak ada shared code. 
  5. Pada segmentasi terdapat banyak ruang alamat linier sedangkan pada paging hanya terdapat satu ruang alamat linier. 
  6. Pada segmentasi prosedur dan data dapat dibedakan dan diproteksi terpisah sedangkan pada paging prosedur dan data tidak dapat dibedakan dan diproteksi terpisah. 
  7. Pada segmentasi pengubahan ukuran tabel dapat dilakukan dengan mudah sedangkan pada Paging pengubahan ukuran tabel tidak dapat dilakukan dengan mudah. 
  8. Segmentasi digunakan untuk mengizinkan program dan data dapat dipecahkan jadi ruang alamat mandiri dan juga untuk mendukung sharing dan proteksi sedangkan paging digunakan untuk mendapatkan ruang alamat linier yang besar tanpa perlu membeli memori fisik lebih. 


Sumber:

Bambang [2002] Bambang Hariyanto,. Ir. 2002. Sistem Operasi. Edisi kedua. Informatika. Bandung

http://herysusanto30.blogspot.com/2012/12/sistemfragmentasi-penyimpanandi.html (20 juni 2013)