Anda di halaman 1dari 7

Materi Sistem Operasi Pertemuan ke 2 Address Binding

Pengertian address binding adalah sebuah prosedur untuk menetapkan alamat fisik yang akan digunakan oleh program yang terdapat di dalam memori utama. Address binding yang dilakukan terhadap suatu program dapat dilakukan di 3 tahap yang berbeda, yaitu: Compilation time. Pada tahap ini sebuah program pada awalnya akan menghasilkan alamat berupa simbol-simbol, kemudian simbol-simbol ini akan langsung diubah menjadi alamat absolut atau alamat fisik yang bersifat statik. Bila suatu saat terjadi pergeseran alamat dari program tersebut maka untuk mengembalikan ke alamat yang seharusnya dapat dilakukan kompilasi ulang. Contoh : file bertipe .com yang merupakan hasil dari kompilasi program Load time. Pada tahap ini awalnya program menghasilkan alamat berupa simbol-simbol yang sifatnya acak (relative address), kemudian akan dilakukan penghitungan ulang agar program tersebut ditempatkan pada alamat yang dapat dialokasikan ulang (relocateble address). Singkatnya binding terjadi pada waktu program telah selesai di- load. Contoh: File bertipe .exe. Execution time. Alamat bersifat relatif, binding akan dilakukan pada saat run time. Pada saat run time dibutuhkan bantuan hardware yaitu MMU (Memory Management Unit).

Ruang Alamat Logika dan Fisik


Alamat yang dihasilkan oleh CPU berupa alamat logika, sedangkan yang masuk ke dalam memori adalah alamat fisik. Pada compile time dan load time, alamat fisik dan logika identik. Sebaliknya, perbedaan alamat fisik dan logika terjadi pada execution time. Kumpulan semua alamat logika yang dihasilkan oleh program adalah ruang alamat logika/ruang alamat virtual. Kumpulan semua alamat fisik yang berkorespondensi dengan alamat logika disebut ruang alamat fisik. Pada saat program berada di CPU, program tersebut memiliki alamat logika, kemudian oleh MMU dipetakan menjadi alamat fisik yang akan disimpan di dalam memori. Ilustrasinya sebagai berikut, nilai pada register ini akan ditambah dengan setiap alamat yang dibuat oleh user process yang kemudian dikirim ke memori. Contohnya register relokasi berada di 14000, alamat logika di 346, maka langsung dipetakan menjadi alamat fisik di 14346.

Gambar 1. Gambar Relokasi Dinamis dengan Menggunakan Relocation Register. Pemuatan Dinamis
Ukuran dari memori fisik terbatas. Supaya utilitas memori berjalan dengan baik, maka kita menggunakan pemuatan dinamis. Dengan cara ini, routine-routine hanya akan dipanggil jika dibutuhkan. Ilustrasi sebagai berikut, semua routine disimpan di disk dalam format yang dapat dialokasikan ulang (relocatable load format). Program utama diletakkan di memori dan dieksekusi. Ketika sebuah routine memanggil routine yang lain, hal pertama yang dilakukan adalah mengecek apakah ada routine lain yang sudah di-load. Jika tidak, relocatable linking loader dipanggil untuk menempatkan routine yang dibutuhkan ke memori dan memperbaharui tabel alamat program. Lalu, kontrol diberikan pada routine baru yang dipanggil. Keuntungan dari pemuatan dinamis adalah routine yang tidak digunakan tidak pernah dipanggil. Metode ini berguna pada kode yang berjumlah banyak, ketika muncul kasus seperti routine yang salah. Walaupun ukuran kode besar , porsi yang digunakan bisa jauh lebih kecil. Sistem operasi tidak membuat mekanisme pemuatan dinamis, tetapi hanya menyediakan routine routine untuk menerapkan mekanisme ini. User-lah yang merancang programnya sendiri agar programnya menggunakan sistem pemuatan dinamis.

Linking Dinamis
Pustaka bisa bersifat statik, dikenal dengan archive yang terdiri dari kumpulan routine yang diduplikasi ke sebuah program oleh compiler, linker, atau binder, sehingga menghasilkan sebuah aplikasi yang dapat dieksekusi (bersifat stand alone atau dapat berjalan sendiri). Compiler

