1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản lý bộ nhớ

51 408 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 51
Dung lượng 538,2 KB

Nội dung

– Các trình biên dịch compiler tao ra mã lệnh chương trình mà trong ị p ï ä g g đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý  Địa chỉ tương đối ị g relative address là một kiểu địa

Trang 1

HỆ ĐIỀU HÀHH

Quản lý bộ nhớ

Trang 2

Quản lý bộ nhớ

 Các kiểu địa chỉ nhớ

 Chuyển đổi địa chỉ nhớ

 Overlay và swapping

 Mô hình quản lý bộ nhớ đơn giản

– Fixed partitioning

– Dynamic partitioning

Cơ chế phân trang (paging)

– Cơ che phan trang (paging)

– Cơ chế phân đoạn (segmentation)

Trang 3

Vì sao phải quản lý bộ nhớ

 Một chương trình muốn chạy thì phải được nạp vào

 Quản lý bộ nhớ giúp tối ưu hóa hoạt động của bộ nhớ

 Tối ưu hóa số tiến trình cùng lúc ở trong bộ nhớ chính  nâng cao tính đa chươngg

 Tận dụng tối đa bộ nhớ của máy tính

Trang 4

Bộ nhớ

 Là một dãy các ô nhớ liên tục nhau

 Mỗi ô nhớ (một word) có một địa chỉ

 Chương trình = tập các câu lệnh (chỉ thị máy) + dữ liệug ập ệ ( ị y) ệ

 Nạp chương trình vào bộ nhớ  đặt các chỉ thị và dữ liệu vào các ô nhớ  xác định ánh xạ giữa các chỉ thị, dữ liệu vào địa chỉ trong bộ nhớ

0

4 MOV AX, 10

8

12

MOV BX, 20 ADD AX, AX, BX

16

Trang 5

Các kiểu địa chỉ nhớ

 Địa chỉ vật lý (physical address) (địa chỉ thực, địa chỉ tuyệt đối) là một vị trí thực trong bộ nhớ chính

 Địa chỉ luận lý (logical address) là một vị trí nhớ độc lập với cấu trúc, tổ chức vật lý của bộ nhớ

– Các trình biên dịch (compiler) tao ra mã lệnh chương trình mà trong ị ( p ) ï ä g g đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý

 Địa chỉ tương đối ị g (relative address) là một kiểu địa chỉ luận lý ( ) ä ị ä y

trong đó các địa chỉ được biểu diễn tương đối so với một điểm xác định nào đó trong chương trình (ví dụ: 12 byte so với điểm bắt đầu chương trình)

 Khi một lệnh được thực thi, các tham chiếu đến địa chỉ luận lý phải được chuyển đổi thành địa chỉ thực Thao tác chuyển đổi

này thường có sự hỗ trợ của phần cứng để đạt hiệu suất cao

Trang 6

Nạp chương trình vào bộ nhớ

 Bộ linker: kết hợp các object module thành một file nhị phân khả thực thi gọi là load module.

 Bộ loader: nap load module vào bộ nhớ chính

 Bộ loader: nạp load module vao bộ nhơ chính

System Library y static linking

Trang 7

Cơ chế thực hiện linking

Module A

CALL B L th L

0 Module A

JMP “L”

Relocatable object modules

L+M-1 L+M M-1

0

Return

Length N

Return L+M+N-1

N-1

N 1

Trang 8

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

 Chuyển đổi địa chỉ là quá trình ánh xạ một địa chỉ từ không gian địa chỉ này sang không gian địa chỉ khác

 Biểu diễn địa chỉ nhớ

 Bieu dien địa chỉ nhơ

– Trong source code: symbolic (các biến, hằng, pointer, )

– Thời điểm biên dịch: là địa chỉ khả tái định vị (relocatable address), hay là địa chỉ tương đối (relative address) y ị g ( )

 Ví dụ: a ở vị trí 14 bytes so với phần header của module.

– Thời điểm linking/loading: là địa chỉ tuyệt đối Ví dụ: dữ liệu nằm tại địa chỉ bộ nhớ thực: 2030

Trang 9

Chuyển đổi địa chỉ

 Địa chỉ của lệnh (instruction) và dữ liệu (data) được chuyển đổi thành địa chỉ vật lý, việc này có thể xảy ra tại ba thời điểm khác nhau

