Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Manajemen Main Memory. Materi Background Swapping Contiguous Memory Allocation Segmentation Paging Structure of the Page Table Example: The Intel 32 and.

Presentasi serupa


Presentasi berjudul: "Manajemen Main Memory. Materi Background Swapping Contiguous Memory Allocation Segmentation Paging Structure of the Page Table Example: The Intel 32 and."— Transcript presentasi:

1 Manajemen Main Memory

2 Materi Background Swapping Contiguous Memory Allocation Segmentation Paging Structure of the Page Table Example: The Intel 32 and 64-bit Architectures Example: ARM Architecture

3 Latar Belakang

4 Latar Belakang : Komponen Program Sebuah program terdiri dari beberapa komponen –Variable –data structure array, list, stack –Fungsi –Instruksi int total=0; int main(){ int ctr=1; int[] data; total = total + ctr; printf("Hasil"); }

5 Latar Belakang : Komponen Program Sebuah program terdiri dari beberapa komponen –Variable –data structure array, list, stack –Fungsi –Instruksi int total=0; int main(){ int ctr=1; int[] data; total = total + ctr; printf("Hasil"); }

6 Latar Belakang : Eksekusi Program Q : Apa yang harus dilakukan agar sebuah program dapat dieksekusi oleh CPU? A : Program harus dipindah dari disk ke memory sebelum dieksekusi –Program menunggu di input queue sebelum dibawa ke memory Bagaimana detail langkahnya? int total=0; int main(){ int ctr=1; int[] data; total = total + ctr; printf("Hasil"); } Object Module Compiler Load Module Linkage Editor Loader OS Proses Free Memory Proses dialokasikan pada memory space tertentu e.x

7 Latar Belakang : Eksekusi Program (2) int total=0; int main(){ int ctr=1; int[] data; total = total + ctr; printf("Hasil"); } OS Proses Free Memory Ketika suatu proses mengambil/mengganti nilai suatu variabel, pada dasarnya dia mengakses alamat memori variabel tersebut

8 Pertanyaan Mengapa program harus dibawa ke memory sebelum bisa dieksekusi CPU? –Karena CPU hanya bisa mengakses langsung main memory dan register –Akses langsung ke disk terlalu lama Register bisa diakses dalam satu cycle Memory butuh beberapa cycle sehingga butuh cache.

9 Masalah Bagaimana OS mengalokasikan memory untuk beberapa proses? Ada berapa jenis alamat data/instruksi pada sebuah proses? Bagaimana OS menentukan data/instruksi pada sebuah proses? Bagaimana jika alokasi memori tidak mencukupi?

10 Ilustrasi Penempatan Proses di Memory Setiap proses memiliki memory space terpisah Why? Proteksi dari proses lain How? Setiap proses dibatasi alamat Representasi alamat sebuah proses di memori –base : alamat awal –limit : jangkauan alamat

11 Bagaimana proteksi dilakukan? Process yang dieksekusi CPU meminta akses ke memory pada alamat tertentu Cek alamat tersebut Ijinkan jika alamat yang diakses adalah alamat proses tersebut –Jika alamat >= base DAN alamat < base+limit

12 Pengikatan Alamat (Address Binding) Alamat dapat direpresentasikan dengan cara berbeda pada setiap fase program –Source code addresses memakai alamat symbolic Contoh : int sum=0; –Pada code yang sudah dicompile alamat symbolic diikat (binding) ke relocatable address Contoh : “ 14 bytes dari awal fungsi main() ” –Linker atau loader mengikat relocatable address ke absolute address Contoh : Setiap pengikatan (binding) memetakan dari satu jenis alamat ke jenis alamat lain

13 Address Binding Data dan Instruksi ke Memory Pengikatan data dan instruksi dapat dilakukan pada beberapa fase/waktu : –Fase Kompilasi (Compile time) Jika lokasi memori diketahui sebelumnya, absolut address dapat di-generate; Harus kompilasi ulang kode tsb jika terjadi perubahan lokasi awal. –Fase Load (Load time) Jika lokasi memori tidak diketahui saat fase kompilasi, maka compiler men-generate relocatable address –Fase Eksekusi (Execution time) Pengikatan alamat ditunda sampai waktu runtime jika proses dapat dipindah selama eksekusi program dari satu segmen memori ke segmen memori lain. Perlu dukungan hardware untuk pemetaan alamat (contoh : register base dan limit).

