1. Trang chủ
  2. » Giáo án - Bài giảng

bài giảng điện tử quản lý bộ nhớ

75 55 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 372,7 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dungg đoạn ình tổ chức bộ nhớ n Tổng quan n Nhu cầu bộ nhớ của tiến trình n Các vấn đề về bộ nhớ n Chuyển đổi địa chỉ n Các côn n Các mô hình chuyển đổi địa chỉ n Vai trò Quản lý bộ

Trang 1

– Qu ản lý bộ nhớ

1

Trang 2

Nội dung

g đoạn

ình tổ chức bộ nhớ

n Tổng quan

n Nhu cầu bộ nhớ của tiến trình

n Các vấn đề về bộ nhớ

n Chuyển đổi địa chỉ

n Các côn

n Các mô hình chuyển đổi địa chỉ

n Vai trò Quản lý bộ nhớ của HĐH

n Các yêu cầu

n Các mô h

n Mô hình Liên tục

n Mô hình Không liên tục

2

Trang 3

át BNC cho tiến trình ?

Tổng quan

HĐH

n Chương trình cần được nạp vào Bộ nhớ chính để thi hành

n CPU chỉ có thể truy xuất trực tiếp Main Memory

n Chương trình khi được nạp vaò BNC sẽ được tổ chức theo cấu trúc của

tiến trình tương ứng

n Ai cấp ph

n Chương trình nguồn sử dụng địa chỉ symbolic n Tiến trình thực thi truy cập điạ

chỉ thực trong BNC n Ai chuyển đổi địa chỉ ?

Bộ phận Quản lý Bộ nhớ

Mô hình tổ chức ? Cơ chế hỗ trợ Chiến lược thực hiện

3

Trang 4

Tổng quan : Các vấn đề về Bộ nhớ

Không khó

n Cấp phát Bộ nhớ :

n Uniprogramming :

n Multiprogramming :

n BNC giới hạn, N tiến trình ?

n Bảo vệ ? Chia sẻ ?

n Tiến t rình thay đổi kích thước ?

thức chuyển đổi ?

n Tiến trình lớn hơn BNC ?

n Chuyển đổi địa chỉ tiến trình

n Thời điểm chuyển đổi địa chỉ ?

n Công

n Phụ thuộc vào Mô hình tổ chức BNC ?

n Cần sự hỗ trợ của phần cứng ?

n Tiến trình thay đổi vị trí trong BNC ?

4

Trang 5

Ví dụ

7100?

n Nếu nachos cần thêm không gian ?

n Nếu nachos có lỗi và thực hiện thao tác ghi vào địa chỉ 0x

n Khi nào gcc biết rằng nó thường trú tại 0x4000?

n Nếu emacs cần nhiều bộ nhớ hơn dung lượng vật lý hiện có?

Môi trường đa nhiệm

5

Trang 6

6

Trang 7

Các bước huyển đổi source

program -> exe

7

Trang 8

} B.C

Trang 9

Thuật ngữ

lý bộ nhớ nhìn thấy

lý tương ứng với các

n Địa chỉ logic – còn gọi là địa chỉ ảo , là tất cả các địa chỉ do

bộ xử lý tạo ra

và thao tác

n Không gian địa chỉ – là tập hợp tất cả các địa chỉ ảo phát sinh bởi một chương trình

n Không gian vật lý – là tập hợp tất cả các địa chỉ vật địa chỉ ảo

Trang 10

n initialized global variables (0 / NULL)

n uninitialized global variables

n heap

n dynamic memo

n e.g., allocated using malloc

n grows against higher addresses

n variables in a function

n grows against lower addresses

8048317: mov 0xc(%ebp),%eax 804831a: add 0x8(%ebp),%eax 804831d: pop %ebp 804831e: ret

804833e: movl $0x4,(%esp,1)

n stored register states (e.g calling funct8i0o4n83E45I:P) call 8048314 <add>

804834a: mov %eax,0xfffffffc(%ebp) 804834d: leave

code segment system data segment (PCB)

Trang 11

Logical and Physical Address Spaces

Trang 12

Truy xuất bộ nhớ

các địa chỉ thực trong b

trước khi thi hành code

n Address binding: ánh xạ địa chỉ từ không gian địa chỉ (KGĐC) này vào KGĐC khác

n Thời điểm thực hiện address binding ?

n compile ti

n load time

n execution time.

Trang 13

tái nạp khi vị trí bắt đầu tha

