Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ

Một trong các phương tiện điều hành quan trọng là bộ nhớ chính. Quản lý tài nguyên bộ

nhớ là một đề tại hữu ích và cấp bách, nó quyết định khả năng hiện hữu của một hệ thống máy

tính. Theo đó, chúng ta phân biệt ba phạm vi, mà trong đó, các chiến lược khác nhau được sử

dụng để quản lý bộ nhớ.

 Các chương trình người sử dụng:

Nhiệm vụ chính là bao gồm: việc quản lý một cách tối ưu không gian lưu trữ của tiến trình

xung quanh các yêu cầu lưu trữ đặc biệt của chương trình. Điều này được thực hiện nhờ các bộ

phận chương trình (thí dụ điều hành bộ nhớ) hay nhờ các chương trình thu gom rác.

 Bộ nhớ chính:

Vấn đề chủ yếu là phân bổ tối ưu không gian bộ nhớ chính trên các tiến trình riêng lẻ. Theo

nguyên tắc chung, nhiệm vụ được trợ giúp nhờ các đơn vị phần cứng chuyên dụng. Đặc biệt,

trong hệ thống đa vi xử lý, điều quan trọng là phải tránh các tranh chấp, nếu có nhiều tiến trình

cùng muốn chiếm một không gian lưu trữ. Trong trường hợp này, các kỹ thuật viên sẽ giúp đỡ

thêm, như việc truy cập bộ nhớ không đồng dạng (NUMA), thí dụ khi chiếm dụng các bộ vi xử

lý, nó được tách chia ra trên bộ nhớ cục bộ hay bộ nhớ toàn cục.

pdf39 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 2785 | Lượt tải: 3download
Tóm tắt nội dung Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
iải thích cặn kẻ như sau: 
 Execute only (chỉ thực thi): 
Để tránh những thay đổi và không cho phép việc copy của các chương trình nguồn, ở mã 
chương trình được sử dụng, việc viết và đọc dữ liệu thì rất quan trọng. Vì điều đó không được 
phần cứng trợ giúp, nó giống hệt trường hợp Readonly. 
 Guard Page (phòng vệ trang): 
Khi tiến hành truy cập trang, nếu có một trang được đánh dấu, do đó, tiến trình người sử 
dụng sẽ phát sinh một lỗi phân đoạn, còn gọi là ngoại lệ cảnh giới trang (guard page 
exception). Điều đó tạo cho hệ thống con hay cho một tiến trình một trường năng động, mà sau 
khi trang được đánh dấu thì các phần tử của trường được truy cập. Nghĩa là, sau khi lỗi phân 
đoạn qua đi, tiến trình truy cập trang trở lại một cách bình thường. 
Một thí dụ hay về điều đó là cơ cấu để điều chỉnh độ lớn của stack. Độ lớn này được gia 
tăng với sự trợ giúp của một ngoại lệ cảnh giới trang một cách năng động khi có nhu cầu. 
 No access (không truy cập): 
Việc đánh dấu trang sẽ được ngăn ngừa, khi người ta truy cập các trang bị cấm hay các 
trang tồn tại.Tình trạng này được áp dụng hầu hết để nhận được sự trợ giúp hay để thu gom lỗi 
khi gỡ rối (debugging). 
 Copy on write (copy khi viết): 
