- Đọc/Ghi ngày, tháng, năm
b/ Thay thế cục bộ
4.3.3.2 Cấu trúc chƣơng trình
Số lỗi trang cĩ khi phụ thuộc vào ngơn ngữ lập trình, nên khi lập trình ta cần chú ý để chƣơng trình cĩ thể thực hiện nhanh hơn.
Ví dụ: xét ct sau: int a[128][128]; for (i=0; i<128; i++) for (j=0; j<128; j++)
a[i][j]=0;
Gỉa sử trang cĩ kích thƣớc 128 bytes và tiến trình đƣợc cấp 2 khung trang: khung trang thứ nhất chƣá mã tiến trình, khung trang cịn lại đƣợc khởi động ở trạng thái trống . Trong Pascal, C mảng lƣu theo hàng, mỗi hàng chiếm 1 trang bộ nhớ, nên số lỗi trang phát sinh là 128. Nhƣng trong Fortran mảng lƣu theo cột, do đĩ số lỗi trang sẽ là 128x128=1638.
TĨM TẮT
+ Các vấn đề cần phải giải quyết khi quản lý bộ nhớ là việc chuyển đổi địa chỉ tƣơng đối thành địa chỉ thực, quản lý bộ nhớ đã cấp phát và chƣa cấp phát, các kỹ thuật cấp phát bộ nhớ.
+ Việc chuyển đổi địa chỉ tƣơng đối thành địa chỉ thực cĩ thể xảy ra vào một trong những thời điểm sau: thời điểm biên dịch, thời điểm nạp, thời điểm xử lý.
+ Địa chỉ ảo là địa chỉ do bộ xử lý sinh ra, địa chỉ vật lý là địa chỉ thực trong bộ nhớ. Khi chƣơng trình nạp vào bộ nhớ các địa chỉ tƣơng đối trong chƣơng trình đƣợc CPU chuyển thành địa chỉ ảo, khi thực thi, địa chỉ ảo đƣợc hệ điều hành kết hợp với phần cứng MMU chuyển thành địa chỉ vật lý .
+ Cĩ hai phƣơng pháp quản lý việc cấp phát bộ nhớ là sử dụng một dãy bit hoặc sử dụng một danh sách liên kết, mỗi nút của danh sách liên kết lƣu thơng tin một vùng nhớ chứa tiến trình hay vùng nhớ trống giữa hai tiến trình.
+ Để chọn một đoạn trống cĩ thể sử dụng một trong các thuật tốn sau :First-fit, Best-fit, Worst- fit
+ Cĩ hai kỹ thuật dùng để cấp phát bộ nhớ cho một tiến trình là Cấp phát liên tục: tiến trình đƣợc nạp vào một vùng nhớ liên tục.
Cấp phát khơng liên tục: tiến trình đƣợc nạp vào một vùng nhớ khơng liên tục
+ Cĩ ba mơ hình cấp phát bộ nhớ liên tục là mơ hình Linker-Loader hoặc mơ hình Base & Limit. Mơ hình Linker-Loader: chƣơng trình đƣợc nạp vào một vùng nhớ liên tục đủ lớn để chứa tồn bộ chƣơng trình, hệ điều hành sẽ chuyển các địa chỉ tƣơng đối về địa chỉ tuyệt đối ngay khi nạp chƣơng trình. Mơ hình Base & Limit giống nhƣ mơ hình Linker-Loader nhƣng phần cứng cần cung cấp hai thanh ghi, một thanh ghi nền và một thanh ghi giới hạn . Khi một tiến trình đƣợc cấp phát vùng nhớ, hệ điều hành cất vào thanh ghi nền địa chỉ bắt đầu của vùng nhớ cấp phát cho tiến trình, và cất vào thanh ghi giới hạn kích thƣớc của tiến trình.
+ Cĩ ba mơ hình cấp phát bộ nhớ khơng liên tục là mơ hình phân đoạn, mơ hình phân trang và mơ hình phân đoạn kết hợp phân trang.
- Mơ hình phân đoạn: một chƣơng trình đƣợc ngƣời lập trình chia thành nhiều phân đoạn, mỗi phân đoạn cĩ ngữ nghĩa khác nhau và hệ điều hành cĩ thể nạp các phân đọan vào bộ nhớ tại các vị trí khơng liên tục và ghi các vị trí các phân đoạn vào bảng phân đoạn, đồng thời chuyển các địa chỉ tƣơng đối trong chƣơng trình thành các địa chỉ ảo. Mỗi địa chỉ ảo gồm hai phần (s,d): s là số hiệu phân đoạn , d là địa chỉ tƣơng đối trong phân đoạn s. Mỗi phần tử trong bảng phân đoạn gồm hai phần (base, limit): base là địa chỉ vật lý bắt đầu phân đoạn, limit là chiều dài của phân đoạn. - Mơ hình phân trang: Bộ nhớ vật lý đƣợc chia thành các khối cĩ kích thƣớc cố định và bằng nhau gọi là khung trang. Tiến trình cũng đƣợc chia thành các khối cĩ cùng kích thƣớc với khung trang và gọi là trang. Khi chƣơng trình đƣợc nạp vào bộ nhớ, MMU ghi nhận lại số hiệu khung trang chứa trang vào bảng trang , CPU chuyển địa chỉ tƣơng đối trong chƣơng trình thành địa chỉ ảo. Mỗi địa chỉ ảo cĩ dạng (p,d): p là số hiệu trang, d là địa chỉ tƣơng đối trong trang p. Mỗi phần tử trong bảng trang lƣu số hiệu khung trang chứa trang.
- Mơ hình phân đoạn kết hợp phân trang:
Một tiến trình gồm nhiều phân đoạn, mỗi phân đoạn đƣợc chia thành nhiều trang, lƣu trữ vào các khung trang cĩ thể khơng liên tục.
+ Bộ nhớ ảo là kỹ thuật dùng bộ nhớ phụ lƣu trữ tiến trình, các phần của tiến trình đƣợc chuyển vào-ra giữa bộ nhớ chính và bộ nhớ phụ để cho phép thực thi một tiến trình mà khơng cần nạp tồn bộ vào bộ nhớ vật lý. Cĩ hai phƣơng pháp cài đặt kỹ thuật bộ nhớ ảo đĩ là phân trang theo yêu cầu hoặc phân đoạn theo yêu cầu
- Phân trang theo yêu cầu:
Một tiến trình đƣợc chia thành nhiều trang, thƣờng trú trên đĩa cứng và một trang chỉ đƣợc nạp vào bộ nhớ chính khi cĩ yêu cầu. Nếu khi nạp trang mà khơng cịn khung trang trống, chọn một khung trang "nạn nhân" và chuyển trang "nạn nhân " ra bộ nhớ phụ , rồi chuyển trang muốn truy xuất từ bộ nhớ phụ vào khung trang trống đã chọn.
CÂU HỎI VÀ BÀI TẬP
1. Giả sử cĩ một hệ thống sử dụng kỹ thuật phân trang theo yêu cầu. Bảng trang đƣợc lƣu trữ trong các thanh ghi. Để xử lý một lỗi trang tốn 8 miliseconds nếu cĩ sẵn một khung trang trống, hoặc trang bị thay thế khơng bị sửa đổi nội dung, và tốn 20 miliseconds nếu trang bị thay thế bị sửa đổi nội dung. Mỗi truy xuất bộ nhớ tốn 100 nanoseconds. Giả sử trang bị thay thế cĩ xác suất bị sửa đổi là 70%. Tỷ lệ phát sinh lỗi trang phải là bao nhiêu để cĩ thể duy trì thời gian truy xuất bộ nhớ ( effective acess time) khơng vƣợt quá 200 nanoseconds?
2. Xét chƣơng trình C sau : int A [100][100] ;
for (i=0; i<100; i++)
for (j=0; j<100; j++) A[i][j]= 0;
Giả sử tiến trình đƣợc cấp 3 khung trang với kích thƣớc một khung trang là 200 bytes, mã tiến trình luơn chiếm khung trang 1, khung trang 2 và 3 để lƣu mảng A và khởi đầu khung 2, 3 là rỗng. Hỏi tiến trình cĩ bao nhiêu lỗi trang khi sử dụng thuật tốn thay thế LRU. Xét chƣơng trình C sau với câu hỏi tƣơng tự nhƣ trên
int A [100][100] ; for (j=0; j<100; j++)
for (i=0; i<100; i++) A[i][j]= 0;
3. Trong một hệ thống sử dụng kỹ thuật phân trang theo yêu cầu, kích thƣớc mỗi trang là 2K , xét đoạn chƣơng trình C sau đây:
int n = 3*1024; int A[n], B[n]; for (i=0; i<n;i++) A[i]=i; for (i=0 ;i<n;i++) B[A[i]]=i;
a) Nếu số khung cấp cho tiến trình là khơng hạn chế và giả sử khung trang thứ nhất luơn dùng để chƣá tiến trình, các khung trang cịn lại đƣợc khởi động ở trạng thái trống thì tiến trình cĩ bao nhiêu lỗi trang.
b) Nếu số khung cấp cho tiến trình là 2 khung và giả sử khung trang thứ nhất luơn dùng để chƣá tiến trình, khung trang thứ hai đƣợc khởi động ở trạng thái trống thì tiến trình cĩ bao nhiêu lỗi trang.
4. Một máy tính cĩ 4 khung trang. Thời điểm nạp, thời điểm truy cập cuối cùng, và các bit Reference (R), Dirty (D) của mỗi trang trong bộ nhớ đƣợc cho trong bảng sau :
Trang Thời điểm nạp
Thời điểm
truy cập cuối cùng
R D
1 230 260 1 0
2 120 272 1 1
3 160 280 1 1
Trang nào sẽ đƣợc chọn thay thế theo : a) thuật tốn NRU
b) thuật tốn FIFO c) thuật tốn LRU
d) thuật tốn " cơ hội thứ 2"
5. Tính kích thƣớc dãy bít dùng để quản lý RAM 512 MB, giả sử địa chỉ đánh theo byte.
6. Xét một khơng gian địa chỉ cĩ 8 trang, mỗi trang cĩ kích thƣớc 1K, ánh xạ vào bộ nhớ vật lý cĩ 32 khung trang.
a) Địa chỉ logic gồm bao nhiêu bit ? b) Địa chỉ physic gồm bao nhiêu bit ?
7. Xét một hệ thống sử dụng kỹ thuật phân trang, với bảng trang đƣợc lƣu trữ trong bộ nhớ chính. a) Nếu thời gian cho một lần truy xuất bộ nhớ bình thƣờng là 200 nanoseconds, thì mất bao nhiêu thời gian cho một thao tác truy xuất bộ nhớ trong hệ thống này ?
b) Nếu sử dụng TLBs với tỉ lệ tìm thấy (hit-ratio) là 75%, thời gian để tìm trong TLBs xem nhƣ bằng 0, tính thời gian truy xuất bộ nhớ trong hệ thống ( effective memory reference time)
8. Xét bảng phân đoạn sau:
Segment Base Length
1 2300 14
2 90 100
Cho biết địa chỉ vật lý tƣơng ứng với các địa chỉ ảo sau đây : a. (1,10)
b. (2,500)
9. Một máy tính 32-bit địa chỉ, sử dụng một bảng trang nhị cấp. Địa chỉ ảo đƣợc phân bổ nhƣ sau: 9 bit dành cho bảng trang cấp 1, 11 bit cho bảng trang cấp 2, cịn lại dành cho offset. Cho biết kích thƣớc một trang trong hệ thống, và khơng gian địa chỉ ảo cĩ bao nhiêu trang ?
10. Một máy tính cĩ 48-bit địa chỉ ảo, và 32-bit địa chỉ vật lý, kích thƣớc một trang là 8K. Cĩ bao nhiêu phần tử trong một bảng trang thơng thƣờng và trong bảng trang nghịch đảo?
11. Giả sử cĩ một máy tính đồ chơi sử dụng 7-bit địa chỉ, hệ thống sử dụng một bảng trang nhị cấp, dùng 2-bit làm chỉ mục đến bảng trang cấp 1, 2-bit làm chỉ mục đến bảng trang cấp 2. Xét
một tiến trình sử dụng các địa chỉ ảo trong những phạm vi sau : 0..15, 21..29, 94..106, và 115..127.
a) Vẽ chi tiết tồn bộ bảng trang cho tiến trình này
b) Phải cấp phát cho tiến trình bao nhiêu khung trang, giả sử tất cả đều nằm trong bộ nhớ chính? c) Bao nhiêu bytes ứng với các vùng phân mảnh nội vi trong tiến trình này?
d) Cần bao nhiêu bộ nhớ cho bảng trang của tiến trình này?
12. Giả sử cĩ một máy tính sử dụng 16-bit địa chỉ. Bộ nhớ ảo đƣợc thực hiện với kỹ thuật phân đoạn kết hợp phân trang, kích thƣớc tối đa của một phân đoạn là 4096 bytes. Bộ nhớ vật lý đƣợc phân thành các khung trang cĩ kích thƣớc 512 bytes.
a) Thể hiện cách địa chỉ ảo đƣợc phân tích để phản ánh segment, page, offset
b) Xét một tiến trình sử dụng các miền địa chỉ sau, xác định số hiệu segment và số hiệu page tƣơng ứng trong segment mà chƣơng trình truy cập đến :
350..1039, 3046..3904, 7100..9450, 33056..39200, 61230..63500
c) Bao nhiêu bytes ứng với các vùng phân mảnh nội vi trong tiến trình này? d) Cần bao nhiêu bộ nhớ cho bảng phân đoạn và bảng trang của tiến trình này ?
TÀI LIỆU THAM KHẢO
[1]. Gary J. Nutt, University of Colorado. Centralized And Distributed Operating Systems. Second Edition, 2000.
[2]. Robert Switzer. Operating Systems, A Practical Approach. Prentice-Hall International, Inc. 1993.
[3]. Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall International, Inc. Second Edition, 2001.
[4]. Abraham Silberschatz & Peter Baer Galvin. Operating System concepts. John Wiley & Sons, Inc. Fifth Edition, 1999.
[5]. H. M. Deitel. Operating Systems. Addison-Wesley Inc. Second Edition, 1999.
[6]. Trần Hạnh Nhi & Lê Khắc Nhiên Ân & Hồng Kiếm. Giáo trình hệ điều hành (tập 1 & 2). ĐHKHTN 2000.
CHƢƠNG V (5 tiết)