n Có thể thực hiện việc kết buộc địa chỉ tại 1 trong 3

thời điểm :

§ Compile-time:

§ Phát sinh địa chỉ tuyệt đối

§ Phải biết trước vị trí nạp chương trình

§ Phải biên dịch lại chương trình khi vị trí nạp thay đổi

§ Load-time:

§ Khi biên dịch chỉ phát sinh địa chỉ tương đối

§ Khi nạp, biết vị trí bắt đầu sẽ tính lại địa chỉ tuyệt đối

§ Phải y đổi

§ Execution-time:

§ Khi biên dịch,nạp chỉ phát sinh địa chỉ tuong đối

§ Trì hoãn thời điểm kêt buộc địa chỉ tuyệt đối đến khi thi hành

§ Khi đó ai tính toán địa chỉ tuyệt đối ?

Thời điểm kết buộc địa chỉ ?

CuuDuongTh a§nCong cPomhần cứng : MMU https://fb.com/tailieudientucntt

Trang 14

Chuyển đổi địa chỉ

gcc

virtual address

Phy

sical ress

MMU

Trang 15

CPU, MMU and Memory

Trang 16

Yêu cầu quản lý bộ nhớ

Organization

n Tăng hiệu suất sử dụng CPU

n Cần hỗ trợ Multiprogramming

n Lưu trữ cùng lúc nhiều tiến trình trong BNC ?

n Các yêu cầu khi tổ chức lưu trữ tiến trình:

Trang 18

iểm biên dịch hay na

n Không cho phép tiến trình truy cập đến các vị trí nhớ đã cấp cho tiến trình khác (khi chưa có phép).

n Không thể thực hiện việc kiểm tra hợp lệ tại thời đ ïp, vì

chương trình có thể được tái định vị.

n Thực hiện kiểm tra tại thời điểm thi hành

n Cần sự hỗ trợ của phần cứng

Bảo vệ (Protection)

Trang 19

n Cần cho phép nhiều tiến trình tham chiếu đến cùng một vùng nhớ mà không tổn hại đến tính an toàn hệ thống :

n Tiết kiệm chỗ lưu trữ cho các module dùng chung

n Cho phép các tiến trình cộng tác có khả năng chia sẻ dữ liệu

Chia sẻ (Sharing)

Trang 20

dules : read-only hay rea

hình logic của chuơng

n Người dùng viết chương trình gồm nhiều module, với các yêu cầu bảo vệ cho từng module có thể khác nhau:

n instruction modules : execute-only

n một số module là private, số khác có thể là public

n OS cần hỗ trợ các cơ chế có thể phản ánh mô trình

Tổ chức logic (Logical Organization)

Trang 21

Tổ chức vật lý (Physical Organization)

n Cấp phát vùng nhớ vật lý sao cho hiệu quả

n Và dễ dàng chuyển đổi chương trình qua lại giữa BNChính và BNPhụ

Trang 22

Các mô hình tổ chức bộ nhớ

Không liên tục (No

n Cấp phát Liên tục (Contigous Allocation)

n Linker – Loader

n Base & Bound

n Cấp phát n Contigous Allocation)

n Segmentation

n Paging

Trang 23

Cấp phát Liên tục (Contigous Allocation)

trình

n Nguyên tắc :

n Chương trình được nạp toàn thể vào BNC để thi hành

n Cần một vùng nhớ liên tục, đủ lớn để chứa Chương

n Không gian địa chỉ : liên tục

n Không gian vật lý : có thể tổ chức

Trang 24

Fixed Partitioning

n Phân chia KGVL thành các partitions

n Có 2 cách phân chia partitions :

n kích thước bằng nhau

n kích thước khác nhau

n Mỗi tiến trình sẽ được nạp vào

một partition để thi hành

n Chiến lược cấp phát partition ?

Trang 25

Chiến lược cấp phát partitions cho tiến trình

g nhau :

n Kích thước partition bằng nhau

n không có gì phải suy nghĩ !

n Kích thước partition không bằn

n Sử dụng nhiều hàng đợi

n Cấp cho tiến trình partition với kích thước bé nhất (đủ lớn để chứ

a tiên trình)

n Khuyết điểm : phân bố các tiến trình vào các partition không đều, một số tiến trình

Cuu Dpuo nhgT haan Cû iong đco mợi trong khi có

https://fb.com/tailieudientucntt

Trang 26

Chiến lược cấp phát partitions cho tiến trình

