KGDC Quản lý địa chỉ ?

Một phần của tài liệu Hệ điều hành chương 5 đồng bộ hóa tiến trình (Trang 134 - 165)

int m;

main () F1(int x) stack heap

Tổ chức Paging

Điạ chỉ logic : <page-number, offset>

ẹũa chổ physic : <frame-number, offset>

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

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

MMU thi hành

Sử dụng Page Tableđể lưu thông tin cấp phát BNC, làm cơ sở thực hiện ánh xạ địa chỉMỗi tiến trình có một Page Table

Page Table

Số phần tử của Page Table = Số Page trong KGĐC của chương trình Mỗi phần tử của bảng Page Table mô tả cho 1 page, và có cấu trúc :

frame: số hiệuframe trong BNC chứa page Lưu trữ Page Table ?

Cache : không đủ

BNC : Page-table base register (PTBR), Page-table length register (PTLR)

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

CPU

KGVL Physical

Logical addr addr

p d f d

f

Page table

Logical-to-Physical Address Translation in Paging

Nhận xét Mô hình Paging Loại bỏ

Dynamic Allocation

External Fragmentation

“Trong suốt” với LTV

Hỗ trợ Bảo vệ và Chia sẻ ở mức page Internal Fragmentation

Lưu trữ Page Table trong bộ nhớ

Toán choã

Tăng thời gian chuyển đổi địa chỉ

Lưu trữ Page Table

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

Size of KGẹC = 2m

Kích thước page

Trên nguyên tắc tùy ý, thực tế chọn pagesize = 2n Tại sao ?

Soỏ trang trong KGẹC: #pages = 2m / 2n = 2m-n

Vớ duù : 32-bits ủũa chổ, pagesize = 4K

KGẹC = 232-> #pages= 232-212 = 220 = 1.000.000 pages !

#pages = #entry trong PT

Điạ chỉ logic : Page Table

Moói tieỏn trỡnh lửu 1 Page Table

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

(m-n) n

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

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

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

Chỉ lưu thường trực bảng trang cấp 1, sau đó khi cần sẽ nạp bảng trang cấp nhỏ hơn thích hợp...

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

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

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

Bảng trang đa cấp

Bảng trang tuyến tính

Sử dụng page-number làm chỉ mục đến Page Table

Phải lưu tất cả các phần tử mô tả tất cả các trang trong KGẹC

Những page không sử dụng : lãng phí

Nạp toàn bộ PT vào BNC : tốn choã

p d 0 1 2 3 ...

p ...

7 8 9 10 11 12 13 14

f 5 16

2

9

B ảng trang đa cấp

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 0

1 2 3

13 0 1 2 3 4 5 6 7 8 9 10 11 12

12 13 14

Page Table caáp 1

Page Table caáp 2

Page Table caáp 2

Page Table caáp 2

Page Table caáp 2

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

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

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

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

Soỏ hieọu trang : 20 bits.

Offset tính từ đầu mỗi trang :12 bits.

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

Soỏ hieọu trang caỏp 1.

Soỏ hieọu trang caỏp 2.

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

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

page number page offset

pi p2 d

10 10 12

B ảng trang đa cấp 01

2 3 0 1 2 3 0 1 2 3 0 1 2 0

1 2 3

13 0 1 2 3 4 5 6 7 8 9 10 11 12

14 15 16

Page Table caáp 1

Page Table caáp 2

Page Table caáp 2

Page Table caáp 2

Page Table caáp 2 1 2 100

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

Sử dụng duy nhất một bảng trang nghịch đảo cho tất cả các tiến trình

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

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

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

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

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 quản lý bộ nhớ để tìm phầ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

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

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

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

Tra cứu Page Table để chuyển đổi địa chỉ Tra cưu bản thân data

Làm gì để cải thiện :

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

Cho pheùp tìm kieám nhanh

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

Lửu 1 phaàn PT...

Phần nào ?

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

Translation Lookaside Buffer (TLB)

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 Buffer (TLB)

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

Kích thước giới hạn (thường không quá 64 phần tử)

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

Khi chuyển đổi địa chỉ, truy xuất TLB 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 thoâng tin frame.

Translation Lookaside Buffer

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

CPU p d

f d

f d

TLB

Memory virtual address

physical address

p f

f PT

f

Sử dụng TBL

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

Segmentation : mỗi phần tử trong ST được gắn thêm các bit bảo veọ

