III.6 Cỏc thuật toỏn thay trang

Một phần của tài liệu Chương III Quản lý bộ nhớ (Trang 46 - 49)

Như đó biết, để xử lý lỗi trang, trong trường hợp trờn bộ nhớ khụng cũn frame trống, hệ điều hành phải tỡm một page nào đú trờn bộ nhớ chớnh để đưa ra đĩa, để lấy frame trống đú để phục vụ cho việc xử lý lỗi trang. Khi quyết định chọn một page nào đú để đưa ra đĩa thỡ hệ điều hành phải đảm bảo rằng việc chọn này là: khụng ảnh hưởng đến cỏc tiến trỡnh khỏc, ớt cú nguy cơ xảy ra lỗi trang ngay sau đú nhất và đặc biệt hệ thống khú cú thể rơi vào tỡnh trạng “trỡ trệ hệ thống” nhất. Trong trường hợp này hệ điều hành đó đưa vào sử dụng cỏc thuật toỏn thay trang cụ thể như: Optinal, LRU, FIFO, Clock.

Cỏc thuật toỏn thay trang khỏc nhau cú cỏc tiờu chớ để chọn trang swap out khỏc nhau, nhưng tất cả đều hướng tới mục tiờu là: đơn giản và ớt xảy ra lỗi trang nhất. Nú khụng quan tõm đến việc page được chọn để swap out là trang của tiến trỡnh gõy ra lỗi trang hay trang của một tiến trỡnh nào đú trong hệ thống. Cỏc thuật toỏn thay trang khụng xem xột đến cỏc trang bị đỏnh dấu “neo”.

Để so sỏnh hiệu suất xử lý lỗi trang của cỏc thuật toỏn thay trang, chỳng ta phải ỏp dụng cỏc thuật toỏn này trong cựng một điều kiện: cú cựng số lượng frame cũn trống ban đầu và cần phải nạp một danh sỏch cỏc trang như nhau vào bộ nhớ. Thuật toỏn được gọi là cú hiệu suất cao hơn khi nú xảy ra ớt lỗi trang hơn.

Trong cỏc thuật toỏn sau đõy chỳng xem xột trong trường hợp: ban đầu hệ thống cú 3 frame cũn trống và hệ điều hành cần phải nạp một danh sỏch cỏc trang sau đõy vào bộ nhớ: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2.

Trong cỏc thuật toỏn sau đõy chỳng ta chỉ xột đến trường hợp b của lỗi trang, đú là hệ điều hành phải xử lý lỗi trang khi trờn bộ nhớ chớnh khụng cũn khung trang trống.

Thuật toỏn FIFO (First In First Out)

Thuật toỏn FIFO là thuật toỏn đơn giản và dễ cài đặt nhất. Với thuật toỏn này thỡ trang mà hệ điều hành chọn để swap out là trang được đưa vào bộ nhớ sớm nhất, hay ở trong bộ nhớ lõu nhất. Bảng sau đõy minh họa cho việc chọn trang để swap out và thay thế của thuật toỏn FIFO:

2 3 2 1 5 2 4 5 3 2 5 2 Frame 1 2 2 2 2 5 5 5 5 3 3 3 3 Frame 2 3 3 3 3 2 2 2 2 2 5 5

Frame 3

1 1 1 4 4 4 4 4 2

F F F F F F

Theo bảng trờn thỡ trong trường hợp này đó xảy ra 6 lỗi trang, khi hệ điều hành cần nạp trang 5 vào bộ nhớ thỡ nú phải đưa trang 2 ra ngoài để lấy frame1 nạp trang 5, khi hệ điều hành cần nạp lại trang 2 vào bộ nhớ thỡ nú phải đưa trang 3 ra ngoài để lấy frame2 nạp trang 2, khi hệ điều hành cần nạp trang 4 vào bộ nhớ thỡ nú phải đưa trang 1 ra ngoài để lấy frame3 nạp trang 4, …

Thuật toỏn này khụng phải lỳc nào cũng mang lại hiệu quả tốt. Thứ nhất, cú thể trang được đưa vào bộ nhớ lõu nhất lại là trang cần được sử dụng ngay sau đú, tức là hệ điều hành vừa swap out nú thỡ phải swap in nú trở lại bộ nhớ ngay và rừ ràng trong trường hợp này hệ điều hành lại phải tiếp tục việc xử lý lỗi trang, trường hợp của trang 2 ở trờn là một vớ dụ. Thứ hai, cú thể lỗi trang sẽ tăng lờn khi số lượng khung trang được sử dụng tăng lờn, trường hợp này được gọi là nghịch lý Belady. Khi hệ điều hành cần nạp cỏc trang sau đõy theo thứ tự vào bộ nhớ: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 thỡ sẽ xảy ra 9 lỗi trang nếu sử dụng 3 khung trang, và sẽ xảy ra 10 lỗi trang nếu sử dụng 4 khung trang.

