Ôn tập hệ Điều hành

13
Ôn tập Hệ Điều Hành - Bộ nhớ ảo! Bài 1: Khi nào thì xảy ra lỗi trang? Mô tả xử lý hệ điều hành khi có lỗi trang. Lỗi trang xảy ra khi người dùng truy cập tới một trang không hợp lệ (nghĩa là trang không ở trong không gian địa chỉ của quá trình - không đang ở trong bộ nhớ chính) hoặc ta đang truy cập tới một trang hợp lệ nhưng đang ở bộ nhớ phụ (swap space). Xử lý của hệ điều hành: việc truy xuất một trang "không hợp lệ" gây ra một trap lỗi trang (page-fault trap). Phần cứng phân trang, dịch địa chỉ thông qua bảng trang, sẽ thông báo rằng bit không hợp lệ đã được đặt vào, gây ra một trap tới hệ điều hành. Trap này kích khởi dịch vụ page-fault service routine (PFSR) của hệ điều hành. Các bước xử lý của PFSR: ->1- Chuyển process phát ra tham chiếu về trạng thái blocked. ->2- Phát ra một yêu cầu đọc đĩa để nạp trang được tham chiếu vào một frame trống; trong khi đợi I/O, một process khác được cấp CPU để thực thi. ->3- Sau khi I/O hoàn tất, đĩa gây ra một ngắt đến hệ điều hành; PFSR cập nhật page table chuyển process về trạng thái ready. [center] Tại bước 2 của PFSR, giả sử phải thay trang vì không tìm được frame trống, PFSR được bổ sung như sau:

Upload: minh-than-truong

Post on 24-Jul-2015

780 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ôn tập Hệ Điều Hành

Ôn tập Hệ Điều Hành - Bộ nhớ ảo!

Bài 1: Khi nào thì xảy ra lỗi trang? Mô tả xử lý hệ điều hành khi có lỗi trang. Lỗi trang xảy ra khi người dùng truy cập tới một trang không hợp lệ (nghĩa là trang không ở

trong không gian địa chỉ của quá trình - không đang ở trong bộ nhớ chính) hoặc ta đang truy cập

tới một trang hợp lệ nhưng đang ở bộ nhớ phụ (swap space).

Xử lý của hệ điều hành: việc truy xuất một trang "không hợp lệ" gây ra một trap lỗi trang

(page-fault trap). Phần cứng phân trang, dịch địa chỉ thông qua bảng trang, sẽ thông báo rằng

bit không hợp lệ đã được đặt vào, gây ra một trap tới hệ điều hành. Trap này kích khởi dịch vụ

page-fault service routine (PFSR) của hệ điều hành.

Các bước xử lý của PFSR:

->1- Chuyển process phát ra tham chiếu về trạng thái blocked.

->2- Phát ra một yêu cầu đọc đĩa để nạp trang được tham chiếu vào một frame trống; trong khi

đợi I/O, một process khác được cấp CPU để thực thi.

->3- Sau khi I/O hoàn tất, đĩa gây ra một ngắt đến hệ điều hành; PFSR cập nhật page table và

chuyển process về trạng thái ready.

[center]

Tại bước 2 của PFSR, giả sử phải thay trang vì không tìm được frame trống, PFSR được bổ

sung như sau:

Page 2: Ôn tập Hệ Điều Hành

- Xác định vị trí trên đĩa của trang đang cần.

- Tìm một frame trống:

Nếu có frame trống thì dùng nó.

Nếu không có frame trống thì dùng một giải thuật thay trang để chọn một trang hi sinh (victim

page).

Ghi victim page lên đĩa, cập nhật page table và frame table tương ứng.

- Đọc trang đang cần vào frame trống, cập nhật page table và frame table tương ứng.

Bài 2: Giả sử có một chuỗi truy xuất bộ nhớ có chiều dài p với n số hiệu trang khác nhau

xuất hiện trong chuỗi. Giả sử hệ thống sử dụng m khung trang (khởi động trống). Với một

thuật toán thay thế trang bất kỳ:

Cho biết số lượng tối thiểu các lỗi trang xảy ra. Cho biết số lượng tối đa các lỗi trang xảy

ra.