14 Logical vs Physical Address Space Terdapat dua jenis alamat memori –Logical address : alamat yang di-generate oleh CPU. Relatif untuk satu proses/program. –Physical address : alamat fisik dilihat dari sudut pandang main memory. Absolut untuk semua proses/program. Logical address = Physical address JIKA address binding dilakukan pada fase kompilasi dan load. –Why? Karena physical address sudah ditentukan sebelum terjadi eksekusi Logical address space : kumpulan logical addresses yang di-generate untuk sebuah program Physical address space : kumpulan physical addresses yang di-generate untuk sebuah program Q : Bagaimana jika logical address != physical address?

15 Memory-Management Unit (MMU) Logical address perlu dipetakan ke physical address Untuk melakukan pemetaan pada saat run-time, butuh hardware memory- management unit (MMU) Terdapat berbagai metode pemetaan alamat memori –Metode paling sederhana menggunakan relocation register –Metode lain dibahas pada bagian selanjutnya

16 Dynamic Relocation dengan Relocation Register Metode sederhana pemetaan alamat memori Physical address = logical address + relocation register Contoh : –Sebuah program membuat pointer ke logical address 346 –Butuh physical address agar pointer tersebut dapat disimpan di memory –MMU memetakan logical address 346 ke physical address = Apa kelemahannya??

17 Dynamic Loading Sebuah routine/fungsi akan di-load ke memory hanya jika dipanggil Awalnya, hanya main routine yang diload ke memory –Routing lain disimpan di disk Contoh: –Load routine main() ke memory –Routing hitung() masih di disk –Program memanggil fungsi hitung() –Routing hitung() di load ke memory Keuntungan : –Hemat memory, hanya load routine yang dibutuhkan saja int total=0; int hitung(int a, int b){ return a+b; } int main(){ printf("Program Hitung"); int hasil = hitung(5,10); printf("Hasil"); }

18 Dynamic Linking Kode program biasanya mengakses system library –Contoh : printf(),scanf(),System.out.println() Bagaimana agar system library bisa dieksekusi? Dua solusi : static dan dynamic linking Static linking : pada saat compile, system library disisipkan ke file executable –Ukuran file exe jadi besar Dynamic linking : system library dihubungkan (linking) saat eksekusi int total=0; int hitung(int a, int b){ return a+b; } int main(){ printf("Program Hitung"); int hasil = hitung(5,10); printf("Hasil"); }

19 Swapping

20 Masalah Bagaimana jika alokasi main memory tidak mencukupi? Padahal setiap program yang akan dieksekusi harus di-load ke memory.

21 Swapping Sebuah porses dapat ditukar sementara keluar dari memori ke backing store, dan kemudian dibawa kembali ke memori untuk melanjutkan eksekusi. –Backing store : disk, ukuran cukup besar,kecepatan akses cepat Roll out, roll in – swapping menggunakan algoritma priotity based scheduling –Proses dengan prioritas rendah ditukar sehingga proses dengan prioritas tinggi dapat diload dan dieksekusi. Bagian terbesar dari waktu swap adalah waktu transfer; –Total waktu transfer berbanding lurus dengan jumlah memori yang diswap Contoh : swap di Windows dan Linux

22 Skema Swapping

23 Melihat Penggunaan Swap di Ubuntu

24 Metode Alokasi Memori

25 Latar Belakang Memori adalah sumber daya terbatas Memori harus dialokasikan untuk dua komponen : sistem operasi dan proses user Masalah Bagaimana mengalokasikan sumber daya memori yang terbatas itu? Metode Alokasi Memori : cara yang dipakai oleh sistem operasi untuk mengalokasikan memori bagi process-process yang berjalan –Contiguous Memory Allocation –Segmentation –Paging

26 Contoh Kasus Sistem Operasi Free Memory 100M Proses Kebutuhan Memori Waktu Masuk P125M0 P220M1 P315M2 P440M3 P515M4

27 Contiguous Memory Allocation (Alokasi Memori Berurutan)

