Selasa, 25 Juni 2013

SISTEM SEGMENTASI


 PENGERTIAN SEGMENTASI

Secara sederhana segmentasi bisa diartikan sebagai suatu ruang alamat  atau segment yang berada di memori. Segment-segment itu dalam keadaan independent. Setiap segment  berisi alamat  0 sampai maksimum secara linier. Panjang setiap segment berbeda-beda sampai panjang maksimun, perobahan  panjang segment terjadi selama proses  eksekusi.

Segment stack bertambah ketika terjadi operasi push dan turun saat operasi pop, dimana setiap segment merupakan ruang alamat terpisah segment-segment dapat tumbuh dan mengkerut secara bebas tanpa mempengaruhi yang lain.

Alamat terdiri dari dua bagian pada memori bersegment yaitu :

1.      Nomor segment
2.      Alamat pada segment ( offset ).

Segment dapat berisi :

1.      Prosedure
2.      Array
3.      Stack
4.      Kumpulan variable skala.

Sistem  Segmentasi

Sistem dengan memori maya dengan segmentasi murni adalah alamat maya adalah offset di segment, setiap proses mempunyai tabel segment dan pada saat proses running alamat awal maya tabel dimuatkan ke register dasar. Nomor segment digunakan mencari deskriptor segment di tabel segment yang menyediakan alamat fisik awal  dari segment, panjang dan bit-bit proteksinya. Alamat fisik dihitung dengan menambahkan alamat dasar segment ke alamat maya.


Gambar 1. Skema Segmentasi

Keunggulan sistem ini dimana segment-segment tersebut saling berhubungan dengan unit-unit program, sehingga segment – segment indeal untuk proteksi dan pemakaian bersama.
Kelemahan sistem ini adalah dimana segment – segment berukuran bervariasi menyebabkan fragmentasi eksternal dan sulit menyelesaikan pertumbuhan dinamis. Segment-segment tidak memetakan blok-blok disk untuk memori maya secara alami.
  

TEKNIK KOMBINASI PAGING DAN SEGMENTASI

Teknik kombinasi pacing dan segmentasi adalah ruang alamat pemakai dibagi menjadi sejumlah segment sesuai dengan kehendak pemrogram. Segment tersebut dibagi menjadi sejumlah page berukuran tetap dan berukuran sama dengan page frame memori utama. Jika segment kurang dari ukuran page, maka segnent hanya memerlukan satu page. 

Dari segi pandangan pemrogram, alamat maya masih berisi nomor segment dan offset di segment itu. Dari segi pandangan sistem, offset segment dipandang sebagai nomor page dan offset page untuk page di segment yang dispesifiksikan. Penggabungan dengan proses adalah tabel segment dan sejumlah tabel page, merupakan satu tabel persegment proses.

Saat proses running, register menyimpan alamat awal tabel segment untuk proses, pemroses menggunakan bagian nomor segment  untuk mengindeks tabel segment proses guna menemukan tabel page untuk segment. Bagian angka page alamat maya digunakan untuk indeks tabel page dan mencari nomor page korespondensi. Angka tersebut kemudian dikombinasikan dengan bagian offset alamat maya untuk menghasilkan alamat nyata yang diinginkan.


Gambar 2. Skema Kombinasi Paging dan Segmentasi

Sumber :

SISTEM PAGING ( Penggantian Page )

Pengertian 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.
Fungsi sistem paging
      Untuk mengatasi apabila suatu program lebih besar dibandingkan dengan memori utama adalah dengan konsep overlay dan konsep memori maya(virtual memori),

Dalam virtual memory ada yang namanya penggantian halaman, yaitu merupakan sebuah algoritma yang menentukan atau menukar halaman dari memori utama ke disk jika halaman pada memori utama perlu dialokasikan. Penggantian memori terjadi ketika page fault yang berarti page frame pada memori fisik harus diputuskan dan segera diganti.
  • Page fault : exception untuk permintaan alokasi halaman ke memori.
  • Page frame : unit terkecil yang ada pada memori fisik.
Ada beberapa jenis algoritma penggantian halaman, yaitu sbb :
  1. Algoritma penggantian page acak
  2. Algoritma penggantian page optimal
  3. Algoritma penggantian page NRU
  4. Algoritma penggantian page FIFO
  5. Algoritma penggantian page modifikasi FIFO
  6. Algoritma penggantian page LRU
