review: memory & file system -...
TRANSCRIPT
1
Review: Memory & File System
SISTIM OPERASI(Operating System)IKI-20230 Johny Moningka([email protected])
Fakultas Ilmu KomputerUniversitas Indonesia
Semester 2000/2001
Review MM JM-2001/v1.1/2
Review: MM
n Apakah fungsi main-memory (user’s view)?n Memori sebagai tempat penyimpanan instruksi/data
dari program• Storage yang cepat sehingga dapat mengimbangi kecepatan
eksekusi instruksi CPU• Terdiri dari “array of words/bytes” yang besar• Address digunakan untuk mengakses data (shared oleh CPU
dan I/O devices)
n Management Memoryn Melacak dan proteksi pemakaian memori (siapa dan
berapa besar?).n Memilih program mana yang akan diload ke memori
dari disk.
2
Review MM JM-2001/v1.1/3
Problem: Multiprogramming
n Misalkan terdapat 3 program (proses) di memori:
• Kapan gcc diberikan informasi akan diekesekusi pada lokasi 0x4000?
• Apa yang harus dilakukan jika gcc memerlukan memory tambahan?• Bagaimana jika yang diperlukan lebih dari memory yang tersisa? • Jika netscape terjadi error dan menulis pada alamat 0x4100?• Apa yang terjadi jika program berhenti eksekusi terminated?
OS
netscape
gcc
vi 0xA000
0x7000
0x9000
0x4000
0x0000
Review MM JM-2001/v1.1/4
R: Address Translation
n Apakah perbedaan antara “logical address” dan “physical address”?n Address lojik: address yang di-generate oleh CPU
(disebut juga virtual address) berdasarkan kode/urutan address dari eksekusi proses saat itu.
• Independent dari “lokasi” program tersebut berada di memori.
• Lokasi eksekusi “code” program, hanya berarti untuk proses tersebut yang sedang dieksekusi.
n Address fisik: address yang sebenarnya berada pada memori fisik (storage).
• Lokasi tertentu yang telah diberikan kepada proses (setiap proses mempunyai alokasi memori tertentu).
• Lokasi ini harus diproteksi oleh memory management.
3
Review MM JM-2001/v1.1/5
Review: Relocation
n Bagaimana program gcc dapat dieksekusi pada “address fisik” di memori?n Saat program di “load ke memori” (load time binding).n Menggunakan base register (contiguous allocation).
Note: Hal yang sama berlaku untuk dynamic relocation (segementation), hanya bedanya informasi base lokasi memori (address space) telah disimpan pada process table (PCB) dan setiap context switch informasi tersebut di update.
Review MM JM-2001/v1.1/6
Review: load-time binding
n Saat linking (build) => generate daftar referensi untuk alamat absolut (symbol table).
n Saat load => lokasi program di memori (telah diketahui), dan ubah alamat tersebut sesuai dengan lokasi.
0x1000
static gcc0x3000
0x7000
OS
gcc
jump 0x2000jump 0x5000
0x4000
4
Review MM JM-2001/v1.1/7
Base Register
n Gunakan bantuan register (relocation register): setiap akses ke memori.
• Base register: berisi informasi relokasi program di memori fisik.• relocation: physical addr = virtual addr + base register
0x1000
a.out0x3000
0x7000
OS
a.out
jump 0x2000jump 0x2000
0x4000
When process runs, base register = 0x4000,
Jump addr = 0x2000 + 0x4000 = 0x6000
MMU: base register proses gcc: 0x400 jump 0x6000
Review MM JM-2001/v1.1/8
Review: Protection
n Jika netscape terjadi error dan menulis pada alamat 0x4100? Bagaimana melakukan proteksi?
n Saat program di “load ke memori” (load time binding):• Dapat diketahui maximum memori yang telah dialokasi =>
limit address yang dapat diakses.
• Proses hanya dapat mengakses “range”: base address s/d limit address. Jika error tidak mengganggu proses lain.
n Note: Mekanisme ini menciptakan konsep dasar: segment (range address yang bervariasi) dan paging (range address yang tetap besarnya).
5
Review MM JM-2001/v1.1/9
Contoh Kerja MMU
CPU
Base register
14000
+
memori346 14346
Address lojik Address fisik
MMU
24000
Limit registerrange?
Review MM JM-2001/v1.1/10
Review: Base & Limit Register
n Keuntungan base & limit register (contiguous allocation):n Sederhana (hardware dan programming): diperlukan 2 register,
di update saat context switch dari proses.n Relokasi dan proteksi: cepat, hanya perlu addition dan comparison.
n Kerugian: hanya ada satu “segment” lokasi memori untuk satu proses!!.n Problem 1: growing processes (data bertambah)
How to expand gcc?
n Problem 2: how to share code and data??Bagaimana gcc dapat menggunakan “code library” yang sama??
n How to separate code and data?
n Salah satu solusi: multiple segmentsn “segmentation” gcc
p2
Free space
netscape1
netscape 2
6
Review MM JM-2001/v1.1/11
What does a process look like? (Unix)
n Process address space logically divided into “segments”:text (code), data, heap (dynamic data), and stack
heap
stack
code
initialized data
address 2^n-1
address >= 0
malloc(),free()
function call, returnparameter etc
Review MM JM-2001/v1.1/12
Segmentation
n Ide: Proses mempunyai “base + limit” lebih dari satu.n Proses address space dibangun dari sekumpulan “segments”
yang tersebar (tidak perlu contiguos allocation untuk proses).n Setiap segment menempati alokasi memori yang contiguous,
dan ukurannya dapat bervariasi (tidak tetap).n Setiap segment mempunyai proteksi sendiri.n Setiap segment dapat di “share” (programmer’s view) dengan
proses lain.
7
Review MM JM-2001/v1.1/13
Segmentation
gcc
Text segr/o
Stack segr/w
0x1000
0x3000
0x5000
0x6000
Real memory
0x2000
0x3000
0x6000
0x8000
Seg. text:Base:… Limit:..Protection: read onlyShared: yes
Seg. stack:base: .. limit: ..Protection: read writeShared: No
Review MM JM-2001/v1.1/14
Segmentation
n Bagaimana proses melakukan mapping untuk semua segment yang ada (address translation)?n Segment table: Setiap proses mempunyai deretan segment
yang disimpan pada table.n Misalkan: row pada table, berisi informasi untuk satu
segment (base, limit, protection, dll).
n Setiap memori reference menunjukkan pointer ke segment pada table dan offset.
• Logical address terbagi dua field: nomor segment pada table dan offset pada segment tersebut.
Note: nomor segment => implementasi nomor index pada entry segment table (menghemat bit dan comparison, searching).
8
Review MM JM-2001/v1.1/15
Example:
Virtual addr
Seg# offset
4 128
Seg tableProt base len
R 0x1000 512
mem
128
+? yesno
fault
Range?
Seg 4
0x1000
Review MM JM-2001/v1.1/16
Segmentation example
n 2-bit segment number (1st digit), 12 bit offset (last 3)
n where is 0x0240?n 0x1108?n 0x265c?n 0x3002? Faultn 0x1600? Fault
Seg base limit rw0 0x4000 0x6ff 101 0x0000 0x4ff 112 0x3000 0xfff 113 00
0x4000
0x3000
0x2000
0x1500
0x10000x0700
0x0000
logical physical
0x4700
0x4000
0x3000
0x500
0x0
9
Review MM JM-2001/v1.1/17
Segmentation Tradeoffs
n Pro:n Tidak perlu contiguous allocation:
Multiple segments per processn Allows sharing! (how?)n Don’t need entire process
in memory!!!
n Con:n Extra layer of translation
speed = hardware supportn More subtle: an “n” byte segment requires n *contigious* bytes of
physical memory. (why?) Makes fragmentation a real problem.
gcc codewhere?
vi
gcc
Review MM JM-2001/v1.1/18
Review: Fragmentation
n Apakah yang dimaksud “fragmentasi” memori?n Ketidak-mampuan OS menggunakan memori yang
“tidak digunakan” (free memory).
n Terangkan 2 jenis fragmentasi yang ada:n External fragmentation:
• Variable sized allocation (segment): Tersebar “variable sized” yang kecil dari memory yang free, tapi tidak mencukupi untuk alokasi satu segment.
n Internal fragmentation.• Fixed sized allocation (paging): bagian memori yang tidak
digunakan oleh proses tapi telah di-alokasikan.
10
Review MM JM-2001/v1.1/19
Fragmentation
gcc
emacs
doom
stackallocated
Unused (“internal fragmentation”)
Externalfragmentationvi ??
Review MM JM-2001/v1.1/20
Paging
n Pembagian memori dalam ukuran tertentu (“pages”)
n Tradeoff:n pro: eliminates external fragmentation
n pro: simplifies allocation, free and swapping
n con: internal fragmentation
gcc
vi internal frag
Pagestypical: 4k-8k
11
Review MM JM-2001/v1.1/21
Paging:mechanism
n Memory dibagi dalam ukuran tertentu dan tetap (pages)n Setiap proses mempunyai table (“page table”) yang
menyimpan informasi pages yang dialokasikan ke proses tersebut.
n Entry pada page table: mapping virtual page number (VPN) ke physical page number (PPN)
• PT entry also includes protection bits (r, w, valid)
n Addressing: virtual address => terbagi atas 2 field: VPN dan offset (max. ukuran pages).
n Q: Misalkan MIPS, addressing 32 bit dan besarnya pages: 4 KB, berapa bit untuk VPN dan berapa untuk offset?
Review MM JM-2001/v1.1/22
Example:
Virtual addr
VPN page offset
3 128 (12bits)
page table
Prot VPN PPN
r 3 1
mem
page128
0x1000offset: 128
“invalid”
pagesbelum ada di memori fisik!
? PPN
Besarnya ukuran pages: 4 KB => 12 bitsJadi offset: 12 bits, VPN: 32 – 12 bits = 20 bits.
12
Review MM JM-2001/v1.1/23
Page tables (vs segmentation)
n Good:n Mudah untuk alokasi: karena ukuran tetap, operasi dapat
dilakukan dengan bantuan hardware untuk mapping VA ke PA.n Manajemen pages: daftar pages yang free dapat dikumpulkan
dalam free list.
n Bad: n Ukuran page table: PTs memerlukan satu entry untuk setiap page
=> perlu storage lebih besar untuk menyimpan informasi PT.• e.g., given a range [0x0000, 0xffff => 64 KB] need one segment
descriptor but, assuming 4K pages, 16 page table entries
0xFFFF0x0000
Page tableB=0x0,len=0xffff
Review MM JM-2001/v1.1/24
Page size tradeoffs
n Small page = large PT overhead: n 32-bit address space with 1k pages. How big PT?n Lokalitas program tidak terakomodasi tersebar ke banyak pages
=> page faults dapat meningkat.
n Large page = internal frag (doesn’t match info. size)n Transfer time 1 pages at page faults? n Write back untuk satu pages yang telah diupadte => lama
page size
Internal frag&
writeback cost
Overhead&
localityMore
13
Review MM JM-2001/v1.1/25
Review: Linker
n Apakah perbedaan static shared lib dan dynamic shared lib?
n Static shared lib:• Define a “shared library segment” at same address in every
program’s address space
• Every shared lib is allocated a unique range in this seg, and computes where its external defs reside
Review MM JM-2001/v1.1/26
gccls0xffe00000xfff0000
0xffe00000xfff0000
hello
0xffe00000xfff0000
libc.a…
math.a…
0xffe0000
0xfff0000
14
Review MM JM-2001/v1.1/27
Linking variation 2: dynamic shared libs
n Problem: static shared libraries require system-wide pre-allocation address space: kaku tidak flexible!n We want to link code anywhere in address space
n Problem 1: linker won’t know how to resolve refsn do resolution at runtimen link in stubs that know where to get code fromn program calls stub, goes and gets code
Review MM JM-2001/v1.1/28
printf_stub:scanf_stub:...
ls
4500 9000 libc.aprintf_stub:scanf_stub:...
gcc
printf:...
sscanf:...
“/usr/shrd-lib/libc.a”
15
Review MM JM-2001/v1.1/29
Problem 2: Dynamic shared libraries
n Code must simultaneously run at different locations!n Sol’n: make lib code “position independent”
n refer to routines, data using relative addressing (base + constant offset) rather than absolute addresses
n
n Example:n internal call “call 0xf44” become “call lib_base + 0x44”
n “lib_base” contains the base address of library (private to eachprocess) & 0x44 is called routine’s internal offset
libc.aprintf:
...call 0xf44
write:…
...
0xf44
0xf00 printf:...
call libc_base+0x44write:
…...
0x44
0x0
Review MM JM-2001/v1.1/30
Review: Q&A
n Segmentation & Paging:n Apakah segmentation & paging tidak ada fragmentasi?
n Untuk translation: lihat pembahasan di prosesor Intel (buku teks).
n Kalau penanganan page fault menggunakan page replacement itu prosedurnya bagaimana?
16
Review MM JM-2001/v1.1/31
n Page rewrite apakah menulis kembali seluruh page atau hanya mengubah/menambah yang diperlukan saja? Jika hanya mengubah/menambah, bagaimana jika terjadi kejadian seperti ini?
n Ketika dilakukan defragmentasi di Windows, kemudian terjadi hang pada komputer,
Apakah hal tersebut akan mempengaruhi FAT
Review MM JM-2001/v1.1/32
n Apakah thrashing itu hanya disebabkan oleh global page replacement saja, apakah dengan local page replacement tidak bisa terjadi thrashing juga?
n Apakah pada sistem operasi yang ada sekarang ini masih digunakan pembagian seperti DOS? Dan apa tujuan dari pembagian memory tersebut?
17
Review MM JM-2001/v1.1/33
n Saya masih bingung kenapa partisi primary didalam sebuah harddisk dibatasi sampai 4 partisi?
n .
Review MM JM-2001/v1.1/34
Review: File-System Structure
n File structuren Data file disimpan dalam blok (kelipatan besarnya
sector).• Logical address disk: urutan nomor blok data (keseluruhan).
• Logical address file: urutan nomor blok data yang digunakan sesuai dengan urutan data pada file.
n Implementasi: • Mengurangi overhead mendapatkan data (seek, rotation).
• Manajemen blok yang bebas (free list).
18
Review MM JM-2001/v1.1/35
Review: Disk Layout
n Bootstrapping: where is root directory? n Fixed location on disk:
FAT (opt) FAT root dir block file MBR
informasi partisi disk,program load boot sector/code,(dibaca oleh BIOS, lokasi cyl. 0, head 1, sector 1).
Superblocks root dir inode table block file inode table MBR
Review MM JM-2001/v1.1/36
19
Review MM JM-2001/v1.1/37
Review: File access
n Bagaimana cara user menggunakan file?n Akses data secara berurut (logical data):
• Sequential access: akses data pada blok files secara berurut, data besar dan dari awal sampai akhir file.
• Contoh: data statis file informasi karyawan, backup tape.
n Akses data secara acak/sembarang• Random access: akses data pada lokasi blok tidak berurut;
data kecil.
• Contoh: update file, data transaksi.
Review MM JM-2001/v1.1/38
Review: Support for both
n Hal yang menjadi dasar design file structure:n Umumnya file ukurannya kecil (pengamatan).
• Survey: 80% file pada sistim UNIX ukurannya kecil (< 10 blok, dan dapat diakses melalui: direct pointer).
n Sebagian dari blok disk digunakan oleh file yang besar (porsi terbesar).
• File yang besar menggunakan mayoritas kapasitas disk (memerlukan jumlah blok yang sangat banyak).
n Jadi perlu dukungan untuk kedua model akses : akses random (file kecil yang banyak) dan sequential (file yang besar dan aktifitas tinggi)
• Akses yang cepat untuk random.• Kemampuan menanmpung blok yang sangat banyak
(multilevel indeks pointer).
20
Review MM JM-2001/v1.1/39
Review: Block Allocation
n Alokasi struktur blok disk:n Contiguous allocationn Linked allocation.n Indexed allocation.
Review MM JM-2001/v1.1/40
Linked List
Allocate as needed, link together; e.g., file starts at block 9
Bagaimana melakukan random access?“Follow the link”, overhead besar (read blok disk; linked list) => banyak seek)
21
Review MM JM-2001/v1.1/41
Example: DOS FS (simplified)
n Performance: Link dikumpulkan pada fixed-sized “file allocation table” (FAT) => tidak disebarkan pada setiap blok.
n FAT cukup kecil dapat disimpan “cache” disk => akses tanpa melakukan seek.
file a6 4 3
freeeof1
eof3eof4...
file b2 1
FAT (16-bit entries)
a: 6b: 2
Directory (5) 0123456
Review MM JM-2001/v1.1/42
FAT discussion
n Entry size = 16 bits nomor blokn Berapa maksimum ukuran FAT? n Jika 8 Kbyte per blok,
Max. besarnya disk yang dapat digunakan?• 64 K * 8 KB => 512 MB
n Reliability: how to protect against errors? n FAT menempati satu area tertentu (contiguous sector)
=> what happen if corrupt?n Buat duplikat FAT on disk.
16 bits => 64 K jumlahblok
16 bits => 64 K jumlahblok
22
Review MM JM-2001/v1.1/43
Example of Indexed Allocation
Review MM JM-2001/v1.1/44
Multi-level indexed
n Berapa besar tabel index? 1 tingkat => sangat besar supaya dapat mencakup file yang besar.n Multilevel indexed: index (2nd level) tidak akan ada jika
file kecil.n Mengurangi besarnya tabel index untuk file kecil tapi
mendukung file besar.
idle
tidak perlu disediakan entry
23
Review MM JM-2001/v1.1/45
Example UNIX: inode
Review MM JM-2001/v1.1/46
UNIX: inodes
n Inodes disimpan pada table (array, inode list)n Besarnya array inode ditentuk saat disk di format
(initialized) dan menempati lokasi tertentu (awal atau tersebar dalam groups list).
n Superblocks:n Menyimpan informasi partisi, dan pointer ke inode list
(groups)
Inode array file blocks ...SUPERBLOCKS
24
Review MM JM-2001/v1.1/47
Example: Unix file access
n Want to modify byte 4 in /a/b.c:
n “read” root directory (blk 10)n lookup a (blk 12); “read”
n lookup inode for b.c (13); “read”
n Gunakan inode => read blok 114, update byte ke 4 dari blok tsb.
Root directory
. : 10 : dir a: 12: dir . :12 dir .. :10:dir b.c :13:inode
“inode”
int main() { …
114 … 0