18
System Operating http://www.ict.pyo.nu.ac.th/nuttapons/OS.html Worrakit Sanpote 2 Memory Management 3 1. Internal Memory 2. Main Memory 3. Secondary Memory Memory Management ประเภทของหน่วยความจํา 4 Memory Management Internal Memory Main Memory Secondary Memory ภาพแสดงการเคลื่อนย้ายข้อมูลของหน่วยความจําประเภทต่างๆ

6 Memory Management 2 2552.ppt

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 6 Memory Management 2 2552.ppt

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

ภาพแสดงการเคลื่อนยา้ยขอ้มูลของหน่วยความจาํประเภทต่างๆ

Page 2: 6 Memory Management 2 2552.ppt

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

Page 3: 6 Memory Management 2 2552.ppt

9

Memory Management

2. การป้องกนัพืน้ที ่(Protection)

ระบบควรมีความสามารถในการป้องกันไม่ให้โปรเซสแต่ละงานถูกรบกวนจากโปรเซสอื่นๆ โดยการไม่อนุญาตให้โปรเซสอื่นเรียกใชพ้ื้นที่ของหน่วยความจําหลัก ซึ่ งจํา เ ป็นจะต้องใช้วิ ธีก ารย้ายตําแหน่ง (relocation)

10

Memory Management

3. การใช้พืน้ทีร่่วมกนั (Sharing)

การที่อนุญาตใหโ้ปรเซสหลายๆ ตวัมาใชพ้ื้นที่หน่วยความจาํเดียวกนัได ้โดยระบบจดัการหน่วยความจาํจะตอ้งอนุญาตใหต้วัควบคุม สามารถเขา้ถึงพื้นที่หน่วยความจาํที่เป็นส่วนที่ใชร้่วมกนัได ้โดยไม่ตอ้งใชว้ธิีการป้องกนัพื้นที่

11

Memory Management

4. การจดัการแบ่งโปรแกรมย่อย (Logical Organization)

โปรแกรมส่วนใหญ่จะถูกแบ่งออกเป็นโปรแกรมยอ่ยๆ หรือ moduleเพื่อให้สามารถใชง้านหน่วยความจาํไดอ้ย่างมีประสิทธิภาพ โดยมีวิธี คือ จะไม่นาํโปรแกรมยอ่ยลงสู่หน่วยความจาํพร้อมกบัโปรแกรมหลกั แต่จะนาํลงเมื่อมีการเรียกใชง้านเท่านั้น

12

ลดการสิ้นเปลืองพื้นที่ของหน่วยความจาํ โดยโปรแกรมยอ่ยที่ไม่ได้ใชง้าน จะไม่สามารถลงสู่หน่วยความจาํได้ โปรแกรมยอ่ยแต่ละตวัสามารถคอมไพลแ์ยกกนัได้ โปรแกรมยอ่ยแต่ละตวัสามารถมีระดบัการป้องกนัที่แตกต่างกนัได้ โปรแกรมหลกัสามารถเรียกใชโ้ปรแกรมยอ่ย เหล่านี้ร่วมกนัได้

ประโยชน์ของวธิีการจดัการโปรแกรมย่อย

Memory Management

Page 4: 6 Memory Management 2 2552.ppt

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

Page 5: 6 Memory Management 2 2552.ppt

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

เนื่องจากหน่วยความจําหลักมีขนาดจํากัด บางครั้งระบบจําเป็นจะต้องนําบางโปรเซสออกจากหน่วยความจําหลัก เพื่อให้หน่วยความจําหลักมีพื้นที่มากพอที่จะโหลดโปรเซสอื่นเข้ามาประมวลผล

Page 6: 6 Memory Management 2 2552.ppt

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

Page 7: 6 Memory Management 2 2552.ppt

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

Page 8: 6 Memory Management 2 2552.ppt

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

Page 9: 6 Memory Management 2 2552.ppt

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)

Page 10: 6 Memory Management 2 2552.ppt

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

Page 11: 6 Memory Management 2 2552.ppt

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

Page 12: 6 Memory Management 2 2552.ppt

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

Page 13: 6 Memory Management 2 2552.ppt

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

Page 14: 6 Memory Management 2 2552.ppt

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

Page 15: 6 Memory Management 2 2552.ppt

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

Page 16: 6 Memory Management 2 2552.ppt

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

Page 17: 6 Memory Management 2 2552.ppt

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

Page 18: 6 Memory Management 2 2552.ppt

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 ?