menyediakan standard libraries, misalnya C standard library, tetapi programmer bisa juga membuat pustakanya untuk digunakan sendiri atau disebarkan. Pustaka statis ini menyebabkan memori menjadi berat. Oleh karena itu, seiring dengan perkembangan teknologi, terdapat pustaka yang bersifat dinamis. Mekanismenya disebut linking dinamis, sedangkan pustakanya disebut dynamically linked library. Linking Dinamis artinya data (kode) di pustaka tidak diduplikasi ke dalam program pada compile time, tapi tinggal di file terpisah di disk Linker hanya membutuhkan kerja sedikit pada compile time. Fungsi linker adalah mencatat apa yang dibutuhkan oleh pustaka untuk eksekusi dan nama indeks atau nomor. Kerja yang berat dari linking akan selesai pada load time atau selama run time. Kode penghubung yang diperlukan adalah loader. Pada waktu yang tepat, loader menemukan pustaka yang relevan di disk dan menambahkan data dari pustaka ke proses yang ada di ruang memori. Keuntungan dari linking dinamis adalah memori program tidak menjadi berat.

Pustaka Bersama
Satu pustaka dipakai bersama-sama oleh banyak program pada waktu yang bersamaan. Sekumpulan data dapat diperbaharui versinya dan semua program yang menggunakan pustaka tersebut secara otomatis menggunakan versi baru. Metode yang dipakai adalah linking dinamis. Tanpa adanya metode ini, semua program akan melakukan proses linking ulang untuk dapat mengakses pustaka yang baru, sehingga program tidak bisa langsung mengeksekusi yang baru, informasi versi terdapat di program dan pustaka. Lebih dari satu versi dari pustaka bisa masuk ke memori sehingga setiap program menggunakan informasi versinya untuk memutuskan versi mana yang akan digunakan dari salinan pustaka.

Rangkuman
Memori merupakan sumber daya yang paling penting untuk dijaga sebaik-baiknya karena merupakan pusat dari kegiatan di komputer. Terdapat proteksi perangkat keras yang dilakukan dengan menggunakan dua register, yaitu base dan limit register sehingga proses hanya bisa mengakses di alamat yang dilegalkan. Alamat yang dihasilkan oleh CPU disebut alamat logika yang kemudian dipetakan oleh MMU menjadi alamat fisik yang disimpan di memori. Untuk mendapatkan utilitas memori yang baik, maka diperlukan metode pemuatan dinamis, linking dinamis, dan pustaka bersama.