Câu 2:

Nếu chuỗi truy xuất bộ nhớ có chiều dài là p, nghĩa là có p trang. Mà các trang có sỗ hiệu khác

nhau,nghĩa là chúng không trùng nhau. Nếu chúng không trùng nhau thì khi kiểm tra trong

khung sẽ không có mặt số hiệu trang đang xét, nên xuất hiện lỗi. Và cứ thế có p lỗi trang.

[/center]

Bài 3: 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 dành cho bảng trang cấp 2, và cho

offset.

- Kích thước trang trong hệ thống: Địa chỉ ảo được phân bổ với 9 bit cho bảng trang cấp 1

và 11 bit dành cho bảng trang cấp 2, như vậy số bit còn lại để biểu diễn offset là 32 - 9 - 11

= 12 bit =>kích thước một trang sẽ là 2^12 byte.(4 kb)

- Số trang của địa chỉ ảo: Với 9 bit dành cho bảng trang cấp 1, ta sẽ có 2^9 mục trong bảng

trang cấp 1, mỗi mục này chứa số hiệu của một bảng trang cấp 2. Với 11 bit dành cho bảng

trang cấp 2, ta sẽ có 2^11 mục trong mỗi bảng trang. Như vậy, số trang của địa chỉ ảo sẽ là

2^9.2^11 = 2^20 trang.

Page 3: Ôn tập Hệ Điều Hành

Bài 4: Giả sử địa chỉ ảo 32 bit được phân tách thành 4 trường a, b, c, d. Ba trường đầu tiên

được dùng cho bảng trang tam cấp, trường thứ 4 dùng cho offset.Giả sử mỗi trường biểu

diễn bởi số bit tương ứng là x, y, z, t thỏa mãn điều kiện x + y + z + t = 32 --> Số lượng trang

nhớ: 2^(x+y+z) hoặc 2^(32-t)

Bài 5: 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)? Trong bảng trang nghịch

đảo?

- Không gian địa chỉ ảo là 2^48, kích thước trang là 8K = 2^13, như vậy bảng phân trang

sẽ có 2^48 / 2^13 = 2^35 phần tử.

- Đối với bảng trang nghịch đảo: với 32 bit dành cho địa chỉ vật lý, kích thước trang là 8K

ta sẽ có 2^32 / 2^13 = 2^19 mục tức là 19 bit để mô tả bảng trang nghịch đảo, vậy bảng

trang nghịch đảo sẽ có 2^19 phần tử.

Page 4: Ôn tập Hệ Điều Hành

Bài 6: Một máy tính cung cấp cho người dùng một không gian địa chỉ ảo 2^32 bytes. Máy

tính này có bộ nhớ vật lý 2^18 bytes. Bộ nhớ ảo được thực hiện với kỹ thuật phân trang,

kích thước trang là 4096 bytes. Một tiến trình của người dùng phát sinh địa chỉ ảo

11123456. Giải thích cách hệ thống chuyển đổi địa chỉ ảo này thành địa chỉ vật lý tương

ứng. Phân biệt các thao tác phần mềm và phần cứng.

00000000101010011011101100000000

- Sự chuyển đổi địa chỉ:

+ Đầu tiên, địa chỉ ảo 11123456 sẽ được chuyển thành mã nhị phân

00000000101010011011101100000000

+ Tiếp theo, do kích thước trang là 4096 = 2^12 bytes, như vậy 20 bit đầu của địa chỉ logic

sẽ là số hiệu trang, 12 bit còn lại là offset.

+ Đối chiếu số hiệu trang với bảng trang ta được số hiệu khung trang trên địa chỉ vật lý.

+ Kết hợp số hiệu khung trang nhận được từ bước trên với 12 bit offset từ mã nhị phân bên

trên ta được địa chỉ vật lý.

Page 5: Ôn tập Hệ Điều Hành

Bài 7: 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 100nanoseconds. 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 ?

- Thời gian truy xuất bộ nhớ: x = 100 nanoseconds

- Thời gian trung bình để xử lý lỗi trang: t = 0,3 * 8 + 0,7 * 20 = 16,4 miliseconds

- Thời gian truy xuất bộ nhớ hiệu dụng EAT <= 200 nanoseconds

