- Độ ưu tiờn của cỏc tiến trỡnh là (5 là độ ưu tiờn cao nhất): 1 1 2 4
3.3.2. Kỹ thuật bộ nhớ ảo
Hệ điều hành cú thể cài đặt bộ nhớ ảo theo 2 kỹ thuật: - Phõn trang theo yờu cầu: phõn trang kết hợp với swap. - Phõn đoạn theo yờu cầu: phõn đoạn kết hợp với swap.
Cả hai kỹ thuật trờn đều phải cú sự hỗ trợ của phần cứng mỏy tớnh, cụ thể là processor. Đa số cỏc HĐH đều chọn kỹ thuật phõn trang theo yờu cầu, vỡ nú đơn giản, dễ cài đặt và chi phớ thấp hơn.
3.3.2.1. Sự phõn trang theo yờu cầu (Demand paging)
Trong kỹ thuật phõn trang đơn, mỗi tiến trỡnh sở hữu một bảng trang riờng, khi tất cả cỏc trang của tiến trỡnh được nạp vào BN chớnh thỡ bảng trang của tiến trỡnh được tạo ra và cũng được nạp vào BN (nếu lớn), mỗi phần tử trong bảng trang chỉ chứa số hiệu của khung trang mà trang tương ứng được nạp vào. Trong kỹ thuật BN ảo cũng vậy, nhưng một phần tử trong bảng trang sẽ chứa nhiều thụng tin phức tạp hơn. Bởi vỡ trong kỹ thuật BN ảo chỉ những trang cần thiết trong thời điểm hiện tại mới được nạp vào BN chớnh. Như vậy, một trang chỉ được nạp khi BN chớnh cú yờu cầu. Do đú cần phải cú một bớt để
cho biết một page tương ứng của tiến trỡnh là cú hay khụng trờn BN chớnh và một bớt cho biết page cú bị thay đổi hay khụng so với lần nạp gần đõy nhất. Cụ thể là nú phải cú thờm cỏc bớt điều khiển:
Virtual Address
Page Number Offset
Cỏc bớt điều khiển khỏc Frame Number
Hỡnh Một phần tử trong bảng trang
- Bớt P (Present): Cho biết trang tương ứng đang ở trờn BN chớnh (1) hay ở trờn bộ nhớ phụ (0).
- Bớt M (Modify): Cho biết nội dung của trang tương ứng cú bị thay đổi hay khụng so với lần nạp gần đõy nhất. Nếu nú khụng bị thay đổi thỡ việc phải ghi lại nội dung của một trang khi cần phải đưa một trang ra lại BN ngoài là khụng cần thiết, điều này giỳp tăng tốc độ trong cỏc thao tỏc thay thế trang trong khung trang.
- Cỏc bớt điều khiển khỏc: Cỏc bớt này phục vụ cho cỏc mục đớch bảo vệ trang và chia sẻ cỏc khung trang.
Chuyển đổi địa chỉ trong hệ thống phõn trang
Chương trỡnh của người sử dụng sử dụng địa chỉ logic hoặc virtual gồm: page number và offset để truy xuất dữ liệu trờn BN chớnh. Bộ phận quản lý BN phải chuyển địa chỉ virtual này thành địa chỉ vật lý tương ứng bao gồm: page number và offset. Để thực hiện việc này bộ phận quản lý BN phải dựa vào bảng trang (PCT).
Cấu trỳc bảng trang cho phộp phản ỏnh tỡnh trạng của một trang là đang nằm tại BN chớnh hay BN phụ. BN phụ lưu trữ cỏc trang khụng được nạp vào BN chớnh, thường là cỏc đĩa nhớ. Vựng khụng gian đĩa dựng để lưu trữ tạm cỏc trang trong kỹ thuật swapping được gọi là khụng gian swapping.
Vỡ kớch thước của PCT cú thể lớn và thay đổi theo kớch thước của tiến trỡnh do đú trong kỹ thuật BN ảo HĐH thường chứa PCT trong bộ nhớ chớnh và dựng một thanh ghi để ghi địa chỉ bắt đầu của bộ nhớ nơi lưu trữ PCT của tiến trỡnh khi tiến trỡnh được nạp vào bộ nhớ chớnh để chạy.
Đa số cỏc HĐH đều thiết kế một bảng trang riờng cho mỗi tiến trỡnh. Nhưng mỗi tiến trỡnh cú thể chiếm giữ một khụng gian lớn BN ảo, trong trường hợp này bảng trang rất lớn và hệ thống phải tốn khụng gian BN để chứa nú. Vớ dụ, nếu một tiến trỡnh cú đến 231 = 2GB bộ nhớ ảo, mỗi trang cú kớch thước 29 = 512 byte, thỡ tiến trỡnh này phải cần đến 222 phần tử trong bảng trang. Để khắc phục vấn đề này, trong cỏc kỹ thuật BN ảo hệ thống lưu trữ bảng trang trong BN ảo chứ khụng lưu trữ trong BN thực, và bản thõn bảng trang cũng phải được phõn trang. Khi tiến trỡnh thực hiện, chỉ cú một phần của bảng trang được nạp vào BN chớnh, đõy là phần chứa cỏc phần tử của cỏc trang đang thực hiện tại thời điểm hiện tại.
Kớch thước của trang:
Kớch thước của một trang do phần cứng quy định, đõy là một trong những quyết định quan trọng trong việc thiết kế processor. Nếu kớch thước của trang nhỏ thỡ sự phõn mảnh bờn trong sẽ nhỏ hơn, việc sử dụng BN chớnh sẽ được hiệu quả hơn. Nhưng nếu 72
kớch thước trang nhỏ thỡ số lượng trang trờn một tiến trỡnh sẽ lớn hơn, bảng trang của tiến trỡnh sẽ lớn, sẽ chiếm nhiều BN hơn, và như thế việc sử dụng BN chớnh sẽ kộm hiệu quả hơn. Cỏc vi xử lý họ Intel 486 và họ Motorola 68040 chọn kớch thước của một trang là 4096 byte.
Ngoài ra kớch thước của trang cũn ảnh hưởng đến tỉ lệ xảy ra lỗi trang. Vớ dụ: khi kớch thước của trang là rất nhỏ thỡ sẽ cú một lượng lớn cỏc trang của tiến trỡnh trờn BNchớnh, sau một thời gian thỡ tất cả cỏc trang của BN sẽ chứa cỏc tiến trỡnh được tham chiếu gần đõy, vỡ thế tốc độ xảy ra lỗi trang được giảm xuống.
Lỗi trang (page fault)
Trong mụ hỡnh BN ảo khi cần truy xuất đến một page của tiến trỡnh thỡ trước hết hệ thống phải kiểm tra bớt present tại phần tử tương ứng với page cần truy xuất trong PCT, để biết được page cần truy xuất đó được nạp vào BN hay chưa. Trường hợp hệ thống cần truy xuất đến một page của tiến trỡnh mà page đú đó được nạp vào BN chớnh, được gọi là truy xuất hợp lệ (v: valid). Trường hợp hệ thống cần truy xuất đến một page của tiến trỡnh mà page đú chưa được nạp vào BN chớnh, được gọi là truy xuất bất hợp lệ (i: invalid). Khi hệ thống truy xuất đến một trang của tiến trỡnh mà trang đú khụng thuộc phạm vi khụng gian địa chỉ của tiến trỡnh cũng được gọi là truy xuất bất hợp lệ.
Khi hệ thống truy xuất đến một page được đỏnh dấu là bất hợp lệ thỡ sẽ phỏt sinh một lỗi trang. Như vậy lỗi trang là hiện tượng hệ thống cần truy xuất đến một page của tiến trỡnh mà trang này chưa được nạp vào BN, hay khụng thuộc khụng gian địa chỉ của tiến trỡnh. Ở đõy ta chỉ xột lỗi trang của trường hợp: Page cần truy xuất chưa được nạp vào BN chớnh.
Khi nhận được tớn hiệu lỗi trang, HĐH phải tạm dừng tiến trỡnh hiện tại để tiến hành việc xử lý lỗi trang. Khi xử lý lỗi trang HĐH cú thể gặp một trong hai tỡnh huống sau:
a- Hệ thống cũn frame trống: Hệ điều hành sẽ thực hiện cỏc bước sau: 1. Tỡm vị trớ của page cần truy xuất trờn đĩa.
2. Nạp page vừa tỡm thấy vào BN chớnh.
3. Cập nhật lại bảng trang (PCT) tiến trỡnh.
4. Tỏi kớch hoạt tiến trỡnh để tiến trỡnh tiếp tục hoạt động. b- Hệ thống khụng cũn frame trống:
1. Tỡm vị trớ của page cần truy xuất trờn đĩa.
2. Tỡm một page khụng hoạt động hoặc khụng thực sự cần thiết tại thời điểm hiện tại để swap out nú ra đĩa, lấy frame trống đú để nạp page mà hệ thống vừa cần truy xuất. Page bị swap out sẽ được HĐH swap in trở lại BN tại một thời điểm thớch hợp sau này.
3. Cập nhật PCT của tiến trỡnh cú page vừa bị swap out.
4. Nạp trang vừa tỡm thấy ở trờn (bước 1) vào frame trống ở trờn (bước 2). 5. Cập nhật lại bảng trang (PCT) của tiến trỡnh.
6. Tỏi kớch hoạt tiến trỡnh để tiến trỡnh tiếp tục hoạt động.
Xử lý lỗi trang là một trong những nhiệm vụ quan trọng và phức tạp của hệ thống và HĐH. Để xử lý lỗi trang hệ thống phải tạm dừng cỏc thao tỏc hiện tại, trong trường
hợp này hệ thống phải lưu lại cỏc thụng tin cần thiết như: con trỏ lệnh, nội dung của cỏc thanh ghi, cỏc khụng gian địa chỉ bộ nhớ…, cỏc thụng tin này là cơ sở để hệ thống tỏi kớch hoạt tiến trỡnh bị tạm dừng trước đú khi nú đó hoàn thành việc xử lý lỗi trang.
Khi xử lý lỗi trang, trong trường hợp hệ thống khụng cũn frame trống HĐH phải chỳ ý đến cỏc vấn đề sau:
Nờn chọn page nào trong số cỏc page trờn bộ nhớ chớnh để swap out: cú thể chọn page của tiến trỡnh xảy ra lỗi trang để thay thế (thay thế cục bộ), hoặc chọn page của tiến trỡnh khỏc để thay thế (thay thế toàn cục). Nếu chọn page của tiến trỡnh xảy ra lỗi trang thỡ sẽ đơn giản hơn với HĐH và khụng ảnh hưởng đến cỏc tiến trỡnh khỏc, nhưng cỏch này cú thể làm cho tiến trỡnh hiện tại lại tiếp tục xảy ra lỗi trang ngay sau khi HĐH vừa xử lý lỗi trang cho nú, vỡ page mà HĐH vừa chọn để đưa ra (swap out) lại là page cần truy xuất ở thời điểm tiếp theo. Nếu chọn page của tiến trỡnh khỏc thỡ tiến trỡnh hiện tại sẽ ớt cú nguy cơ xảy ra lỗi trang ngay sau đú hơn, nhưng cỏch này sẽ phức tạp hơn cho HĐH, vỡ HĐH phải kiểm soỏt lỗi trang của nhiều tiến trỡnh khỏc trong hệ thống, và HĐH khú cú thể dự đoỏn được nguy cơ xảy ra lỗi trang của cỏc tiến trỡnh trong hệ thống. Trong trường hợp này cú thể lỗi trang sẽ lan truyền đến nhiều tiến trỡnh khỏc trong hệ thống, khi đú việc xử lý lỗi trang của HĐH sẽ phức tạp hơn rất nhiều. Đa số cỏc HĐH đều chọn cỏch thứ nhất vỡ nú đơn giản và khụng ảnh hưởng đến cỏc tiến trỡnh khỏc trong hệ thống.
“Neo” một số page: Trờn BN chớnh tồn tại cỏc page của cỏc tiến trỡnh đặc biệt quan trọng đối với hệ thống, nếu cỏc tiến trỡnh này bị tạm dừng thỡ sẽ ảnh hưởng rất lớn đến hệ thống và cú thể làm cho hệ thống ngừng hoạt động, nờn HĐH khụng được đưa cỏc page này ra đĩa trong bất kỳ trường hợp nào. Để trỏnh cỏc thuật toỏn thay trang chọn cỏc page này HĐH tổ chức đỏnh dấu cỏc page này, bằng cỏch đưa thờm một bớt mới vào cỏc phần tử trong cỏc PCT, bớt này được gọi là bớt neo. Như vậy cỏc thuật toỏn thay trang sẽ khụng xem xột đến cỏc page được đỏnh dấu neo khi cần phải đưa một trang nào đú ra đĩa.
Phải trỏnh được trường hợp hệ thống xảy ra hiện tượng “trỡ trệ hệ thống”:
Trỡ trệ hệ thống là hiện tượng mà hệ thống luụn ở trong tỡnh trạng xử lý lỗi trang, tức là đa phần thời gian xử lý của processor đều dành cho việc xử lý lỗi trang của HĐH. Hiện tượng này cú thể được mụ tả như sau: khi xử lý lỗi trang trong trường hợp trờn BN chớnh khụng cũn frame trống, HĐH phải chọn một page nào đú, vớ dụ P3, để swap out nú, để lấy frame trống đú, để nạp page vừa cú yờu cầu nạp, để khắc phục lỗi trang. Nhưng khi vừa khắc phục lỗi trang này thỡ hệ thống lại xảy ra lỗi trang mới do hệ thống cần truy xuất dữ liệu ở trang P3, HĐH lại phải khắc phục lỗi trang này, và HĐH phải swap out một page nào đú, vớ dụ P5. Nhưng ngay sau đú hệ thống lại xảy ra lỗi trang mới do khụng tỡm thấy page P5 trờn BN chớnh và HĐH lại phải xử lý lỗi trang, và cứ như thế cú thể HĐH phải kộo dài việc xử lý lỗi trang mà khụng thể kết thỳc được. Trong trường hợp này ta núi rằng: hệ thống đó rơi vào tỡnh trạng “trỡ trệ hệ thống”. Như vậy hệ thống cú thể xảy ra hiện tượng “trỡ trệ hệ thống” khi: trờn BN khụng cũn frame trống, page mà thuật toỏn thay trang chọn để swap out là một page khụng được “tốt”, xột về khớa cạnh dự bỏo lỗi trang của hệ điều hành.
Đỏnh dấu cỏc trang bị thay đổi: Khi xử lý lỗi trang, HĐH thường phải thực hiện thao tỏc swap out, mang một page của một tiến trỡnh tại một khung trang nào đú ra lưu tạm trờn đĩa cứng, tại khụng gian swap. Hệ điều hành phải tốn thời gian cho thao tỏc swap out, điều này sẽ làm giảm tốc độ của hệ thống và cú thể gõy lóng phớ thời gian xử lý của processor. Hệ điều hành cú thể hạn chế được điều này bằng cỏch: khụng phải lỳc nào hệ điều hành cũng thực hiện swap out một page để lấy khung trang trống mà hệ điều hành chỉ thực sự swap out một page khi page đú đó bị thay đổi kể từ lần nú được nạp vào bộ nhớ gần đõy nhất. Khi đó quyết định swap out một page để lấy khung trang trống để nạp một page mới vào BN, mà page cần swap này khụng bị thay đổi kể từ lần nạp gần đõy nhất, HĐH sẽ khụng swap out nú mà HĐH chỉ nạp page mới vào BN và ghi đố lờn nú, điều này cú nghĩa là HĐH đó tiết kiện được thời gian swap out một page tiến trỡnh ra đĩa. Để làm được điều này HĐH phải giải quyết hai vấn đề sau: Thứ nhất, làm thế nào để xỏc định được một page là đó bị thay đổi hay chưa kể từ lần nạp vào BN gần đõy nhất. Thứ hai, nếu khụng swap out một page thỡ khi cần HĐH sẽ swap in nú từ đõu.
Đối với vấn đề thứ nhất: HĐH chỉ cần thờm một bớt, bớt modify chẳng hạn, vào phần tử trong bảng trang. Khi một page vừa được nạp vào BN thỡ bit modify bằng 0, nếu sau đú nội dung của page bị thay đổi thỡ bớt modify được đổi thành 1. Hệ điều hành sẽ dựa vào bớt modify này để biết được một page cú bị thay đổi hay khụng kể từ lần nạp vào bộ nhớ gần đõy nhất.
Đối với vấn đề thứ hai: HĐH cú thể swap in một page tại vớ trớ ban đầu của nú trờn đĩa, hoặc tại khụng gian swap của nú. Trong một số HĐH khi một tiến trỡnh được tạo thỡ lập tức HĐH sẽ cấp cho nú một khụng gian swap trờn đĩa, bất kỳ khi nào tiến trỡnh bị swap out nú đều được swap đến khụng gian swap của nú, khi tiến trỡnh kết thỳc thỡ khụng gian swap của nú sẽ được giải phúng. Như vậy để chuẩn bị cho việc swap in sau này, khi nạp một page của tiến trỡnh vào bộ nhớ HĐH sẽ ghi nội dung của page này vào khụng gian swap của nú.
Cỏc thuật toỏn thay trang
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ĐH phải tỡm một page nào đú trờn BN 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ĐH 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ĐH đó đưa vào sử dụng cỏc thuật toỏn thay trang cụ thể như: Optimal, 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”.
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 BN. 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ĐH cần phải nạp một danh sỏch cỏc trang sau đõy vào BN: 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ĐH phải xử lý lỗi trang khi trờn BN 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ĐH chọn để swap out là trang được đưa vào BN sớm nhất, hay ở trong BN lõu nhất.