Kamis, 22 Januari 2015

DEADLOCK DAN STARVATION

DEADLOCK
Deadlock adalah suatu kondisi dimana dua proses atau lebih tidak dapat meneruskan eksekusinya oleh pemroses. Pada umumnya deadlock terjadi karena proses mengalami startvation, yaitu suatu job yang sedang dieksekusi dan eksekusi job tersebut tidak ada hentinya, tidak diketahui kapan berhentinya proses tersebut atau bahkan job yang antri bisa dikatakan mempunyai status mati, padahal proses-proses lain sedang menunggu sumber daya proses.
                Kondisi Deadlock merupakan kondisi terparah karena banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar.

1. Resources-Allocation Graph
Sebuah cara visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan terjadinya. G = (V, E) Graf berisi node and edge. Node V terdiri dari proses-proses = {P1, P2, P3, ...} dan jenis resource. {R1, R2, ...} Edge E adalah (Pi, Rj) atau (Ri, Pj) Sebuah panah dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource ke process menunjukkan sebuah instance dari resource telah dtempatkan ke proses. Process adalah lingkaran, resource adalah kotak; titik-titik merepresentasikan jumlah instance dari resource Dalam tipe. Meminta poin-poin ke kotak, perintah datang dari titik.

2. Model Sistem
Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagi terjadinya deadlock, yaitu:
a.       Mutual Exclusion
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
b.      Hold and Wait
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
c.       Non-pre-emptive
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
d.      Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya

3. Strategi menghadapi Deadlock
Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu:
a.       Mengabaikan adanya deadlock.
b.      Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.
c.       Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:
-       Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
-       Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.
Dari penjabaran pendekatan diatas, terdapat empat metode untuk mengatasi deadlock yang akan terjadi, yaitu:
a. Strategi Ostrich
Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX.

4 . Mencegah Deadlock
Metode ini merupakan metode yang paling sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock. Tetapi pencgahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk.
Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat yang dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
Syarat pertama yang akan dapat ditiadakan adalah Mutual Exclusion, jika tidak ada sumber daya yang secara khusus diperuntukkan bagi suatu proses maka tidak akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau lebih proses mengakses sebuah sumber daya yang sama akan menyebabkan chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu dengan mengantrikan job-job pada antrian dan akan dilayani satu-satu.
Beberapa masalah yang mungkin terjadi adalah:
a.       Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool
b.      Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlock
Hal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutual exclusion benar-benar tidak dapat dihilangkan.
Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih menjanjikan. Jika suatu proses yang sedang menggunakan sumber daya dapat dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlock dapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar meminta sumber daya yang mereka butuhkan pada awal proses sehingga dapat dialokasikan sumber daya yang dibutuhkan. Namun jika terdapat sumber daya yang sedang terpakai maka proses tersebut tidak dapat memulai prosesnya.
Masalah yang mungkin terjadi:
a.       Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses
b.      Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang digunakan hanya beberapa waktu dan tidak digunakan tapi tetap dimiliki oleh suatu proses yang telah memintanya dari awal.
Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan dari meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka suatu proses dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan karena hasil dari suatu proses yang dihentikan menjadi tidak baik.
Cara terakhir adalah dengan meniadakan syarat keempat circular wait. Terdapat dua pendekatan, yaitu:
a.       Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber daya pada suatu waktu, jika menginginkan sumber daya lain maka sumber daya yang dimiliki harus dilepas.
b.      Membuat penomoran pada proses-proses yang mengakses sumber daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya kapan pun, tetapi permintaannya harus dibuat terurut.
Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya dapat memiliki satu proses adalah bahwa tidak semua proses hanya membutuhkan satu sumber daya, untuk suatu proses yang kompleks dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan dengan penomoran masalah yang dihadapi adalah tidak terdapatnya suatu penomoran yang dapat memuaskan semua pihak.
Secara ringkas pendekatan yang digunakan pada metode pencegahan deadlock dan masalah-masalah yang menghambatnya, terangkum dalam tabel dibawah ini.

