








Preview text:
lOMoAR cPSD| 61552860 I)
Mục đích của việc phân trang/phân đoạn
- Các tiến trình phải nằm trong bộ nhớ chính (main memory) khi thực hiện
(CPU chỉ có thể làm việc với bộ nhớ chính và các thanh ghi)
- Phần chương trình còn lại chưa đưa vào bộ nhớ được lưu trên bộ nhớ thứ
cấp như đĩa cứng => bộ nhớ ảo (có thể coi như phần mở rộng của bộ nhớ
trong, cho phép lập trình viên không cần lo lắng về giới hạn vật lý bộ nhớ)
- Việc quản lý bằng bộ nhớ ảo giúp lập trình viên có thể chạy được những
chương trình có kích thước lớn hơn kích thước bộ nhớ vật lý, giúp quản lý
bộ nhớ hiệu quả hơn : ví dụ như 1 chương trình có 1 phần để xử lý lỗi, giả
sử trong quá trình thực hiện chương trình không gặp lỗi việc nạp cả phần
xử lý lỗi là tốn thời gian cũng như dung lượng, và mô đun xử lý lỗi cũng
không được thực hiện. Từ đó, người ta nghĩ ra việc phân chia chương trình
thành nhiều phần và lưu một số phần (như mô đun xử lý lỗi kể trên) ở bộ nhớ
ảo cần ít vùng nhớ hơn thực tế.
Các bước thực thi của một chương trình lOMoAR cPSD| 61552860 II)
Địa chỉ vật lý và địa chỉ logic
- Địa chỉ vật lý: địa chỉ được tải vào thanh ghi và bộ nhớ.
- Địa chỉ logic (địa chỉ ảo): địa chỉ do CPU tạo ra trong quá trình làm việc.
CPU và bộ nhớ chính làm việc với nhau thông qua đơn vị quản lý bộ nhớ
MMU – Memory Management Unit (do CPU chỉ hiểu và làm việc với địa chỉ ảo)
- Trong giai đoạn biên dịch và tải, do chưa làm việc với CPU nên liên kết địa
chỉ vật lý và logic là như nhau (tức là hoàn toàn là địa chỉ vật lý).
- Với giai đoạn thực thi, vì CPU không làm việc trực tiếp với địa chỉ vật lý,
CPU sẽ tạo ra địa chỉ ảo (thường là khác so với địa chỉ vật lý), và chương
trình của người dùng cũng chỉ làm việc với địa chỉ logic.
- Không gian địa chỉ logic/vật lý: tập các địa chỉ logic/vật lý
- Đơn vị quản lý bộ nhớ MMU: Là bộ phận phần cứng để ánh xạ địa chỉ ảo
sang địa chỉ vật lý (ví dụ như hình vẽ): III) Nạp chương trình động
- Hàm chỉ được nạp khi được gọi: các hàm lưu trên đĩa dưới dạng cho phép
định vị lại, chương trình chính được nạp vào bộ nhớ chính để thực thi - Ưu điểm: lOMoAR cPSD| 61552860
o Tối ưu việc sử dụng bộ nhớ (so với nạp tĩnh, ngoài ra các
tiến trình có thể chia sẻ cùng 1 thư viện động)
o Có ích trong trường hợp có đoạn mã dài để xử lý 1 số trường
hợp ít khi xảy ra (như việc bắt lỗi)
o Không cần hỗ trợ đặc biệt từ hệ điều hành IV) Quản lý bộ nhớ a. Cấp phát liên tục:
- Mỗi tiến trình được lưu ở một khu vực liên tục trong bộ nhớ
- Các thanh ghi định vị lại giúp bảo vệ các tiến trình không truy cập khu vực
bộ nhớ của nhau, thay đổi về mã và dữ liệu HĐH o Thanh ghi cơ sở: lưu địa
chỉ cơ sở nhỏ nhất o Thanh ghi giới hạn: giới hạn địa chỉ logic o MMU: tự
động ánh xạ các địa chỉ logic
Phần cứng hỗ trợ thanh ghi định vị và thanh ghi giới hạn
- Nhược điểm lớn nhất của kiểu cấp phát liên tục chính là việc tìm một vùng
nhớ liên tục đủ lớn để lưu trữ tiến trình trong trường hợp tiến trình có kích thước quá lớn
b. Cấp phát đa phân vùng:
- Bộ nhớ được chia làm các phân vùng có kích thước cố định
- Khi một phân vùng trống, tiến trình được lựa chọn từ input queue rồi tải vào
phân vùng đó khi kết thúc sẽ giải phóng phân vùng
- Cấp độ đa chương trình phụ thuộc vào số phân vùng của bộ nhớ lOMoAR cPSD| 61552860
c. Cấp phát lưu trữ động: HĐH dùng một bảng để lưu thông tin các vùng bộ nhớ
còn trống/ đang sử dụng
- Các phần trống có kích thước khác nhau - Các cách cấp phát:
o First-fit: cấp phát khu vực trống đầu tiên đủ lớn o Best-fit:
cấp phát khu vực trống nhỏ nhất đủ lớn o Worst-fit: cấp
phát khu vực trống lớn nhất đủ lớn
Trong đó, First-fit và Best-fit nhanh hơn và có mức độ sử dụng bộ nhớ lưu trữ tốt hơn. V) Phân mảnh
- Phân mảnh ngoài: tổng dung lượng bộ nhớ trống thỏa mãn yêu cầu nhưng
không liên tục, không đủ để đặt tiến trình vào
- Phân mảnh trong: trong phương thức đa phân vùng, dung lượng bộ nhớ cấp
phát có thể lớn hơn dung lượng yêu cầu
- Theo thống kê, khi sử dụng First-fit, cứ cấp phát N khu vực thì 0.5N khu vực
khác bị mất do phân mảnh
- Giải pháp khắc phục phân mảnh ngoài o Phương pháp nén: dồn các ô nhớ
sao cho tất cả phần nhớ còn lại là liên tục; chỉ cho phép đối với phương pháp
định vị động xảy ra ở giai đoạn thực thi
o Cho phép địa chỉ logic của các tiến trình không liên tục Phân đoạn Phân trang a. Phân đoạn:
- Quản lý bộ nhớ theo cách nhìn của người dùng, mỗi ctrinh là tập hợp các phân đoạn
- Mỗi phân đoạn là 1 đơn vị logic, ví dụ như ctrinh chính, hàm, thủ tục, biến
địa phương, biến toàn cục, mảng… - Kiến trúc phân đoạn lOMoAR cPSD| 61552860
- Bảng phân đoạn: ánh xạ địa chỉ phân đoạn do người dùng định nghĩa (2
chiều) với địa chỉ vật lý (1 chiều); mỗi hàng bao gồm:
o Cơ sở (base): địa chỉ vật lý bắt đầu của phân đoạn, lưu trong thanh ghi
cơ sở của bảng phân đoạn STBR
o Giới hạn (limit): độ dài phân đoạn, lưu trong thanh ghi độ dài của bảng phân đoạn STLR
- Bit bảo mật: mỗi hàng có những bit bảo mật gồm bit xác nhận (bằng 0 nếu
số thứ tự của phân đoạn có trong bảng phân đoạn) và các bit liên quan đến
quyền đọc, viết, thực thi…
- Vẫn không tránh được phân mảnh ngoài. b. Phân trang
- Bộ nhớ vật lý được chia làm các khối cùng kích cỡ từ 512 bytes đến 16MB (được gọi là frame)
- Bộ nhớ logic được chia thành các khối có cùng kích cỡ (page)
- Sử dụng bảng phân trang để ánh xạ địa chỉ logic và vật lý
- Bộ nhớ lưu trữ phụ cũng được chia thành kích thước tương đương
- Mục đích: tránh phân mảnh ngoài vì bất cứ frame nào còn trống sẽ được phân
cho tiến trình khi có yêu cầu
- Tuy nhiên lại có thể xuất hiện phân mảnh trong khi kích thước tiến trình
không chẵn lần so với kích thước frame ví dụ 3.6 lần thì ta phải cấp 4 frame,
từ đó sẽ tạo ra phân mảnh trong có kích thước 0.4 lần kích thước frame.
Hoạt động của bảng trang lOMoAR cPSD| 61552860
Cơ chế quản lý frame trống - Bảng phân trang:
o Đối với bảng phân trang lớn, bảng phân trang được lưu trong bộ nhớ trong
o Mỗi truy vấn câu lệnh/dữ liệu cần 2 truy vấn bộ nhớ: một cho bảng
phân trang và một cho dữ liệu/ câu lệnh
o Sử dụng Cache hỗ trợ tìm kiếm đặc biệt translation look – aside buffer
(TLB) có kích thước 64 – 1024 hàng lOMoAR cPSD| 61552860
Phần cứng hỗ trợ phân trang với TLB
- Bit bảo mật: bao gồm quyền đọc, ghi, thực thi... và bit xác nhận (bằng 1 nếu
trang có trong không gian địa chỉ logic của tiến trình)
- Trang chia sẻ: Một số tiến trình chia sẻ một bản sao của mã lệnh (các trang dùng chung) lOMoAR cPSD| 61552860
- Cấu trúc phân tầng: Không gian địa chỉ logic có thể được phân thành nhiều
bảng trang thay vì chỉ một bảng
Cấu trúc phân tầng (2 tầng) lOMoAR cPSD| 61552860
Cấu trúc phân tầng: biên dịch địa chỉ
- Cấu trúc băm: thường sử dụng cho hệ máy có không gian địa chỉ > 32bit
- Cấu trúc nghịch đảo: hàng thứ N chứa thông tin frame thứ N trong bộ nhớ
vật lý. Thay vì đưa địa chỉ để tìm thông tin ở bảng, ta đưa chính thông tin vào
để tìm địa chỉ, dùng chính địa chỉ đó để ánh xạ sang địa chỉ vật lý