Với thuật toỏn này hệ điều hành cần phải cú cơ chế thớch hợp để ghi nhận thời điểm một trang được nạp vào bộ nhớ để làm cơ sở thay thế sau này. Trong trường hợp này hệ điều hành thường sử dụng một danh sỏch liờn kết để ghi nhận cỏc trang được nạp vào bộ nhớ, trang được nạp vào sớm nhất được ghi nhận ở đầu danh sỏch, trang được nạp vào muộn nhất được ghi nhận ở cuối danh sỏch và trang được chọn để thay thế là trang ở đầu danh sỏch. Hệ điều hành sẽ xúa phần tử ở đầu danh sỏch này ngay sau khi một trang đó được thay thế.

Thuật toỏn LRU (Least Recenty Used)

Theo thuật toỏn này thỡ trang được hệ điều hành chọn để thay thế là trang cú khoảng thời gian từ lỳc nú được truy xuất gần đõy nhất đến thời điểm hiện tại là dài nhất, so với cỏc trang đang ở trờn bộ nhớ chớnh. Như vậy trong trường hợp này hệ điều hành phải ghi nhận thời điểm cuối cựng trang được truy xuất. Bảng sau đõy minh hoạ cho việc chọn trang để swap out và thay thế của thuật toỏn LRU:

2 3 2 1 5 2 4 5 3 2 5 2 Frame 1 2 2 2 2 2 2 2 2 3 3 3 3 Frame 2 3 3 3 5 5 5 5 5 5 5 5 Frame 3 1 1 1 4 4 4 2 2 2 F F F F

Theo bảng trờn thỡ trong trường hợp này xảy ra 4 lỗi trang, khi hệ điều hành cần nạp trang 5 vào bộ nhớ thỡ nú phải đưa trang 3 ra ngoài để lấy frame2 nạp trang

5, vỡ hệ điều hành thấy rằng trang 3, chứ khụng phải là trang 2, là trang vừa được truy xuất cỏch đõy lõu nhất.

Thuật toỏn này cần phải cú sự hỗ trợ của phần cứng để xỏc định thời điểm gần đõy nhất trang được truy xuất của tất cả cỏc trang trờn bộ nhớ. Cú hai cỏch được ỏp dụng:

• Sử dụng bộ đếm: trong cỏch này, cỏc processor thờm vào cấu trỳc của cỏc phần tử bảng trang một trường mới, tạm gọi là trường LRU, trường này ghi nhận thời điểm trang tương ứng được truy xuất gần đõy nhất. Và thờm vào cấu trỳc của CPU một bộ đếm (Counter). Mỗi khi cú sự truy xuất bộ nhớ thỡ Counter tăng lờn một đơn vị. Mỗi khi một trang trờn bộ nhớ được truy xuất thỡ giỏ trị của Counter sẽ được ghi vào trường LRU tại phần tử trong bảng trang tương ứng với trang này. Như vậy trang được chọn để thay thế là trang cú LRU là nhỏ nhất.

• Sử dụng Stack: trong cỏch này hệ điều hành sử dụng một Stack để lưu trữ số hiệu của cỏc trang đó được nạp vào bộ nhớ chớnh. Khi một trang được truy xuất thỡ số hiệu của trang này sẽ được xúa khỏi Stack tại vị trớ hiện tại và được đưa lờn lại đỉnh Stack. Như vậy trang cú số hiệu nằm ở đỉnh stack là trang được sử dụng gần đõy nhất, trang cú số hiệu nằm ở đỏy stack là trang lõu nay ớt được sử dụng nhất. Và trang được chọn để thay thế là cỏc trang cú số hiệu nằm ở đỏy stack.  Thuật toỏn Optinal (tối ưu)

Theo thuật toỏn này thỡ trang được hệ điều hành chọn để thay thế là trang sẽ lõu được sử dụng nhất trong tương lai. Bảng sau đõy minh hoạ cho việc chọn trang để swap out và thay thế của thuật toỏn Optinal:

2 3 2 1 5 2 4 5 3 2 5 2 Frame 1 2 2 2 2 2 2 4 4 4 2 2 2 Frame 2 3 3 3 3 3 3 3 3 3 3 3 Frame 3 1 1 5 5 5 5 5 5 5 5 F F F

Theo bảng trờn thỡ trong trường hợp này chỉ xảy ra 3 lỗi trang, khi hệ điều hành cần nạp trang 5 vào bộ nhớ thỡ nú phải đưa trang 1 ra ngoài để lấy frame3 nạp trang 5, vỡ hệ điều hành cho rằng trang 1 là trang sẽ lõu được s ử dụng trong t ương lai.

Mặc dầu thuật toỏn này ớt xảy ra lỗi trang hơn, nhưng trong thực tế khú cú thể cài đặt được vỡ hệ điều hành khú cú thể đoỏn trước được khi nào thỡ một trang được truy xuất trở lại. Thuật toỏn này khụng chiu tỏc động của nghịch lý Belady.

Chỳ ý: Cỏc tài liệu về hệ điều hành đó đưa ra rất nhiều thuật toỏn thay trang, nhưng chỳng tụi khụng trỡnh bày ở đõy, cỏc bạn cú thể tỡm đọc ở tài liệu tham khảo [1] và

[2].

Một phần của tài liệu Chương III Quản lý bộ nhớ (Trang 46 - 49)

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

(62 trang)
w