Cơ cấu để giải quyết vấn đề copy on write được giải thích ở cuối mục 3.3.6; cơ cấu này có 
thể được sử dụng để bảo vệ các khoảng bộ nhớ. Nếu một khoảng bộ nhớ dùng chung của các 
tiến trình được trở thành khoảng bộ nhớ dùng riêng, khi đó, một sự sắp xếp ở trong gian địa 
chỉ ảo (xem hình 3.9) được tiến hành; do vậy, các trang ảo của tiến trình được coi là copy on 
write. Bây giờ, một tiến trình tiến hành viết một trang như thế, do đó, đầu tiên việc copy được 
tạo lập (với các luật đọc/ viết mà không cần luật copy on write ở trên trang) và sau đó, tác vụ 
được thực hiện. Bấy giờ, tất cả việc tiếp theo đối với một trang diễn ra trên bản copy riêng lẻ 
và không cần trên bản gốc. 
Một cơ chế bảo vệ bộ nhớ quan trọng tiếp theo là việc dập bỏ nội dung trang, phương pháp 
này đòi hỏi cấp bảo vệ đúng yêu cầu, trước khi một trang được sử dụng cho một tiến trình 
người sử dụng. Ở sự quá độ của một trang từ trạng thái free (trống) đến trạng thái zeroed (điền 
đầy), điều nói trên được nhà quản lý bộ nhớ ảo thực hiện. 
3.6.3 Các cấp bảo vệ 
Một bản phác thảo đưa ra một phương pháp bảo vệ bộ nhớ bổ sung để dẫn tới các bước bảo 
vệ đối với người sử dụng. Những trạng thái được nói trong chương 1 như trạng thái người sử 
dụng, trạng thái nhân hệ điều hành là một sự phân chia như thế. Chúng bao gồm 2 bậc chính: 
 Bậc đặc quyền: Bậc này dành cho những tiến trình làm việc ở trạng thái nhân hệ điều 
hành (kernel mode). Trong đó, mã bảo vệ được phép tất cả, thí dụ được phép truy cập tất cả 
địa chỉ của bộ nhớ. 
 Bậc không đặc quyền: Bậc này dành cho những tiến trình làm việc ở trạng thái người 
sử dụng (used mode). Trong đó, một tiến trình không thể truy cập trên hệ điều hành và trên tất 
cả các tiến trình khác. 
Mỗi bậc bảo vệ bộ nhớ này còn được tiếp tục chia nhỏ nữa, tại đó, các bậc nhỏ này còn 
được sắp xếp theo độ tin cậy, nó được người ta chỉ ra ở trong từng đại diện mỗi bậc nhỏ vừa 
nói. Tác dụng của nó phụ thuộc mạnh mẽ vào sự sắp xếp này khi chúng được sự trợ giúp của 
phần cứng. 
Thí dụ về các bậc bảo vệ ở bộ vi xử lý Intel 80386: 
Dãy mở rộng các bộ vi xử lý 80x86 chế ngự nhiều bậc bảo vệ ở các phiên bản ngày càng 
hiện đại. Nếu bộ vi xử lý được đặt trở lại nhờ tín hiệu điện, do đó, nó tồn tại ở trạng thái thực 
(read mode) và với điều đó, bộ vi xử lý 8086 hay 80186 thì tương thích. Không gian địa chỉ 
hữu ích thì đồng nhất với không gian địa chỉ vật lý, do đó, các tiến trình có thể quấy nhiễu lẫn 
nhau. Nói chung khi đó, hệ điều hành được điều chỉnh theo phương pháp reset (đặt lại). Hệ 
điều hành tạo ra những bảng theo kiểu bảo vệ bộ nhớ này. Sau đó, nó đặt với các Bit trạng thái 
ảo (vitual mode-Bit), nếu các Bits này không thể được đặt trở lại, do đó, cần tới sự tác động 
của bộ nhớ MMU. Tất cả việc truy cập bộ nhớ tiếp theo được sử dụng địa chỉ ảo, bấy giờ, đầu 
tiên chúng phải được biên dịch, tức là, tất cả các tiến trình đã được dự kiến được cách biệt với 
nhau ở trong mỗi không gian địa chỉ ảo. 
Với kiểu địa chỉ ảo, bộ vi xử lý 80386 có 4 bậc bảo vệ: bậc 3 cho chương trình người sử 
dụng, bậc 2 cho thư viện dùng chung, bậc 1 cho gọi hệ thống và bậc 0 cho kiểu nhân hệ điều 
hành. Hai Bit để biểu diễn bậc được thực hiện với tư cách là thông tin truy cập ở việc mô tả 
các trang và các segments, và chúng còn quyết định về luật lệ truy cập. Nếu việc truy cập bị từ 
chối, do đó, dẫn tới việc bẻ gãy lỗi. 
Các bước nhãy chương trình và việc gọi thủ tục ở mỗi mã của một bậc khác nhau được 
điểu chỉnh một cách mạnh mẽ. Để gọi thủ tục của một bậc khác nhau thì một lệnh đặc biệt 
CALL được sử dụng, lệnh này kiểm tra việc truy cập về cấu trúc dữ liệu có dạng call gate và 
sau đó sử dụng các địa chỉ bước nhãy được tạo ra trước đó ở trong thủ tục. Do đó, những bước 
nhãy chưa được kiểm tra sẽ bị loại trừ. 
3.7. Các bài tập của chƣơng 3 
 3.7.1. Các bài tập về che phủ bộ nhớ 
