1 CÁC VẤN ĐỀ PHÁT SINH KHI QUẢN LÝ BỘ NHỚ + Chuyển đổi địa chỉ tương đối trong chương trình thành địa chỉ thực trong bộ nhớ chính. + Quản lý bộ nhớ đã cấp phát và chưa cấp phát. + Các kỹ thuật cấp phát bộ nhớ sao cho: Ngăn chặn các tiến trình xâm phạm đến vùng nhớ đã được cấp phát cho tiến trình khác. Cho phép nhiều tiến trình có thể dùng chung một phần bộ nhớ của nhau. Mở rộng bộ nhớ để có thể lưu trữ được nhiều tiến trình đồng thời. 1.1 Chuyển đổi địa chỉ tương đối sang tuyệt đối Các địa chỉ trong chương trình thực thi (dạng exe) là địa chỉ tương đối, và cần được chuyển đổi các địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính. Việc chuyển đổi có thể xảy ra vào một trong những thời điểm sau: + Thời điểm biên dịch (compile time): Nếu tại thời điểm biên dịch, có thể biết vị trí mà tiến trình sẽ được nạp vào trong bộ nhớ, trình biên dịch có thể phát sinh ngay mã với các địa chỉ tuyệt đối. Tuy nhiên, nếu về sau có sự thay đổi vị trí của chương trình, cần phải biên dịch lại chương trình. Ví dụ các chương trình .com chạy trên hệ điều hành MSDOS có mã tuyệt đối ngay khi biên dịch. + Thời điểm nạp (load time): Nếu tại thời điểm biên dịch, chưa thể biết vị trí mà tiến trình sẽ được nạp vào trong bộ nhớ, trình biên dịch chỉ phát sinh mã tương đối. Khi nạp chương trình vào bộ nhớ, hệ điều hành sẽ chuyển các địa chỉ tương đối thành địa chỉ tuyệt đối do đã biết vị trí bắt đầu lưu trữ tiến trình. Khi có sự thay đổi vị trí lưu trữ, cần nạp lại chương trình để thực hiện lại việc chuyển đổi địa chỉ, không cần biên dịch lại chương trình. + Thời điểm xử lý (execution time): Nếu có nhu cầu di chuyển tiến trình từ vùng nhớ này sang vùng nhớ khác trong quá trình tiến trình xử lý, thì việc chuyển đổi địa chỉ sẽ được thực hiện vào lúc tiến trình thực thi. Chức năng chuyển đổi địa chỉ do phần cứng cung cấp gọi là MMU (memory management unit). Các hệ điều hành thường dùng việc chuyển đổi theo cách này.
Trang 1TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-BÀI TẬP LỚN
MÔN : KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Giảng viên hướng dẫn:
Sinh viên thực hiện:
Lớp:
Đề tài: Tình bày cơ chế hoạt động của hệ điều hành window đảm bảo mọi tiến trình hoạt dộng có đủ bộ nhớ để hoạt dộng
Hà Nội - 2023
Trang 21 CÁC VẤN ĐỀ PHÁT SINH KHI QUẢN LÝ BỘ NHỚ
+ Chuyển đổi địa chỉ tương đối trong chương trình thành địa chỉ thực trong bộ nhớ chính
+ Quản lý bộ nhớ đã cấp phát và chưa cấp phát
+ Các kỹ thuật cấp phát bộ nhớ sao cho:
- Ngăn chặn các tiến trình xâm phạm đến vùng nhớ đã được cấp phát cho tiến trình khác
- Cho phép nhiều tiến trình có thể dùng chung một phần bộ nhớ của nhau
- Mở rộng bộ nhớ để có thể lưu trữ được nhiều tiến trình đồng thời
1.1 Chuyển đổi địa chỉ tương đối sang tuyệt đối
Các địa chỉ trong chương trình thực thi (dạng exe) là địa chỉ tương đối, và cần được chuyển đổicác địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính Việc chuyển đổi có thể xảy ra vàomột trong những thời điểm sau:
+ Thời điểm biên dịch (compile time):
Nếu tại thời điểm biên dịch, có thể biết vị trí mà tiến trình sẽ được nạp vào trong bộ nhớ, trìnhbiên dịch có thể phát sinh ngay mã với các địa chỉ tuyệt đối Tuy nhiên, nếu về sau có sự thay đổi
vị trí của chương trình, cần phải biên dịch lại chương trình Ví dụ các chương trình com chạytrên hệ điều hành MS-DOS có mã tuyệt đối ngay khi biên dịch
+ Thời điểm nạp (load time):
Nếu tại thời điểm biên dịch, chưa thể biết vị trí mà tiến trình sẽ được nạp vào trong bộ nhớ, trìnhbiên dịch chỉ phát sinh mã tương đối Khi nạp chương trình vào bộ nhớ, hệ điều hành sẽ chuyểncác địa chỉ tương đối thành địa chỉ tuyệt đối do đã biết vị trí bắt đầu lưu trữ tiến trình Khi có sựthay đổi vị trí lưu trữ, cần nạp lại chương trình để thực hiện lại việc chuyển đổi địa chỉ, không cầnbiên dịch lại chương trình
+ Thời điểm xử lý (execution time):
Nếu có nhu cầu di chuyển tiến trình từ vùng nhớ này sang vùng nhớ khác trong quá trình tiến trình
xử lý, thì việc chuyển đổi địa chỉ sẽ được thực hiện vào lúc tiến trình thực thi Chức năng chuyểnđổi địa chỉ do phần cứng cung cấp gọi là MMU (memory management unit) Các hệ điều hànhthường dùng việc chuyển đổi theo cách này
1.2 Không gian địa chỉ ảo và không gian địa chỉ vật lý
+ Địa chỉ ảo (địa chỉ logic): là địa chỉ do bộ xử lý (CPU) tạo ra.
+ Địa chỉ vật lý (địa chỉ physic): là địa chỉ thực trong bộ nhớ chính, địa chỉ vật lý còn gọi là địa
chỉ tuyệt đối/địa chỉ thực
+ Không gian địa chỉ ảo của tiến trình: là tập hợp tất cả các địa chỉ ảo của một tiến trình.
+ Không gian điạ chỉ vật lý của tiến trình: là tập hợp tất cả các địa chỉ vật lý tương ứng với các
địa chỉ ảo
Khi chương trình nạp vào bộ nhớ các địa chỉ tương đối trong chương trình được CPU chuyển
Trang 3thành địa chỉ ảo, khi thực thi, địa chỉ ảo được hệ điều hành kết hợp với phần cứng MMU chuyểnthành địa chỉ vật lý Tóm lại chỉ có khái niệm địa chỉ ảo nếu việc chuyển đổi địa chỉ xảy ra vàothời điểm xử lý, khi đó tiến trình chỉ thao tác trên các địa chỉ ảo, địa chỉ vật lý chỉ được xác địnhkhi thực hiện truy xuất bộ nhớ vật lý.
Hình 1: CPU gởi địa chỉ ảo tới MMU, MMU chuyển địa chỉ ảo thành địa chỉ vật lý
1.3 Quản lý bộ nhớ đã cấp phát và chưa cấp phát
Hệ điều hành cần lưu trữ thông tin về phần bộ nhớ đã cấp phát và phần bộ nhớ chưa cấp phát Nếu
đã cấp phát thì cấp cho tiến trình nào Khi cần cấp phát bộ nhớ cho một tiến trình thì làm sao tìmđược phần bộ nhớ trống thích hợp nhanh chóng và khi bộ nhớ bị phân mảnh thì cần dồn bộ nhớlại để tận dụng bộ nhớ và để tiến trình thực thi nhanh hơn
1.3.1.1Các phương pháp quản lý việc cấp phát bộ nhớ:
a/ Sử dụng dãy bit : bít thứ i bằng 1 là khối thứ i đã cấp phát, bằng 0 là chưa cấp phát.
b/ Sử dụng danh sách liên kết: mỗi nút của danh sách liên kết lưu thông tin một vùng nhớ chứa
tiến trình (P) hay vùng nhớ trống giữa hai tiến trình (H)
Hình 2: quản lý việc cấp phát bộ nhớ bằng dãy bit hoặc danh sách liên kết
Trang 4Trước khi tiến trình X kết thúc, có 4 trường hợp có thể xảy ra và khi tiến trình X kết thúc, hệ điềuhành cần gom những nút trống gần nhau.
Hình 3: các trường hợp có thể xảy ra trước khi tiến trình X kết thúc
1.3.2 Các thuật toán chọn một đoạn trống:
+ First-fit: chọn đoạn trống đầu tiên đủ lớn.
+ Best-fit: chọn đoạn trống nhỏ nhất nhưng đủ lớn để thỏa mãn nhu cầu.
+ Worst-fit : chọn đoạn trống lớn nhất.
2 CÁC MÔ HÌNH CẤP PHÁT BỘ NHỚ
Có hai mô hình dùng để cấp phát bộ nhớ cho một tiến trình là:
+ Cấp phát liên tục: tiến trình được nạp vào một vùng nhớ liên tục
+ Cấp phát không liên tục: tiến trình được nạp vào một vùng nhớ không liên tục
địa chỉ tuyệt đối = địa chỉ bắt đầu nạp tiến trình + địa chỉ tương đối
Ví dụ: xét chương trình P.EXE có lệnh Jump 0X200, Giả sử chương trình được nạp tại địa chỉ0X300, khi đó địa chỉ tương đối 0X200 sẽ được chuyển thành địa chỉ vật lý là0X300+0X200=0X500
Chương trình khi nạp vào bộ nhớ cho thực thi thì gọi là tiến trình, vậy trường hợp này các địa chỉ trong tiến trình là địa chỉ tuyệt đối, còn địa chỉ trong chương trình là địa chỉ tương đối
Trang 52.1.2 Mô hình Base & Limit
Giống như mô hình Linker-Loader nhưng phần cứng cần cung cấp hai thanh ghi, một thanh ghinền (base register) và một thanh ghi giới hạn (limit register) Khi một tiến trình được cấp phátvùng nhớ, hệ điều hành cất vào thanh ghi nền địa chỉ bắt đầu của vùng nhớ cấp phát cho tiến trình,
và cất vào thanh ghi giới hạn kích thước của tiến trình
Hình 5: một ví dụ về mô hình base & limitKhi tiến trình thực thi, mỗi địa chỉ ảo (địa chỉ ảo cũng chính là địa chỉ tương đối) sẽ được MMU
so sánh với thanh ghi giới hạn để bảo đảm tiến trình không truy xuất ngoài phạm vi vùng nhớ
Trang 6được cấp cho nó Sau đó địa chỉ ảo được cộng với giá trị trong thanh ghi nền để cho ra địa chỉtuyệt đối trong bộ nhớ.
Hình 6: cơ chế MMU trong mô hình base&limit
Nhận xét:
+ Có thể di chuyển các chương trình trong bộ nhớ vì do tiến trình được nạp ở dạng địa chỉ ảo, khitiến trình được di chuyển đến một vị trí mới, hệ điều hành chỉ cần nạp lại giá trị cho thanh ghinền, và việc chuyển đổi địa chỉ được MMU thực hiện vào thời điểm xử lý
+ Có thể có hiện tượng phân mảnh ngoại vi (external fragmentation ): tổng vùng nhớ trống đủ đểthoả mãn yêu cầu, nhưng các vùng nhớ này lại không liên tục nên không đủ để cấp cho một tiếntrình khác Có thể áp dụng kỹ thuật “dồn bộ nhớ “ (memory compaction ) để kết hợp các mảnh bộnhớ nhỏ rời rạc thành một vùng nhớ lớn liên tục, tuy nhiên kỹ thuật này đòi hỏi nhiều thời gian xử
lý Ví dụ về sự phân mảnh ngoại vi của bộ nhớ, các tiến trình liên tục vào ra bộ nhớ, sau một thờigian sẽ để lại các vùng nhớ nhỏ mà không thể chứa bất kỳ tiến trình nào
* Vấn đề nảy sinh khi kích thước của tiến trình tăng trưởng trong qúa trình
xử lý mà không còn vùng nhớ trống gần kề để mở rộng vùng nhớ cho tiến trình Có hai cách giải quyết:
+ Dời chỗ tiến trình: di chuyển tiến trình đến một vùng nhớ khác đủ lớn để thỏa mãn nhu cầu
tăng trưởng của tiến trình
+ Cấp phát dư vùng nhớ cho tiến trình : cấp phát dự phòng cho tiến trình một vùng nhớ lớn hơn
yêu cầu ban đầu của tiến trình
Trang 7Hình 8: dành chỗ trống để tiến trình có thể phát triển trong mô hình cấp phát liên tục
+ Tiến trình luôn được lưu trữ trong bộ nhớ suốt quá trình xử lý của nó nên tính đa chương của hệđiều hành sẽ bị hạn chế bởi kích thước bộ nhớ và kích thước của các tiến trình trong bộ nhớ Cáchgiải quyết là khi tiến trình bị khóa (đợi tài nguyên, đợi một sự kiện,…) hoặc tiến trình sử dụng hếtthời gian CPU dành cho nó, nó có thể được chuyển tạm thời ra bộ nhớ phụ (đĩa,…) và sau nàyđược nạp trở lại vào bộ nhớ chính để tiếp tục xử lý (kỹ thuật swapping)
Để tránh tình trạng bộ nhớ bị phân mảnh vì do phải cấp phát một vùng nhớ liên tục cho tiến trình,
hệ điều hành có thể cấp phát cho tiến trình những vùng nhớ tự do bất kỳ, không cần liên tục
2.2 Mô hình cấp phát không liên tục
Có ba mô hình cấp phát bộ nhớ không liên tục là mô hình phân đoạn, mô hình phân trang và môhình phân đoạn kết hợp phân trang
2.2.1 Mô hình phân đoạn (Segmentation)
Một chương trình được người lập trình chia thành nhiều phân đoạn, mỗi phân đoạn có ngữ nghĩa khác nhau và hệ điều hành có thể nạp các phân đọan vào bộ nhớ tại các vị trí không liên tục
Ví dụ: chương trình chia làm 5 phân đoạn (segment), mỗi phân đoạn được nạp vào vùng nhớ trống có thể không liên tục
Trang 8Hình 9: mô hình phân đoạn trong kỹ thuật cấp phát bộ nhớ không liên tục
* Cơ chế MMU trong kỹ thuật phân đoạn:
Khi chương trình được nạp vào bộ nhớ, MMU ghi các vị trí lưu trữ và kích thước các phân đoạnvào bảng phân đoạn còn CPU làm nhiệm vụ chuyển đổi tất cả các địa chỉ tương đối trong chươngtrình thành địa chỉ ảo
Phần tử thứ s trong bảng phân đoạn gồm hai phần (base, limit), base là địa chỉ vật lý bắt đầu phânđoạn s, limit là chiều dài của phân đoạn s Mỗi địa chỉ ảo gồm hai phần (s,d) với s là số hiệu phânđoạn , d là địa chỉ tương đối trong phân đoạn s
Để chuyển địa chỉ ảo (s,d) thành địa chỉ vật lý, MMU truy xuất phần tử thứ s trong bảng phânđoạn, lấy được giá trị limit và base của phân đoạn s, sau đó kiểm tra điều kiện (d<limit), nếu saithì thông báo lỗi “ truy xuất địa chỉ không hợp lệ”, nếu đúng thì tính điạ chỉ vật lý theo công thức:đcvl =base + d
Theo ví dụ trên, giả sử tiến trình truy xuất địa chỉ ảo (s,d)=(4,1500) thì MMU sẽ thông báo lỗi!.Nếu tiến trình truy xuất địa chỉ ảo (4,100) thì MMU sẽ chuyển thành địa chỉ vât lý là4700+100=4800
Trang 9Hình 10: cơ chế MMU trong mô hình phân đoạn
Cài đặt bảng phân đoạn:
Có thể sử dụng các thanh ghi để lưu trữ bảng phân đoạn nếu có ít phân đoạn Nếu chương trình cónhiều phân đoạn, bảng phân đoạn phải được lưu trong bộ nhớ chính Phần cứng cần cung cấp mộtthanh ghi nền STBR (Segment Table Base Register) để lưu địa chỉ bắt đầu của bảng phân đoạn vàmột thanh ghi STLR lưu số phân đoạn (Segment Table Limit Register) mà chương trình sử dụng.Với một địa chỉ logic (s,d), trước tiên số hiệu phân đoạn s được kiểm tra tính hợp lệ (s<STLR) Kếtiếp, cộng giá trị s với STBR (STBR+s) để có được địa chỉ của phần tử thứ s trong bảng phânđoạn và điạ chỉ vật lý cuối cùng là (base + d)
Hình 11: cơ chế MMU trong mô hình phân đoạn sử dụng thanh ghi STLR và STBR
* Bảo vệ phân đoạn
Trang 10Vì mỗi phân đoạn do người lập trình xác định và người lập trình biết được một phân đoạn chứanhững gì bên trong, do vậy họ có thể chỉ định các thuộc tính bảo vệ thích hợp cho mỗi phân đoạn.Khi đó mỗi phần tử của bảng phân đoạn cần có thêm một thành phần gọi là thuộc tính bảo vệ.MMU sẽ kiểm tra giá trị của thuộc tính này để ngăn chặn các thao tác xử lý bất hợp lệ đến phânđoạn Giá trị của thuộc tính có thể là R (chỉ đọc), X (thực thi), W (ghi),…
Hình 12: Cấu trúc một phần tử trong bảng phân đoạn có sử dụng thuộc tính bảo vệ
*Chia sẻ phân đoạn
Muốn hai tiến trình dùng chung một phân đoạn nào đó, MMU chỉ cần gán hai phần tử trong haibảng phân đoạn của hai tiến trình cùng giá trị
Hình 13: hai tiến trình P1,P2 dùng chung phân đoạn 0 (phân đoạn editor)
2.2.2 Mô hình phân trang (Paging)
Bộ nhớ vật lý được chia thành các khối có kích thước cố định và bằng nhau gọi là khung trang(page frame) Không gian địa chỉ ảo cũng được chia thành các khối có cùng kích thước với khungtrang và gọi là trang (page) Khi một tiến trình được đưa vào bộ nhớ để xử lý, các trang của tiếntrình sẽ được cất vào những khung trang còn trống, như vậy một tiến trình kích thước N trang sẽcần N khung trang trống
Trang 11Hình 4.14: không gian địa chỉ ảo đựoc chia thành nhiều trang và lưu vào các khung trang
Ví dụ mỗi khung trang 1KB, một tiến trình 3.5KB sẽ được chia làm 4 trang Gỉa sử trang 0 được cất ở khung trang 5, trang 1 ở khung trang 7,…
*Cấu trúc địa chỉ ảo:
Để dễ dàng phân tích địa chỉ ảo thành số hiệu trang và địa chỉ tương đối, phần cứng qui định kíchthước của trang là lũy thừa của 2n (9<=n<= 13) Nếu kích thước của không gian địa chỉ ảo là 2m(CPU dùng địa chỉ ảo m bít) và kích thước trang là 2n thì m-n bit cao của địa chỉ ảo sẽ biễu diễn sốhiệu trang, và n bit thấp biễu diễn địa chỉ tương đối trong trang Khi đó mỗi địa chỉ ảo m bit sẽ códạng (p,d) với p chiếm m-n bit và p là số hiệu trang, d chiếm n bit và là địa chỉ tương đối trongtrang p
Hình 16:cấu trúc địa chỉ ảo gồm hai phần: các bit cao lưu số hiệu trang, các bit thấp lưu địa chỉ tương đốitrong trang
*Cơ chế MMU trong mô hình phân trang:
Khi chương trình được nạp vào bộ nhớ, MMU ghi nhận lại số hiệu khung trang chứa trang vàobảng trang (pages table), còn CPU làm nhiệm vụ chuyển đổi tất cả các địa chỉ tương đối trongchương trình thành địa chỉ ảo Phần tử thứ p trong bảng trang lưu số hiệu khung trang trong bộnhớ vật lý đang chứa trang p Để chuyển địa chỉ ảo (p,d) thành địa chỉ vật lý, MMU truy xuấtphần tử thứ p trong bảng trang, lấy được giá trị f là số hiệu khung trang chứa trang p và từ đó tínhđược điạ chỉ vật lý = vị trí bắt đầu của khung trang f + d
Địa chỉ ảo Địa chỉ vật lý
p
Bộnhớvật lýđịa chỉ ảo dạng (p,d) có m bit
p là số hiệu trang và chiếm m-n bit cao d là địa chỉ tương đối trong trang và chiếm n bít thấp
Trang 12Hình 17: cơ chế MMU trong mô hình phân trangTheo ví dụ trên, giả sử tiến trình truy xuất địa chỉ ảo (p,d) = (3,500), MMU sẽ truy xuất phần tử thứ
3 trong bảng trang và biết được trang 3 ở khung trang 2 và chuyển địa chỉ ảo thành địa chỉ vât lý là2x 210 +500 = 2548 (2x 210 = 2048 là địa chỉ bắt đầu của khung trang 2)
Trong thực tế, việc chuyển đổi địa chỉ ảo (p,d) được MMU thực hiện như sau: MMU truy xuấtphần tử thứ p trong bảng trang, lấy được giá trị f là số hiệu khung trang chứa trang p và tính điạchỉ vật lý bằng cách chép d vào n bit thấp của địa chỉ vật lý và chép f vào (m-n) bit cao của địachỉ vật lý
Ví dụ: Một hệ thống có địa chỉ ảo 16 bit dạng (p,d) với p có 4 bít, d có 12 bít (hệ thống có 16trang, mỗi trang 4 KB) Bít Present/absent =1 nghĩa là trang hiện ở trong bộ nhớ và =0 là ở bộnhớ phụ
Trang 13một thanh ghi PTBR (Page Table Base Register) lưu địa chỉ bắt đầu của bảng trang và thanh ghiPTLR (Page Table Limit Register) lưu số phần tử trong bảng trang.Với một địa chỉ logic (p,d),trước tiên số hiệu trang p được kiểm tra tính hợp lệ (p<PTLR) Kế tiếp, cộng giá trị p với PTBR(PTBR+s) để có được địa chỉ của phần tử thứ p trong bảng phân đoạn và MMU truy xuất phần tửthứ p trong bảng trang, lấy được giá trị f là số hiệu khung trang chứa trang p và từ đó tính đượcđiạ chỉ vật lý = vị trí bắt đầu của khung trang f + d.
Hình 19: cơ chế MMU trong mô hình phân trang, sử dụng hai thanh ghi PTLR và PTBR
*Bộ nhớ kết hợp (Translation Lookaside Buffers:TLBs)
Trong kỹ thuật phân trang, mỗi lần truy xuất đến dữ liệu hay chỉ thị đều cần hai lần truy xuất bộnhớ: một cho truy xuất đến bảng trang để tìm số hiệu khung trang và một cho bản thân dữ liệu Cóthể giảm bớt việc truy xuất bộ nhớ hai lần bằng cách sử dụng thêm bộ nhớ kết hợp (TLBs) Bộnhớ kết hợp có tốc độ truy xuất rất nhanh và cho phép tìm kiếm song song Mỗi thanh ghi trong
bộ nhớ kết hợp gồm một từ khóa và một giá trị, khi đưa đến bộ nhớ kết hợp một từ khoá cần tìm,
từ khoá này sẽ được so sánh cùng lúc với các từ khóa trong bộ nhớ kết hợp để tìm ra giá trị tươngứng
Trong kỹ thuật phân trang, TLBs được sử dụng để lưu trữ các số hiệu trang được truy cập gầnhiện tại nhất Khi tiến trình truy xuất một địa chỉ ảo, số hiệu trang của địa chỉ sẽ được so sánh vớicác số hiệu trang trong TLBs, nếu tìm thấy thì sẽ xác định được ngay số hiệu khung trang tươngứng, nếu không có thì mới cần tìm kiếm trong bảng trang
Hình 4.20: cơ chế MMU trong mô hình phân trang có sử dụng bộ nhớ kết hợp
Trang 14Hình 21: một ví dụ về bảng trang có thuộc tính bảo vệ (protection) và thuộc tính cập nhật
(modified): 1 là mời đựoc cập nhật, 0 là chưa cập nhật
Ví dụ một hệ thống máy tính 32 bit, có kích thước 1 khung trang là 4K Hỏi hệ thống quản lýđược tiến trình kích thước tối đa là bao nhiêu?
HD: Máy tính 32 bit => địa chỉ ảo (p,d) có 32 bit => số bít của p + số bít của d = 32, mà 1 trang4K=212 bytes => d có 12 bit =>p có 20 bit => 1 bảng trang có 220 phần tử => hệ thống quản lýđược tiến trình có tối đa 220 trang => kích thước tiến trình lớn nhất là 220 x 212 byte = 232 byte =4
GB Nhận xét: Máy tính n bit quản lý được tiến trình kích thước lớn nhất là 2n byte
*Tổ chức bảng trang
Thông thường hệ điều hành cấp cho mỗi tiến trình một bảng trang và phải dùng bảng trang kíchthước đủ lớn để quản lý tiến trình lớn nhất nên rất tốn bộ nhớ Có ba giải pháp cho vấn đề này là
sử dụng phân trang đa cấp hoặc bảng trang băm hoặc bảng trang nghịch đảo
a/ Phân trang đa cấp
Bản thân bảng trang cũng sẽ được phân trang Xét trường hợp phân trang nhị cấp, khi đó bảngtrang cấp 1 lưu số hiệu khung trang chứa bảng trang cấp 2, các bảng trang cấp 2 lưu số hiệu khungtrang tiến trình sử dụng Thông thường trong phân trang đa cấp mỗi bảng trang chiếm 1 khungtrang, riêng bảng trang cấp 1 có thể lưu trữ trên đĩa và có thể có kích thước lớn hơn 1 khung trang
Hình 22: một ví dụ về phân trang nhị cấp
Nếu một máy tính 32 bít, với kích thước trang 4K thì địa chỉ logic có thể biểu diễn như sau: dùng
Trang 15p=20 bít lưu số hiệu trang, d=12 bít lưu vị trí tương đối trong trang Nếu dùng bảng trang nhị cấpthì p được chia ra thành p1, p2 (p=p1+p2): p1=10 bít lưu chỉ mục của bảng trang cấp 1, p2=10 bítlưu chỉ mục của bảng trang cấp 2 (việc phân chia p1, p2 là bao nhiêu bít thì do phần cứng quiđịnh) Ta có: BTC1[p1] lưu số hiệu khung trang chứa bảng trang cấp 2, BTC2[p2] lưu số hiệukhung trang chứa trang của tiến trình.
p1 chỉ mục của bảng trang cấp một p2 chỉ mục của bảng trang cấp 2
Hình 23: cấu trúc của một địa chỉ ảo trong phân trang nhị cấp
b/ Bảng trang băm
Khi không gian địa chỉ ảo lớn (> 32 bít) thường hệ điều hành dùng bảng băm để lưu trữ bảngtrang Gỉa sử trang p, lưu ở khung trang r, thì thông tin này được lưu trữ như sau: p được băm vàlưu trữ trong một danh sách xung đột tương ứng của bảng băm
Ví dụ: Một máy tính 64 bít, có RAM 256MB, kích thước 1 khung trang là 4KB Bảng trang thôngthường phải có 252 mục, nếu dùng bảng trang băm có thể sử dụng bảng có số mục bằng số khungtrang vật lý là 216 (<<232) với hàm băm là hasfunc(p)=p mod 216
Hình 25: sử dụng bảng băm để lưu trữ bảng trang
Khi tìm khung trang chứa trang p, hệ điều hành dùng hàm băm tìm ra danh sách chứa trang p, sau
đó tìm tuyến tính trên danh sách này để tìm ra khung trang chứa trang p
Trang 16Hình 26: cơ chế chuyển đổi địa chỉ khi sử dụng bảng trang băm
c/ Bảng trang nghịch đảo
Hệ điều hành có thể dùng một bảng trang duy nhất để quản lý bộ nhớ của tất cả các tiến trình vàgọi là bảng trang nghịch đảo Mỗi phần tử của bảng trang nghịch đảo là cặp (pid, p), pid là mã sốcủa tiến trình, p là số hiệu trang và mỗi địa chỉ ảo là một bộ ba (pid, p, d)
Khi một truy xuất bộ nhớ được phát sinh, một phần địa chỉ ảo là (pid, p) được đưa đến cho trìnhquản lý bộ nhớ để tìm phần tử tương ứng trong bảng trang nghịch đảo, nếu tìm thấy tại phần tửthứ i, thì i chính là số hiệu khung trang chứa trang p và địa chỉ vật lý tương ứng là (i,d) Trong cáctrường hợp khác, xem như đã truy xuất một địa chỉ bất hợp lệ
Nhận xét: số phần tử trong bảng trang nghịch đảo bằng với số khung trang vật lý
Hình 27: cơ chế chuyển đổi địa chỉ khi sử dụng bảng trang nghịch đảo
Hình 28: cấu trúc tổng quát của một phần tử trong bảng trang
Trang 17Hình 29: một ví dụ về mô hình phân trang
+ Kỹ thuật phân trang loại bỏ được hiện tượng phân mảnh ngoại vi vì mỗi khung trang đều có thểđược cấp phát cho một tiến trình nào đó có yêu cầu Tuy nhiên hiện tượng phân mảnh nội vi vẫn
có thể xảy ra khi kích thước của tiến trình không đúng bằng bội số của kích thước một trang, khi
đó trang cuối cùng sẽ không được sử dụng hết
+ Sự phân trang không phản ánh đúng cách thức người sử dụng cảm nhận về bộ nhớ Kỹ thuậtphân đoạn thỏa mãn được nhu cầu thể hiện cấu trúc logic của chương trình nhưng nó dẫn đến tìnhhuống phải cấp phát các khối nhớ có kích thước khác nhau cho các phân đoạn Điều này làm rắcrối vấn đề hơn rất nhiều so với việc cấp phát các trang có kích thước cố định và bằng nhau Một