Quản lí bộ nhớ

Màu nền
Font chữ
Font size
Chiều cao dòng

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

 4.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 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ì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.

4.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 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ển thà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ào thờ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 định khi thực hiện truy xuất bộ nhớ vật lý.    

* 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ạn và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ương trì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 sai thì 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. 

* 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ào bả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 trong chươ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ấ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 4.17: cơ chế MMU trong mô hình phân trang

Theo 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ấ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í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 địa chỉ 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ó 16 trang, 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ụ.

Xét địa chỉ ảo 819610 = 0010.0000.0000.01002 => p = 00102 = 210 , d = 0000.0000.01002 = 410 . Do trang p=2 ở khung trang f=1102 = 610 , nên  địa chỉ vật lý là 0110.0000.0000.01002 = 6x212 + 4 = 24580

4.3.1.4  Thời gian thực hiện một yêu cầu truy xuất bộ nhớ

Gọi xác suất xảy ra lỗi trang là p: 0 £ p £ 1.0, nếu p = 0  nghĩa  là không có lỗi trang , nếu p = 1 nghĩa là mỗi lần truy xuất đều xảy ra lỗi. Memory access (ma) là thời gian một lần truy xuất bộ nhớ. Effective Access Time (EAT) là thời gian thực hiện một yêu cầu truy xuất bộ nhớ. Page fault overhead (pfo) là thời gian xử lý một lỗi trang. Swap page in (spi) là thời gian chuyển trang từ đĩa vào bộ nhớ. Swap page out (spo) là thời gian chuyển trang ra đĩa (swap page out có thể bằng 0). Restart overhead (ro) là thời gian tái khởi động lại việc truy xuất bộ nhớ.

Ta có:

EAT = (1 – p) x ma+ p (pfo+ [spo]+ spi+ ro)

Ví dụ:

Giả sử thời gian một lần truy xuất bộ nhớ là 1 micro second  và giả sử 40% trang được chọn đã thay đổi nội dung và thời gian hoán chuyển trang ra/vào là 10 mili second . Tính ETA.

Ta có:

ma=1 micro second

spo= spin = 10 milisecond = 10000 micro second

=> EAT = (1 – p)  + p (pfo+10000*0.4+10000+ro) micro second

Bạn đang đọc truyện trên: Truyen2U.Pro

#don