– Compile time: nếu biết trước địa chỉ bộ nhớ thì có thể kết gán địa chỉ vật lý lúc biên dịch

 Ví du: chương trình COM của MS DOS phát biểu assemply

 Ví dụ: chương trình COM cua MS-DOS, phat bieu assemply

 Khuyết điểm: phải biên dịch lại nếu thay đổi địa chỉ

– Load time: tại thời điểm biên dịch, nếu không biết địa chỉ thực thì vào thời điểm loading, phải chuyển đổi địa chỉ khả tái định

vị (relocatable) theo một địa chỉ nền (base address).ị ( ) ä ị ( )

 Địa chỉ thực được tính toán lại vào thời điểm chương trình thực thi

 phải tiến hành reload nếu địa chỉ base thay đổi.

Trang 10

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

– Execution time: quá trình chuyển đổi

được trì hoãn đến thời điểm thực thi

(run time)

Relative (relocatable) addresses

 Trong quá trình thực thi, process có

thể được di chuyển từ segment này

sang segment khác trong bộ nhớ.

 CPU tao ra các địa chỉ tương đối

0

JMP 400

CPU tạo ra cac địa chỉ tương đoi

cho process

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

việc ánh xạ địa chỉ (ví dụ có thanh

hi b ø li it )

JMP 400

LOAD 1200

400

ghi base va limit, )

 Sử dụng trong đa số các OS đa

dụng (general-purpose) trong đó có

các cơ chế swapping, paging, pp g, p g g, 1200

Trang 11

 Load module chỉ chứa các tham chiếu (reference) đến các ( )

external module Các tham chiếu này có thể được chuyển đổi vào hai thời điểm sau:

– Loading time (load-time dynamic linking)

– Run time: khi có một lời gọi đến thủ tục được định nghĩa trong

external module (run-time dynamic linking)

 Hệ điều hành chịu trách nhiệm tìm các external module và kết nối vào load module (kiểm tra xem external module đã nạp vào bộ nhớ chưa)

Trang 12

Ưu điểm của dynamic linking

 Thông thường, external module là một thư viện cung cấp các tiện ích của OS Các chương trình thực thi có thể dùng các phiên bản khác nhau của external module mà không cần sửa đổi, biên dịch g , ịlại

 Chia sẻ mã (code sharing): một external module chỉ cần nap vào

 Chia se ma (code sharing): một external module chỉ can nạp vao bộ nhớ một lần Các process cần dùng external module này thì cùng chia sẻ đoạn mã của external module  tiết kiệm không gian nhớ và đĩa

Trang 13

 Không cần sự hỗ trợ đặc biệt của hệ điều hành

– Thông thường, user chịu trách nhiệm thiết kế và hiện thực các

chương trình có dynamic-loading g y g

– Hệ điều hành chủ yếu cung cấp một số thủ tục thư viện hỗ trợ, tạo điều kiện dễ dàng hơn cho lập trình viên

Trang 14

Cơ chế overlay

 Tại mỗi thời điểm, chỉ giữ lại trong bộ nhớ những lệnh hoặc dữ liệu cần thiết, giải phóng các lệnh/dữ liệu chưa hoặc không cần dùng đến.g

 Cơ chế này rất hữu dụng khi kích thước một process lớn hơn

không gian bộ nhớ cấp cho process đó.g g ä p p

 Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ trơ của các thư viện lập trình) chứ không cần sư hỗ trơ của hệtrợ cua cac thư viện lập trình) chư khong can sự ho trợ cua hệ điều hành

Trang 15

Cô cheá overlay (tt)

Trang 16

Cơ chế swapping

 Một process có thể tạm thời bị swap ra khỏi bộ nhớ

chính và lưu trên một hệ thống lưu trữ phụ Sau đó,

process có thể đươc nap lai vào bộ nhớ để tiếp tuc

process co the được nạp lại vao bộ nhơ đe tiep tục

quá trình thực thi

– Round-robin: swap-out A, swap-in B, thực thi C

– Roll out, roll in – dùng trong cơ chế định thời theo độ ưu tiên (priority-based scheduling)

 Process có độ ưu tiên thấp hơn sẽ bị swap-out nhường ä p ị p gchỗ cho process có độ ưu tiên cao hơn được nạp vào bộ nhớ để thực thi

– Medium-term scheduler

Trang 17

Minh họa cơ chế swapping

Trang 18

Mô hình quản lý bộ nhớ thực

 Trong chương này, mô hình quản lý bộ nhớ là một mô hình đơn giản, không có bộ nhớ ảo

 Một process phải được nạp hoàn toàn vào bộ nhớ thì mới được thực thi (ngoại trừ việc sử dụng cơ chế overlay)

 Các cơ chế quản lý bộ nhớ thực sau đây rất ít (hầu như không còn) được dùng trong các hệ thống hiện đại, tuy nhiên đó là các

