1. Trang chủ
  2. » Thể loại khác

COMPUTER SYSTEM - Phuong-Giang Nguyen ď Chuong 7 BO NHO

25 112 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 25
Dung lượng 481,96 KB

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

Nội dung

COMPUTER SYSTEM - Phuong-Giang Nguyen ď Chuong 7 BO NHO tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập...

Trang 1

Chapter 7: Bộ Nhớ Thực

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

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

Vấn đề cấp phát bộ nhớ liên tục (c ontiguous memory

allocation)

 Giải pháp fixed partitioning

 Giải pháp dynamic partitioning

2

Quản lý bộ nhớ

 Kernel chiếm một vùng cố định của bộ nhớ, vùng còn lại

dành để cấp phát cho các process

 Cấp phát vùng nhớ cho các process sao cho hệ thốâng

hoạt động hiệu quả

 Vd: Nạp càng nhiều process vào bộ nhớ càng tốt để gia tăng

mức độ multiprogramming

 Quản lý bộ nhớ

 Cấp phát vùng nhớ cho các process

 Bảo vệ: kiểm tra truy xuất bộ nhớ có hợp lệ không

 Chia sẻ: cho phép các process chia sẻ vùng nhớ chung

 Chuyển đổi địa chỉ luận lý sang địa chỉ vật lý

Các kiểu địa chỉ nhớ (1/2)

Địa chỉ vật lý physical (memory) address là địa chỉ

mà CPU, hay MMU (nếu có), gửi đến bộ nhớ chính

Địa chỉ luận lý (logical address) là địa chỉ mà một quá

trình sinh ra

 Các địa chỉ sinh bởi trình biên dịch (compiler) là

tương đốihay khả tái định vị(relocatable): compiler giả thiết

không gian địa chỉ của đơn vị biên dịch(compilation unit) bắt đầu

từ địa chỉ 0

hoặc

tuyệt đối: kết quả biên dịch có thể nạp được ngay vào bộ nhớ để

thực thi; ít được dùng

Trang 2

Các kiểu địa chỉ nhớ (2/2)

 Khi một lệnh được thực thi, các địa chỉ luận lý phải được

chuyển đổi thành địa chỉ vật lý

 Sự chuyển đổi này thường có sự hỗ trợ của phần cứng để đạt

hiệu năng cao

5

Từ mã nguồn đến file thực thi được

 Linker: kết hợp các object module thành một file thực thi được

 tái định vị địa chỉ tương đối và phân giải các external reference

 kết hợp các object module thành một load module(file nhị phân khả thực

thi)

Systemlibrary

System library

static linking

dynamic linking

6

Thực hiện (static) linking

 Linker chuyển đổi địa chỉ tương đối sang địa chỉ tuyệt đối

Return Module B JMP “L+M”

Return Module C

Trang 3

Chuyển đổi địa chỉ

Chuyển đổi địa chỉ: 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ớ

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

 Thời điểm biên dịch: thường là địa chỉ tương đối

Ví dụ: a ở vị trí 14 byte so với vị trí bắt đầu của module

 Thời điểm linking/loading: có thể là địa chỉ tuyệt đối

2224

Process image

Chuẩn bị sinh địa chỉ vật lý (1)

 Vào thời điểm biên dịch

 Compiler sinh địa chỉ tuyệt đối

 Cần thông tin cho biết load module sẽ được nạp ở đâu

 Khôngcần linker

 Loader rất đơn giản

 Hiếm được dùng (MSDOS COM files)

Trang 4

Chuẩn bị sinh địa chỉ vật lý (2)

 Vào thời điểm link-edit

Chuyển đổi địa chỉ relocatable sang địa chỉ tuyệt đối

Phân giải các tham chiếu đến địa chỉ ngoài

Cần thông tin cho biết linked program sẽ được nạp ở đâu

 Loader vẫn còn rất đơn giản

 Yêu cầu về phần cứng thấp

 Một chương trình chỉ có thể được nạp tại nơi đã được đặc tảvà

khôngthể dịch chuyển sau khi được nạp

 Khôngcòn được dùng nhiều

11

Chuẩn bị sinh địa chỉ vật lý (3)

 Vào thời điểm nạp

 Tương tự thời điểm link-edit, nhưng khônggiữ cố định địa chỉ bắt

đầu

 Chương trình có thể được nạp ở bất cứ đâu

 Chương trình có thể dịch chuyển nhưng khôngtách được

 Chỉ cần phần cứng đơn giản: các thanh ghi base/limit

 Loader thiết lập trị cho các thanh ghi base/limit

 Không còn được dùng phổ biến

