Dwinanto Cahyo (13505025) Ibnu Sina Wardy (13505035) Reisha Humaira (13505047) Nurio Juliandatu Masido (13505083) Manajemen Memori pada Linux: Noncontiguous.

Slides:



Advertisements
Presentasi serupa
Fungsi Konsep Pemrograman.
Advertisements

Sistem Operasi (pertemuan 1) Memori Razief Perucha F.A
Manajemen Memori (Contd).
Manajemen Memory Kelompok 7 : M. Khoirur Roziqin ( )
segmentasi dan kombinasi paging-segmentasi
Cache Memori Oleh : Ahmad Fuad Hariri Fitriana Nelvi Tino Arif Cahyo
Single linked list.
STRUKTUR DATA (5) Pointer dan Function
Kelompok 11 M. Riftadi Ricky Gilbert F Herdyanto S M. Gilang Kautzar HW
Pertemuan 2 STRUKTUR DATA LINKED LIST
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Queue.
Sistem Operasi (Operating Systems) Minggu 9
SISTEM PAGING.
1 Pointer wijanarto. 2 Topik Introduction to Pointers Pointers dan Parameter Fungsi.
Algoritma & Struktur Data Pointer Evangs Mailoa.
Defiana Arnaldy, M.Si Manajemen Memori Defiana Arnaldy, M.Si
STRUKTUR DATA (6) single linked list non circular
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
[ Array ].
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
STRUKTUR DATA Pointer dan Function
Tim Teaching Grant Mata Kuliah Sistem Operasi
Pertemuan ketujuh Struktur data st3telkom.ac.id
Algoritma dan Struktur Data
Pointer.
Struktur Data List Linear : Linked List (Single Linkedlist)
Memory.
POINTER.
PERTEMUAN KE-16 PERKULIAHAN SISTEM OPERASI
LINKED LIST.
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Struktur Data (Data Structure) – IS 2313
T0542 / SWAPPING Alokasi Memori. T0542 / a)Alokasi ruang untuk data segment yang berkembang b)Alokasi ruang untuk data dan stack segment.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Manajemen Main Memory.
File-System Implementation
Management Memory.
Pemrograman Terstruktur
Sistem Paging Edi Sugiarto, S.Kom.
9. Manajemen Memori Utama
8. Singly Linear Linked List
Single Linked List.
PERTEMUAN 3 KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Algoritma dan Struktur Data
Chalifa Chazar SISTEM PAGING Chalifa Chazar
TEKNIK KOMPUTER - UNIKOM Jalan Dipatiukur 112 Bandung
Manajemen Memori (2).
Pointer FARID WAJDI YUSUF.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
Algoritma dan Struktur Data
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Manajemen Memori (2).
Manajemen Memori Pertemuan 14 & 15 Sistem Operasi (CSG3E3)
Variable Static & Linked List
Sistem Operasi Teknik Informatika STT Wastukancana Purwakarta
Manajemen Memori (2).
Modul Sistem Operasi / 2010 / Maria Cleopatra, S.Kom
Pointer.
SINGLE LINKED LIST (SLL)
Paging dan Segmentasi DISUSUN OLEH KELOMPOK 5: 1.GIEFFARI SATRIA ABDILLAH ( ) 2.BAGUS PRADIKA ( ) 3.ANGGA PRADANA ( )
Transcript presentasi:

Dwinanto Cahyo ( ) Ibnu Sina Wardy ( ) Reisha Humaira ( ) Nurio Juliandatu Masido ( ) Manajemen Memori pada Linux: Noncontiguous Memory Area Management

Memory Management Penggunaan RAM oleh kernel  Untuk menyimpan kode  Untuk menyimpan struktur data statis Memori dinamis  Digunakan oleh kernel  Digunakan oleh proses Teknik manajemen memori oleh kernel  Area memori kontigu  Area memori non-kontigu

Contiguous vs. Noncontiguous Area memori non-kontigu baik digunakan ketika permintaan akses terhadap area memori tidak terlalu sering atau cenderung sedikit Penggunaan area memori non-kontigu memberikan alternatif langkah untuk menggunakan memori level atas pada Page Frame Skema Alokasi Memori Pemetaan Area Memori ke Page Frame Kontigu Page Frame Non-Kontigu melalui Linear Address Kontigu Penggunaan cache lebih maksimalMenghindari fragmentasi eksternal Waktu akses memori lebih rendahBekerja dengan page table kernel

Alokasi struktur data untuk swap area aktif Alokasi space untuk modul kerja Alokasi buffer untuk perangkat I/O

Linear Address Salah satu jenis alamat memori pada arsitektur mikroprosesor Intel 80×86 Merupakan penghubung antara segmentation unit dan paging unit 32-bit unsigned integer tunggal yang dapat digunakan untuk pengalamatan hingga 4 GB Umumnya berupa notasi heksadesimal 1

Kernel menggunakan bagian awal dari memori yang dimulai dari PAGE_OFFSET Semua linear address setelah PAGE_OFFSET dapat digunakan untuk memetakan berbagai area memori non-kontigu Setiap area memori dipisahkan oleh interval sebesar 4-8 KB Untuk mencari interval linear address dapat dimulai dari PAGE_OFFSET Linear Address 2

The linear address interval starting from PAGE_OFFSET Linear Address 3

Struktur data vm_struct untuk mendeskripsikan area memori non-kontigu struct vm_struct { unsigned long flags; void *addr; unsigned long size; struct vm_struct *next; } Descriptor 1

