Bài giảng lập trình hệ điều hành chương 7 main memory - Pdf 35

Khoa Công Nghệ Thông Tin & Truyền Thông
Đại học Cần Thơ
Giảng viên: Hà Duy An


1.Tổng quan
2.Hoán vị (Swapping)
3.Cấp phát bộ nhớ liên tục
4.Phân đoạn (Segmentation)
5.Phân trang (Paging)
6.Cấu trúc bảng trang

10/28/2013

2

Chương 7: Main Memory



• Chương trình phải được mang vào bộ nhớ và được đặt vào một
tiến trình để thực thi.
• Bộ nhớ chính và các thanh ghi là hai thiết bị lưu trữ mà CPU
có thể truy cập trực tiếp
• Đơn vị bộ nhớ (memory unit) chỉ nhìn thấy một luồng địa chỉ
+ yêu cầu đọc, hay địa chỉ + dữ liệu và yêu cầu ghi
• Các thanh ghi có thể được truy cập chỉ với một chu kỳ CPU
(hay ít hơn)
• Truy cập bộ nhớ chính cần nhiều chu kỳ CPU hơn
• Cache nằm ở giữa bộ nhớ chính và các thanh ghi
• Các thao tác trên bộ nhớ cần được đảm bảo chính xác


• Tập hợp các chương trình trên đĩa, sẵn sàng được mang vào bộ
nhớ để thực thi hình thành một hàng đợi nhập (input queue)
o Nếu không có sự hỗ trợ nào, chương trình phải được nạp vào từ
địa chỉ: 0000

• Hầu hết các hệ thống máy tính cho phép các tiến trình có thể
nằm ở bất kỳ phần nào trong bộ nhớ vật lý
• Các địa chỉ ở trong các dạng thức khác nhau tại mỗi giai đoạn
khác nhau của chương trình:
o Các địa chỉ tượng trưng trong chương trình nguồn.
o Các địa chỉ tái định vị khi biên dịch.
o Các địa chỉ tuyệt đối khi nạp (loading) hoặc nối kết (linking).
=> Mỗi giai đoạn, việc gắng kết sẽ ánh xạ từ một không gian địa chỉ này sang một
không gian địa chỉ khác.

10/28/2013

7

Chương 7: Main Memory


• Việc gắn kết địa chỉ (address binding) của các chỉ thị và dữ liệu vào
địa chỉ bộ nhớ có thể diễn ra tại 3 giai đoạn khác nhau:
o Thời điểm biên dịch (compile time): Nếu vị trí vùng nhớ được biết
trước, thì có thể sinh ra mã lệnh tuyệt đối (absolute code); tuy nhiên
chương trình phải được biên dịch lại nếu vị trí bắt đầu của vùng nhớ
thay đổi.
o Thời điểm nạp (load time): trình biên dịch phải sinh ra mã lệnh có thể


• Địa chỉ luận lý và vật lý là như nhau trong sơ đồ gắn kết địa
chỉ tại thời điểm biên dịch và nạp chương trình.
• Địa chỉ luận lý và địa chỉ vật lý sẽ khác nhau trong sơ đồ gắn
kết địa chỉ tại thời điểm thực thi.

10/28/2013

10

Chương 7: Main Memory


• Bộ quản lý bộ nhớ (Memory management Unit – MMU): thiết
bị phần cứng làm nhiệm vụ ánh xạ địa chỉ ảo sang địa chỉ vật
lý => nhiều phương thức có thể được sử dụng
• Một sơ đồ ánh xạ đơn giản là dùng thanh ghi tái định vị
(relocation/base register): giá trị của thanh ghi tái định vị được
cộng vào bất cứ địa chỉ nào sinh ra bởi tiến trình người dùng
vào thời điểm nó được gửi đến bộ nhớ
o MS-DOS trên Intel 80x86 sử dụng 4 thanh ghi tái định vị

• Chương trình người dùng thực thi với các địa chỉ luận lý; nó
không bao giờ thấy được địa chỉ vật lý thật sự

10/28/2013

11

Chương 7: Main Memory