12

Sinh địa chỉ vật lý

 Vào thời điểm thực thi

 Địa chỉ được chuyển đổi động trong khi thực thi

 Cần có phần cứng để chuyển đổi địa chỉ ảo sang địa chỉ vật lý

được nhanh

“Phân trang” (“paging”)

“Phân đoạn” (“segmentation”)

 Rất phổ biến hiện nay

Trang 5

Sử dụng vùng nhớ bớt phí phạm

 Các kỹ thuật hỗ trợ sử dụng vùng nhớ bớt phí phạm:

Trong dynamic linking

Việc link một load module L đến một module ngoài

(external module) được thực hiện sau khi đã tạo xong L

 MS Windows: module ngoài là các file dll

 Unix: module ngoài là các file so(shared library)

 Load module chứa các stub tham chiếu (refer) đến các

routine của external module

 Khi process gọi routine lần đầu, stub sẽ nạp routine vào bộ nhớ

(nếu routine chưa được nạp trước đó), thay thế địa chỉ mình bằng

địa chỉ routine, và gọi routine để thực thi

 Các lần gọi routine sau sẽ xảy ra bình thường, không tốn

Trang 6

Fig from M Rosenblum

17

Ưu điểm của dynamic linking

 Chương trình thực thi có thể gọi phiên bản mới (ví dụ

phiên bản đã sửa lỗi) của external module mà không

cần được sửa đổi và/hay biên dịch lại

Chia sẻ mã (code sharing): chỉ cần nạp external module

vào bộ nhớ một lần

 Các process sử dụng dynamic link với external module này chia

sẻ vùng mã của external module  tiết kiệm không gian nhớ và

không gian đĩa

18

Dynamic linking

 Các external module thường là thư viện cung cấp các

tiện ích (như libc)

 Stub cần sự hỗ trợ của OS

 Kiểm tra xem routine đã được nạp vào bộ nhớ chưa

Trang 7

Dynamic loading (1)

 Chỉ khi nào cần được gọi đến thì một thủ tục mới được

nạp vào bộ nhớ chính

 Các thủ tục không được gọi đến sẽ không chiếm chỗ trong bộ

nhớ

 Rất hiệu quả khi chương trình có khối lượng lớn mã có

tần suất sử dụng thấp (ví dụ các thủ tục xử lý lỗi)

 Chính quá trình tự điều khiển dynamic loading

 Hệ điều hành cung cấp một số thủ tục thư viện hỗ trợ

20

Dynamic loading (2)

 Các thủ tục để người dùng thực hiện dynamic loading

trong UNIX:

 dlopen() – Open một file thư viện

 dlsym() – Dò tìm một ký hiệu trong file thư viện

 dlclose() – Close một file thư viện

Dynamic loading – Ví dụ

Trang 8

Kỹ thuật overlay (1/2)

 Chỉ giữ 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

 Kỹ thuật này rất hữu dụng khi kích thước một process