ý tưởng cơ sở cho mô hình quản lý bộ nhớ ảo sau này:

– Phân chia cố định (fixed partitioning)

– Phân chia động (dynamic partitioning)

– Phân trang đơn giản (simple paging) Phan trang đơn gian (simple paging)

– Phân đoạn đơn giản (simple segmentation)

Trang 19

Phân mảnh (fragmentation)

 Phân mảnh ngoại (external fragmentation)

– Kích thước không gian bộ nhớ còn trống đủ để thỏa mãn một yêu cầu cấp phát tuy nhiên không gian nhớ này không liên

yeu cau cap phat, tuy nhien khong gian nhơ nay khong lien tục  phải dùng cơ chế kết khối (compaction)

 Phân mảnh nội (internal fragmentation)

– Kích thước vùng nhớ được cấp phát hơi lớn hơn vùng nhớ yêu cầu Ví dụ: cấp một khoảng trống 18.464 bytes cho một

process yêu cầu 18.462 bytes

– Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực

(physical memory) được chia thành các khối kích thước cố

định(fixed-sized block) và các process được cấp phát theo đơn vị khối Ví dụ: cơ chế phân trang (paging)

Trang 20

Phân mảnh nội

operating system

yêu cầu kế tiếp là 18.462 bytes!!!

y (used)

Trang 21

Fixed partitioning

 Chia bộ nhớ chính thành nhiều

phần không trùng lấp gọi là các

partition có kích thước bằng

nhau hoặc khác nhau

 Process nào có kích thước nhỏ

hơn hoặc bằng kích thước ë g

partition thì có thể nạp vào

partition đó

 Nếu chương trình có kích thước g

lớn hơn partition thì phải dùng

cơ chế overlay

 Nhận xét

– Không hiệu quả do bị phân

mảnh nội: một chương trình dù g

lớn hay nhỏ đều chiếm trọn một

Trang 22

Chiến lược placement

 Partition có kích thước bằng nhau

– Còn một partition trống  process

mới được nạp vào partition đó ï ïp p

– Không còn partition trống nhưng

trong đó có process đang bị blocked

 swap process đó ra bộ nhớ phụ

nhường chỗ cho process mới.

 Partition có kích thước không bằng

nhau

– Gán mỗi process vào partition nhỏ

nhất phù hợp với nó

– Có hàng đợi cho mỗi partition

Giảm thiểu phân mảnh nội

– Giam thieu phan manh nội

– Vấn đề: có thể có một số hàng đợi

Trang 23

Chiến lược placement (tt)

 Partition có kích thước không

bằng nhau

– Chỉ có một hàng đơi chung ä g ï g

cho các partition

– Khi cần nạp một process vào

bộ nhớ chính  chọn

i i h û h á ø á partition nhỏ nhất còn trống

Trang 25

Chiến lược placement

 Dùng để quyết định cấp phát

khối bộ nhớ trống nào cho

một process

 Mục tiêu: giảm thiểu chi phí

compaction (time consuming)

 Các chiến lươc placementCac c e ược p ace e

– Best-fit: chọn khối nhớ trống

nhỏ nhất

– First-fit: chọn khối nhớ trống g

phù hợp đầu tiên kể từ đầu

bộ nhớ

– Next-fit: chọn khối nhớ trống

h ø hơ đ à ti â k å từ ị t í

phu hợp đau tien ke tư vị trí

cấp phát cuối cùng

– Worst fit: chọn khối nhớ

trống lớn nhất

trong lơn nhat

Trang 26

Phân trang (paging)

 Cơ chế phân trang cho phép không gian địa chỉ thực (physical address space) của một process có thể không liên tục nhau

 Bộ nhớ thưc đươc chia thành các khối kích thước cố định bằng

 Bộ nhơ thực được chia thanh cac khoi kích thươc co định bang nhau gọi là frame

– Thông thường kích thước của frame là lũy thừa của 2, từ khoảng 512 byte đến 16MB y

 Bộ nhớ luận lý (logical memory) cũng được chia thành khối cùng kích thước gọi là trang nhớ (page)

 Hệ điều hành phải thiết lập một bảng phân trang (page table) để

 Hệ đieu hanh phai thiet lập một bang phan trang (page table) đe ánh xạ địa chỉ ảo, luận lý thành địa chỉ thực