để chứa tiên

n Kích thước partition không bằng

nhau :

n Sử dụng 1 hàng đợi

n Cấp cho tiến trình partition tự

do với kích thước bé nhất (đủ lớn

trình)

n Cần dùng một CTDL để theo dõi các partition tự do

Trang 27

Nhận xét Fixed Partitioning

P1 (2M)

P2 (4M)

n Sử dụng BN không hiệu quả

n Mức độ đa chương của hệ thống (Số tiến trình được nạp) bị giới hạn bởi số partitions

3M

internal frag

8M

internal frag

Trang 28

Dynamic Partitioning

n BNC không được phân chia trước

n Các partition có kích thước tùy

ý, sẽ hình

ác tiến trình vào

ước yêu cầu

thành trong quá trình nạp c

Trang 29

Dynamic Partitioning:

ó nhiều partition tự do đủ lớn

n Tiến trình vào sau không lấp đầy chỗ trống tiến trình trước để lại

n external fragmentation

tình huống

P1 (2M)P2 (4M)

P3 (8M)

2M

n Chọn lựa partition để cấp phát cho tiến trình ?

n Dynamic Allocation problem

P4 (1.5M)

?

external fragment ation

29

Trang 30

Ví duï Dynamic Partitioning

Trang 31

Ví duï Dynamic Partitioning

Trang 32

Giải quyết vấn đề Dynamic Allocation

n Các chiến lược thông dụng để chọn partition:

n First-fit : chọn partition tự do đầu tiên

n Worst-fit : chọn partition tự do lớn nhất đủ chứa tiến

P1

8MP3 (1M)

P21.5M

First Fit

Best Fit

Trang 33

Memory Compaction (Garbage Collection)

n Giải quyết vấn đề External Fragmentation :

n Dồn các vùng bị phân mảnh lại với nhau để tạo thành partition liên tục đủ lớn để sử dụng

n Chi phí thực hiện cao

Trang 34

Các mô hình chuyển đổi địa chỉ

Trang 35

Mô hình Linker-Loader

của tiến trình trong

n Tại thời điểm Link, giữ lại các địa chỉ logic

n Vị trí base bộ nhớ xác định được vào thời điểm nạp :

địa chỉ physic = địa chỉ logic + base

Trang 36

Nhận xét mô hình Linker-Loader

n Không cần sự hỗ trợ phần cứng để chuyển đổi địa chỉ

n Bảo vệ ?

n Dời chuyển sau khi nạp ?

§ Không hỗ trợ tái định vị

§ Phải nạ p lại !

Trang 37

Mô hình Base & Bound

n Tại thời điểm Link, giữ lại các địa chỉ logic

n Vị trí base , bound được ghi nhận vào 2 thanh ghi:

n Kết buộc địa chỉ vào thời điểm thi hành => tái định vị được :

địa chỉ physic = địa chỉ logic + base register

n Bảo vệ : địa chỉ hợp lệ [base, bound]

Trang 38

Nhận xét mô hình Base & Bound

CPU

n Kết buộc địa chỉ tại thời điểm thi hành => cần

hỗ trợ của phần cứng

logical addrs

Trang 39

Khuyết điểm của cấp phát liên tục

n Không có vùng nhớ liên tục đủ lớn để nạp tiến trình ?

n Bó tay

n Sử dụng BNC không hiệu qua”!

1MP1

8MP3 (9M)

P21M

?

Trang 40

Các mô hình tổ chức bộ nhớ

n Cấp phát Liên tục (Contigous Allocation)

n Linker – Loader

n Base & Bound

n Cấp phát n Contigous Allocation)

n Segmentation

n Paging

Trang 41

Các mô hình cấp phát không liên tục

n Không gian vật lý : có thể tổ chức

n Fixed partition : Paging

n Variable partition : Segmentation

Trang 42

Segmentation

ys

å chức thành dynamic partitio

n Lập trình viên : chương trình là một tập các segments

n Một segment là một đơn vị chương trình gồm các đối tượng có cùng nhóm ngữ

n partition nào ? Dynamic Allocation !

C n uuD uCong TahùncCon gs.c oemgment của cùng 1 chương httt prs:/ /ìf bn.co mh/taili ecud ioen tùuc nttthể được

Trang 43

data (m)

Trang 44

Chuyển đổi địa chỉ trong mô hình Segmentation

fault

0 1 2

Trang 45

Logical-to-Physical Address Translation in segmentation

Trang 46