o HĐH có thể hỗ trợ bằng cách cung cấp các thư viện để cài đặt nạp động

10/28/2013

13

Chương 7: Main Memory


• Liên kết tĩnh (static linking): các thư viện hệ thống và mã chương
trình được kết hợp với nhau bởi bộ nạp (loader) thành một chương
trình nhị phân có thể thực thi (executable image).
• Liên kết động (dynamic linking): việc liên kết bị hoãn lại đến tận
thời điểm thực thi.
• Một đoạn mã lệnh nhỏ, stub, được sử dụng để định vị thường trình
thư viện thường trú (memory-resident library routine) tương ứng
hay cách thức nạp thư viện cần thiết vào nếu thường trình cần tham
chiếu chưa được nạp vào bộ nhớ.
• Stub thay thế chính nó bằng địa chỉ của thường trình và thực thi
thường trình đó
• Hệ điều hành cần phải kiểm tra thường trình có nằm trong không
gian địa chỉ của các tiến trình hay không.


o Nếu không, thêm nó vào
Liên kết động hữu ích đặc biệt cho các thư viện chia sẻ (shared libraries).

10/28/2013

14


Chương 7: Main Memory


• Phần chính của thời gian hoán vị là thời gian chuyển dữ liệu; tổng
thời gian chuyển dữ liệu tỷ lệ thuận với lượng bộ nhớ được hoán vị.
o Giảm kích thước dữ liệu cần hoán vị – nếu biết chính xác dung lượng
bộ nhớ thật sự cần dùng

• Các ràng buộc khác:
o Có cần hoán vị tiến trình vào chính xác vùng nhớ trước đó hay không?
o Khi tiến trình đang thực hiện tao tác I/O

• Phiên bản chuẩn của hoán vị không được dùng trong HĐH hiện đại.
Tuy nhiên, các phiên bản cải tiến của kỹ thuật này được dùng trong
nhiểu hệ thống (như: Unix, Linux, và Windows):
o Hoán vị thông thường được vô hiệu hóa
o Chỉ bắt đầu khi số lượng bộ nhớ đã cấp phát lớn hơn một ngưỡng nào
đó
10/28/2013

17

Chương 7: Main Memory


18
10/28/2013

Chương 7: Main Memory

Chương 7: Main Memory




Cấp phát đa phân khu:
o Mức độ đa chương được xác định bởi số lượng phân khu
o Kích thước phân khu thay đổi tùy thuộc vào nhu cầu của tiến trình
o Lỗ hổng (hole): các lỗ hổng với kích thước khác nhau nằm rải rác trong bộ nhớ.
o Khi một tiến trình xuất hiện, nó được cấp cho lỗ hổng đủ chứa nó.
o Khi tiến trình kết thúc vùng nhớ tương ứng được giải phóng, và được kết hợp với lỗ
hổng lân cận (nếu có)
o Hệ điều hành duy trì thông tin về:
a) Những phân khu đã được cấp
b) Các lỗ hổng
OS

OS

OS

OS

process 5

process 5

process 5

process 5

First-fit và best-fit, tuy nhiên first-fit nhìn chung nhanh hơn.

10/28/2013

22

Chương 7: Main Memory


• Phân mảnh ngoài: tổng không gian bộ nhớ còn đủ để thỏa
mãn yêu cầu nhưng chúng không nằm liền nhau.
• Phân mảnh trong: phần bộ nhớ cấp cho tiến trình lớn hơn bộ
nhớ yêu cầu một ít. Phần sai khác này nằm bên trong của phân
khu và không được sử dụng.
• Khử phân mảnh ngoài bằng cách cô đặc bộ nhớ
o Sắp xếp lại nội dung bộ nhớ để gom các lỗ hổng lại thành một lỗ
hổng duy nhất lớn hơn.
o Sự khử phân mảnh chỉ có thể làm được khi việc tái định vị là
động

• Cách tiếp cận khác để khử phân mảnh ngoài là cho phép vùng
nhớ của tiến trình nằm không liên tục trong bộ nhớ => cấp
phát không liên tục.
10/28/2013

23

Chương 7: Main Memory



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status