lớn hơn kích thước vùng nhớ cấp cho nó

 Quá trình tự điều khiển việc overlay (có sự hỗ trợ của

80K70K

Đơn vị: byte

nạp và thực thi

24

Swapping

 Cơ chế : di chuyển một process khỏi bộ nhớ chính và lưu

trên bộ nhớ phụ (swap out) Khi thích hợp, nạp process

vào bộ nhớ (swap in) để có thể tiếp tục thực thi

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 vừa đến

Trang 9

Swapping Cơ chế

26

Vấn đề cấp phát bộ nhớ liên tục

 Trong phần còn lại của chương này, mô hình quản lý bộ

nhớ là một mô hình đơn giản [ không dùng “bộ nhớ ảo”]

 Một process phải được nạp hoàn toànvà liên tụcvào bộ nhớ

(ngoại trừ khi dùng kỹ thuật overlay)

 Sẽ thảo luận các giải pháp cấp phát bộ nhớ sau

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

Phân chia động(dynamic partitioning)

Hiện tượng phân mảnh

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

 Vùng nhớ còn trống đủ lớn để thỏa mãn một yêu cầu cấp phát,

nhưng lại không liên tục

 Có thể dùng kết khối(compacting) để gom lại thành vùng nhớ

liên tục

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

 Vùng nhớ được cấp phát lớn hơnvùng nhớ yêu cầu

Ví dụ: cấp một khoảng trống 18.464 byte cho một process yêu cầu

18.462 byte

 Thường xảy ra khi bộ nhớ thực đượ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

Trang 10

Phân mảnh nội

operating system (used)

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

hole kích thước

18.464 byte

Để tránh overhead quản lý chỉ 2 byte , OS

sẽ cấp phát hẳn khối 18.464 byte cho

process  dư ra 2 byte không dùng

29

Fixed partitioning (1)

 Khi khởi động hệ thống ,

bộ nhớ chính được chia

thành nhiều phần cố định

rời nhau, 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 thì có

thể được nạp vào

partition đó

30

Giải pháp fixed partitioning (2)

 Nếu process có kích thước lớn hơn partition thì phải

dùng kỹ thuật overlay

 Không hiệu quả do bị phân mảnh nội: một chương trình

dù lớn hay nhỏ đều được cấp phát trọn một partition

Trang 11

Chiến lược placement khi fixed partitioning (1/3)

 Trường hợp các partition có kích thước bằng nhau

 Nếu còn partition trống  process mới sẽ được nạp vào partition

đó

 Nếu không còn partition trống, nhưng có process đang bị

blocked  swap out process đó ra bộ nhớ phụ, dành partition

cho process mới

32

Chiến lược placement khi fixed partitioning (2/3)

 Trường hợp các partition

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

nhau

 Giải pháp 1

Gán mỗi process vào

partition nhỏ nhất (trống

hay không trống) đủ

chứa nó [best fit]

Có hàng đợi cho mỗi

partition

 Điểm yếu của giải pháp 1:

có thể có một số hàng đợi

trống (vì không có process

với kích thước tương ứng)

và một số hàng đợi dài

Chiến lược placement khi fixed partitioning (3/3)

 Trường hợp các partition

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

nhau

 Giải pháp 2

Khi cần nạp một

process vào bộ nhớ

chính  chọn partition

nhỏ nhất còn trốngvà

đủ chứa nó [best fit]

Chỉ có một hàng đợi

chung cho mọi partition

Trang 12

Giải pháp dynamic partitioning

 Số lượng và vị trí partition không cố định và partition có thể có kích

thước khác nhau

 Mỗi process được cấp phát chính xác dung lượng bộ nhớ cần thiết

 Gây ra hiện tượng phân mảnh ngoại

35

Chiến lược placement khi dynamic partitioning

 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 chi phí

compaction

 Các chiến lược placement

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

nhỏ nhất

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

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

nhớ

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

phù hợp đầu tiên kể từ vị trí

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

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

lớn nhất

36

Nhận xét

 Cả hai giải pháp fixed và dynamic partitioning hầu như

không còn được dùng trong các hệ thống hiện đại

Trang 13

Chapter 7

 Cơ chế phân trang (paging)

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

 Segmentation with paging

38

Cơ chế phân trang (1/3)

 Cơ chế phân trang (paging) cho phép không gian địa chỉ

vật lý (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 cố định và có kích

thước bằng 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 16 MB

 Nhắc lại, bộ nhớ luận lý (logical memory) hay không gian

địa chỉ luận lý là tập mọi địa chỉ luận lý của quá trình

– Địa chỉ luận lý có thể được quá trình sinh ra bằng cách dùng

indexing, base register, segment register,…

Cơ chế phân trang (2/3)

 Bộ nhớ luận lý cũng được chia thành các khối cố định có

cùng kích thước gọi là trang nhớ (page)

 Frame và trang nhớ có kích thước bằng nhau

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

table) để chuyển đổi (translate) địa chỉ luận lý thành địa

chỉ thực

 Mỗi process được cấp phát một bảng phân trang

 Thiết lập bảng phân trang cho process là một phần của chuyển

ngữ cảnh

 Kỹ thuật phân trang khiến bộ nhớ có thể bị phân mảnh

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

Trang 14

Cơ chế phân trang (3/3)

logical memory

1435

0123

0123page 14

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

Địa chỉ luận lý gồm có:

Page number , p, là chỉ mục(index) vào bảng phân trang Mỗi

mục (entry) trong bảng phân trang chứa chỉ số frame, gọi là số

frame cho gọn, chứa trang tương ứng trong bộ nhớ thực

Page offset , d, được kết hợp với địa chỉ nền(base address) của

frame để cho địa chỉ thực

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

thước của trang là 2nô nhớ (byte hay word tùy theo kiến trúc máy)

Bảng phân trang sẽ có tổng cộng 2m/2n= 2m - nmục

42

Paging hardware

Nếu kích thước của bộ nhớ

thực là 2l(byte), thì mỗi mục

của bảng phân trang có l - n

bit để chứa frame number frame number frame offsetf, l - n bit d, n bit

f p

page table

logical

address

physicaladdress

physicalmemory

f 00…00

f 11…11

f frame

Trang 15

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

 Ví dụ:

44

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

 Bảng phân trang được giữ trong bộ nhớ chính

 Mỗi process được cấp 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) chứa kích thước của bảng