- EAT = x + a*t với a là tỉ lệ phát sinh lỗi trang => a = (EAT - x)/t => a <= (200-100)/16,4 =

0,609%

Bài 8: Xét các thuật toán thay thế trang sau đây. Xếp thứ tự chúng dựa theo tỷ lệ phát sinh

lỗi trang của chúng. Phân biệt các thuật toán chịu đựng nghịch lý Belady và các thuật toán

không bị nghịch lý này ảnh hưởng.

a) LRU

b) FIFO

Page 6: Ôn tập Hệ Điều Hành

c) OPT

d) Cơ hội thứ hai -> chưa hiểu lắm....

- Xếp thứ tự theo tỷ lệ lỗi trang: OPT < LRU < FIFO

- Thuật toán OPT không chịu ảnh hưởng của nghịch lý Belady vì nó là kết quả của việc

phát hiện ra nghịch lý đó.

**** - Câu 1 - ****

Giải thích sự khác biệt giữa địa chỉ logic và địa chỉ physic?

- Địa chỉ logic (logic address): là vị trí nhớ được diễn tả trong một chương trình. Mọi tham

chiếu bộ nhớ trong mã lệnh chương trình được compiler tạo ra đều là địa chỉ logic.

- Địa chỉ vật lý (physic address): là một địa chỉ thực trong bộ nhớ chính. Địa chỉ vật lý được

chuyển từ địa chỉ logic khi trình biên dịch thức j hiện quá trình linking/loading.

**** - Câu 2 - ****

Giải thích sự khác biệt giữa hiện tượng phân mảnh nội vi và ngoại vi?

- Phân mảnh ngoại (external fragmentation): là hiện tượng khi kích thước không gian nhớ

còn trống đủ để thỏa mãn yêu cầu cấp phát nhưng không gian nhớ này lại không liên tục.

Hiện tượng phân mảnh ngoại xảy ra khi bạn thường xuyên cấp phát vùng nhớ mới, sau đó xóa đi

những phần vùng nhớ đã cấp phát một cách không thứ tự.

- Phân mảnh nội (internal fragmentation): là hiện tượng sẽ có vùng nhớ dư thừa khi ta cấp

phát một vùng nhớ hơi lớn hơn kích thước yêu cầu. Ví dụ: Cấp một khoảng trống 18,464 bytes cho một process yêu cầu 18,462 bytes

Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực được chia thành các khối kích thước

cố định (fixed-sized block) và các process được cấp phát theo đơn vị khối.

Page 7: Ôn tập Hệ Điều Hành

**** - Câu 3 - ****

Giả sử bộ nhớ chính được phân thành các vùng có kích thước 600K, 500K, 200K, 300K

(theo thứ tự), cho biết các tiến trình có kích thước 212K, 417K, 112K, 426K (theo thứ tự) sẽ

được cấp phát bộ nhớ như thế nào nếu sử dụng:

a/ Thuật toán First fit:

Page 8: Ôn tập Hệ Điều Hành

b/ Thuật toán Best fit:

Page 9: Ôn tập Hệ Điều Hành

c/ Thuật toán Worst fit:

Page 10: Ôn tập Hệ Điều Hành

Theo ta thấy, thuật toán Best fit thực hiện tốt việc phân phối bộ nhớ cho các process nhất!!!

[center]**** - Câu 4 - ****Xét một hệ thống trong đó một chương trình khi được nạp vào

bộ nhớ sẽ phân biệt hoàn toàn phân đoạn code và phân đoạn data. Giả sử CPU sẽ xác định

được khi nào cần truy xuất lệnh hay dữ liệu, và phải truy xuất ở đâu. Khi đó, mỗi chương

trình sẽ được cung cấp 2 bộ thanh ghi base-limit: một cho phân đoạn code, và một cho

phân đoạn data. Bộ thanh ghi base-limit của phân đoạn code tự động được đặt thuộc tính

readonly. Thảo luận các ưu khuyết điểm của hệ thống này.

**** - Câu 5 - ****

Tại sao kích thước trang luôn là lũy thừa của 2?

-Kích thước trang được định nghĩa bởi phần cứng. Kích thước của một trang điển hình là

