1. Trang chủ
  2. » Tất cả

Bài tập lớn: KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

34 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài tập lớn: Kỹ Thuật Lập Trình Hướng Đối Tượng
Người hướng dẫn Sinh viên thực hiện:
Trường học Trường Đại Học Mở Hà Nội
Chuyên ngành Kỹ Thuật Lập Trình Hướng Đối Tượng
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 1,87 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

TRƯỜ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 2

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 đổ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 3

thà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 4

Trướ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 5

2.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 7

Hì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 8

Hì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 9

Hì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 10

Vì 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 11

Hì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 12

Hì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 13

mộ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 14

Hì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 15

p=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 16

Hì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 17

Hì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

Ngày đăng: 03/03/2023, 18:15

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w