Berikut beberapa algoritma penggantian halaman (page) :
  • Algoritma penggantian page acak : merupakan mekanisame algoritma setiap terjadi page fault pada page atau halaman yang diganti dipilih secara acak. Teknik ini tidak memakai informasi apapun dalam menentukan page atau halaman yang akan diganti. Semua page di memori utama mempunyai bobot yang sama untukk di pilih. Teknik ini dapat memilih sembarang page, termasuk page yang sedang diacu (page yang seharusnya tidak di ganti).
 

  • Algortima penggantian page optimal : merupakam mekanisme algoritma  yang memilih page atau halaman yang berpeluang dipakai kembali di masa datang yang paling kecil. Strategi ini akan menghasilkan jumlah page fault paling sedikit. Algoritma ini bisa di bilang utopia ( ideal tanpa dapat dijadikan kenyataan) karena tak mungkin di buat prosedur yang dapat mengetahui peluang pemakaian suatu page di masa datang ( meode ini mungkin tidak diterapkan).
 

  • Algoritma penggantian page NRU ( Not-Recently Used ) : mekanisme algoritma dimana page atau halaman di beri dua bit untuk mencatat status page, bit R dan M, yaitu :
      • Bit R : referenced (menyatakan page sedang di acu)
        • Bit R = 1 berarti sedang diacu
        • Bit R = 0 berarti sedang tidak diacu
      • Bit M : modified (menyatakan page telah dimodifikasi)
        • Bit M = 1 berarti telah di modifikasi
        • Bit M = 0 berarti belum dimodifikasi
      • Dengan dua bit, maka page atau halaman-halaman dikelompokkan menjadi 4 kelas page, yaitu :
        • Kelas 0 : tidak sedang diacu, belum di modifikasi (R = 0, M = 0)
        • Kelas 1 : tidak sedang diacu, telah dimodifikasi (R = 0, M = 1)
        • Kelas 2 : sedang diacu, belum di modifikasi (R = 1, M = 0)
        • Kelas 3 : sedang diacu, telah dimodifikasi (R = 1, M = 1)
      • Memilih mengganti page kelas bernomor terendah (bila terdapat page atau halaman yang ada pada kelas itu) secara acak.
      • Bila kelas tersebut kosong maka dipilih lah page atau halaman di kelas lebih tinggi dan seterusnya. 
      • Dengan kata lain algoritma ini mengasumsikan kelas-kelas bernomor lebih rendah baru akan digunakan kembali dalam jangka waktu yang relatif lama.
  • Algortima penggantian page FIFO ( First In First Out ) : mekanisme algortima yang memerlukan pengolahan senarai page di memori, dimana elemen terdepan senarai adalah page tertua dan ujung belakang adalah page paling akhir datang. Algortima ini sangat simpel implementasinya yaitu ketika page atau halaman masuk terlebih dahulu page tersebut akan keluar terlebih dahulu. Intinya pada algortima ini konsep dasarnya page yang paling lama tersimpan pada memori maka page tersebut yang paling sering digunakan dapat dipindahkan pada memori.

  • Algoritma penggantian modifikasi page FIFO : algortima yang merupakan modifikasi dari algoritma penggantian page FIFO karena murni algortima tersebut jarang digunakan. Namun kemungkinan kelemahan page FIFO dapat dihindari dengan hanya memindahkan page tidak diacu. Page ditambah bit R mencatat apakah page diacu atau tidak, bit R bernilai 1 maka apabila page diacu dan bernilai 0 apabila tidak diacu. 


    • Variasi dari FIFO antara lain sbb :
o Algortima penggantian page kesempatan kedua (Second chance page replacement algorithm) : mekanisme algoritma pada saat terjadi page fault, maka algoritma memilih page atau halaman elemen terdepan  diganti bila bit R bernilai 0. Jika bit R bernilai 1 maka bit page terdepan senarai direset menjadi 0 dan diletakkan ke ujung belakang senarai, sehingga mekanisme ini kembali diterapkan ke elemen berikutnya.

o Algoritma penggantian clock page (clock page replacement algorithm) : mekanisme algoritma ketika semua page merupakan senarai melingkar membentuk pola jam, terdapat penunjuk (pointer) ke page tertua. Ketika terjadi page fault page yang ditunjuk diperiksa. Jika bit R = 0 maka page diganti, page baru ditempatkan ditempat page diganti, dan penunjuk dimajukan satu posisi ke page berikutnya. Namun jika bit R = 1 maka bit R direset menjadi 0, dan penunjuk dimajukan satu posisi hingga seterusnya sampai menemui page dengan bit R = 0.
  • Algoritma penggantian page LRU ( Least Recently Used ) : mekanisme algoritma ketika terjadi page fault maka memindahkan page yang tidak digunakan paling lama, namun masalah utamanya algoritma ini sangat mahal.


Sumber :

Rabu, 01 Mei 2013

MUTUAL EXCLUSION & DEADLOCK


Deadlock ialah suatu kondisi permanen dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Atau dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya bisa dikerjakan oleh proses lain dalam set yang sedang menunggu.

                                                        
Penyebab Deadlock
  • Mutual Exclusion yaitu Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu (kondisi-kondisi untuk solusi).

  • Hold and wait yaitu beberapa proses saling menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya bias saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.

  • No Preemption yaitu sebuah sumber daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya. Proses yang menginginkan sumber daya tersebut hanya menunggu sampai sumber daya tersedia, tanpa bias merebutnya dari proses yang memilikinya.

  • Circual Wait yaitu kondisi membentuk siklus yang berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir, proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah proses-proses tersebut akan selamanya menunggu.