Mỗi segment có thể được bảo vệ tùy theo ngữ nghĩa của các đối tượng beân trong segment

Paging : mỗi phần tử trong PT được gắn thêm các bit bảo vệ

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.

Chia sẻ: Cho nhiều phần tự trong KGĐC cùng trỏ đến 1 vị trí trong KGVL

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

Sharing Pages: A Text Editor

Sharing Pages: A Text Editor

ed 3 + data 1

ed 3 + data 3

ed 3 + data 2

Chia sẻ Page 2 = Chia sẻ cả code và data !

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

Giả sử có:

tm : thời gian truy xuất BNC

tc : thời gian truy xuất cache

hit-ration : tỉ lệ tìm thấy một số hiệu trangp trong TLB

Công thức tính thời gian truy cập thực tế (Time Effective Acess) đến một đối tượng trong BNC

bao gồm thời gian chuyển đổi địa chỉ và thời gian truy xuất dữ liệu TEA = (time biding add + time acces memory)

Linker-Loader

TEA = tm

(data)

Base + Bound

TEA = (tc+ tc) + tm

(Base & Bound) (data)

Segmentation

TEA = tc + tm

(ST trong cache) (data)

Paging

Không sử dụng TLB :

TEA = tm + tm

(PT trong mem) (data)

Có sử dụng TLB :

TEA = hit-ratio ( tc + tm ) + (1- hit-ratio)( tc + tm + tm )

Bài giảng 7 : Bộ nhớ Ảo

VaÁn đề với Real Memory Ý tưởng Virtual Memory Thực hiện Virtual Memory

Các chiến lược của Virtual Memory

Chiến lược nạp

Chiến lược thay thế trang

Chiến lược cấp phát khung trang

Hiện tượng thrashing

Nguyeân nhaân Giải pháp

Các cấp bộ nhớ

Registers

Cache

Memory

Cho đến nay : Nạp toàn bộ tiến trình vào bộ nhớ rồi thực hiện nó...

Nếu kích thước tiến trình lớn hơn dung lương bộ nhớ chính ?

Giải pháp

Tại một thời điểm chỉ có 1 chỉ thị được thi hành

Tại sao phải nạp tất cả tiến trình vào BNC cùng 1 lúc ?

Ý tưởng

Cho phép nạp và thi hành từng phần tiến trình

Ai điều khiển việc thay đổi các phần được nạp và thi hành ?

Tại một thời điểm chỉ giữ trong BNC các chỉ thị và dữ liệu cần thiết tại thời điểm đó

Các phần khác của tiến trình nằm ở đâu ?

Giải pháp Bộ nhớ ảo (virtual memory)

Registers

Cache

Memory

Virtual Memory

Virtual Memory

Nếu có một Virtual Memory với dung lượng rất rất lớn cho LTV làm việc...

Hoan hoâ !

Ý tưởng

Tách biệt KGĐC và KGVL

LTV : mỗi tiến trình làm việc với KGĐC 2mcủa mình (địa chỉ từ 0 – (2m -1)) HĐH : chịu trách nhiệm nạpcác KGĐCvào một KGVL chung

Giải pháp của HĐH : Nạp từng phần tiến trình Phân chia KGĐC thành các phần ?

Paging/Segmentation

Mở rộng BNC để lưu trữ các phần của tiến trình chưa được nạp

Dùng BNP(disk) để mở rộng BNC

Nhận biết phần nào của KGĐC chưa được nạp ?

Bổ sung bit cờ hiệu để nhận dạng tình trạng của một page/segment là đã được nạp vào BNC hay chưa

Cơ chế chuyển đổi qua lại các phần của tiến trình giữa BNC và BNPSwapping...

Cấu trúc một phần tử trong Page Tables

Virtual Memory với cơ chế phân trang (Paging)

Phân chia KGĐC thành các page

Dùng BNP(disk) để mở rộng BNC, lưu trữ các phần của tiến trình chưa được nạp

Bổ sung bit cờ hiệu trong Page Table để nhận dạng tình trạng một page đã được nạp vào BNC hay chưa .

Lưu trữ KGĐC ở đâu ?

Sử dụng bộ nhớ phụ để lưu trữ tạm thời các trang chưa sử dụng P

RAM

Một phần của tài liệu Hệ điều hành chương 5 đồng bộ hóa tiến trình (Trang 134 - 165)

Tải bản đầy đủ (PDF)

(235 trang)