Bài tập 3.1. Các chiến lược che phủ 
Nếu cho một hệ thống tráo đổi (swappingsystem), mà bộ nhớ của nó bao gồm các khoảng 
trống theo thứ tự như sau: 10kB, 4kB, 20kB, 18kB, 7kB, 9kB, 12kB, và 15kB. Khoảng trống 
nào sẽ được chọn đầu tiên cho vừa vặn tốt nhất khi yêu cầu cần nạp các không gian bộ nhớ là 
12kB, 10kB, 9kB. Bạn hãy nhắc lại các yêu cầu cho các trường hợp tốt nhất, tồi nhất và tạm 
được (kể cả bản vẽ sơ đồ). 
3.7.2. Các bài tập bộ nhớ ảo 
Bài tập 3.2. Xác định địa chỉ 
a). Bạn hãy tính toán các địa chỉ vật lý từ các địa chỉ ảo 2204H và A226H. Độ dịch vị là 13 
Bit và số trang là 3 Bit. Bạn hãy sử dụng bảng trang sau đây: 
Trang 0 1 2 3 4 5 6 7 
Khung trang 7 0 1 6 4 2 3 5 
 b). Việc quản lý bộ nhớ phải được mở rộng như thế nào, mà nhờ đó, trang được cập phát? 
Bài tập 3.3. Về các bảng địa chỉ 
Một thiết bị địa chỉ ảo 128 Bit và địa chỉ vật lý 32 Bit. Các trang có giá trị 8 kilo- từ (kilo-
word:kW). 
a). Có bao nhiêu lần điền vào được sử dụng cho một bảng trang thông thường? 
b) Có bao nhiêu bậc được sử dụng cho bảng trang kiểu nhiều bậc (mức), để tồn tại với một 
kích cở bảng trang nhỏ hơn 1 mêga-từ (mega-word: mW)? Ở đây, người ta hiểu 1 word = 1 sự 
điền vào. 
Bài tập 3.4. Về bảng trang đa bậc 
Một thiết bị có một không gian địa chỉ ảo. Việc quản lý bộ nhớ được sử dụng một bảng 
trang 2 bậc đối với một bộ nhớ Cache (được liên kết lại), được gọi là bộ đệm dịch chuyển phía 
nhìn thấy (translation lookside buffer: TLB) với một tỷ phần gặp nhau trung bình khoảng 90%. 
Bạn hãy lưu ý rằng, một sự truy cập có thể thực hiện bằng hai cách: sử dụng bộ đệm TLB hay 
nhờ bảng trang. 
a). Sự tiêu phí thời gian trung bình trên bộ nhớ chính bằng bao nhiêu, nếu thời gian truy 
cập bộ nhớ là 100ns và thời gian truy cập bộ đệm TLB là 10ns ? Giả sử rằng không có lỗi 
trang xuất hiện. 
b). Ở câu (a) các lỗi trang được bỏ qua. Bây giờ, chúng ta muốn nghiên cứu trường hợp 
đơn giản, mà trong đó các lỗi trang xuất hiện chỉ khi truy cập bộ nhớ chính. Giả sử các bảng 
trang đều ở trong bộ nhớ chính và không được cấp phát ! Khi đó tần suất của các lỗi trang là 
1:10
5
 và một lỗi trang mất 100ns. Vậy thời gian truy cập trung bình trên bộ nhớ chính là như 