Nhận xét Mô hình Segmentation

a “mức module” ?

n Cấp phát không liên tục => tận dụng bộ nhớ hiệu quả

n Hỗ trợ tái định vị

n Từng Segment

n Hỗ trợ Bảo vệ và Chia sẻ được ở mức module

n Ý nghĩa củ

L Chuyển đổi địa chỉ phức tạp

J Đã có MMU

L Sử dụng dynamic partition : chịu đựng

Trang 47

Sharing of

Segments Text

Edito

: r

47

Trang 48

nằm trong page

n page size = frame size

n Nạp tiến t

n Mỗi page cần được nạp vào một frame tự do

n Các pages của cùng 1 chương trình có thể được nạp vào những frames không kế cận nhau.

n Tiến trình kích thước N pages -> cần N frame tự do

CuuD uđon geTh aån Cnon g

a.co mï p

https://fb.com/tailieudientucntt

Trang 50

ử của bảng Page Table mô tả

n Chuyển đổi địa chỉ : <p,d> ð <f,d>

n Chuyển đổi địa chỉ vào thời điểm thi hành

n MMU thi hành

n Sử dụng Pa phát BNC, làm cơ sở thực hiện ánh xạ địa chỉ

n Mỗi tiến trình có một Page Table

n Page Table

n Số phần tử của Page Table = Số Page trong KGĐC của chương trình

n Mỗi phần t cho 1 page, và có cấu trúc :

n frame : số hiệu frame trong BNC chứa page

n Lưu trữ Page Table ?

n Cache : không đủ

BNC CuuDuongThanCong.com : Page-table base register (PTBR) , Page-table length https://fb.com/tailieudientucntt

Trang 51

Chuyển đổi địa chỉ trong mô hình

Paging

CPU

KGVL

Physical addr

Logical addr

f

Page table

Trang 52

Logical-to-Physical Address Translation in Paging

Trang 53

Nhận xét Mô hình Paging

o vệ và Chia sẻ ở mứ

n Loại bỏ

n Dynamic Allocation

n External Fragmentation

n “Trong suốt” với LTV

Trang 54

Lưu trữ Page Table

n Giả sử hệ thống sử dụng m bit địa chỉ

n Size of KGĐC = 2m

n Kích thước page

n Trên nguyên tắc tùy ý, thực tế chọn pagesize = 2n

n Tại sao ?

n Số trang tr ong KGĐC: #pages = 2 m / 2n = 2m-n

n Ví dụ : 32-bits địa chỉ, pagesize = 4K

L Mỗi tiến trình lưu 1 Page Table

L Số lượng phần tử quá lớn -> Lưu BNC

L MCu uoD uã iong Tthran Cuoyg.co mxuất địa chỉ sẽ tốn 2 lần trht tups: /y/fb.co mx/t au

Trang 55

Lưu trữ Page Table : Tiết kiệm không

i cần sẽ nạp bảng trang

gian

n Sử dụng bảng trang đa cấp

n Chia bảng trang thành các phần nhỏ, bản thân bảng trang

cũng sẽ được phân trang

n Chỉ lưu thường trực bảng trang cấp 1, sau đó kh cấp nhỏ hơnthích hợp

n Có thể loại bỏ những bảng trang chứa thông tin về miền

địa chỉ không sử dụng

n Sử dụng Bảng trang nghịch đảo

n Mô tả KGVL thay vì mô tả KGĐC -> 1 IPT cho toàn bộ hệ thống

Trang 56

ưu tất cả các

g : lãng phí

n Bảng trang tuyến tính

n Sử dụng page- number làm chỉ

mục đến Page Table

phần tử mô tả tất cả các

trang trong KGĐC

n Những page không sử dụn

n Nạp toàn bộ PT vào BNC : tốn chỗ

0 1 2 3

p

7 8 9 1 0 1 1 1 2 1 3 1 4 1 5

f

5 16

2

9

Trang 57

Bảng trang đa

cấp

0 1

4 5

8 9

12 13 14

0 1 2 3

4 5 6

8 9 10

12 13 14 15

Page Table cấp 1

Page Table cấp 23

Trang 58

Mô hình bảng trang 2 cấp

Trang 59

Ví dụ mô hình bảng trang 2 cấp

h từ đầu mỗi trang :12 b

nMột máy tính sử dụng địa chỉ 32bít với kích thước trang 4Kb.

nĐịa chỉ logic được chia thành 2 phần:

nSố hiệu trang : 20 bits

nVì bảng trang lại được phân trang nên số hiệu trang lại được chia làm 2 phần:

nSố hiệu trang cấp 1

nSố hiệu trang cấp 2

Trang 60

Ví dụ mô hình bảng trang 2 cấp

nVì thế, địa chỉ logic sẽ có dạng như sau:

Trang 61

Bảng trang đa

1 2 3

0 1 2

0 1 2

0 1 2 3

13 14 15

Page Table cấp

32

4 5 6 7

Trang 62

Bảng trang nghịch đảo (Inverted Page

quản lý bộ nhớ để tìm p

Table)

n Sử dụng duy nhất một bảng trang nghịch đảo

cho tất cả các tiến trình

n Mỗi phần tử trong bảng trang nghịch đảo mô tả một frame, có cấu

trúc

n <page> : số hiệu page mà frame đang chứa đựng

n <idp> : id của tiến trình đang được sỡ hữu trang

n Mỗi địa chỉ ảo khi đó là một bộ ba <idp, p, d >

n Khi một tham khảo đến bộ nhớ được phát sinh, một phần địa chỉ ảo

là <idp, p > được đưa đến cho trình hần tử tương

ứng trong bảng trang nghịch đảo, nếu tìm thấy, địa chỉ vật lý <i,d> sẽ

được phát sinh

Trang 63

Kiến trúc bảng trang nghịch đảo

Trang 64

Lưu trữ Page table : Tiết kiệm thời gian

å cải thiện :

phần PT

n Mỗi truy cập BNC cần truy xuất BNC 2 lần

:

n Tra cứu Page Table để chuyển đổi địa chỉ

n Tra cưu bản thân data

n Làm gì đe

n Tìm cách lưu PT trong cache

n Cho phép tìm kiếm nhanh

n PT lớn, cache nhỏ : làm sao lưu đủ ?

n Lưu 1

n Phần nào ?

n Các số hiệu trang mới truy cập gần đây nhất

Trang 65

Translation Lookaside Buffer (TLB)

ớc giới hạn (thường khôn

n đổi địa chỉ, truy xu

n Vùng nhớ Cache trong CPU được sử dụng để lưu tạm thời một

phần của PT được gọi là Translation Lookaside Bufer (TLB)

n Cho phép tìm kiếm tốc độ cao

phần tử)

n Mỗi entry trong TLB chứa một số hiệu page và frame tương

ứng đang chứa page

trước, nếu không tìm thấy số hiệu page cần thiết, mới

truy xuất vào PT để lấy thông tin frame.

Trang 66

Translation Lookaside Buffer

Trang 67

Chuyển đổi địa chỉ với Paging

Trang 68

Sử dụng TBL

Trang 69

Bảo vệ và chia sẻ trong Segmentation

mỗi phần tử trong PT đ

Cho nhiều phần tự tr

các bit bảo vệ

n Mỗi page không nhận thức được ngữ nghĩa của các đối tượng bên trong page, nên bảo vệ chỉ áp dụng cho toàn bộ trang, không phân biệt.

cùng trỏ đến 1 vị trí trong KGVL

n Segmentation : chia sẻ mức module chương trình

n Paging : chia sẻ các trang

Trang 70

Sharing Pages: A Text Editor

Trang 71

Chia sẻ Page 2 = Chia sẻ cả code

Trang 72

Đánh giá các mô hình chuyển đổi địa

tính thời gian truy c

xuất dữ liệu

chỉ

n Giả sử có:

n tm : thời gian truy xuất BNC

n tc : thời gian truy xuất cache

n Công thức ập thực tế (Time Efective Acess) đến một đối tượng trong BNC

n bao gồm thời gian chuyển đổi địa chỉ và thời gian truy

n TEA = (time biding add + time acces memory)

Trang 74

n Giả sử:

n 1 Có lỗi xảy ra thì tốn 8ms để thay trang

n 2 Nếu trang thay đổi nội dung thì tốn 20ms

n Giả sử 70% trang có thay nội dung

n Truy cập bộ nhớ tớn 100ns

n Hỏi tỉ lệ lỗi trang bao nhiêu để đảm bảo EMAT không vượt

quá 200ns

Trang 75

n EAT = (1 – p) x memory access + p (page fault overhead

+ [swap page out ]

+ swap page in

+ restart o

verhead)

Ngày đăng: 25/06/2020, 10:30

TỪ KHÓA LIÊN QUAN