5. Menghindari Deadlock
Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka sumber daya akan diberikan pada proses yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.
a.       Kondisi Aman (Safe state)
Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan sumber daya yang ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
b.      Kondisi Tak Aman (Unsafe state)
Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda dengan menjalankan proses-proses dengan suatu urutan.

6. Algoritma Bankir
Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya.
Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:
a.       Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
b.      Jumlah proses yang tidak tetap dan berubah-ubah.
c.       Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
d.      Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
e.      Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.

7. Mendeteksi Deadlock dan Memulihkan Deadlock
Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakah deadlock sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam deadlock tersebut. Setelah kondisi deadlock dapat dideteksi, maka langkah pemulihan dari kondisi deadlock dapat segera dilakukan. Langkah pemulihan tersebut adalah dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yang diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur) suatu proses. Metode ini banyak digunakan pada komputer mainframe berukuran besar.
a.     Terminasi Proses
Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam metode ini adalah, sebagai berikut:
-       Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi ini terlalu mahal).
-       Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock dapat diatasi (memakan banyak waktu).
-       Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk selesai, dan kedalaman dari rollback.
b.    Resources Preemption
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses dan sumber daya, agar tidak terjebak pada unsafe condition.
Beberapa langkahnya, yaitu:
-       Pilih salah satu - proses dan sumber daya yang akan di-preempt.
-       Rollback ke safe state yang sebelumnya telah terjadi.
Mencegah suatu proses agar tidak terjebak pada starvation karena metode ini.

STARTVATION
                Startvation adalah keadaan dimana pemberian akses bergantian terus menerus, dan ada suatu proses yang tidak mendapatkan gilirannya. Juga dapat dimaksudkan bahwa kondisi bila beberapa proses-proses menunggu alokasi sumber daya sampai tak berhingga, sementara proses-proses lain dapat memperoleh alokasi sumber daya.
                Hal ini disebabkan bias pada kebijaksanaan atau strategi alokasi sumber daya. Kondisi seperti ini harus dihindari pada sistem operasi karena tidak adil, tapi dikehendaki penghindaran dilakukan seefisien mungkin. Penanganan ini merupakan persoalan yang sulit untuk menemukan kriteria yang benar, adil dan efesien dalam suatu strategi Sistem Operasi.
Perhatikan contoh berikut:
                a. terdapat tiga proses, P1, P2, dan P3.
                b. P1, P2 dam P3 memerlukan pengaksesan sumber daya R secara periodik.
Skenario berikut terjadi:
                c. P1 sedang diberi sumber daya R, P2 dan P3 blocked menunggu sumber daya R.
                d. Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R.
                e. Asumsi P3 diberi hak akses. Kemudian setelah selesai, hak akses kembali diberikan ke P1 yang satu itu kembali membutuhkan sumber daya R.
                Jika pemberian hak akses bergantian terus menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan sumber daya R, meski tidak ada deadlock. Pada situasi ini, P2 mengalami situasi yang disebut dengan startvation

Sumber:

http://jaringan-kabel.blogspot.com/2012/07/algoritma-deadlock.html

Rabu, 21 Januari 2015

MANAJEMEN MEMORY

MANAJEMEN MEMORY
             Bagian operating sistem yang mengatur memori disebut dengan memory manager. Pemakaian memori (manajemen memori dan organisasi) perlu dilakukan karena hal tersebut sangat mempengaruhi kinerja komputer, sehingga memiliki fungsi dan tugas penting dan kompleks yaitu berkaitan dengan :
a. Memori utama sebagai sumber daya yang harus dialokasikasikan dan dipakai bersama di antara sejumlah proses yang aktif, sehingga dapat memanfaatkan pemroses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung sebanyak mungkin proses.
b. Upaya agar pemogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer.