thế nào? 
Gợi ý: Bạn hãy áp dụng biểu thức quan hệ sau đây: 
Thời gian truy cập trung bình = Thời gian gặp nhau + Tỷ phần truy cập hỏng x Thời gian 
truy cập hỏng. 
c). Việc điều hành đa chương trình gây ra những vấn đề gì đối với bộ đệm TLB và đối với 
bộ nhớ Cache khác ? Trước hết, bạn hãy nghĩ tới ở sự nhận dạng các khối. 
3.7.3. Các bài tập về quản lý trang và bộ nhớ Cache 
Bài tập 3.5. Về các chuỗi tham chiếu 
Cho một chuỗi tham chiếu sau đây: 0 1 2 3 3 2 3 1 5 2 1 3 2 5 6 7 6 5. Mỗi lần truy cập một 
trang xảy ra trong khoảng một đơn vị thời gian. 
a). Hỏi có bao nhiêu lỗi trang của tập Working set dẫn ra đối với một kích cở của cửa sổ h 
=3 ? 
b). Nó sẽ dẫn tới vấn đề chiến lược mở rộng nào, khi một trang mới được nạp vào trong tập 
working set? Bạn hãy suy nghĩ, khi nào thì có lợi để thiết đặt một trang của một tập Working 
set, và khi nào thì có lợi để thêm vào một trang và để thay đổi kích cở cửa sổ h một cách năng 
động; trường hợp kích cở lớn nhất của tập Working set vẫn chưa được đánh giá ! 
Bài tập 3.6. Về các chiến lược cấp phát 
Có một máy tính chiếm 4 khung trang. Tại thời điểm nạp của lần truy cập sau cùng, các giá 
trị M và R (Bit) đối với mỗi trang được dẫn ra như sau (thời gian tính bằng tiếng kêu tích tắc 
của đồng hồ): 
a). Trang nào được chiến lược NRU thay thế ? 
b). Trang nào được chiến lược FIFO thay thế ? 
c). Trang nào được chiến lược LRU thay thế ? 
Bài tập 3.7. Về tập Working set 
a). Dưới khái niệm Working set của một chương trình, người ta hiểu cái gì ? Nó có thể thay 
đổi như thế nào ? 
b). Việc gia tăng số lượng các khung trang ở bộ nhớ công tác có hiệu quả nào trong quan 
hệ với số lượng các lỗi trang ? Điều đó mang lại hiệu quả nào trên các bảng trang ? 
Bài tập 3.8. Về hiệu ứng Thrashing 
a). Cái gì gây nên hiệu ứng thrashing ? 
b). Hệ điều hành có thể phát hiện hiệu ứng thrashing như thế nào và nó làm gì để chống lại 
hiệu ứng này ? 
c). Một hệ thống có những thông số hệ thống sau đây: 
 1). s =3; v = 14/15, σ1 = 0,5; ρ1 = 1/15; ρw = 1/20 
 2). s =3; v= 14/15; σ1 = 0,5; ρ1 = 1/15; ρw = 1/10 
Khi số lượng các tiến trình gia tăng, tính chất tải như thế nào ? 
Tại chỗ nào có sự gia tăng đột biến ? 
Bài tập 3.9. Về bộ nhớ Cache 
Bộ nhớ Cache có thời gian truy cập 50ns. Trong thời gian này, bộ vi xử lý có thể truy cập 
trên bộ nhớ Cache không có chu trình chờ đợi và trên bộ nhớ chính với 3 chu trình chờ đợi. Tỷ 
phần gặp nhau của việc truy cập trên bộ nhớ Cache là 80%. Thời gian của chu trình hướng bus 
của bộ vi xử lý là 50ns. Bạn hãy tính: 
a). Thời gian truy cập trung bình của ca làm việc ? 
b). Số lượng trung bình các chu trình chờ đợi cần thiết ? 

File đính kèm:

  • pdfHDH_chuong 3.pdf