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

Quản lý bộ nhớ

51 861 8
Tài liệu được quét OCR, nội dung có thể không chính xác
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

Tiêu đề Quản Lý Bộ Nhớ
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài luận
Định dạng
Số trang 51
Dung lượng 538,2 KB

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

Nội dung

HỆ ĐIỀU HÀNH Quản lý bộ nhớ

Trang 1

HE DIEU HAHH

Quản lý bộ nhớ

Trang 2

— Co ché phan trang (paging)

— Co ché phan doan (segmentation)

Trang 3

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

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

+> Tdi ưu hóa số tiễn trình cùng lúc ở trong bộ nhớ chính > nang

cao tính đa chương

> Tan dung tôi đa bộ nhớ của máy tính

Trang 4

-9.3-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 (chi thị máy) + dữ liệu

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

MOV AX, tệ MOV BX, 20:

ADD AX, AX, BX 12

Trang 5

— Các trình biên dịch (compiler) tạo ra mã lệnh chương trình mà trong

đó mọi tham chiếu bộ nhớ đều là địa chỉ luận lý

a Pia chi tuong déi (relative address) la mét kiểu địa chỉ luận lý

trong đó các dia chi đượ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)

na 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

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

na Bộ linker: kết hợp các object module thành một file nhị phân khả

thuc thi goi la /oad module

na Bộ loader: nạp load module vào bộ nhớ chính

Object

module 1

system Library

Trang 7

L+M-1 L+M \L+M+N-1

Trang 8

-9./-Chuyển đổi địa chỉ nhớ

na 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

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

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

— Thời điểm Ø/ên đích: là địa chỉ khả tái định vị (relocatable address),

hay là địa chỉ tương đối (relative address)

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

— Thời điểm /íng⁄oading: là địa chỉ tuyệt đối Ví dụ: dữ liệu nằm tại

địa chỉ bộ nhớ thực: 2030

Trang 9

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

Q Đị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 gan

địa chỉ vật lý lúc biên dịch

“Ví dụ: chương trình COM của MS-DOS, phát biểu assemply

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

— Load tíne: 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

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

at

— Execution time: qua trình chuyển đổi

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

(run time)

"Trong quá trình thực thi, process có thể được di chuyển từ segmentnày sọ sang segment khac trong bộ nhớ

= CPU tao ra cac dia chi tudng doi JMP 400

segmentation

Relative (relocatable) addresses

Trang 11

-9.10-Dynamic linking

a Quá trình link một số /ođư/e ngoâi (external module) được thực

hiện sau khi đã tạo xong load module (¡.e file có thể thực thi)

— Ví dụ: trong Windows, module ngoai la cac file DLL; con trong Unix,

cac module ngoai la cac file so (Shared library)

Load module chi chtia 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)

— HRun 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é diéu hanh chiu trach nhiém tim cac external module va két

noi vao load module (kiém tra xem external module da nap vao

bộ nhớ chưa)

Trang 12

-9.11-Ưu điểm của dynamic linking

a 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 lại

a Chia sé ma (code sharing): mét external module chi can nap vao

bộ nhớ một lần Các process cần dùng external module nay thi

cùng chia sẻ đoạn mã của external module — tiết kiệm không

gian nhớ và đĩa

a Dynamic linking can sy h6 tro của OS trong việc kiểm tra xem

một thủ tục nào đó có thể được chia sẻ giữa các process hay là

phân mã của riêng một process ( bởi vì chỉ có OS mới có quyền

thực hiện việc kiểm tra này)

Trang 13

-9.12-Dynamic loading

na CØcñẽ: chỉ khi nào được gọi đến thì một thủ tục mới được nạp

vào bộ nhớ chính = tăng độ hiệu dụng của bộ nhớ (memory

utilization) bởi vì các thủ tục ít được dùng sẽ không chiếm chỗ trong bộ nhớ

a Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã chương trình không được sử dụng thường xuyên (ví dụ các thủ tục xử lý lỗi)

a 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

— 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

-9.13-Cơ chế overlay

a Tai mdi 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

na 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 đó

a Co ché nay đượ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ệ

điều hành

Trang 16

-9.15-Cơ chế swapping

na 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 đó,

Drocess có thể được nạp lại vào bộ nhớ để tiếp tục

quá trình thực thị

— Round-robin: swap-out A, swap-in B, thuc 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

chô cho process có độ ưu tiên cao hơn được nạp vào bộ

Trang 17

-9.16-Minh họa cơ chế swapping

Trang 18

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

na 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

ña 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)

a 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)

— Phan chia dong (dynamic partitioning)

— Phân trang don gian (simple paging)

— Phan doan don gian (simple segmentation)

Trang 19

-9.18-Phan manh (fragmentation)