1.      Manajemen memori
Sistem manajemen memori dapat dibagi kedalam dua kelas, yaitu : pemindahan proses (back and forth) diantara memori utama dengan disk selama eksekusi (swapping and paging) dan tidak ada pemindahan proses.
Mempunyai beberapa fungsi, antara lain :
a. Mengelola informasi memori yang dipakai dan tidak dipakai.
b. Mengalokasikan memori ke proses yang memerlukan.
c. Mendealokasikan memori dari proses yang telah selesai.
d. Mengelola swapping antara memori utama dan disk.

2.    Hirarki memori
                Pemakaian memori dua tingkat, menggunakan cache memory yang dapat meningkatkan kinerja dan utilisasi memori secara dinamik. Chace memory merupakan penyimpan berkecepatan tinggi lebih cepat dibanding memori utama. Chace memory lebih mahal dibanding memori utama, sehingga kapasitas cache relatif kecil.

Memperlihatkan hubungan antara chace memory, memori utama dan penyimpan sekunder. Dengan cache memory, bagian program yang akan digunakan (dieksekusi atau diacu) dikopi dulu ke chace sebelum dieksekusi. Di chace memory, instruksi dapat dieksekusi dengan lebih cepat dibanding di memori utama. Penggunaan chace atau memori antara yang lebih cepat mempunyai alasan yang dikemukakan oleh Denning, yaitu ekseksui program biasanya pada suatu interval waktu mengumpul di satu lokasi kecil. Prinsip ini disebut lokalitas. Lokalitas dapat berupa lokalitas waktu dan ruang. Prinsip lokalitas berkembang menjadi konsep working set model.

3.    Konsep Dasar Paging
Paging merupakan kemungkinan solusi untuk permasalahan fragmentasi  eksternal dimana ruang alamat logika tidak berurutan; mengijinkan sebuah proses  dialokasikan pada memori fisik yang terakhir tersedia. Memori fisik dibagi ke dalam  blok-blok ukuran tetap yang disebut frame. Memori logika juga dibagi ke dalam blokblok dg ukuran yang sama yang disebut page. Semua daftar frame yang bebas  disimpan. Untuk menjalankan program dengan ukuran n page, perlu menemukan n  frame bebas dan meletakkan program pada frame tersebut. Tabel page (page table)  digunakan untuk menterjemahkan alamat logika ke alamat fisik.
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.

Ukuran page (juga frame) didefinisikan oleh perangkat keras. Ukuran page merupakan bilangan 2 pangkat k, mulai 512 (29) s/d 8192 (213) tergantung arsitektur computer. Bila ukuran ruang alamat logika 2m dan ukuran satu page adalah 2n address  unit (byte/word) maka (m-n) bit orde tinggi dari alamat logika menunjukkan nomor page (page number) dan n bit orde rendah menunjukkan page offset.



Pada skema paging, tidak terjadi fragmentasi eksternal, karena “sembarang” frame dapat dialokasikan ke proses yang memerlukannya. Tetapi beberapa fragmentasi internal masih mungkin terjadi. Hal ini dikarenakan frame dialokasikan sebagai unit dan jika kebutuhan memori dari proses tidak menemukan page, maka frame terakhir mungkin tidak dialokasikan penuh.
Bila suatu proses datang untuk dieksekusi, maka ukurannya diekspresikan dengan page. Setiap page membutuhkan satu frame. Bila proses membutuhkan npage, maka proses tersebut juga membutuhkan n frame. Jika tersedia n frame, maka memori dialokasikan untuk proses tersebut. Alokasi page pada frame bebas.

Pada paging, user memandang memori sebagai bagian terpisah dari memori fisik aktual. Program user memandang memori sebagai satu ruang berurutan yang hanya berisi program user tersebut. Faktanya, program user terpecah pada memori fisik, yang juga terdapat program lain. Karena sistem operasi mengatur memori fisik, perlu diwaspadai lokasi detail dari memori fisik, yaitu frame mana yang dialokasikan, frame mana yang tersedia, berapa jumlah frame dan lain-lain. Informasi tersebut disimpan sebagai struktur data yang disebut “frame table”.

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
Mekanisme penggunaan associative register adalah sebagai berikut :
         Associative register berisi hanya beberapa entry tabel page (sampai dengan ukuran maksimum).
         Jika memori logika dibangkitkan oleh CPU, nomor page berupa sekumpulan associative register yang berisi nomor page dan nomor frame yang berkorespondensi.