lũy thừa của 2, từ 512 bytes đến 16MB trên trang, tùy thuộc vào kiến trúc máy tính. Chọn

lũy thừa 2 cho kích thước trang để thực hiện việc dịch địa chỉ luận lý thành số trang và độ

dời trang rất dễ dàng.

[center]**** - Câu 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:

- Không gian địa chỉ có 8 trang, vậy ta giả sử có một bảng trang (page table) gồm 8 mục.

- Mỗi trang có kích thước 1K=2^10 byte, như vậy ta sẽ cần 10 bit để quản lý phần địa chỉ

tương đối trong trang (page - offset). Bảng trang gồm 8 mục ta sẽ cần đến 3 bit để quản lý!

=> như vậy địa chỉ logic gồm có page number + page offset = 3 + 10 = 13 bit

Page 11: Ôn tập Hệ Điều Hành

[center]

b/ Địa chỉ vật lý:

- Bộ nhớ vật lý có 32 khung trang, như vậy ta cần 5 bit để quản lý nó (2^5=32).

- Thêm với 10 bit offset cho việc quản lý phần địa chỉ tương đối trong trang.

=> địa chỉ vật lý bao gồm 5 + 10 = 15 bit

Page 12: Ôn tập Hệ Điều Hành

[center]

[/center]

[/center]

[/center]

**** - Câu 7 - **** Tại sao trong hệ thống sử dụng kỹ thuật phân trang, một tiến trình không thể truy xuất đến vùng nhớ không được cấp

cho nó?

Làm cách nào để hệ điều hành có thể cho phép sự truy xuất này xảy ra? Hệ điều hành có nên cho phép điều đó không?

Tại sao?

Phân trang là cơ chế quản lý bộ nhớ cho phép không gian địa chỉ vật lý của quá trình là

không kề nhau. Phân trang tránh vấn đề đặt vừa khít nhóm bộ nhớ có kích thước thay đổi

vào vùng lưu trữ phụ (backing store) mà hầu hết các cơ chế quản lý bộ nhớ trước đó gặp

phải. Khi phân đoạn mã và dữ liệu nằm trong bộ nhớ được hoán vị ra, không gian phải

được tìm thấy trên vùng lưu trữ phụ.

[b] Bộ nhớ vật lý được chia thành các khối có kích thước cố định gọi là các khung (frames).

Page 13: Ôn tập Hệ Điều Hành

Bộ nhớ luận lý cũng được chia thành các khối có cùng kích thước gọi là các trang (pages).

Khi một quá trình được thực thi, các trang của nó được nạp vào các khung bộ nhớ sẵn

dùng từ vùng lưu trữ phụ. Vùng lưu trữ phụ được chia thành các khối có kích thước cố

định và có cùng kích thước như các khung bộ nhớ.

Phân trang là một dạng của tái định vị động. Mỗi địa chỉ luận lý được giới hạn bởi phần

cứng phân trang tới địa chỉ vật lý. Sử dụng phân trang tương tự sử dụng một bảng các

thanh ghi nền (hay tái định vị), một thanh ghi cho mỗi khung bộ nhớ.

Một khía cạnh quan trọng của phân trang là sự phân chia rõ ràng giữa tầm nhìn bộ nhớ

của người dùng và bộ nhớ vật lý thực sự. Chương trình người dùng nhìn bộ nhớ như một

không gian liên tục, chứa chỉ một chương trình. Sự thật, chương trình người dùng được

phân bố khắp bộ nhớ vật lý và nó cũng quản lý các quá trình khác. Sự khác nhau giữa tầm

nhìn bộ nhớ của người dùng và bộ nhớ vật lý thực sự được làm cho tương thích bởi phần

cứng dịch địa chỉ. Địa chỉ luận lý được dịch thành địa chỉ vật lý. Ánh xạ này được che giấu

từ người dùng và được điều khiển bởi hệ điều hành.

Như vậy, quá trình người dùng không thể truy xuất bộ nhớ mà nó không sở hữu. Không có

cách định địa chỉ bộ nhớ bên ngoài bảng trang của nó và bảng chỉ chứa những trang mà

quá trình sở hữu.