a Phan manh ngoai (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

tục — phai dung co ché két Ahd/ (compaction)

Q Phan manh 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 cau 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

OS sé cap phat han kh6i 18.464 bytes cho yêu cầu

cua process => du ra 2 bytes khéng dung!

Trang 21

-9.20-Fixed partitioning

Chia b6 nhé chinh thanh 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

partition thi cé thé nap vao

partition do

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

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

Operating System 8M

Trang 22

-9.21-Chiến lược placement

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

— Con mot partition trong => process System

— Khong con partition trống nhưng ÄL TT] >

trong đó có process đang bị blocke -LIIITTTI>

=> swap process do ra bo nho phu soo nhuGng cho cho process mdi

Q Partition co kich thudc khong bang New ——

Processes

nhau

— Gan mdi process vao partition nhd

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

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

Trang 23

-9.22-Chiến lược placement (tt)

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

bang nhau System

— Chỉ có một hàng đợi chung cho các partition

— Khi cân nạp một process vào

Trang 25

-9.24-Chiến lược placement

compaction (time consuming) Last 18K >

a Cac chién lugc placement block (14K)

— Best-fit chon khdi nhé trong ek sk

Trang 26

-9.25-Phân trang (paging)

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

anh xa dia chi ao, 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

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

khắc phục được phân mảnh ngoại

Trang 27

-9.26-Cơ chế phân trang

Process A page table Process C

Trang 28

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

na Đị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

trang Mỗi mục trong bảng phân trang chứa địa chỉ cơ sở (hay chỉ số frame) của trang tương ứng trong bộ nhớ thực

— Page offsef (đ) - được kết hợp với địa chỉ cơ sở (base address)

để định vị một địa chỉ thực

na 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

page number page offset

Trang 29

-9.28-Paging hardware

logical

address

f (/-n bits) d (n bits)

Trang 30

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

16-bit logical address

16-bit physical address

Trang 31

-9.30-Hiện thực bang phan trang

na 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ớ)

— 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)

hoac trans/ation look-aside buffers (TLBs)

Trang 32

-9.31-Associative register (hardware)

a Thanh ghi két hop (associative register): nd tro tim kiếm truy xuất dữ

liệu đông thời với tốc độ cực nhanh

bang phan trang

Khi TLB bị đầy, thay

thế bằng LRU

Anh xa dia chi ao (A’, A”)

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

~ 10% thdi gian tìm kiếm

Ngược lại (miss), phải tìm chỉ số frame từ bảng phân trang như bình thường

Trang 33

vv

Trang 34

-9.33-Bảo vệ bộ nhớ

na Việc bảo vệ bộ nhớ được hiện thực bằng cách gắn với frame các Ø/⁄

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

a Ngoai ra, con c6 mét valid-invalid bit gan véi mdi muc trong bang

phan 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ệ

— “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

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

page 7 7 |QO] 1 9 | pages

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

% Process có kích thước 10,468bytes = phan mảnh nội ở page 5

= cac dia chi > 12287 la cac dia chi invalid

% Dung PTLR dé kiém tra kich thudc bang phan trang

Trang 36

-9.35-Hierarchical page table

Một giải pháp được đặt ra là chia thành nhiều bảng phân trang quản

lý các vùng không gian bộ nhớ ảo khác nhau — bang đa mức

(multilevel paging table)

Cơ chế tạo bảng phân trang 2-mức (two-level page table), hay còn được gọi là forward-mapped page table trong hệ thống Intel

Pentium®-I

Trang 37

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

O

929

page table

memory

Trang 38

-98.3/-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

= Néu mdi muc 4 byte page # offset

— Page offset: 12 bit

— 10-bit page number page number _ page offset

Vì vậy, một địa luận lý sẽ biểu diễn như hình vẽ

— p;: chỉ mục của bảng ngoai (outer page table)-muc 1

— p›: độ dời (displacement) ở trong trang mức 2 (xác định bởi *p;)

Trang 39

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

na 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ỉ

logical address

Pf

page of page table

Trang 40

-9.39-Phan trang da muc (multilevel)

na 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 =

23 (294/212 = 25“) — quá lớn Thực hiện tương tự mô hình 2 mức,

- Hệ thống SPARC 32-bit hỗ trợ cơ chế 3-mức còn các hệ thống

Motorolla 68030 32 bit hô trợ cơ chê 4-mức Hệ thông 64bit

UltraSPARC thì dùng bang phân trang 7-mức

— Hiệu suất của hệ thống phân trang đa mức?

Trang 41

-9.40-Bang bam (hashed page table)

a 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ỉ

a Để 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

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

— Chỉ số trang ảo được biến đổi qua hàm băm thanh mot 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

na 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

Ngày đăng: 12/09/2012, 14:38

HÌNH ẢNH LIÊN QUAN

Bảng  phân  trang  2  mức,  32-bit  địa  chỉ - Quản lý bộ nhớ
ng phân trang 2 mức, 32-bit địa chỉ (Trang 39)

TỪ KHÓA LIÊN QUAN

w