28 Contiguous Allocation / Alokasi Berurutan Memori dibagi menjadi satu/beberapa partisi Satu partisi hanya dialokasikan untuk satu proses Berdasarkan jumlah partisinya, metode ini dibagi menjadi dua : –Single partition –Multiple partition

29 Single Partition Contiguous Allocation (2) Memori dibagi menjadi SATU partisi/bagian Hanya ada satu proses yang dapat diload ke memory sekali waktu –Tidak ada konsep concurrency atau parralellism Masalah Bagaimana caranya agar beberapa proses bisa diload secara bersamaan?

30 Multiple Partition Contiguous Allocation (2) Memori dibagi menjadi beberapa partisi/bagian Setiap partisi dialokasikan untuk satu proses –Jumlah proses yang dapat berjalan secara concurrent = jumlah partisi Ada dua cara pembagian partisi berdasarkan cara penentuan ukuran partisi –Fixed-size partition –Variable-size partition

31 Contiguous Allocation dengan fixed-size Pada fixed-size, ukuran tiap partisi bersifat statis dan tidak dapat diubah sepanjang sistem operasi berjalan Pada memori terdapat hole/partisi bebas –hole : blok dari memori yang tidak terpakai –ukuran hole statis Mekanisme –Jika proses datang, akan dialokasikan ke memory pada hole yang cukup untuk proses tersebut. Sisa alokasi pada suatu hole tidak dapat dipakai proses lain –Jika proses selesai, alokasinya jadi hole

32 Contoh Kasus ProsesMemori P125M P220M P325M P420M OS Hole1 (25M) Hole2 (30M) Hole3 (25M) Hole4 (20M) OS P1 (25M) P2 (30M) P3 (25M) P4 (20M) sisa 10M

33 Contiguous Allocation dengan variable-size Pada variable-size, ukuran tiap partisi disesuaikan dengan kebutuhan memori tiap proses Pada memori terdapat hole/partisi bebas –hole : blok dari memori yang tidak terpakai Mekanisme –Jika proses datang, akan dialokasikan ke memory pada hole yang cukup untuk proses tersebut. –Jika proses selesai, alokasinya jadi hole –Dua hole yang bertetangga dapat bergabung

34 Contoh Kasus Sistem Operasi Hole 100M Proses Kebutuhan Memori Waktu Masuk Waktu Exec P125M05 P220M13 P315M22 P440M37 P515M46

35 Contoh (2) OS P1(25M) Hole(75M) OS P1(25M) P2(20M) Hole(55M) OS P1(25M) P2(20M) P3(15M) Hole(40M) OS Hole(25M) P5(15M) Hole (20M) P4(40M) OS P1(25M) P5(15M) Hole (20M) P4(40M) OS P1(25M) P2(20M) P3(15M) P4(40M)

36 Dynamic Storage-Allocation Problem Ada beberapa metode untuk memasukkan n proses baru ke hole yang tersedia : –First-Fit Alokasi lubang pertama yang cukup untuk proses. –Best-Fit Alokasi lubang terkecil yang cukup untuk proses. Harus mencari ke seluruh daftar berdasarkan urutan ukuran. Menghasilkan lubang sisa yang terkecil –Worst-Fit Alokasi ke lubang terbesar

37 Contoh P6 masuk dengan kebutuhan memori 10M Di hole mana P6 akan dialokasikan? –First-fit: Hole1 –Best-fit: Hole2 –Worst-fit: Hole3 OS Hole(25M) P5(15M) Hole (15M) P4(40M) Hole(30M)

38 Masalah 1 : Fragmentasi Eskternal Misal P6 masuk dengan kebutuhan memori 40M Total hole tersedia = Hole1 + Hole2 + Hole3 = 70M Q : Bisakah P6 bisa dialokasikan? A : Tidak. Why? –Ada fragmentasi eksternal : total memori tersedia cukup, tapi mereka tidak berurutan (contagious) OS Hole(25M) P5(15M) Hole (15M) P4(40M) Hole(30M)

39 Masalah 2 : Fragmentasi Internal Misal P6 masuk dengan kebutuhan memori 29M P6 bisa dialokasikan di Hole3 Tapi, terjadi fragmentasi internal –Jumlah alokasi cukup, tapi sisa sedikit sekali hole untuk bisa dipakai proses lain. OS Hole(25M) P5(15M) Hole (15M) P4(40M) Hole(30M)