Rujukan
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons. [Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall. [WEBAmirSch2000] Yair Amir dan Theo Schlossnagle. 2000. Operating Systems 00.418: Memory Management http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ . Diakses 29 Mei 2006.

[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging http://www.cs.princeton.edu/ courses/ archive / spring02/ cs217/ lectures/ paging.pdf . Diakses 28 Juni 2006. [WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html . Diakses 28 Juni 2006. [WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture Notes Part 7 http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html . Diakses 28 Juni 2006. [Wikipedia2007] Anonim. 2007. Shared Library http://en.wikipedia.org/wiki/Shared_library . Diakses 16 maret 2007. [KUR2003] David A.S, Habib A.M, dan Endah W. 2003. Makalah IF3191 Sistem Operasi: Manajemen Memori kur2003.if.itb.ac.id/file/FKML-K1-07.pdf . Diakses 16 maret 2007. [Suny2005] Suny. 2005. Address Binding www.cs.binghamton.edu/~nael/classes/cs350/notes/4-lec15.pdf . Diakses 16 maret 2007.

Alokasi Memori Pendahuluan


Memori merupakan salah satu sumber daya yang penting dalam pengeksekusian sebuah proses. Memori terdiri dari array word atau byte yang masing-masing memiliki alamat. Suatu proses dapat dieksekusi bila ia telah berada dalam memori sebelum CPU mengambil instruksi-instruksi pada alamat yang ditunjuk oleh program counter. Bagian dari sistem yang bertugas untuk mengatur memori disebut memory manager. Memory manager mengatur bagian mana dari memori yang harus digunakan dan mana yang tidak pada suatu waktu, selain itu memory manager juga mengalokasikan memori untuk proses-proses yang membutuhkannya serta men-dealokasikannya kembali saat proses-proses tersebut tidak lagi membutuhkannya. Masalahnya adalah bagaimana jika memori tidak lagi cukup untuk menampung semua proses yang akan dieksekusi? Solusi untuk masalah ini adalah dengan teknik pemindahan proses dari memori ke dalam disk dan kembali memindahkannya ke memori pada saat hendak dieksekusi lagi atau yang lebih dikenal dengan istilah swapping.

Swap
Sebuah proses, sebagaimana telah diterangkan di atas, harus berada di memori sebelum dieksekusi. Proses swapping menukarkan sebuah proses keluar dari memori untuk sementara waktu ke sebuah penyimpanan sementara dengan sebuah proses lain yang sedang membutuhkan sejumlah alokasi memori untuk dieksekusi. Tempat penyimpanan sementara ini biasanya berupa sebuah fast disk dengan kapasitas yang dapat menampung semua salinan dari semua gambaran memori serta menyediakan akses langsung ke gambaran tersebut. Jika eksekusi proses yang dikeluarkan tadi akan dilanjutkan beberapa saat kemudian, maka ia akan dibawa kembali ke memori dari tempat penyimpanan sementara tadi. Bagaimana sistem mengetahui proses mana saja yang akan dieksekusi? Hal ini dapat dilakukan dengan ready queue. Ready queue berisikan semua proses yang terletak baik

di penyimpanan sementara maupun memori yang siap untuk dieksekusi. Ketika penjadwal CPU akan mengeksekusi sebuah proses, ia lalu memeriksa apakah proses bersangkutan sudah ada di memori ataukah masih berada dalam penyimpanan sementara. Jika proses tersebut belum berada di memori maka proses swapping akan dilakukan seperti yang telah dijelaskan di atas.

Gambar 2. Proses Swapping


Sebuah contoh untuk menggambarkan teknik swapping ini adalah sebagai berikut: Algoritma RoundRobin yang digunakan pada multiprogramming environment menggunakan waktu kuantum (satuan waktu CPU) dalam pengeksekusian proses-prosesnya. Ketika waktu kuantum berakhir, memory manager akan mengeluarkan (swap out) proses yang telah selesai menjalani waktu kuantumnya pada suatu saat serta memasukkan (swap in) proses lain ke dalam memori yang telah bebas tersebut. Pada saat yang bersamaan penjadwal CPU akan mengalokasikan waktu untuk proses lain dalam memori. Hal yang menjadi perhatian adalah, waktu kuantum harus cukup lama sehingga waktu penggunaan CPU dapat lebih optimal jika dibandingkan dengan proses penukaran yang terjadi antara memori dan disk. Teknik swapping roll out, roll in menggunakan algoritma berbasis prioritas dimana ketika proses dengan prioritas lebih tinggi tiba maka memory manager akan mengeluarkan proses dengan prioritas yang lebih rendah serta me-load proses dengan prioritas yang lebih tinggi tersebut. Saat proses dengan prioritas yang lebih tinggi telah selesai dieksekusi maka proses yang memiliki prioritas lebih rendah dapat dimasukkan kembali ke dalam memori dan kembali dieksekusi. Sebagian besar waktu swapping adalah waktu transfer. Sebagai contoh kita lihat ilustrasi berikut ini: sebuah proses pengguna memiliki ukuran 5 MB, sedangkan tempat penyimpanan sementara yang berupa harddisk memiliki kecepatan transfer data sebesar 20 MB per detiknya. Maka waktu yang dibutuhkan untuk mentransfer proses sebesar 5 MB tersebut dari atau ke dalam memori adalah sebesar 5000 KB / 20000 KBps = 250 ms

Perhitungan di atas belum termasuk waktu latensi, sehingga jika kita asumsikan waktu latensi sebesar 2 ms maka waktu swap adalah sebesar 252 ms. Oleh karena terdapat dua kejadian dimana satu adalah proses pengeluaran sebuah proses dan satu lagi adalah proses pemasukan proses ke dalam memori, maka total waktu swap menjadi 252 + 252 = 504 ms. Agar teknik swapping dapat lebih efisien, sebaiknya proses-proses yang di- swap hanyalah proses proses yang benar-benar dibutuhkan sehingga dapat mengurangi waktu swap. Oleh karena itulah, sistem harus selalu mengetahui perubahan apapun yang terjadi pada pemenuhan kebutuhan terhadap memori. Disinilah sebuah proses memerlukan fungsi system call, yaitu untuk memberitahukan sistem operasi kapan ia meminta memori dan kapan membebaskan ruang memori tersebut. Jika kita hendak melakukan swap, ada beberapa hal yang harus diperhatikan. Kita harus menghindari menukar proses dengan M/K yang ditunda (asumsinya operasi M/K tersebut juga sedang mengantri di antrian karena peralatan M/Knya sedang sibuk). Contohnya seperti ini, jika proses P1dikeluarkan dari memori dan kita hendak memasukkan proses P2, maka operasi M/K yang juga berada di antrian akan mengambil jatah ruang memori yang dibebaskan P1 tersebut. Masalah ini dapat diatasi jika kita tidak melakukan swap dengan operasi M/K yang ditunda. Selain itu, pengeksekusian operasi M/K hendaknya dilakukan pada buffer sistem operasi. Tiap sistem operasi memiliki versi masing-masing pada teknik swapping yang digunakannya. Sebagai contoh pada UNIX, swapping pada dasarnya tidak diaktifkan, namun akan dimulai jika banyak proses yang membutuhkan alokasi memori yang banyak. Swapping akan dinonaktifkan kembali jika jumlah proses yang dimasukkan berkurang. Pada sistem operasi Microsoft Windows 3.1, jika sebuah proses baru dimasukkan dan ternyata tidak ada cukup ruang di memori untuk menampungnya, proses yang lebih dulu ada di memori akan dipindahkan ke disk. Sistem operasi ini pada dasarnya tidak menerapkan teknik swapping secara penuh, hal ini disebabkan pengguna lebih berperan dalam menentukan proses mana yang akan ditukar daripada penjadwal CPU. Dengan ketentuan seperti ini proses-proses yang telah dikeluarkan tidak akan kembali lagi ke memori hingga pengguna memilih proses tersebut untuk dijalankan.

Pemetaan Memori
Sistem operasi dan berbagai proses pengguna terletak di dalam memori utama. Oleh karena itu, kita harus menjaga agar proses diantara keduanya tidak bercampur dengan cara mengalokasikan sejumlah bagian memori tersebut untuk sistem operasi dan proses pengguna. Memori ini biasanya dibagi menjadi 2 bagian. Satu untuk sistem operasi, dan satu lagi untuk proses pengguna. Pemetaan memori (memory mapping) membutuhkan sebuah register relokasi. Sebagaimana yang telah dijelaskan pada bab sebelumnya, register relokasi merupakan base register yang ditambahkan ke dalam tiap alamat proses pengguna pada saat dikirimkan ke memori. Pada pemetaan memori ini terdapat limit register yang terdiri dari rentang nilai alamat logika . Dengan adanya limit register dan

register relokasi, tiap alamat logis haruslah lebih kecil dari limit register. Proses pemetaan dilakukan oleh MMU (Memory Management Unit) dengan menjumlahkan nilai register relokasi ke alamat logis. Alamat yang telah dipetakan ini lalu dikirim ke memori. Pada gambar dibawah ini kita dapat melihat bahwa sebuah proses yang memiliki base register 30004 dan limit register 12090 akan dipetakan ke memori fisik dengan alamat awalnya sesuai dengan base register (30004) dan berakhir pada alamat (30004 + 12090 = 42094).

Gambar 3. Base dan Limit Register


Ketika penjadwal CPU memilih suatu proses untuk dieksekusi, ia akan memasukkan register relokasi dan juga limit register -nya. Register relokasi memungkinkan sistem operasi untuk merubah ukuran partisinya pada memori secara dinamis. Contohnya, kode dan buffer yang dialokasikan untuk driver peralatan pada sistem operasi dapat dihapus dari memori jika peralatan tersebut jarang digunakan. Kode semacam ini disebut kode sistem operasi yang transient, oleh karena kode ini dapat "datang dan pergi" dari memori tergantung kapan ia dibutuhkan. Sehingga penggunaan kode transient ini dapat merubah ukuran sistem operasi selama eksekusi program berlangsung.

Anda mungkin juga menyukai