Penanganan Deadlock
Ada 4 cara untuk menangani keadaan deadlock, yaitu :
  1. Pengabaian, yaitu system mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini adalah system tidak mendeteksi adalah deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock. Kebanyakan system operasi yang ada mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penangan dengan mengabaikan deadlock banyak dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh system untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap computer.
  2. Pencegahan, yaitu dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada system. Intinya memastikan agar system tidak akan pernah berada pada kondisi deadlock.
  3. Penghindaran, yaitu menghindari keadaan deadlock. Penghindaraan disini yang dimaksud ialah memprediksi apakah tindakan yang diambil system, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadinya deadlock.
  4. Pendeteksian dan Pemulihan, pada system yang sedang berada pada kondisi deadloclk, tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian memulihkannya kembali system. Proses pendeteksian akan mengahasilkan informasi apakah system sedang deadlock atau tidak serta proses mana yang mengalami deadlock.

Pemuliah Deadlock
Pemulihan kondisi system terkait dengan pendeteksian terhadap deadlock. Apabila menurut algoritma pendeteksian deadlock system berada pada keadaan deadlock, maka harus segera dilakukan mekanisme pemulihan system. Berbahaya apabila system tidak segera dipulihkan dari deadlock, karena system dapat mengalami penurunan performance dan akhirnya terhenti.
Cara-cara yang ditempuh untuk memulihkan system dari deadlock adalah :
  1. Terminasi proses. Pemulihan system dapat dilakukan dengan melakukan terminasi terhadap semua proses yang terlibat dalam deadlock secara satu per satu sampai circular wait hilang. Untuk itu, dengan menghilangkan kondisi circular wait dapat memulihkan system dari deadlock. Dalam melakukan terminasi terhadap proses yang deadlock, terdapat beberapa factor yang menentukan proses mana yang akan diterminasi, factor pertama adalah prioritas dari proses-proses yang terlibat deadlock. Factor kedua adalah berapa lama waktu yang dibutuhkan untuk eksekusi dan waktu proses menunggu sumber daya. Factor ketiga adalah berapa banyak sumber daya yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, factor utilitas dari proses pun menjadi pertimbangan system untuk melakukan terminasi pada suatu proses.
  2. Rollback and Restart. Dalam memulihkan keadaan system yang deadlock, dapat dilakukan dengan cara system melakukan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan normal, sehingga system dapat memulai proses dari posisi aman tersebut. Untuk menentukan pada saat apa proses akan rollback, tentunya ada factor yang menentukan. Diusahakan untuk meminimalisasi kerugian yang timbul akan memilih suatu proses menjadi korban. Harus pula dihindari keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut tidak akan pernah sukses menjalankan eksekusi. 
MUTUAL EXKLUSION


Mutual Exclusion adalah Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu (kondisi-kondisi untuk solusi). Tiga kondisi untuk menentukan mutual Exclusion diantaranya :

  1. Tidak ada dua proses yang pada saat bersamaan berada di critical region.
  2. Tidak ada proses yang berjalan diluar critical region yang bisa menghambat proses lain
  3. Tidak ada proses yang tidak bisa masuk ke critical region

Sebuah proses memiliki bagian di mana bagian ini akan melakukan akses dan manipulasi data. Bagian ini disebut dengan critical section. Ketika sebuah proses sedang dijalankan dalam critical sectionnya, tidak ada proses lain yang boleh dijalankan dalam critical sectionnya. Karena hal ini dapat memungkinkan terjadinya akses ke resources yang sama dalam waktu yang sama. Keadaan seperti ini disebut proses mutually exlusive. Oleh karena itu, diperlukan suatu mekanisme atau aturan agar proses sifat mutually exclusive dapat terpenuhi.

Criteria Penyelesaian Mutual Exclusion :
  • Mutual Exclusion harus dijamin
  • Hanya satu proses pada satu saat yang diizinkan masuk Critical Section/Region
  • Proses yang berada di noncritical section, dilarang memblok proses-proses yang ingin masuk critical section
  • Harus dijamin proses yang ingin masuk critical section tidak menunggu lama hingga waktu tak terhingga, agar tidak terjadi deadlock atau starvation
  • Ketika ada proses di critical section maka proses yang ingin masuk critical section harus diijinkan segera masuk tanpa waktu tunda
  • Tidak ada asumsi mengenai kecepatan relative proses atau jumlah proses yang ada
OLEH:

1. NIM : 12.3.00007
    NAMA: Arif Amalia N.
2. NIM : 11.3.00019
    NAMA: G. Alfarama S.r