40 Solusi Fragmentasi Eksternal Fragmentasi eksternal dapat diatasi dengan compaction –Geser dan pindah lokasi memori dari setiap proses Hanya memungkinkan jika pengalamatan memori dilakukan pada saat eksekusi OS Hole(25M) Hole (15M) Hole(30M) P5(15M) P4(40M)

41 Proteksi Memori Alokasi memori untuk satu proses perlu diproteksi agar tidak diakses proses lain Bagaimana caranya? –Gunakan dua register : relocation register dan limit register –Process yang dieksekusi CPU meminta akses ke memory pada alamat tertentu –Jika alamat yang diminta < limit, ijinkan –Untuk mengakses, logical address + relocation register untuk mendapatkan physical address.

42 Segmentation

43 Program dibagi menjadi beberapa segmen/komponen –Fungsi main –Sub-fungsi –Variabel global –Standard Lib. –Segment heap –Stack thread Tiap segment diberi nomor segmen s Tiap segment kemudian dialokasikan ke memory Tiap segment dari satu process TIDAK HARUS dialokasikan berurutan int total=0; int hasil=0; int hitung(int a, int b){ return a+b; } int main(){ hasil = hitung(total,10); printf("Hasil %d", hasil); }

44 Contoh Alokasi int total=0; int hasil=0; int hitung(int a, int b){ return a+b; } int main(){ hasil = hitung(total,10); printf("Hasil %d", hasil); } OS Segment 1 Segment 2 Segment 3 Segment

45 Pemetaan Logical Address ke Physical Address (1) Physical memory space tiap segment dibatasi oleh dua register : base dan limit Logical address data/instruksi dalam suatu segment berbentuk: –offset : nomor index data/instruksi di suatu segment, nilai offset antara 0 - limit Pemetaan dilakukan oleh segmentation hardware (MMU) MMU menyimpan segmentation table yang berisi limit dan base dari setiap segment di physical memory –Nomor segment dijadikan index dari table

46 Bagaimana cara kerjanya? Process yang dieksekusi CPU akan mengakses data/instruksi pada segment s dan offset d MMU melihat nilai limit dan base dari segment s pada segment table MMU mengecek apakah offset d berada jangkauan limit –Cek apakah d < limit? Jika YA, maka physical address = offset d + base

47 Contoh int total=0; int hasil=0; int hitung(int a, int b){ return a+b; } int main(){ hasil = hitung(total,10); printf("Hasil %d", hasil); } OS Segment 1 Segment 2 Segment 3 Segment SegmentBaseLimit Program mengakses variable hasil dengan logical address Untuk segment 3, base=200, limit=40 Cek apakah offset

48 Paging

49 Physical memory dibagi menjadi beberapa frame dengan ukuran sama Logical memory dibagi menjadi beberapa block dengan ukuran sama yang disebut pages –How? Backing store (disk) dibagi menjadi beberapa block dengan ukuran sama Dengan cara ini, satu page bisa menempati satu frame di memori

50 Contoh Alokasi Misal, ukuran page = frame = 4 bytes Kapasitas physical memory = 32 bytes

51 Pemetaan Logical Address ke Physical Address (1) Logical address data/instruksi dalam suatu page berbentuk: –offset : nomor index data/instruksi di suatu page, nilai offset antara 0 – ukuran page Pemetaan dilakukan oleh paging hardware (MMU) MMU menyimpan page table yang berisi base address atau frame number dari setiap page di physical memory –Nomor page dijadikan index dari table

52 Bagaimana cara kerjanya? Process yang dieksekusi CPU akan mengakses data/instruksi pada page p dan offset d MMU melihat nilai base dari page p pada segment table physical address = offset d + base

53 Contoh pddata 00A 01B 02C 03D 10E 11F 12G 13H 20I 21J 22K 23L Logical Addr. Logical Memory pageBase Misal –Kapasitas physical memory 28 bytes –Ukuran page = frame = 4 bytes –Ukuran 1 karakter = 1 byte “C” punya logical address Di page table, base addr dari page 0 adalah 4 Maka physical address-nya = = 6 Page Table Physical Memory Page 1 Page 2 Page 0