– Mỗi process có một bảng phân trang được quản lý bằng một con trỏ lưu giữ trong PCB Công việc nạp bảng phân trang vào hệ thống (do g g g g g g CPU dispatcher thực hiện) là một phần của chuyển ngữ cảnh

 Cơ chế phân trang khiến bộ nhớ bị phân mảnh nội, tuy nhiên lại

Trang 27

Cô cheá phaân trang

frame number

page 0

page 1

1 0

page 0

number

0 1 page 1

page 2

page 3

4 3 5

1 2

2 3 page 3

logical memory

5 3 page table 4 page 1

5 page 3

Trang 28

Mô hình chuyển đổi địa chỉ

 Địa chỉ nhớ do CPU tạo ra (logical address) gồm có:

– Page number (p) – được dùng làm chỉ mục trong bảng phân

 Nếu kích thước của không gian địa chỉ ảo là 2m, kích

thước của trang là 2n

thươc cua trang la 2n

d

page number page offset

m-n bits n bits

Trang 29

Paging hardware

logical

physical address

Nếu kích thước của không

gian nhớ thực là 2l bytes,

thì mỗi mục của bảng phân

page table

p y memory

trang có l-n bits f (l-n bits) d (n bits)

Trang 30

Chuyển đổi bộ nhớ với paging

Trang 31

Hiện thực bảng phân trang

 Bảng phân trang được lưu giữ trong bộ nhớ chính (kernel memory)

– Mỗi process có một bảng phân trang

– Thanh ghi page-table base (PTBR) trỏ đến bảng phân trang

– Thanh ghi page-table length (PTLR) biểu thi kích thước của bảng

phân trang (và dùng để bảo vệ bộ nhớ)

 Mỗi tác vu truy cập dữ liệu/lệnh cần hai thao tác truy xuất

 Moi tac vụ truy cập dư liệu/lệnh can hai thao tac truy xuat vùng nhớ

– Một thao tác truy xuất bảng phân trang (page number: p) và một thao tác truy xuất dữ liệu/lệnh (page offset: d displacement)

– Thường dùng một bộ phận cache phần cứng có tốc độ truy xuất và tìm kiếm cao, gọi là thanh ghi kết hợp (associative register) hoặc translation look aside buffers (TLBs)

hoặc translation look-aside buffers (TLBs)

Trang 32

Associative register (hardware)

 Thanh ghi kết hợp (associative register): hỗ trợ tìm kiếm truy xuất dữ liệu đồng thời với tốc độ cực nhanh

khoảng 8  2048 TLB là “cache” của

Khi có chuyển ngữ cảnh TLB bị xóa

TLB la cache cua bảng phân trang

canh, TLB bị xoa

Khi TLB bị đầy, thay thế bằng LRU

Ánh xạ địa chỉ ảo (A’, A’’)

–Nếu A’ nằm trong TLB (hit)  lấy ngay được chỉ số frame  tiết kiệm được

Trang 33

Paging hardware với TLB

Trang 34

Bảo vệ bộ nhớ

 Việc bảo vệ bộ nhớ được hiện thực bằng cách gắn với frame các bit bảo vệ (protection bits) Các bit này biểu thị các thuộc tính sau

– read-only, read-write, execute-only

 Ngoài ra, còn có một valid-invalid bit gắn với mỗi muc trong bảng

 Ngoai ra, con co một valid invalid bit gan vơi moi mục trong bang

phân trang

– “valid”: cho biết là trang bộ nhớ tương ứng nằm trong không gian nhớ địa chỉ ảo của process do đó là một trang hơp lệ

chỉ ao cua process, do đo la một trang hợp lệ.

– “invalid”: cho biết là trang bộ nhớ tương ứng không nằm trong không gian nhớ địa chỉ ảo của process, do đó là một trang bất hợp lệ.

Trang 35

Bảo vệ bằng valid-invalid bit

page 0 00000

frame number valid-invalid bit

0

0 1

2 page 0 page 2

page 3

3 v

4 v7

1 2 3

2 page 0

3 page 1

4 page 2 5

10468

page 4

page 5 12287

7 v

8 v

9 v

3 4 5

5 6

7 page 3 page 6

8

0 i

0 i

6 7 page 7

8 page 4

9 page 5

 Mỗi trang nhớ có kích thước 2KB = 2048 bytes

 Process có kích thước 10,468bytes  phân mảnh nội ở page 5

 các địa chỉ > 12287 là các địa chỉ invalid

