Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
SystemOperating
http://www.ict.pyo.nu.ac.th/nuttapons/OS.html
Worrakit Sanpote
2
MemoryManagement
3
1. Internal Memory2. Main Memory3. Secondary Memory
Memory Management
ประเภทของหน่วยความจํา
4
Memory Management
Internal Memory
Main Memory
Secondary Memory
ภาพแสดงการเคลื่อนยา้ยขอ้มูลของหน่วยความจาํประเภทต่างๆ
5
โปรแกรมจะตอ้งอยูใ่น memory ก่อนที่จะเริ่มทาํงานได้ หลายๆโปรแกรมทาํงานพร้อมกนั หลายๆโปรแกรมตอ้งอยูใ่น
memory memory มีขนาดจาํกดั -- ทาํอยา่งไรจึงจะใหห้ลายๆโปรแกรมทาํงานพร้อมกนัไดอ้ยา่งมีประสิทธิภาพมากที่สุด
Protection: การป้องกนัไม่ใหโ้ปรแกรมที่ทาํงานอยูร่บกวนกนัและกนั
Memory Management
ปัญหา ?
6
1. การยา้ยตาํแหน่ง (Relocation)2. การป้องกนัพื้นที่ (Protection)
3. การใชพ้ื้นที่ร่วมกนั (Sharing)4. การจดัการแบ่งโปรแกรมยอ่ย (Logical Organization)5. การจดัการแบ่งทางกายภาพ (Physical Organization)
Memory Management
กระบวนการในการจัดการหน่วยความจําหลกั
7
Memory Management
1. การย้ายตาํแหน่ง (Relocation)
เนื่องจากโปรเซสต่างๆ จะใชห้น่วยความจาํหลกัในการทาํงานร่วมกนั ระบบปฏิบตัิการจะมีหนา้ที่ในการดูแลการสลบัการทาํงาน (swap) ของโปรเซส โดยมีการกาํหนด address ใหก้บัโปรเซสเพื่อใชใ้นการแปลงค่าในตาํแหน่งของหน่วยความจาํที่อา้งอิงในโปรเซส ไปเป็นตาํแหน่งจริงบนหน่วยความจาํหลกั
8
Physical address : เป็น address ที่ใชอ้า้งถึงขอ้มูลหรือคาํสัง่ใน memory จริง Logical address : เป็น address ที่ใชอ้า้งถึงขอ้มูลหรือคาํสัง่ในโปรแกรม โปรแกรมจะทาํงานไดเ้มื่อ Logical address จะถูกแปลงให ้เป็น physical address
Physical & Logical Address
Memory Management
9
Memory Management
2. การป้องกนัพืน้ที ่(Protection)
ระบบควรมีความสามารถในการป้องกันไม่ให้โปรเซสแต่ละงานถูกรบกวนจากโปรเซสอื่นๆ โดยการไม่อนุญาตให้โปรเซสอื่นเรียกใชพ้ื้นที่ของหน่วยความจําหลัก ซึ่ งจํา เ ป็นจะต้องใช้วิ ธีก ารย้ายตําแหน่ง (relocation)
10
Memory Management
3. การใช้พืน้ทีร่่วมกนั (Sharing)
การที่อนุญาตใหโ้ปรเซสหลายๆ ตวัมาใชพ้ื้นที่หน่วยความจาํเดียวกนัได ้โดยระบบจดัการหน่วยความจาํจะตอ้งอนุญาตใหต้วัควบคุม สามารถเขา้ถึงพื้นที่หน่วยความจาํที่เป็นส่วนที่ใชร้่วมกนัได ้โดยไม่ตอ้งใชว้ธิีการป้องกนัพื้นที่
11
Memory Management
4. การจดัการแบ่งโปรแกรมย่อย (Logical Organization)
โปรแกรมส่วนใหญ่จะถูกแบ่งออกเป็นโปรแกรมยอ่ยๆ หรือ moduleเพื่อให้สามารถใชง้านหน่วยความจาํไดอ้ย่างมีประสิทธิภาพ โดยมีวิธี คือ จะไม่นาํโปรแกรมยอ่ยลงสู่หน่วยความจาํพร้อมกบัโปรแกรมหลกั แต่จะนาํลงเมื่อมีการเรียกใชง้านเท่านั้น
12
ลดการสิ้นเปลืองพื้นที่ของหน่วยความจาํ โดยโปรแกรมยอ่ยที่ไม่ได้ใชง้าน จะไม่สามารถลงสู่หน่วยความจาํได้ โปรแกรมยอ่ยแต่ละตวัสามารถคอมไพลแ์ยกกนัได้ โปรแกรมยอ่ยแต่ละตวัสามารถมีระดบัการป้องกนัที่แตกต่างกนัได้ โปรแกรมหลกัสามารถเรียกใชโ้ปรแกรมยอ่ย เหล่านี้ร่วมกนัได้
ประโยชน์ของวธิีการจดัการโปรแกรมย่อย
Memory Management
13
Memory Management
5. การจดัการแบ่งทางกายภาพ (Physical Organization)
หน่วยความจาํหลกัอาจมีไม่เพียงพอสําหรับโปรแกรมนั้น ส่งผลให้ผูเ้ขียนโปรแกรมจะต้องใช้วิธีการแบ่งส่วน และจาํเป็นจะต้องมีการนําหน่วยความจาํสาํรองที่มีการเขา้ถึงขอ้มูลไดช้า้ แต่มีความจุปริมาณมาก เขา้มาใชเ้กบ็โปรแกรมยอ่ยที่ไม่ค่อยไดใ้ชง้าน
14
Memory Management
sourceprogram
compiler or assembler
objectmodule
linkageeditor
loadmodule
loader
In-memoryBinary
Memoryimage
otherobject
module
systemlibrary
dynamically loaded
system library
Compile time
Load time
Execution time
ภาพแสดงขั้นการในการดาํเนินการของโปรเซส
15
Linking เป็นการรวมโปรแกรม, libraries, และ data เขา้ด้วยกัน เ ป็นโปรแกรมที่สมบูรณ์ ซึ่ งจะมีการสร้าง logical address ใหก้บัโปรแกรม Loading เป็นการนาํโปรแกรมลงสู่ memory ก่อนที่โปรแกรมจะเริ่มทาํงาน ซึ่งจะตอ้งแปลง logical address ให้เป็น physical address
Linking & Loading
Memory Management
16
Compile time : address ของโปรแกรมจะถูกกาํหนดไวต้ายตวัใหเ้ป็น physical address ตอ้งมีการ compileใหม่ทุกครั้งหากตอ้งการเปลี่ยน address ของโปรแกรมใน memory Load time : address ของโปรแกรมจะถูกคาํนวณใหเ้ป็น
physical address เมื่อโปรแกรมถูก load ลง memory
Address-binding
Memory Management
17
Execution time: เกิดขึ้นขณะที่โปรแกรมกาํลงัทาํงานอยู ่เมื่อตอ้งการใชง้านจาก library ใด ก็จะใชก้ารโหลดแบบ Dynamic Loading โดยจะโหลดเฉพาะ library ที่ตอ้งการใชง้านเท่านั้น เขา้สู่หน่วยความจาํหลกั
Address-binding
Memory Management
18
Libraries ทั้งหมดจะยงัไม่ถูก loaded ลง memory จนกวา่มนัจะถูกเรียกใช้ เหมาะสาํหรับ libraries ที่ถูกเรียกใชไ้ม่บ่อย โปรแกรมจะมีขนาดเลก็ลงมาก เนื่องจากจะมีเฉพาะส่วนที่ใชง้านบ่อยๆ เท่านั้น
Dynamic Loading
Memory Management
19
Overlays
Memory Management
โดยทัว่ไปแลว้ โปรแกรมที่ตอ้งการประมวลผล จะตอ้งถูกโหลดเขา้สู่หน่วยความจาํหลกั นั่นคือ โปรแกรมจะตอ้งมีขนาดน้อยกวา่หรือเท่ากบัขนาดของหน่วยความจาํลบดว้ยส่วนที่ระบบปฏิบตัิการใช้ ในหน่วยความจํา ซึ่ งหากโปรแกรม ที่ มีขนาดใหญ่กว่ าหน่วยความจําต้องการจะประมวลผล จะใช้วิ ธีการ ซ้อนทับ (Overlays) โดยโปรแกรมจะถูกแบ่งออกเป็นส่วนยอ่ยที่เป็นอิสระต่อกนัหลายๆ ส่วน และจะโหลดส่วนที่จะใชเ้ขา้สู่หน่วยความจาํหลกัเท่านั้น
20
Swapping
Memory Management
เนื่องจากหน่วยความจําหลักมีขนาดจํากัด บางครั้งระบบจําเป็นจะต้องนําบางโปรเซสออกจากหน่วยความจําหลัก เพื่อให้หน่วยความจําหลักมีพื้นที่มากพอที่จะโหลดโปรเซสอื่นเข้ามาประมวลผล
21
Memory Management
ระบบปฏิบัตกิาร
P1
P2Swap In
Swap Out
ภาพแสดงการสบัเปลี่ยนระหวา่งสองโปรเซส
Main MemorySecond Memory
22
1. Single Contiguous Memory Management
Memory Management
การจัดการหน่วยความจําหลกัแบบต่างๆ
2. Partitioned Memory Management
3. Page Memory Management
4. Segmentation Memory Management
23
Memory Management
Relocation with Base Register
24
ใชจ้ดัการหน่วยความจาํหลกัสาํหรับระบบคอมพิวเตอร์ในยคุแรกๆ มีหน่วยความจาํหลกัสาํหรับงานเดียว โดยหน่วยความจาํจะถูกแบ่งออกเป็น 3 ส่วน คือ
• ส่วนที ่1 สาํหรับระบบปฏิบตัิการ• ส่วนที ่2 สาํหรับ Execute โปรเซส• ส่วนที ่3 ส่วนที่เหลือจากการใชง้าน
1. Single Contiguous Memory Management
Memory Management
25
Memory Management
ระบบปฏิบัตกิาร
Main Memory
ภาพแสดงการจดัสรรหน่วยความจาํหลกัสาํหรับ 1 งาน
ส่วนที่ Execute โปรเซส
ส่วนที่ไม่ถกูใชง้าน
26
memory ถูกแบ่งออกเป็นส่วนๆ (partitions) OS จะจดัสรร partition ที่มีขนาดใหญ่พอใหก้บัแต่ละโปรแกรม OS จะมีตารางการใชง้าน partition บอกวา่ขณะนั้นมีโปรแกรมทาํงานอยูห่รือไม่ มีทั้งแบบ fixed-partition และ dynamic-partition
2. Partitioned Memory Management
Memory Management
27
Memory จะถูกแบ่งไวต้ายตวัวา่มีกี่ partition และแต่ละ partition มีขนาดเท่าใด หากโปรแกรมมีขนาดเลก็กวา่ partition จะทาํใหม้ี memoryเหลือ ซึ่งโปรแกรมอื่นไม่สามารถใชไ้ด ้Internal Fragmentation
Fixed Partitioning
Memory Management
28
Memory Management
ระบบปฏิบัตกิาร100K
300K
500K
0K
200K
400K
600K
50K
50K
75K
100K
100K
Internal Fragmentation
ภาพแสดงการจดัการหน่วยความจาํหลกัแบบ Fix Partition
29
ขนาดและจาํนวน partition ปรับเปลี่ยนโดย OS ได ้ขึ้นอยูก่บัขนาดและจาํนวนโปรแกรม
OS จะจดัสรร partition ที่มีขนาดพอดีกบัขนาดของโปรแกรม ไม่ทาํใหเ้กิด internal fragmentation เกิด external fragmentation ที่มี block เลก็ๆกระจายเกิดขึ้นใน memory แต่ไม่สามารถจดัสรรให้กบัโปรแกรมได ้ทั้งๆ ที่ผลรวมของ block เลก็ๆ มากกวา่ขนาดของโปรแกรม
Dynamic Partitioning
Memory Management
30
Memory Management
ระบบปฏิบัตกิาร100K
300K
0K
200K
430K
600K
170K
50K
80K
100K
100K
External Fragmentation
350K
ระบบปฏิบัตกิาร100K
300K
0K
200K
430K
600K
50K
80K
100K
350K
ระบบปฏิบัตกิาร100K
300K
0K
200K
430K
600K
50K
80K
100K
350K
50K
100K
ภาพแสดงการจดัการหน่วยความจาํหลกัแบบ Dynamic Partition
31
First-fit Best-fit Worst-fit
Placement Algorithm for Dynamic Partitioning
Memory Management
32
First-fit : จดัสรร block แรกที่เจอวา่มีขนาดใหญ่พอ สาํหรับโปรแกรม
Memory Management
ระบบปฏิบัตกิาร16K
14K
5K
100K
124K
145K
13K
Process
33
Best-fit : สแกนหา block ที่มีขนาดใกลเ้คียงกบัขนาดที่ โปรแกรมตอ้งการมากที่สุด
Memory Management
ระบบปฏิบัตกิาร16K
14K
5K
100K
124K
145K
13K
Process
34
Worst-fit : สแกนหา block ที่มีขนาดใหญ่ที่สุดใหก้บั โปรแกรม
Memory Management
ระบบปฏิบัตกิาร16K
14K
5K
100K
124K
145K
13K
Process
35
จดัการใช ้memory ใหม่ให้พื้นที่วา่งใน memory มาอยู่รวมกนัเป็น block ขนาดใหญ่
Compaction ใชไ้ดก้บั dynamic loading เท่านั้น OS เสียเวลาในการทาํ compaction
Compaction
Memory Management
36
Memory Management
ระบบปฏิบัตกิารP1 (16K)
32K
P4 (24K)
128K
P5 (128K)
P6 (256K)
136K
ระบบปฏิบัตกิารP1 (16K)
P4 (24K)
P5 (128K)
P6 (256K)
296K
ระบบปฏิบัตกิารP1 (16K)
P4 (24K)
P5 (128K)
P6 (256K)
P7 (256K)
40K
A. ก่อน Compaction B. หลงั Compaction C. จดัสรรพื้นที่ใหโ้ปรเซส
P7 (256K)
37
แบ่ง physical memory ออกเป็น blocks ที่มีขนาดเท่ากนัเรียกวา่ frames (อยูใ่นช่วง 512 bytes ถึง 8,192 bytes) แบ่งโปรแกรมออกเป็น blocks ที่มีขนาดเท่ากนัเรียกวา่ pages Load ทุกๆ page ของโปรแกรมลงสู่ frame ของ memory page ของโปรแกรมใน memory ไม่จาํเป็นตอ้งอยูต่่อเนื่องกนั สร้าง page table เพื่อแปลง logical ใหเ้ป็น physical
addresses
3. Page Memory Management
Memory Management
38
Logical address ของโปรแกรมแต่ละตาํแหน่งจะถูกแบ่งออกเป็น Page number (p) – ใชเ้ป็น index ของ page
table ซึ่งชี้ไปยงั base address ของแต่ละ page ใน physical memory Page offset (d) – บอกวา่ address นั้นๆอยูห่่างจาก
base address ไปกี่ตาํแหน่ง
Address Structure
Memory Management
39
Address Translation
Memory Management
40
ตวัอย่าง Paging
Memory Management
41
ตวัอย่าง Pagingอย่างละเอยีด
Memory Management
42
Free Frames
Before allocation After allocation
Memory Management
43
OS จะเป็นผูส้ร้างและดูแล page table แต่ละโปรแกรมจะมี page table ของตวัเอง Page table ถูกเกบ็อยูใ่น memory Page-table base register (PTBR) ใชช้ี้ไปยงัจุดเริ่มตน้ของ page table
Page-table length register (PTLR) บอกขนาดของ page table
การสร้าง Page Table
Memory Management
44
ทุกๆครั้งที่ CPU อา้งถึง data/instruction จะตอ้งอ่าน page table หนึ่งครั้ง แลว้จึงอ่าน/เขียน data/instruction ณ ตาํแหน่งที่ตอ้งการ มีวิธีการลดขั้นตอนลง โดยการใช้ hardware ที่เรียกว่า
associative memory หรือ translation look-asidebuffers (TLBs) เขา้มาเกบ็ page table บางส่วนไว้
การสร้าง Page Table
Memory Management
45
Paging Hardware โดย TLB
Memory Management
46
ทาํไดโ้ดยเพิ่ม protection bit ใหก้บัแต่ละ frame จะมี valid-invalid bit ในแต่ละช่องของ page table : “valid” แสดงวา่ page อยูใ่น logical address
space ของ process นั้น “invalid” แสดงวา่ page ไม่อยูใ่น logical
address space ของ process นั้น
Memory Protection
Memory Management
47
Valid (v) และ Invalid (i) Bit ใน Page Table
Memory Management
48
Hierarchical Paging Hashed Page Tables
โครงสร้างของ Page Table
Memory Management
49
ในกรณีที่ logical address space มีขนาดใหญ่มากๆ จะมีผลให ้page table มีขนาดใหญ่ตาม แบ่ง logical address space ใหเ้ป็น page tables ซอ้นกนัหลายๆชั้น ที่พบบ่อยจะเป็น two-level paging และ two-level page
table
Hierarchical Page Tables
Memory Management
50
Logical address ของ 32-bit คอมพิวเตอร์ที่มี page size = 4K ถูกแบ่งออกเป็น page number ขนาด 20 bits page offset ขนาด 12 bits
ดว้ยการใช ้page ซอ้น page จะได ้page number 20 bitsถูกแบ่งออกเป็น 10-bit page number
10-bit page offset
ตวัอย่าง Two-Level Paging
Memory Management
51
ซึ่งจะได้ logical address ดงัรูป
โดยที่ p1 เป็น index ของ page table แรกp2 เป็น displacement ของ page table แรก
ตวัอย่าง Two-Level Paging
page number page offset
pi p2 d
10 10 12
Memory Management
52
Two-Level Page-Table
Memory Management
53
Address-Translation Address-translation สาํหรับ two-level 32-bit
paging
Memory Management
54
มกัจะใชก้บัระบบที่มี address spaces > 32 bits Page number จะถูก hashed เขา้ไปใน page
table แทนที่จะเป็นการเขา้ไปหาค่าโดยใช ้index ธรรมดา
Hashed Page Tables
Memory Management
55
Hashed Page Table
Memory Management
56
Shared code หลายๆโปรแกรมใชส้่วนที่เป็น text ร่วมกนั ทาํใหล้ดการใช ้
memory แต่ละโปรแกรมจะมี page table ของตวัเองที่ชี้ไปยงั
Shared code ที่เป็น page เดียวกนัใน memory Private code and data
แต่ละโปรแกรมมีส่วนที่เป็น data และ private code ของตวัเองซึ่งไม่สามารถใชร้่วมกนัได้
Pages Sharing
Memory Management
57
ตวัอย่าง Pages Sharing
Memory Management
58
เป็นการแบ่ง memory ออกเป็นส่วนๆ ตามที่โปรแกรมถูกแบ่งไว้โดยผูเ้ขียน โปรแกรมหนึ่งๆ อาจจะประกอบดวัย main program,
function, local variables, global variables, common block, stack
Segment ไม่เหมือน paging ตรงที่ memory ของแต่ละ segment จะมีขนาดเท่าไรกไ็ด ้และไม่จาํเป็นตอ้งมีขนาดเท่ากนั
Hierarchical Page Tables
Memory Management
59ภาพแสดงส่วนประกอบของโปรแกรม
Memory Management
4. Segmentation Memory Management
60
Memory Management
1
3
2
4
1
4
2
3
user space physical memory space
ภาพการจดัการหน่วยความจาํหลกัแบบ Segmentation
61
Logical address จะประกอบไปดว้ยสองส่วน <segment-number, offset> Segment table – เป็นตารางบอกถึง physical addresses ของแต่ละ segment base – เป็นจุดเริ่มตน้ของ segment ใน memory
limit – เป็นขนาดของ segment นั้น
Memory Management
Segmentation Architecture
62
Segment-table base register (STBR) เกบ็ตาํแหน่งเริ่มตน้ของ segment table ใน memory
Segment-table length register (STLR) บอกจาํนวน segment ที่โปรแกรมมีอยู่
Memory Management
Segmentation Architecture
63
Memory Management
ตวัอย่าง Segmentation
64
Memory Management
การทาํงานของ Segmentation
65
Protection: แต่ละ segment ใน segment table จะมี: validation bit = 0 illegal segment read/write/execute privileges
Relocation: เปลี่ยน base และ limit ของแต่ละ segment เพื่อยา้ย segment ใน memory
Memory Management
Protection and Relocation
66
Memory Management
Segments Sharing
67
MULTICS แกป้ัญหา external fragmentation และsegment table ขนาดใหญ่โดยการใช้ paging ของ segments แต่ละ segment จะถูกแบ่งเป็น pages แทนที่จะให ้segment table เกบ็ base และ limit ของแต่ละ segment กใ็หเ้กบ็ base address ของ page table สาํหรับ segment นั้นๆ
Memory Management
Segmentation with Paging – MULTICS
68
Memory Management
MULTICS Address Translation
69
Intel 386 ใช้ segmentation with paging เช่นเดียวกบั MULTICS ต่างกนัตรงที่ paging จะเป็นแบบ hierarchical แบบ 2 ระดบั
Memory Management
Segmentation with Paging – Intel 386
70
Memory Management
Intel 30386 Address Translation
71
Question ?