54 Kelebihan dan Kelemahan Paging Karena ukuran page = frame, maka setiap frame dapat menampung satu page –Tidak ada fragmentasi eksternal Tapi, tetap ada fragmentasi internal. Contoh : –Ukuran page = frame = 2048 bytes –Sebuah proses butuh bytes = 35 page bytes –Di physical memory dialokasikan 36 frame dimana di salah satu frame terjadi fragmentasi internal sebesar = 962 bytes –Solusi : ukuran page harus kecil untuk meminimalisir fragmentasi internal

55 Dukungan Perangkat Keras Paging Setiap OS mempunyai cara berbeda untuk implementasi page table –Satu page table untuk setiap proses. Di PCB ada pointer ke table –Satu/beberapa table untuk semua proses Ada beberapa cara implementasi page table di perangkat keras –Register –Page table base register (PTBR) –Translation Look-Ahead Buffer (TLB)

56 Page Table di Register Page table dapat disimpan di register Cara paling sederhana implementasi page table di perangkat keras Cocok jika jumlah baris di page table kecil –Misal 256 baris –Padahal computer saat ini punya jumlah baris di page table yang sangat banyak.

57 Page Table dengan PTBR Page table disimpan di main memory Register menyimpan Page Table Base Register (PTBR) untuk menunjukkan lokasi page table di memory Kelemahan : –Butuh dua kali akses memory : akses page table dan akses data/instruksi –Page table bisa jadi mengalami proses swapping

58 Page Table dengan TLB –Translation Look-Ahead Buffer (TLB) : perangkat keras untuk cache lookup data. Entri TLB mengandung key, value Kapasitas TLB hanya entri TLB hanya menyimpan beberapa page table, sisanya simpan di memori –Bagaimana cara kerjanya? CPU pertama mencari entri dengan nomor page p pada page table di TLB Jika ada, gunakan entri tersebut untuk cari physical address Jika tidak ada, cari entri dengan page p pada page table di memory Gunakan entri tersebut Tambahkan entri itu ke TLB

59 Proteksi pada Paging Proteksi pada paging dapat dilakukan dengan menambahkan 1 kolom bernilai valid/invalid (1 bit) Jika satu proses akan mengakses satu alamat bernilai invalid, maka dia tidak diijinkan mengaksesnya

60 Shared Page Metode Paging menawarkan kemampuan berbagi page antar beberapa proses Contoh –Ada 3 user menjalankan text editor yang terdiri atas 150KB code dan 50KB data –Tanpa shared page, butuh 3x200KB = 600KB alokasi memori –Dengan shared page, butuh (3x50) = 300KB

61 Struktur Page Table

62 Latar Belakang Masalah Komputer modern saat ini mendukung pengalamatan memory berukuran besar –Komputer 32-bit mendukung pengalamatan sampai 2 32 = 4 GB Jumlah entri pada page table menjadi sangat besar. Contoh : –Pada komputer 32-bit dengan ukuran page 4KB (2 12 ) maka akan ada 2 20 entri page table –Implementasi page table secara linear tidak cocok Solusi : Harus ada perubahan struktur page table –Hierarchical Paging –Hashed Page Table –Inverted Page Tables

63 Hierarchical Paging Page table disusun secara berjenjang –Alamat pada page table menunjuk ke alamat lain page table baru menunjuk ke isi page table

64 Bagaimana cara implementasinya? Logical address dibagi menjadi beberapa bagian tergantung jumlah jenjang. Misalnya untuk 2 jenjang pada computer 32-bit. Translasi alamat dapat dilakukan sebagai berikut

65 Hashed Page Tables Page table di-index dengan hash dari nomor page p Satu entri pada page table berisi list page dengan hash yang sama

66 Inverted Page Table Page table di-index dengan menggunakan process id (pid) Logical address terdiri atas

67 Contoh pada Arsitektur Intel 32-bit, 64-bit dan ARM

68 Contoh pada Berbagai Arsitektur Baca textboot Silberschatz section 8.7 dan 8.8 halaman

69 Terima Kasih


Download ppt "Manajemen Main Memory. Materi Background Swapping Contiguous Memory Allocation Segmentation Paging Structure of the Page Table Example: The Intel 32 and."

Presentasi serupa


Iklan oleh Google