Sistem Operasi Manajemen Memori

Dosen Pengampu: Joni Maulindar, S. Kom. M.Eng Bruri Suciarto [ ] SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK DUTA BANGSA SURAKARTA Memori berfungsi sebagai tempat penyimpanan informasi yang harus di atur dan di jaga sebaik-baiknya. Pengelolaan memori utama sangat penting untuk sistem komputer, penting untuk memproses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung sebanyak mungkin proses dan sebagai upaya agar pemogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer. Fungsi manajemen memori mempunyai peranan sangat penting dalam sistem komputer. Fungsi menejemen memori tersebut adalah : a. Meningkatkan kinerja atau Utilitas CPU. b. meningkatkan kecepatan akses CPU terhadap data dan instruksi Data dan instruksi dapat diakses dengan cepat oleh CPU. c. meningkatkan efisensi pemakaian memori yang terbatas. d. Meningkatkan efisiensi transfer atau perpindahan data dari atau ke memori utama dan dari atau ke CPU. e. Mengelola informasi yang dipakai dan tidak dipakai. f. Mengalokasikan memori ke proses yang memerlukan. g. Mendealokasikan memori dari proses telah selesai. h. Mengelola swapping atau paging antara memori utama dan disk. Memori adalah array besar dari word atau byte, yang disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter. Sedangkan manajemen memori adalah suatu kegiatan untuk mengelola memori komputer. Proses ini menyediakan cara mengalokasikan memori untuk proses atas permintaan mereka, membebaskan untuk digunakan kembali ketika tidak lagi diperlukan serta menjaga alokasi ruang memori bagi proses. ::Konsep Dasar Manajemen Memori Manajemen Memori merupakan salah satu bagian terpenting pada sistem operasi. Sejak awal komputer digunakan untuk keperluan komputasi, kebutuhan akan memori yang lebih besar dibandingkan dengan keadaan fisik memori di dalam sistem terus meningkat. Berbagai perhitungan dan strategi terus dilakukan untuk mengatasi keterbatasan ukuran memori fisik. Sistem operasi memberikan tanggapan terhadap manajemen memori utama untuk aktivitas-aktivitas sebagai berikut: a. Menjaga dan memelihara bagian-bagian memori yang sedang digunakan dan dari yang menggunakan. b. Memutuskan proses-proses mana saja yang harus dipanggil kememori jika masih ada ruang di memori. c. Mengalokasikan dan mendelokasikan ruang memori jika diperlukan Memori merupakan pusat kegiatan pada komputer, sebab setiap proses yang akan dijalankan, harus melalui memori terlebih dahulu. Sistem Operasi bertugas mengatur proses yang diletakan pada memori. Memori harus digunakan dengan baik, sehingga dapat menjalankan proses dengan optimal. Sebelum masuk ke dalam memori, suatu proses harus menunggu. Hal ini disebut Input Queue/antrian. Proses paging alamat terjadi pada saat : a. Compile Time : proses yang sedang di compile. b. Load Tima : proses dipanggil. c. Execution Time : proses di jalankan. Pada memori terdapat ruang alamat. Ruang alamat ini terbagi 2 yaitu Ruang alamat logika & fisik : a. Alamat logika merupakan alamat yang dibentuk di CPU, atau alamat virtual. b. Alamat fisik merupakan alamat yang terlihat oleh memori. c. Supaya dapat mengubah dari alamat logika ke fisik di butuhkan MMU (Memori Manajemen Unit). d. MMU adalah pusat dari manajemen memori. Pada komputer tanpa memori logika, alamat langsung diletakan ke bus dan menyebakan memori fisik alamat itu dapat dibaca / tulis. Pada komputer dengan memori logika, alamat tidak diletakan langsung ke bus, tetapi harus melewati MMU yang kemudian MMU memetakan alamat logika ke alamat memori fisik. ::Strategi Manajemen Memori Strategi yang dikenal untuk mengatasi hal tersebut adalah memori maya. Memori maya menyebabkan sistem seolah-olah memiliki banyak memori dibandingkan dengan keadaan memori fisik yang sebenarnya. Memori maya tidak saja memberikan peningkatan komputasi, akan tetapi memori maya juga memiliki beberapa keuntungan seperti : Membuat sistem operasi seakan-akan memiliki jumlah memori melebihi kapasitas memori fisik yang ada. Dalam hal ini memori maya memiliki ukuran yang lebih besar daripada ukuran memori fisik. Setiap proses di dalam sistem memiliki virtual address space. Virtual address space tiap proses berbeda dengan proses yang lainnya lagi, sehingga apapun yang terjadi pada sebuah proses tidak akan berpengaruh secara langsung pada proses lainnya Memory mapping digunakan untuk melakukan pemetaan image dan file-file data ke dalam alamat proses. Pada pemetaan memori, isi dari file akan di link secara langsung ke dalam virtual address space dari proses. d. Fair Physical Memory Alocation Digunakan oleh Manajemen Memori untuk membagi penggunaan memori fisik secara “adil” ke setiap proses yang berjalan pada sistem. Meskipun tiap proses menggunakan address space yang berbeda dari memori maya, ada kalanya sebuah proses dihadapkan untuk saling berbagi penggunaan memori. Teknik manajemen memori (1), (2), (3) dan (4) merupakan pengelolaan dengan kapasitas memori sebatas memori fisik yang tersedia.. Teknik ini tidak dapat digunakan untuk memuat program program yang ukurannya lebih besar dari kapasitas fisik memori yang tersedia. Teknik manajemen memori (5),(6) dan (7) dapat digunakan untuk mengatasi kapasitas memori yang terbatas , sehingga program yang lebih besar dibandingkan kapasitas memori fisik tersedia dapat dijalankan. ::Ruang Alamat Logika dan Fisik ( Logical and Physical Address) 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. ::Manajemen Memori Pada Sistem Multiprogamming Melibatkan banyak pemakai secara simultan sehingga di memori akan terdapat lebih dari satu proses bersamaan. Oleh karena itu dibutuhkan sistem operasi yang mampu mendukung dua kebutuhan tersebut. Melakukan dua aktivitas : a. Proteksi memori dengan isolasi ruang-ruang alamat secara disjoint (terpisah). b. Pemakaian bersama memori. Memungkinkan proses-proses bekerja sama mengakses daerah memori bersama. Ketika konsep multiprogramming digunakan, pemakaian CPU dapat ditingkatkan. MULTIPROGRAMMING pemartisian statis Terdapat beberapa alasan : Pemrogram dapat memecah program menjadi dua proses atau lebih. b. Agar dapat memberi layanan interaktif ke beberapa orang secara simultan. Untuk itu diperlukan kemampuan mempunyai lebih dari satu proses dimemori agar memperoleh kinerja yang baik. c. Efisiensi penggunaan sumber daya. Bila pada multiprogramming maka proses tersebut diblocked (hanya DMA yang bekerja) dan proses lain mendapat jatah waktu pemroses, maka DMA dapat meningkatkan efisiensi sistem. d. Eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil. e. Dapat mengerjakan sejumlah job secara simultan. ::Manajemen Memori Berdasarkan Alokasi Memori A. Alokasi Berurut (Contiguous) Memori harus mengakomodasi kebutuhan SO dan proses user. Memori utama biasanya terbagi dalam dua bagian: 1. Resident operating system, biasanya tersimpan di alamat memori rendah. 2. User proces menggunakan memori beralamat tinggi/besar. Alokasi berurut terbagi menjadi tiga yakni : Ciri-ciri dari partisi statis sebagai berikut: · Memori dibagi menjadi partisi-partisi dengan ukuran yang tetap. · Satu proses hanya memakai satu partisi. Jika proses sudah selesai, partisi tersebut dapat digunakan proses yang lain. 3. Dibagi menjadi 2 bagian: Banyak kelemahan, antara lain: · Proses yang ukurannya lebih besar dari ukuran partisi tidak dapat dialokasikan. · Sebaliknya bila ukuran proses lebih kecil daripada ukuran partisi, maka akan terjadi pemborosan ruang memori (Fragmentasi internal). Untuk mengatasi kelemahan dari Pengalokasian berurut dengan partisi statis dengan ukuran sama, yaitu proses ukuran kecil diletakkan ke partisi yang kecil dan sebaliknya. 1. Satu antrian untuk setiap partisi Tiap proses diletakkan pada partisi dengan ukuran terkecil yang dapat dimuatnya. Kelemahan: ada partisi yang memiliki antrian panjang dan ada yang kosong. 2. Satu antrian untuk seluruh partisi Semua proses dimasukkan pada satu antrian yang sama, Algoritma penjadwalan melakukan pemilihan partisi Kelemahan: jika proses yang berukuran kecil terpaksa masuk ke partisi sisa yang besar, sehingga terjadi pemborosan ruang. 1. Pada kondisi awal, memori tidak dibagi menjadi partisi-partisi 2. Pemartisian dilakukan pada saat image proses akan disalin ke memori utama. 3. Ukuran partisi yang dialokasikan akan disesuaikan dengan ukuran image proses. 4. Partisi akan dibebaskan jika program sudah selesai. 5. Keuntungan : tidak terjadi fragmentasi internal alokasi memori disesuaikan dengan besarnya image proses. a. Pengalokasian dilakukan dengan mencari hole à suatu ruang memori utama yang kosong, yang cukup besar untuk menampung image proses. b. Hole sisa kadang kala terlalu kecil untuk dapat dialokasikan ke proses lainnya sehingga tidak bisa digunakan lagi à fragmentasi eksternal. c. Salah satu cara untuk mengatasi masalah ini adalah melakukan memory compaction. Yaitu: menggeser image proses-proses yang ada di memori sehingga hole terkumpul di satu tempat saja a. Proses alokasi dan dealokasi menjadi lebih rumit b. Perlu pengelolaan informasi area memori yang masih kosong. Ada 2 metode pengelolaan memori kosong: § Menggunakan area memori khusus untuk mencatat seluruh area kosong pada memori utama. · Nilai 0 à alamat memori tersebut masih kosong · Nilai 1 à alamat memori tersebut sudah terisi § Informasi mengenai hole kosong berikutnya dicatat pada hole kosong sebelumnya. § Tidak diperlukan area memori khusus. Karena seluruh informasi tercatat di area memori kosong itu sendiri sehingga menghemat kapasitas memori utama. Diperlukan algoritma untuk menentukan hole mana yang akan dialokasikan ke suatu proses. · Mencari memori blok yang paling kecil yang dapat menampung image proses · Memerlukan waktu lama karena harus searching seluruh blok memori utama · Fragmentasi eksternal dapat ditekan sekecil mungkin · Mencari memori kosong dari alamat awal sampai menemukan blok yang dapat menampung image proses · Hampir sama dengan First-fit. · Bedanya: proses searching dimulai dari alamat alokasi terakhir · Mencari hole yang paling besar di seluruh area memori utama. · Tujuannya: hole sisa yang tercipta setelah alokasi masih cukup besar untuk dialokasikan ke proses lainnya. · Berupa pemartisian secara dinamis · Ciri khusus adalah partisi yang terbentuk senantiasa berukuran besar sebesar bilangan 2n 2,4,8,16…..256,512,1024(1Mb) Alokasi memori pada sistem buddy: a. Menentukan ukuran partisi · Ditentukan ukuran partisi untuk menampung image proses yaitu ukuran bilangan pangkat 2 terkecil · Misal : ukuran image proses = 12kb, maka ukuran partisi yang bisa digunakan adalah 16kb. · Selanjutnya adalah mencari hole yang ukurannya sebesar perhitungan. · Jika tidak ada maka dicarikan hole yang berukuran sedikit lebih besar. Kemudian dipecah secara bertahap sesuai dengan aturan bilangan pangkat 2. · Misal : ukuran image proses = 12kb dan hole yang paling kecil adalah 64kb. o maka dipecah menjadi 2 partisi 32kb, selanjutnya dipecah lagi menjadi 2 partisi 16kb. o dan partisi 16kb pertama yang bisa dipakai untuk image proses 12kb. ::Kebutuhan Manajemen Memori Management memory adalah cara untuk memanage/mengatur memori komputer. Dalam pengertiannya adalah mengalokasikan memori sesuai dengan porsi yg kita inginkan dan menghapusnya/membuangnya jika tidak lagi kita butuhkan. Dalam computer system memanage memori utama adalah hal yg paling penting. Sistem memori virtual akan memisahkan alamat memori yg digunakan oleh sebuah proses dari alamat fisik yg aslinya, sehingga proses ini meningkatkan jumlah RAM secara efektif. Kualitas mengatur/memanage memori virtual berdampak besar secara keseluruhan kepada kinerja sistem computer tersebut. Kebutuhan-kebutuhan manajemen memori : 1) Relokasi : dalam sebuah sistem dg memori virtual biasanya program2 yg ada dalam memori harus dapat berada dibagian memori yg berbeda pd waktu yg berbeda pula. Hal ini terjadi karena ketika program bertukar kembali kedalam memori setelah bertukar keluar untuk sementara waktu tdk dpt berada dilokasi yg sama. Untuk itulah memori manajemen itu harus dapat merelokasi program di memori dan memori harus dapat menangani referensi dalam kode program sehingga program dpt menunjuk dg tepat lokasi dlm memori. 2) Proteksi/Perlindungan adalah tidak bisa dijalankannya suatu proses karena tidak adanya izin utk menjalankan proses. Hal ini terjadi utk mencegah kesalahan pemakain kode yg berbahaya atau untuk menghindari campur tangan dari pihak lain yg tidak berwenang dlm hal tsb. 3) Bagi pakai : dalam hal ini meskipun tiap memori memiliki perlindungan yg berbeda tapi dalam proses yang berbeda harus dapat berbagi informasi karena merupakan satu kesatuan memori. 4) Organisasi secara logik adalah program yg sering digunakan/diselenggarakan dalam modul. Beberapa diantaranya bisa digunakan secara bersama-sama meskipun dg program yg berbeda, beberapa yg lain ada yg hanya membaca dan hanya berisi data yg dapat diubah. Manajemen memori lah yg bertanggung jawab utk menangani hal ini dari ruang alamat fisik linear dg cara segmentasi sebagai salah satu caranya. 5) Organisasi secara fisik. Dalam hal ini biasanya memori dibagi menjadi dua yaitu : Partitioning adalah teknik membagi memori menjadi beberapa bagian sesuai dengan kebutuhan. Sistem operasi akan menempati bagian memori yang tetap. Ada dua cara dalam pempartisian, yaitu : Pemartisian Statis adalah pemartisian memori menjadi partisi tetap yang mana proses-proses akan ditempatkan pada memori yang telah dipartisi tersebut. Dengan menggunkan partisi statis menyebabkan memori terlalu banyak diboroskan dengan proses-proses yang lebih kecil dibanding partisi yang ditempatinya. Namun apabila menggunakanpartisi dinamis maka jumlah, lokasi, dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. proses yang akan masuk ke memori segera dibuatkan partisi untuknya sesuai kebutuhannya. Teknik ini meningkatkan utilitas memori. 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. Pada teknik swapping,terbagi atas : Memasukan program dari logical ke physical memori (dari breaking storage ke memori). Mengeluarkan program dari memori ke breaking storage karena sudah penuh. Manajemen Memori tanpa Swepping Manajemen Memori tanpa swapping adalah manajemen memori tanpa pemindahan proses antara memori utama dan disk selama eksekusi terdiri dari : – Multiprogramming dengan pemartisian statis Merupakan manajemen memori paling sederhana. Sstem komputer hanya mengijinkan 1 program/pemakai berjalan pada 1 waktu. Semua sumber daya sepenuhnya dikuasai proses yang\ sedang berjalan. Ciri-ciri manajemen memori monoprogramming : 1) hanya 1 proses pada 1 saat 2) hanya 1 proses menggunakan semua memori 3) pemakai memuatkan program ke seluruh memori dari disk / tape 4) program mengambil kendali seluruh mesin Karena hanya terdapat 1 proses dan menguasai seluruh sistem maka alokasi memori dilakukan secara berurutan. b. Multiprogramming dengan pemartisian statis Multiprogramming adalah banyak proses pada memori utama pada saat bersamaan. Alasan menggunakan multiprogramming : 1) mempermudah pemrogram karena pemrogram dapat memecah program menjadi 2 proses/lebih 2) agar dapat memberi layanan interaktif ke beberapa orang secara simultan 3) efisiensi penggunaan sumber daya 4) eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil 5) dapat mengerjakan sejumlah job secara simultan Manajemen Memori dengan Swepping Merupakan manajemen memori dengan pemindahan proses antara memori utama dan disk selama eksekusi. Diterapkan pada multiprogramming dengan pemartisian dinamis. Partisi dinamis partisi statis menyebabkan memori terlalu banyak diboroskan dengan proses-proses yang lebih kecil dibanding partisi yang ditempatinya. Dengan partisi dinamis maka jumlah, lokasi, dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. proses yang akan masuk ke memori segera dibuatkan partisi untuknya sesuai kebutuhannya. Teknik ini meningkatkan utilitas memori. Masalah lain pada partisi dinamis adalah proses dapat tumbuh berkembang. Solusinya adalah bila proses bersebelahan dengan lubang memori tak dipakai, proses tumbuh memakai lubang itu. Masalah menjadi lebih parah bila proses bersebelahan dengan proses-proses lain. Alternatif penyelesaian : – bila masih terdapat lubang besar yang dapat memuat proses, maka proses dipindah ke lubang memori yang dapat memuat – 1 proses atau lebih diswap ke disk agar memberi lubang cukup besar untuk proses yang berkembang – jika proses tidak dapat tumbuh di memori dan daerah swap di disk telah penuh,proses harus menunggu/disingkirkan. Salah satu cara mengatasi external fragmentation(munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaan dari proses). adalah membentuk teknik pengalokasian non-contigous(tidak berurutan). Paging adalah teknik yang berorientasi hardware untuk mengelola memori fisik. Paging digunakan agar program yang besar dapat berjalan pada komputer yang mempunyai memori fisik yang kecil. Dalam sistem paging, hardware memori virtual membagi alamat logis menjadi dua bagian, yaitu virtual page number atau disebut juga page number dan word offset dalam page. Hardware melakukan pembagian ini dengan menyekat atau memisahkan bit alamat, yaitu bit high order menjadi page number dan bit low order menjadi offset. Unit memori yang menyimpan page disebut page frame ( kerangka frame ), atau kadang disebut block, untuk membedakan mereka dengan page virtual. Untuk sistem yang baru, page mframe mempunyai jangkauan 512 sampai 4096 byte. Sebagai bagian dari peta page, sistem pengoperasian memelihara atau mengelola page tabel yang menyimpan berbagai bagian informasi mengenai page program. Page tabel terdiri atas sejumlah page tabel entries, dan setiap page tabel entries menyimpan informasi mengenai page tertentu. Virtual page number berfungsi sebagai offset terhadap page table. Strategi Penempatan Program ke Partisi Strategi penempatan pada pemartisian menjadi partisi-partisi berukuran sama. Penempatan proses ke memori dilakukan secara mudah karena dapat dipilih sembarang partisi yang kosong. Strategi penempatan pada pemartisian menjadi partisi-partisi berukuran beda. Terdapat dua strategi penempatan program ke partisi, yaitu : 1. Satu antrian untuk tiap partisi 2. Satu antrian untuk seluruh partisi