phân trang (có thể được dùng trong cơ chế bảo vệ bộ nhớ)

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

 Mỗi truy cập dữ liệu/lệnh cần hai thao tác truy xuất vùng

nhớ

1.Dùng page number p làm index để truy xuất mục trong bảng

phân trang nhằm lấy số frame

2.Dùng page offset d để truy xuất dữ liệu/lệnh trong frame

 Do đó, thường dùng một 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)

 Nguyên lý locality

Trang 16

TLB

 TLB tìm kiếm truy xuất dữ liệu của nó với tốc độ cực

nhanh

Page number Frame number

Số mục của TLB khoảng 8 2048

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

TLB là cachecủa bảng phân trang

Ánh xạ page number

– Nếu page number có trong TLB (“hit”, trúng)  lấy ngay được frame

number  tiết kiệm được việc truy cập bộ nhớ để lấy frame number từ

bảng phân trang

– Ngược lại (“miss”, trật), phải lấy frame number từ bảng phân trang như

Đánh giá hiệu năng của TLB (1/2)

• Tính thời gian truy xuất hiệu dụng (Effective access time, EAT)

 Thời gian tìm kiếm trong TLB: 

 Thời gian một chu kỳ truy xuất bộ nhớ: x

Hit ratio  : tỉ số giữa số lần page number được tìm thấy

(hit) trong TLB và số lần truy xuất khởi nguồn từ CPU

 0    1

 Tính thời gian cần thiết để truy xuất ô nhớ:

 Khi page number có trong TLB (“hit”) + x

 Khi page number không có trong TLB (“miss”)  + x + x

Thời gian truy xuất hiệu dụng

EAT = ( + x) + ( + 2x)(1 – )

= (2 – )x + 

Trang 17

Bảo vệ bộ nhớ

 Việc bảo vệ bộ nhớ được hiện thực bằng cách dùng các

bit bảo vệ (protection bit) được giữ trong mỗi mục của

bảng phân trang Các bit này biểu thị các thuộc tính của

trang như

 read-only, read-write, execute-only

 Ngoài ra, còn có một valid-invalid bit gắn với mỗi mục

trong bảng phân trang; trị của bit có thể là

 “valid”: cho biết là trang của process, do đó là một trang hợp lệ

 “invalid”: cho biết là trang không của process, do đó là một trang

bất hợp lệ

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

valid-invalidbit01234567

01

2 page 0

3 page 1

4 page 256

7 page 3

8 page 4

9 page 5

page n

 Mỗi trang nhớ có kích thước 2K = 2048 ô nhớ

 Process có kích thước 10.468  phân mảnh nội ở frame 9 (chứa page

5), các địa chỉ ảo > 12287 là các địa chỉ invalid

Trang 18

Bảng phân trang 2 mức (1/5)

 Các hệ thống hiện đại đều hỗ trợ không gian địa chỉ ảo

rất lớn (232đến 264), ở đây giả sử là 232

 Giả sử kích thước trang nhớ là 4 K (= 212) ô nhớ

không gian địa chỉ ảo sẽ gồm 232/212 = 220 = 1 M page

bảng phân trang sẽ có 1 M mục

 Giả sử mỗi mục của bảng phân trang gồm 4 byte thì mỗi process

cần 4 MB cho bảng phân trang, và 100 quá trình sẽ cần…

 Một giải pháp là, thay vì dùng một bảng phân trang duy

nhất cho mỗi process, “paging” bảng phân trang này, và

chỉ sinh những bảng phân trang cần thiết  bảng phân

trang 2 mức (two-level page table)

53

Bảng phân trang 2 mức (2/5)

• Ví dụ

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

thành các phần sau:

 Page number: 20 bit

Nếu mỗi mục dài 4 byte

Cần 2204 byte = 4 MB

cho mỗi page table

 Page offset: 12 bit

 Bây giờ, bảng phân trang cũng được chia nhỏ nên page number

cũng được chia nhỏ thành 2 phần, vd

 10-bit page number

 10-bit page offset

 Vì vậy, một địa chỉ luận lý sẽ như hình vẽ bên

• p1 : chỉ số của mục trong bảng phân trang mức 1(outer-page table)

• p2: chỉ số của mục trong bảng phân trang mức 2

page number offset

p2page offset

Bảng phân trang 2 mức (3/5)

cácbảng phân trang mức 2

- Có 2n1mục trong bảng phân

Ngày đăng: 11/12/2017, 18:41

TỪ KHÓA LIÊN QUAN

w