Feeds RSS
Feeds RSS

Jumat, 11 Juni 2010

MANAJEMEN MEMORY


Memori adalah pusat dari operasi pada sistem komputer modern. Memori adalah array besar dari word atau byte, yang disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter. Instruksi ini menyebabkan penambahan muatan dari dan ke alamat memori tertentu.
Instruksi eksekusi yang umum, contohnya, pertama mengambil instruksi dari memori. Instruksi dikodekan dan mungkin mengambil operand dari memory. Setelah instruksi dieksekusi pada operand, hasilnya ada yang dikirim kembali ke memory. Sebagai catatan, unit memory hanya merupakan deretan alamat memory; tanpa tahu bagaimana membangkitkan (instruction counter, indexing, indirection, literal address dan lainnya) atau untuk apa (instruksi atau data). Oleh karena itu, kita dapat mengabaikan bagaimana alamat memori dibangkitkan oleh program, yang lebih
menarik bagaimana deretan alamat memori dibangkitkan oleh program yang sedang berjalan. Pengikatan Alamat (Address Binding) Pengikatan alamat adalah cara instruksi dan data (yang berada di disk sebagai file yang dapat dieksekusi) dipetakan ke alamat memori. Sebagian besar sistem memperbolehkan sebuah proses user (user process) untuk meletakkan di sembarang tempat dari memori fisik. Sehingga, meskipun alamat dari komputer dimulai pada 00000, alamat pertama dari proses user tidak perlu harus dimulai 00000. Pada beberapa kasus, program user akan melalui beberapa langkah sebelum dieksekusi (Gambar 7-1). Alamat pada source program umumnya merupakan alamat simbolik. Sebuah compiler biasanya melakukan pengikatan alamat simbolik (symbolic address) ke alamat relokasi dipindah (relocatable address). Misalnya compiler mengikatkan alamat simbolik ke alamat relokasi “14 byte from the beginning of this module”. Editor Linkage mengikatkan alamat relokasi ini ke alamat absolute (absolute addresses) “74014”. Instruksi pengikatan instruksi dan data ke alamat memori dapat dilakukan pada
saat :
• Compile time : Jika lokasi memori diketahui sejak awal, kode absolut dapat dibangkitkan, apabila terjadi perubahan alamat awal harus dilakukan kompilasi ulang. Misalnya : program format .com pada MS-DOS adalah kode absolut yang diikat pada saat waktu kompilasi
• Load time : Harus membangkitkan kode relokasi jika lokasi memori tidak diketahui pada saat waktu kompilasi.
• Execution time : Pengikatan ditunda sampai waktu eksekusi jika proses dapat dipindahkan selama eksekusi dari satu segmen memori ke segmen memori lain.Memerlukan dukungan perangkat keras untuk memetakan alamat (misalnya register basis dan limit).
Dinamic Loading
Untuk memperoleh utilitas ruang memori, dapat menggunakan dynamic loading. Dengan dynamic loading, sebuah rutin tidak disimpan di memori sampai dipanggil. Semua rutin disimpan pada disk dalam format relocatable load. Mekanisme dari dynamic loading adalah program utama di-load dahulu dan dieksekusi. Bila suatu routine perlu memanggil routine lain, routine yang dipanggil lebih dahulu diperiksa apakah rutin yang dipanggil sudah di-load. Jika tidak, relocatable linking loader dipanggil untuk me-load rutin yg diminta ke memori dan meng-ubah tabel alamat.
Keuntungan dari dynamic loading adalah rutin yang tidak digunakan tidak pernah di-load. Skema ini lebih berguna untuk kode dalam jumlah besar diperlukan untuk menangani kasus-kasus yang jarang terjadi seperti error routine. Dinamic loading tidak memerlukan dukungan khusus dari sistem operasi.
Dinamic Linking
Sebagian besar sistem operasi hanya men-support static linking, dimana sistem library language diperlakukan seperti obyek modul yang lain dan dikombinasikan dengan loader ke dalam binary program image. Konsep dynamic linking sama dengan dynamic loading. Pada saat loading, linking ditunda sampai waktu eksekusi. Terdapat kode kecil yang disebut stub digunakan untuk meletakkan rutin library di memori dengan tepat. Stub diisi dengan alamat rutin dan mengeksekusi rutin. Sistem operasi perlu memeriksa apakah rutin berada di alamat memori.
Dinamic linking biasanya digunakan dengan sistem library, seperti language subroutine library. Tanpa fasilitas ini, semua program pada sistem perlu mempunyai copy dari library language di dalam executable image. Kebutuhan ini menghabiskan baik ruang disk maupun memori utama.
Bagaimanapun, tidak seperti dynamic loading, dynamic linking membutuhkan beberapa dukungan dari sistem operasi, misalnya bila proses-proses di memori utama saling diproteksi, maka sistem operasi melakukan pengecekan apakah rutin yang diminta berada diluar ruang alamat.
Overlay
Sebuah proses dapat lebih besar daripada jumlah memori yang dialokasikan untuk proses, teknik overlay biasanya digunakan untuk kasus ini. Teknik Overlay biasanya digunakan untuk memungkinkan sebuah proses mempunyai jumlah yang lebih besar dari memori fisik daripada alokasi memori yang diperuntukkan.overlay adalah menyimpan di memori hanya instruksi dan data yang diperlukan pada satu waktu. Jika intruksi lain diperlukan, maka instruksi tersebut diletakkan di ruang memori menggantikan instruksi yang tidak digunakan lagi. Sebagai contoh misalnya terdapat two-pass assembler. Selama pass 1, dibangun table symbol, dan selama pass 2 dibangkitkan kode bahasa mesin. Kita dapat membagi assembler ke dalam kode pass 1, kode pass 2, tabel symbol dan rutin umum yang digunakan baik pada pass 1 maupun pass 2. Diasumsikan ukuran komponen sebagai berikut :
Pass 1 70K
Pass 2 80K
Tabel symbol 20K
Rutin umum 30K

Apabila semua diletakkan di memori memerlukan 200K. Jika hanya tersedia tempat 150K, proses tidak dapat dijalankan. Pass 1 dan pass 2 tidak perlu berada di memori pada waktu yang sama. Dengan menggunakan overlay, rutin dibagi dalam 2 overlay. Overlay A adalah tabel symbol, rutin umum dan pass1 (membutuhkan total 120K) dan overlay B terdiri dari tabel symbol, rutin umum dan pass 2 (membutuhkan 130K). Ditambahkan 10K untuk driver overlay dan dimulai dari overlay A.Overlay tidak membutuhkan dukungan khusus dari sistem operasi. User dapat mengimplementasikannya secara lengkap menggunakan struktur file sederhana, membaca dari file ke memori dan meloncat ke memori dan mengeksekusi instruksi read yang lebih baru. Sistem operasi memberitahu hanya jika terdapat I/O yang melebihi biasanya. Penggunaan overlay terbatas untuk beberapa sistem yang mempunyai jumlah memori fisik terbatas dan kekurangan dukungan H/W untuk teknik yang lebih lanjut.

Tidak ada komentar:

Posting Komentar