TipeNamaDeskripsi void*addr Linear address dari satuan memori pada suatu area. unsigned longsize Ukuran area ditambah dengan (interval aman inter-area) unsigned longflags Tipe memori yang dipetakan oleh memori area non- kontigu struct page **pages Pointer pada array of nr_pages pointer pada deksripsi page unsigned intnr_pages Jumlah page yang diisi oleh area unsigned longphys_addr Berisi 0 hingga area sudah diciptakan untuk memetakan I/O shared memory pada suatu perangkat keras. struct vm_struct *next Pointer ke struktur vm_struct selanjutnya. Descriptor 2

Deskriptor disimpan pada sebuah list sederhana Alamat dari elemen pertama dari list disimpan pada variabel vmlist Akses ke list ini bersifat protected dikarenakan oleh read/write spin lock pada vmlist_lock Descriptor 3

Fungsi get_vm_area() untuk membuat deskriptor baru dari tipe vm_struct Fungsi get_vm_area() mempunyai dua parameter  size, menyatakan ukuran memori dalam bytes  flag, menspesifikasikan tipe region Descriptor 4

Operasi yang dilakukan  Invokasi kmalloc() untuk mendapatkan area memori  Mengunci dengan vmlist_lock untuk mencari interval kosong dari linear address yang sudah mengandung paling tidak sebesar size  Jika interval tersedia …  Jika interval tidak tersedia … Descriptor 5

 Jika interval tersedia: o fungsi kmalloc() menginisialisasikan atribut dari deskriptor o melepas kunci dari vmlist_lock o menghentikan proses dengan mengembalikan initial address dari ares memori non-kontigu  Jika interval tidak tersedia: oget_vm_area() melepaskan deksriptor yang didapatkan sebelumnya o melepaskan kunci pada vmlist_lock o mengembalikan NULL Descriptor 6

Fungsi vmalloc() untuk mengalokasikan sebuah area memori non-kontigu pada kernel Parameter size menyatakan ukuran area yang dibutuhkan  Jika berhasil, mengembalikan initial linear address area yang baru  Jika gagal, mengembalikan NULL Allocation 1

void * vmalloc (unsigned long size) { struct vm_struct *area; struct page **pages; unsigned int array_size, i; size = (size + PAGE_SIZE - 1) & PAGE_MASK; area = get_vm_area(size, VM_ALLOC); if (!area) return NULL; area->nr_pages = size >> PAGE_SHIFT; array_size = (area->nr_pages * sizeof(struct page *)); area->pages = pages = kmalloc(array_size, GFP_KERNEL); if (!area_pages) { remove_vm_area(area->addr); kfree(area); return NULL; } memset(area->pages, 0, array_size); for (i=0; i nr_pages; i++) { area->pages[i] = alloc_page(GFP_KERNEL|_ _GFP_HIGHMEM); if (!area->pages[i]) { area->nr_pages = i; fail: vfree(area->addr); return NULL; } if (map_vm_area(area, _ _pgprot(0x63), &pages)) goto fail; return area->addr; } 2

Fungsi map_vm_area() memeriksa page table entries yang digunakan kernel untuk mengindikasi bahwa setiap page frame yang telah teralokasi ke area memori non-kontigu telah berasosiasi dengan sebuah linear address yang termasuk dalam interval dari linear address kontigu hasil dari vmalloc() Allocation 3

map_vm_area(vm_struct * area, int prot, struct page *** pages) { address = area->addr; // awal area end = address + (area->size - PAGE_SIZE); // akhir area pgd = pgd_offset_k(address); spin_lock(&init_mm.page_table_lock); //acquires the kernel Page Table spin lock int ret = 0; for (i = pgd_index(address); i < pgd_index(end-1); i++) { pud_t *pud = pud_alloc(&init_mm, pgd, address); //create a Page Upper Directory ret = -ENOMEM; if (!pud) break; next = (address + PGDIR_SIZE) & PGDIR_MASK; if (next end) next = end; if (map_area_pud(pud, address, next, prot, pages)) break; address = next; pgd++; ret = 0; } spin_unlock(&init_mm.page_table_lock); flush_cache_vmap((unsigned long)area->addr, end); return ret; } 4

Fungsi pud_alloc() untuk menciptakan Page Upper Directory Fungsi map_area_pud() mengalokasikan semua page table yang ditunjuk oleh PUD yang baru Fungsi map_area_pud() akan menginvokasi pmd_alloc() Fungsi map_area_pmd() akan menginvokasi pte_alloc_kernel() Allocation 5

Fungsi vmalloc_32() juga dapat digunakan untuk alokasi, tapi hanya mengalokasikan page frame dari zona memori ZONE_NORMAL dan ZONE_DMA Allocation 6

Fungsi vfree() untuk membebaskan area memori non-kontigu yang di-create oleh fungsi vmalloc() atau vmalloc_32() Fungsi vunmap() untuk membebaskan area memori non-kontigu yang di-create oleh fungsi vmap() Parameter alamat initial linear address dari area yang akan dibebaskan Bergantung pada fungsi _ _vunmap() Release 1

Fungsi _ _vunmap() mempunyai dua parameter  addr, menyatakan alamat initial linear address dari area yang akan dibebaskan  deallocate_pages, menyatakan set jika page frame yang dipetakan ke area harus dibebaskan ke zoned page frame allocator (invokasi vfree() ) atau sebaliknya (invokasi vunmap() ) Release 2

Operasi yang dilakukan  Invokasi fungsi remove_vm_area()  Jika deallocate_pages diset, area->pages (array of pointers to the page descriptor) akan di- scan  Invokasi kfree(area) Release 3

Referensi html/ /understandlk-CHP-8-SECT- 3.html

Terima Kasih