page n

 cac địa chỉ > 12287 la cac địa chỉ invalid.

 Dùng PTLR để kiểm tra kích thước bảng phân trang

Trang 36

Hierarchical page table

 Các hệ thống hiện đại đều hỗ trợ không gian địa chỉ ảo rất lớn (232

đến 264)

Kích thước trang nhớ là 4KB ( 2 12 )  bảng phân trang sẽ có 2 32 /2 12

– Kích thươc trang nhơ la 4KB (= 2 12 )  bang phan trang se co ~ 2 32 /2 12 =

(multilevel paging table)

 Cơ chế tạo bảng phân trang 2-mức (two-level page table), hay còn

Trang 37

Mô hình bảng 2-mức (two-level)

Trang 38

Phân trang 2-mức

 Một địa chỉ luận lý (trên hệ thống 32-bit với trang nhớ 4KB) được

chia thành các phần sau:

– Page number: 20 bit age u be 0 b t

 Nếu mỗi mục 4 byte

 2 20 * 4 byte = 4 MB – Page offset: 12 bit

20 bit

page # offset

12 bit Page offset: 12 bit

 Bảng phân trang cũng bị chia nhỏ nên page number cũng được chia nhỏ thành 2 phần:

– 10-bit page number

page number page offset

Trang 39

Sơ đồ ánh xạ địa chỉ

 Sơ đồ ánh xạ địa chỉ (address-translation scheme) cho kiến trúc

bảng phân trang 2 mức, 32-bit địa chỉ

A Memory Address: A

Trang 40

Phân trang đa mức (multilevel)

 Không gian địa chỉ luận lý 64-bit với trang nhớ 4KB

– Trong sơ đồ phân trang 2-mức, số mục của bảng phân trang =

252 (264/212 = 252)  quá lớn Thực hiện tương tự mô hình 2 mức,

h â hi th ø h b û 3 4 ứphân chia thành bảng 3, 4, , n-mức

page number page offset

Trang 41

Bảng băm (hashed page table)

 Dùng bảng băm để giảm bớt không gian bảng phân trang, tăng tốc độ tìm kiếm trang

– Rất phổ biến trong các hệ thống lớn hơn 32 bit địa chỉ at p o b e t o g cac ệ t o g ơ ơ 3 b t địa c

 Để giải quyết đụng độ, mỗi entry của bảng phân trang được gán một danh sách liên kết Mỗi phần tử danh sách chứa chỉ số trang ảo

danh sach lien ket Moi phan tư danh sach chưa chỉ so trang ao

(virtual page number) và chỉ số frame tương ứng

– Chỉ số trang ảo được biến đổi qua hàm băm thành một hashed value Các thông tin như chỉ số trang ảo và chỉ số frame sẽ được lưu vào danh sách liên kết tại vị trí ứng với hashed value.

 Giải thuật dò tìm trang:

– Chỉ số trang ảo được biến đổi thành hashed value (với cùng hàm băm như trên) Hashed value được dùng để truy xuất đến entry tương ứng trong bảng phân trang Sau đó, dò tìm trong danh sách liên kết phần tử chứa chỉ số trang ảo để trích rút ra đươc số frame tương ứng

chưa chỉ so trang ao đe trích rut ra được so frame tương ưng.

Ngày đăng: 10/10/2013, 05:20

HÌNH ẢNH LIÊN QUAN

 Mô hình quản lý bộ nhớ đơn giản - Quản lý bộ nhớ
h ình quản lý bộ nhớ đơn giản (Trang 2)
Mô hình chuyển đổi địa chỉ - Quản lý bộ nhớ
h ình chuyển đổi địa chỉ (Trang 28)
 Dùng PTLR để kiểm tra kích thước bảng phân trang - Quản lý bộ nhớ
ng PTLR để kiểm tra kích thước bảng phân trang (Trang 35)
Mô hình bảng 2-mức (two-level) - Quản lý bộ nhớ
h ình bảng 2-mức (two-level) (Trang 37)
– Trong sơ đồ phân trang 2-mức, số mục của bảng phân trang = 252  (264/212= 252)  quá lớn - Quản lý bộ nhớ
rong sơ đồ phân trang 2-mức, số mục của bảng phân trang = 252 (264/212= 252)  quá lớn (Trang 40)
Mô hình cơ chế phân đọan user space  physical memory space - Quản lý bộ nhớ
h ình cơ chế phân đọan user space physical memory space (Trang 46)

TỪ KHÓA LIÊN QUAN

w