Nếu đặt toàn thể không gian địa chỉ vào bộ nhớ vật lý, thì kích thước của chương trình bị giới hạn bởi kích thước bộ nhớ vật lý.Thực tế, trong nhiều trường hợp, chúng ta không cần phải n
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHENIKAA
BÁO CÁO BÀI TẬP LỚN
BỘ NH Ớ ẢO TRONG WINDOWS
Họ và tên sinh viên: Phan Viết Anh Tuấn
Mã sinh viên: 22010282 Ngành học: Công nghệ thông tin Khóa: K16
Tên lớp: CNTT4
Hà Nội, Năm 2023
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 1
1 Tổng quan về bộ nhớ ảo trong hệ ều hành 2 đi 1.1 Các vấn đề gặp phải với hệ ống sử dụng bộ th nhớ chung 2
1.2 Bộ ớ ảonh 4
1.3 Cách ức hoạt động của bộ ớ ảoth nh 4
1.4 Ưu điểm và nhược điểm của bộ ớ ảonh 5
1.4.1 Ưu điểm 5
1.4.2 Nhược điểm 5
1.5 Cài đặt bộ nhớ ảo 6
1.5.1 Phân trang theo yêu cầu ( demand paging) 6
1.5.2 Cơ chế ần cứph ng 6
1.5.3 Lỗi trang 7
1.5.4 Phân đoạn theo yêu cầu (Segmentation Paging) 7
1.6 Thay thế trang 8
1.6.1 Thi hành phân trang theo yêu cầu 8
1.6.2 Các thuật toán thay thế trang 9
1.6.2.1 Thuật toán FIFO 9
1.6.2.2 Thuật toán tối ưu 11
1.6.2.3 Thuật toán lâu nhất chưa sử dụng (LRU) 11
1.6.2.4 Thuật toán xấp xỉ LRU 12
a) Thuật toán với các bit reference phụ trợ 13
b) Thuật toán cơ hội thứ hai 13
c) Thuật toán cơ hội thứ hai nâng cao 14
d) Các thuật toán thống kê 14
2 Bộ ớ ảo trong Windowsnh 15
2.1 Bộ ớ vật lýnh 15
2.2 Không gian địa chỉ ảo 15
2.3 Phân trang (Paging) 16
2.4 Quản lý bảng trang ( Page table management) 17
2.5 Cấu trúc đa bảng trang 18
2.6 Bảo vệ bộ nhớ 19
TÀI LIỆU THAM KHẢO 20
Trang 3LỜI NÓI ĐẦU
Bộ nhớ ảo là một kỹ thuật hiện đại giúp cho người dùng được giải phóng hoàn toàn khỏi mối bận tâm về giới hạn bộ nhớ
Nếu đặt toàn thể không gian địa chỉ vào bộ nhớ vật lý, thì kích thước của chương trình bị giới hạn bởi kích thước bộ nhớ vật lý
Thực tế, trong nhiều trường hợp, chúng ta không cần phải nạp toàn bộ chương trình vào bộ nhớ vật lý cùng một lúc, vì tại một thời điểm chỉ có một chỉ thị của tiến trình được xử lý Ví dụ, các chương trình đều có một đoạn code xử lý lỗi, nhưng đoạn code này hầu như rất ít khi được sử dụng vì hiếm khi xảy ra lỗi, trong trường hợp này, không cần thiết phải nạp đoạn code xử lý lỗi từ đầu
Từ nhận xét trên, một giải pháp được đề xuất là cho phép thực hiện một chương trình chỉ được nạp từng phần vào bộ nhớ vật lý Ý tưởng chính của giải pháp này là tại mỗi thời điểm chỉ lưu trữ trong bộ nhớ vật lý các chỉ thị và dữ liệu của chương trình cần thiết cho việc thi hành tại thời điểm đó Khi cần đến các chỉ thị khác, những chỉ thị mới sẽ được nạp vào bộ nhớ, tại vị trí trước đó bị chiếm giữ bởi các chỉ thị nay không còn cần đến nữa Với giải pháp này, một chương trình có thể lớn hơn kích thước của vùng nhớ cấp phát cho nó
Một cách để thực hiện ý tưởng của giải pháp trên đây là sử dụng kỹ thuật overlay Kỹ thuật overlay không đòi hỏi bất kỳ sự trợ giúp đặc biệt nào của
hệ điều hành , nhưng trái lại, lập trình viên phải biết cách lập trình theo cấu trúc overlay, và điều này đòi hỏi khá nhiều công sức
Để giải phóng lập trình viên khỏi các suy tư về giới hạn của bộ nhớ, mà cũng không tăng thêm khó khăn cho công việc lập trình của họ, người ta nghĩ đến các kỹ thuật tự động, cho phép xử lý một chương trình có kích thước lớn chỉ với một vùng nhớ có kích thước nhỏ Giải pháp được tìm thấy với khái niệm bộ nhớ
ảo (virtual memory).
Trang 41 Tổng quan về bộ nhớ ảo trong hệ ều hành đi
1.1 Các vấn đề gặp phải với hệ ống sử dụng bộ th nh ớ chung
Vấn đề 1: Hệ ống có bộ ớ vật lý ít hơn không gian địa chỉ của nó th nh
Ví dụ: Với hệ thống MIPS 32 bit, nó sẽ có không gian địa chỉ 4GB, có nghĩa khi các chương trình chạy trong hệ ống, chúng được quyền truy cập tới bất kì thđịa chỉ nào trong không gian địa chỉ 4GB.Vậy điều gì sẽ xảy ra khi hệ thống MIPS
32 bit có không gian địa chỉ 4GB, nhưng bộ ớ vậy lý thực tế ỉ có 1GB (30 nh chbit)?
Có hai trường hợp xảy ra, người lập trình cần phải biết hệ thống chỉ có 1GB
bộ nhớ, và sẽ viết chương trình mà không truy cập tới các địa chỉ nằm ngoài vùng 1GB Trường hợp còn lại, người lập trình không có thông tin, chương trình có thể truy cập vào vùng nhớ ngoài 1GB, và hệ ống bị crash.th
Đứng trên góc độ phát triển phần mềm, rất khó để chương trình biết được
hệ thống đang thực sự có bao nhiêu GB bộ nhớ vật lý Đặc biệt ngày nay, với việc phần mềm được phát triển độc lập và gần như không phụ thuộc vào phần cứng (game, ứng dụ …), hệ ng thống có bộ ớ sử dụng chung sẽ không đáp ứng được nhChúng ta không thể ết một chương trình cho hệ ống 1GB, một chương trình vi thkhác giống hệt như thế cho một hệ ống 2GB bộ th nhớ
Vấn đề 2: Phân mảnh bộ nh ớ chung
Giả sử, chúng ta có đầy đủ 4GB bộ ớ vật lý trong hệ ống Chúng ta có nh th
3 chương trình chạy trong hệ ống, với thứ tự bộ ớ cần thiết cho mỗi chương th nhtrình là: Chương trình A cần 1GB, chương trình B cần 2GB, chương trình C cần 2GB
Thứ tự các chương trình khi chạy trong hệ thống:
1 Chương trình A chạy, chiếm 1GB bộ ớ, hệ ống còn 3GB bộ ớ nh th nhtrống
2 Chương trình B chạy, chiếm 2GB bộ ớ, hệ nh thống còn 1GB bộ ớ nhtrống
3 Chương trình A kết thúc, giải phóng 1GB bộ ớ Hệ nh thống còn 2GB bộ nhớ trống, còn đủ cho chương trình C chạy
4 Chương trình C muốn chạy, hệ ống còn đủ 2GB bộ ớ ống, nhưng th nh tr
bộ nhớ bị phân mảnh, do đó C không thể tìm ra đủ 2GB bộ ớ ền mạch => C nh likhông thể ạy ch
Trang 5Như vậy, việc phân mảnh bộ ớ trong trong quá trình chương trình chạnh y cũng là một vấn đề đối với hệ thống dùng chung không gian địa chỉ
Vấn đề 3: Vấn đề nhiều chương trình trong hệ thống sử dụng chung bộ nhớ
Giả sử, chúng ta có chương trình A và chương trình B cùng chạ đồng thờy i trong hệ thống A thực hiện ghi giá trị 10 vào ô nhớ có địa chỉ 1024, sau đó B cũng thực hiện việc ghi giá trị 11 vào ô nhớ có địa chỉ 1024
Kết thúc quá trình trên, chương trình B đã thay đổi giá trị bộ ớ tại địa chỉ nh
1024, điều này ảnh hưởng trực tiếp thay đổi quá trình thực thi của chương trình
A Trong một hệ ống thực tế, chương trình A có thể bị ạy sai do bộ ớ bị th ch nhcorrupted hoặc thậm chí là crash
Trong một hệ ống sử dụng chung bộ ớ, tất cả các chương trình đều có th nhthể truy cập tới mọi địa chỉ trong không gian bộ ớ, dẫn đến việc hệ ống sẽ nh thkhông có cơ chế bảo vệ ệc truy cập những phần không gian bộ ớ sử dụvi nh ng chung giữa các chương trình
Vấn đề 4: Toàn bộ hệ ống có thể bị crash vì chỉ một chương trình th chạy sai
Như chúng ta thấy trong các hệ thống ngày nay, một chương trình ứng dụng chạy bị lỗi, crash, toàn bộ hệ thống vẫn có thể tiếp tục chạy một cách bình thường Tuy nhiên, với hệ ống bộ ớ sử dụng chung, chương trình ứng dụng khi chạth nh y (ví dụ game) cũng có thể truy cập vào vùng nhớ của các chương trình hệ thống (ví dụ phần vùng nhớ của hệ điều hành – kernel), điều này dẫn tới việc nếu chương trình ứng dụng đó thực thi lỗi, nó có thể gây crash cho cả hệ thống
=> Cả bốn vấn đề trên đòi hỏi cần có một phương thức quản lý bộ nhớ khác,
để đảm bảo các chương trình chạy trong hệ ống có thể th hoạt động hiệu quả, đảm bảo tính an toàn dữ liệu (tránh việc truy cập bộ nhớ lẫn nhau của các chương trình), đảm bảo tính an toàn của hệ ống (đảm bảo các chương trình hệ th thống – kernel không bị can thiệp bởi các chương trình ở tần user space)
Kết Luận: Như vậy, với một hệ thống phức tạp hơn, cần thực thi nhiều tác
vụ hơn (ví dụ như máy tính cá nhân PC), chúng ta không thể sử dụng phương thức
quản lý bộ ớ bằng cách sử dụng không gian địa chỉ chung, mapping thẳng vào nh
bộ nhớ vật lý được
Trang 6=> Bộ ớ ảo (virtual memory) nh được ra đời để giải quyết những vấn đề mà chúng ta đã đề cập
1.2 Bộ nh ớ ảo (Virtual memory)
Bộ ớ ảo là vùng không gian lưu trữ gần giống như bộ ớ vật lý nhưng nh nhlại được đặt cố định trên ổ đĩa cứng
Bộ nhớ ảo cho phép xử lý một tiến trình không được nạp toàn bộ vào bộ nhớ vật lý Bộ nhớ ảo mô hình hoá bộ nhớ như một bảng lưu trữ rất lớn và đồng nhất, tách biệt hẳn khái niệm không gian địa chỉ và không gian vật lý Người sử dụng chỉ nhìn thấy và làm việc trong không gian địa chỉ ảo, việc chuyển đổi sang không gian vật lý do hệ điều hành thực hiện với sự trợ giúp của các cơ chế phần cứng cụ thể
Ngoài ra, bộ nhớ ảo phóng đại bộ nhớ chính thành bộ nhớ luận lý cực lớn khi được hiển thị bởi người dùng Kỹ thuật này giải phóng người lập trình từ việc quan tâm đến giới hạn kích thước bộ nhớ.Bộ nhớ ảo cũng cho phép các quá trình
dễ dàng chia sẽ tập tin và không gian địa chỉ, cung cấp cơ chế hữu hiện cho quá trình
Bộ nhớ ảo sử dụng cả phần cứng và phần mềm để cho phép máy tính bù đắp sự thiếu hụt bộ nhớ vật lý, tạm thời chuyển dữ liệu từ bộ nhớ truy cập ngẫu nhiên (RAM) sang ổ lưu trữ Ánh xạ các phần bộ nhớ thành các tệp đĩa cho phép máy tính coi bộ nhớ phụ như thể nó là bộ nhớ chính
Ngày nay, hầu hết các máy tính cá nhân (PC) đều có RAM ít nhất 8 GB (gigabyte) Tuy nhiên, đôi khi, điều này không đủ để chạy một số chương trình cùng một lúc Đây là nơi có bộ nhớ ảo Bộ nhớ ảo giải phóng RAM bằng cách hoán đổi dữ liệu gần đây chưa được sử dụng sang thiết bị lưu trữ, chẳng hạn như
ổ cứng hoặc ổ cứng thể rắn (SSD).Bộ nhớ ảo rất quan trọng để cải thiện hiệu suất
hệ thống, đa nhiệm và sử dụng các chương trình lớn Tuy nhiên, bộ nhớ ảo chạy chậm hơn Ram vì vậy mà bạn không nên quá phụ thuộc vào nó Nếu hệ điều hành phải hoán đổi dữ liệu giữa bộ nhớ ảo và RAM quá thường xuyên, máy tính sẽ bắt đầu chậm lại điều này được gọi là sự cố Bộ nhớ ảo được phát triển vào thời - điểm mà bộ nhớ vật lý còn được gọi là RAM rất đắt tiền Máy tính có một - - lượng RAM hữu hạn, do đó, bộ nhớ cuối cùng sẽ cạn kiệt khi nhiều chương trình chạy cùng một lúc Hệ thống sử dụng bộ nhớ ảo sử dụng một phần của ổ cứng để
mô phỏng RAM Với bộ nhớ ảo, hệ thống có thể tải nhiều chương trình lớn hơn hoặc nhiều chương trình chạy cùng lúc, cho phép mỗi chương trình hoạt động như thể có nhiều dung lượng hơn mà không cần phải mua thêm RAM
1.3 Cách thức hoạt động của bộ nhớ ảo
Bộ nhớ ảo sử dụng cả phần cứng và phần mềm để hoạt động Khi một ứng dụng đang được sử dụng, dữ liệu từ chương trình đó được lưu trữ trong một địa chỉ vật lý sử dụng RAM Một đơn vị quản lý bộ nhớ (MMU) ánh xạ địa chỉ tới RAM và tự động dịch địa chỉ Ví dụ, MMU có thể ánh xạ một không gian địa chỉ logic đến một địa chỉ vật lý tương ứng
Trang 7Nếu, tại bất kỳ thời điểm nào, dung lượng RAM cần thiết cho việc gì đó khẩn cấp hơn, dữ liệu có thể được hoán đổi khỏi RAM và vào bộ nhớ ảo Trình quản lý bộ nhớ của máy tính chịu trách nhiệm theo dõi sự thay đổi giữa bộ nhớ vật lý và bộ nhớ ảo Nếu cần lại dữ liệu đó, MMU của máy tính sẽ sử dụng công tắc ngữ cảnh để tiếp tục thực thi
Trong khi sao chép bộ nhớ ảo vào bộ nhớ vật lý, Hệ điều hành sẽ chia bộ nhớ với một số địa chỉ cố định thành các tệp trang hoặc tệp hoán đổi Mỗi trang được lưu trữ trên một đĩa và khi cần trang, và hệ điều hành của bộ nhớ ảo sẽ sao chép nó từ đĩa vào bộ nhớ chính và chuyển các địa chỉ ảo thành các địa chỉ thực Tuy nhiên, quá trình hoán đổi bộ nhớ ảo thành bộ nhớ vật lý diễn ra khá chậm Điều này có nghĩa là sử dụng bộ nhớ ảo thường gây ra giảm hiệu suất đáng
kể Do hoán đổi, máy tính có nhiều RAM hơn được coi là có hiệu suất tốt hơn
1.4 Ưu điểm và nhược điểm của bộ nh ớ ảo
1.4.1 Ưu điểm
Những lợi thế khi sử dụng bộ ớ ảo bao gồm: nh
Xử lý gấp đôi số địa chỉ so với bộ nhớ chính
Cho phép nhiề ứng dụng được sử dụng cùng một lúcu
Giải phóng các ứng dụng khỏi việc quản lý bộ ớ dùng chung và giúp nhngười dùng không phải thêm mô-đun bộ ớ khi hết dung lượng RAMnh
Tăng tốc độ khi chỉ cần một phân đoạn của chương trình để ực thiTăng thcường bảo mật vì cách ly bộ nhớ
Cho phép nhiề ứng dụng lớn hơn chạy đồng thờiu
Cấp phát bộ nhớ tương đối rẻ
Không cần phân mảnh bên ngoài
Sử dụng CPU hiệu quả để ản lý khối lượng công việc phân vùng hợp lýqu
Dữ ệu có thể ợc di chuyển tự động và các trang trong quy trình gốc có li đư
thể được chia sẻ trong quá trình gọi hệ thống rẽ nhánh tạo ra một bản sao của chính nó
1.4.2 Nhược điểm
Có thể ấy rằng, bộ ớ ảo có rất nhiều ưu điểm, vậy nhược điểm của nó là gì? th nhCác ứng dụng chạy chậm hơn nếu chúng đang ạy từ bộ ch nhớ ảo
Dữ liệu phải được ánh xạ giữa bộ nhớ ảo và bộ nhớ vật lý, điều này yêu cầu
hỗ trợ thêm phần cứng để dịch địa chỉ, làm chậm máy tính hơn nữa
Kích thước của bộ ớ ảo bị ới hạn bởi số ợng bộ ớ ứ cấp , cũng nh gi lư nh thnhư sơ đồ định địa chỉ với hệ ống máy tính.th
Trang 8Sự cố có thể xảy ra nếu không có đủ RAM, điều này sẽ làm cho máy tính hoạt động chậm hơn
Có thể mất thời gian để chuyển đổi giữa các ứng dụng sử dụng bộ ớ ảnh o
Nó làm giảm dung lượng ổ cứng khả dụng
1.5 Cài đặt bộ nh ớ ảo
Bộ ớ ả thường được thực hiện với kỹ thuật phân trang theo yêu cầnh o u (demand paging) Cũng có thể sử dụng kỹ thuật phân đoạn theo yêu cầu ( demand segmentation) để cài đặt bộ ớ ảo, tuy nhiên việc cấp phát và thay thế các phân nhđoạn phức tạp hơn thao tác trên trang, vì kích thước không bằng nhau của các
đo n.ạ
1.5.1 Phân trang theo yêu cầu ( demand paging)
Một hệ ống phân trang theo yêu cầu là hệ ống sử dụng kỹ th th thuật phân trang kết hợp với kỹ thuật swapping Một tiến trình được xem như một tập các trang, thường trú trên bộ ớ ụ ( thường là đĩa) Khi cần xử lý, tiến trình sẽ nh ph
được nạp vào bộ ớ chính Nhưng thay vì nạp toàn bộ chương trình, chỉ những nhtrang cần thiết trong thời điểm hiện tại mới được nạp vào bộ ớ Như vậy mộnh t trang chỉ ợc nạp vào bộ ớ chính khi có yêu cầđư nh u
Với mô hình này, cần cung cấp một cơ chế ần cứng giúp phân biệt các phtrang đang ở trong bộ nhớ chính và các trang trên đĩa Có thể sử dụng lại bit valid-invalid nhưng với ngữ nghĩa mới:
-valid : trang tương ứng là hợp lệ và đang ở trong bộ ớ chínhnh-invalid : hoặc trang bất hợp lệ (không thuộc về không gian địa chỉ của tiến trình) hoặc trang hợp lệ nhưng đang được lưu trên bộ ớ nhphụ
Một phần tử trong bảng trang mộ tả cho một trang không nằm trong bộ nhớ chính, sẽ được đánh dấu invalid và chứa địa chỉ của trang trên bộ ớ nh phụ
Trang 9-Bộ ớ ụ: Bộ ớ ụ lưu trữ ững trang không được nạp vào bộ ớ nh ph nh ph nh nhchính Bộ ớ ụ thường được sử dụng là đĩa, và vùng không gian đĩa dùng để nh phlưu trữ tạm các trang trong kỹ thuậ swapping được gọi là không gian swapping.t
1.5.3 Lỗi trang
Truy xuất đến một trang được đánh dấu bất hợp lệ sẽ làm phát sinh một lỗi trang (page fault) Khi dò tìm trong bảng trang để lấy các thông tin cần thiết cho việc chuyển đổi địa chỉ, nếu nhận thấy trang đang được yêu cầu truy xuất là bất hợp lệ,
cơ chế ần cứng sẽ phát sinh một ngắt để báo cho hệ ph điều hành Hệ điều hành sẽ
xử lý lỗi trang như sau :
-Kiểm tra truy xuất đến bộ nhớ là hợp lệ hay bất hợp lệ
-Nếu truy xuất bất hợp lệ : kết thúc tiến trình, ngược lại : đến bước 3 -Tìm vị trí chứa trang muốn truy xuất trên đĩa
-Tìm một khung trang trống trong bộ ớ chính :nh
Nếu tìm thấy : đến bướ 5 c
Nếu 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ụ (lưu nội dung của trang đang chiếm giữ khung trang này lên đĩa), cập nhật bảng trang tương ứng rồi đến bước 5
-Chuyển trang muốn truy xuất từ bộ ớ ụ vào bộ ớ chính : nạp trang nh ph nhcần truy xuất vào khung trang trống đã chọn (hay vừa mới làm trống ) ; cập nhật nội dung bảng trang, bảng khung trang tương ứng
-Tái kích hoạt tiến trình người sử dụng
1.5.4 Phân đoạn theo yêu cầu (Segmentation Paging)
Dùng cơ chế phân đoạn để ản lý bộ qu nhớ
-Không gian địa chỉ ảo là một tập các đoạn, mỗi đoạn có tên và kích thước riêng
-Một địa chỉ ận lý được định vị bằng tên đoạn và độ dời (offset) lubên trong đoạn đó
Địa chỉ ận lý là một cặp giá trị <segment number, offset> lu
Bảng phân đoạn (segment table): gồm nhiều mục (item), mỗi mục gồm limit và base với:
-base: chứa địa chỉ khởi đầu của segment trong bộ nhớ
-limit: xác định kích thước của segment
Trang 10Segment-table base register (STBR): trỏ đến vị trí bảng phân đoạn trong bộ nhớ
Segment-table length register (STLR): số ợng segment của chương trìlư nh
⇒ Một chỉ số segment s là hợp lệ nếu s < STLR
1.6 Thay thế trang
Khi xảy ra một lỗi trang, cần phải mang trang vắng mặt vào bộ ớ Nếnh u không có một khung trang nào trống, hệ ều hành cần thực hiện công việc thay đithế trang – ọn một trang đang nằ trong bộ ớ mà không được sử dụng tạch m nh i thời điểm hiện tại và chuyển nó ra không gian swapping trên đĩa để ải phóng gimột khung trang dành chỗ nạp trang cần truy xuất vào bộ nhớ
Như vậy nếu không có khung trang trống, thì mỗi khi xảy ra lỗi trang cần phải thực hiện hai thao tác chuyển trang : chuyển một trang ra bộ nh phớ ụ và nạp một trang khác vào bộ nhớ chính Có thể ảm bớt số lần chuyển trang bằng cách gi
sử dụng thêm một bit cập nhật (dirty bit) Bit này được gắn với mỗi trang để phản ánh tình trạng trang có bị cập nhật hay không : giá trị của bit được cơ chế phần cứng đặt là 1 mỗi lần có một từ được ghi vào trang, để ghi nhận nội dung trang có
bị sửa đổi Khi cần thay thế một trang, nếu bit cập nhật có giá trị là 1 thì trang cần được lưu lại trên đĩa, ngược lại, nếu bit cập nhật là 0, nghĩa là trang không bị thay đổi, thì không cần lưu trữ trang trở lại đĩa
Sự thay thế trang là cần thiết cho kỹ thuật phân trang theo yêu cầu Nhờ cơ chế này, hệ ống có thể hoàn toàn tách rời bộ ớ ảo và bộ ớ vật lý, cung cấth nh nh p cho lập trình viên một bộ ớ ảo rất lớn trên một bộ ớ vật lý có thể bé hơn rấnh nh t nhiều lần
1.6.1 Thi hành phân trang theo yêu cầu
Việc áp dụng kỹ thuật phân trang theo yêu cầu có thể ảnh hưởng mạnh đến tình hình hoạt động của hệ thống
Giả sử p là xác suất xảy ra một lỗi trang (0 ≤ p ≤ 1):
-p = 0 : không có lỗi trang nào
-p = 1 : mỗi truy xuất sẽ phát sinh một lỗi trang
Thời gian thật sự cần để ực hiện một truy xuất bộ th nhớ (TEA) là: TEA = (1-p)ma + p (tdp) [+ swap out ] + swap in + tái kích hoạt
Trang 11Trong công thức này, ma là thời gian truy xuất bộ ớ, tdp thời gian xử nh lý lỗi trang
Có thể ấy rằng, để duy trì ở một mức độ ấp nhận được sự ậm trễ th ch chtrong hoạt động của hệ ống do phân trang, cần phải duy trì tỷ lệ phát sinh lỗth i trang thấp
Hơn nữa, để cài đặt kỹ thuật phân trang theo yêu cầu, cần phải giải quyết hai vấn đề chính yếu : xây dựng một thuật toán cấp phát khung trang, và thuật toán thay thế trang
1.6.2 Các thuật toán thay thế trang
Vấn đề chính khi thay thế trang là chọn lựa một trang « nạn nhân » để chuyển ra bộ nhớ phụ Có nhiều thuật toán thay thế trang khác nhau, nhưng tất cả cùng chung một mục tiêu : chọn trang « nạn nhân » là trang mà sau khi thay thế
sẽ gây ra ít lỗi trang nhất
Có thể đánh giá hiệu qủa của một thuật toán bằng cách xử lý trên một chuỗi các địa chỉ cần truy xuất và tính toán số lượng lỗi trang phát sinh
Ví dụ: Giả sữ theo vết xử lý của một tiến trình và nhận thấy tiến trình thực hiện truy xuất các địa chỉ theo thứ tự sau : 0100, 0432, 0101, 0162, 0102, 0103,
Để minh hoạ các thuật toán thay thế trang sẽ trình bày, chuỗi truy xuất được
sử dụng là : 7, , , 0 1 2 0, 3 0 4 2 3 0 3, , , , , , , , , 2 , , , , , , 1 1 2 0 1 7 0
1.6.2.1 Thuật toán FIFO
Tiếp cận: Ghi nhận thời điểm một trang được mang vào bộ ớ chính Khi nhcần thay thế trang, trang ở trong bộ nhớ lâu nhất sẽ ợc chọđư n
Ví dụ : sử dụng 3 khung trang , ban đầu cả 3 đều trống :