•     Jika nomor page ditemukan pada associative register, nomor frame segera tersedia  dan digunakan untuk mengakses memori.
         Sebaliknya, jika nomor page tidak ditemukan pada associative register, acuan memori ke tabel page harus dibuat.
        Jika nomor frame tersedia, maka dapat menggunakannya untuk mengakses ke memori yang tepat.
         Kemudian ditambahkan nomor page dan nomor frame ke associative register sehingga akan mudah ditemukan pada acuan berikutnya.
        Setiap kali tabel page baru dipilih, TLB harus dihapus untuk menjamin eksekusi proses berikutnya tidak menggunakan informasi translasi yang salah.


Multilevel Paging
Model multilevel paging digunakan pada sistem yang mempunyai ruang alamat logika yang sangat besar yaitu antara 232 s/d 264. Pada sistem ini, tabel page akan menjadi sangat besar. Misalnya untuk sistem dengan ruang alamat logika 32 bit dan ukuran page 4K byte, maka tabel page berisi 1 juta entry (232 / 212). Solusinya yaitu dengan melakukan partisi tabel ke beberapa beberapa bagian yang lebih kecil.
Untuk sistem dengan ruang alamat logika 32 bit dapat dipecahkan menggunakan skema two level paging. Pada skema ini alamat logika dibagi menjadi 20 bit untuk nomor page dan 12 bit untuk page offset. Karena tabel page juga merupakan page maka nomor page lebih jauh akan dipecah menjadi 10 bit untuk nomor page dan 10 bit untuk page offset. Maka alamat logika adalah sebagai berikut :

Dimana pi adalah indeks ke table page luar dan p2 adalah displacement dalam page pada  table page luar. Skema tabel page pada two level paging dapat dilihat pada Gambar 7- 17. Sedangkan arsitektur translasi alamat pada two level paging untuk mesin 32 bit dapat dilihat pada Gambar 7-18.
Untuk sistem dengan ruang alamat logika 64 bit tidak dapat menggunakan skema two-level paging. Solusi yang digunakan adalah dengan membagi tabel pageluar ke dalam bagian yang lebih kecil : menggunakan skema three-level atau four-levelpaging. Multilevel paging dapat berakibat pada performansi sistem. Untuk skema three-level paging, jika kita menggunakan memori untuk menyimpan tabel, maka akan membutuhkan 4 kali akses memori. Tetapi jika menggunakan cache dengan hit ratio 98%, effective access time menjadi 0.98 X 120 + 0.02 X 420.


4.    Konsep Dasar Segmentasi
Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut.
Segmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen mempunyai nama dan panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. Segmen dibentuk secara otomatis oleh compiler.
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.


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



