Cấu trúc chương trình

Một phần của tài liệu Giáo trình tổng quan về DHD (Trang 128)

- Đọ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 0 126 279 0 0

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)

QUN LÝ PROCESSOR

Chương “QUẢN LÝ PROCESSOR" sẽ giới thiệu và giải thích các vấn đề sau:

Một phần của tài liệu Giáo trình tổng quan về DHD (Trang 128)

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

(200 trang)