5. Virtual Memory
                Memory virtual adalah suatu teknik yang memisahkan antara memory logis dan memory fisik. Teknik ini menyembunyikan aspek-aspek fisik memory dari pwngguna dengan menjadikan memory sebagai lokasi alamat virtual berupa byte yang tidak terbatas dan menaruh beberapa bagian dari memory virtual yang berada di memory logis. Konsep memory virtual dikemukakan pertama kali oleh John Fotheringham pada tahun 1961 dengan menggunakan dinamik storage allocation pada system computer atlas di Universitas Manchester. Sedangkan istilah memory virtual di popilerkan oleh Peter J. Denning yang mengambil istilah “virtual” dari dunia optic. Memory virtual lebih besar ukurannya dari memory fisik setiap program yang dijalankan harus berasa di memori. Memory merupakan suatu tempat penyimpanan utama yang bersifat sementara. Ukuran memory yang terbatas akan menimbulkan masalah bagaimana menempatkan program yang berukuran lebih besar dari ukuran memory fisik dan masalah penerapan multiprogramming yang membutuhkan tempat lebih besar di memory.
                Bertambahnya jumlah pengguna yang dapat dilayani. Ruang memory yang masih tersedia luas memingkinkan computer untuk menerima lebih banyak permintaan dari pengguna. Gagasan utama dari virtual adalah ukuran gabungan program, data dan stack melampaui jumlah memory fisik yang tersedia, system operasi menyimpan bagian-bagian proses yang sedang digunakan di memory fisik dan sisanya di letakkan di disk.
                Begitu bagian yang ada di disk di perlukan, maka meningkatnya respon , karena menurunnya beban I/O dan memori. Ruang menjadi lebih leluasa karena berkurangnya memory fisik yang digunakan. Contoh untuk program 10 Mb tidak seluruh bagian dimasukkan dalam memory fisik. Pesan-pesan eror hanya dimasukkan jika terjadi error.berkurangnya proses I/O yang dibutuhkan.
                Misalnya untuk program butuh membaca dari disk dan memasukkan dalam memory setiap kali diakses memory. Dengan pengaturan oleh system operasi dan di dukung perangkat keras , memory virtual dapat mengatasi masalah kebuutuuhhan memory tersebut.
                Memory virtual melakukan pemisahan dengan menaruh emory logis ke disk sekunder dan hanya membawa halaman yang diperlukan ke memory utama. Teknik ini menjadikan seolah-olah ukuran memory fisik yang dimiliki lebih besar dari sebenarnya dengan menpatkan keseluruhan program di disk sekunder dan membawa halaman-halaman yang diperlukan ke memory fisik.  Jadi jika proses yang sedang berjalan membutuhkan instruksi atau data yang terdapat pada suatu halaman tertentu maka halaman tersebuut akan dicari di memory utama. Jika halaman yang diinginkan tidak ada maka akan di cari di disk. Ide ini seperti menjadikan memory sebagai cache untuk disk. Beberapa keuntungan penggunaan memory virtual adalah sebagai berikut :
1.       Sedikit memori yang dibutuhkan
2.       Sedikit I/O yang dibutuhhkan
Bagian memori yang tidak diperlukan akan diperlukan dari memori fisik (swap out) dan diganti (swap in) oleh bagian disk yang diperlukan itu. Memory virtual diimplementasikan oleh system multiprogramming. Misalnya : 10 program dengan ukuran 2 Mb dapat berjalan di memory berkapasitas 4 Mb. Tiap memory dialokasikan 256 Kbyte dan bagian-bagian proses swap in masuk ke dalam memory fisik begitu diperlukan dan akan keluar swap out jika sedang tidak diperlukan. Dengan demikian, system multiprogramming manjadi lebih efien. Prinsip dari memory virtual yang perlu di ingat adalah bahwa “ kecepatan maksimum eksekusi proses di memory virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di system yang tidak menggunakan memory virtual”. Memory virtual di implementasikan dengan 2 cara , yaitu:
1.       Deaman paging
Menerapkan konsep pemberian alaman pada proses
2.       Deman segmentation
Lebih kompleks diterapkan karena ukuran segmen yang bervariasi
                Demand paging adlah satu implementasi dari memory virtual yang paling umum digunakan. Demand paging pada prinsipnya hamper sama dengan permintaan halaman hanya saja halaman tidak dibawa ke dalam memori fiik sampai ia benar-benar diperlukan. Untuk itu diperlukan bantuan perangkat keras untuk mengetahui lokasi halaman saat diperlukan. Karena demand paging merupakan implementasi dari memory virtual, maka keuntungannya sama dengan keuntungan memory virtual , yaitu :
1.       Dapat melayani lebih banyak pengguna.
Ada 3 kemungkinan kasus yang dapat terjadi saat dilakukan pengecekan pada halam yang dibutukan , yaitu , halaman ada dan sudah berada di memory- status valid, halaman ada tetapi masih berada di disk atau belum berada di memori . Halaman tidak ada, baik dimemory maupun di disk. Pengaturan bit dilakukan dengan : bit=1 berarti halaman berada di memory. Bit=0 berati halaman tidak ada di memori. Apabila ternyata hasil dari transaksi bit halaman bernilai 0, berarti kesalahan halaman terjadi .Kesalahan halaman adalah interupsi yang tejadi ketika halaman yang diminta tidak berapa di memory utama. Proses yang sedang terjadi berjalan akan mengakses table halaman untuk mendapatkan refrensi hhalaman yang diinginkan . Kelebihan atau kekurangan manajemen memory dengan permintaan halaman memiliki kelebihan yang sama dengan manajemen memori dengan pemberian halaman, antara lain :
a.       Menghilangkan masalah
b.      Respon yang lebih cepat
c.       Fragmentasi eksternal sehingga tidak diperlukan pemadatan
Selain itu permintaan halaman memiliki kelebihan yang lain , yaitu :
a.       Memory virtual yang besar
Memori logis tidak lagi terbatas pada ukurab memory fisik.
b.      Penggunaan memory yang lebi efisien
Bagian program yang dbawa ke memori fisik hanyalah bagian program yang dibutuhkan sementara bagian lain yang jarang digunakan tidak akan dibawa


c.       Meningkatkan derajat multiprogramming
Derajat multiprogramming menunjukkan banyaknya proses yang berada di memory fisik .
d.      Penggunaan I/O yang lebih sedikit
Hal ini dapat terjadi karena permintaan halaman hanya membawa bagian yang diperlukan dari suatu program.
Permintaan halaman juga memiliki beberapa kekurangan , antara lain :
a.       Processor overhead
Interupsi kesalaan halaman memberikan kerja tambahan kepada CPU untuk mengambil halaman yang tidak berada di memory fisik pada saat diperlukan.
b.      Kinerja demand paging salah satu hal yang menjadi pertimbangan dalam penggunaan permintaan halaman adalah waktu akses memory menjadi lebih lambat akibat perlunya penanganan kesalahan halaman.
c.       Halaman Fault Time lamanya waktu untuk mengatasi kesalahan halaman
Ada 3 faktor untuk mempengaruhi halaman fault time ini yaitu:
1.       Melayani interupsi dari kesalahan halaman
Aktifitas yang dilakuukan dalam melayani kesalahan halaman ini yaitu :
a.       Memberitahu system operasi saat terjadinya kesalahan halaman
b.      Menyimpan status dari proses bersangkutan
c.       Memeriksa apaka refrensi halaman memberikan legal atau tidak . bila refrensi yang diberikan legal maka dicari lokasi dari halaman tersebut di disk
2.       Pembacaan halaman
Aktivitas terjadi alam pembacaan halaman ini, yaitu:
a.       Menunggu dalam antrian sampai mendapatkan giliran untuk membaca
b.      Menunggu disk untuk membaca lokasi yang diminta. Disk dilakukan kerja mekanis untuk membaca data sehingga lebih lambat dari memory
c.       Mengirim halaman yang diminta ke memory fisik
3.       Pengulangan instruksi
Aktivitas yang terjadi untuk mengulangi instruksi ini, yaitu :
a.       Interupsi proses yang sedang berjalan untuk menandakan bahwa proses yang sebelumnya terhenti akibat kesalahan halaman telah selesai dalam membaca halaman yang diminta
b.      Menyimpan status dari proses yang sedang berjalan
c.       Membetulkan table halaman untuk menunjukkan bahwa halaman yang ingin dibaca sudah ada di memory fisik
d.      Mengambil kembali status proses bersangkutan untuk selanjutnya dijalankan di CPU


Sumber:
http://lecturer.eepis.-its.edu/-arna/Diktat_SO/7.manajemen%20Memory.pdf