Chương 3:quản lý bộ nhớ

Chương3: Quản lí bộ nhớ

Các vấn đề cần quan tâm:

Vì sao phải quản lí bộ nhớ?

Nhiệm vụ,mục tiêu quản lí bộ nhớ?

Các phương thức cụ thể quản lí bộ nhớ?

Thường trú và đa nhiêm?

Tiết 1 Một số vấn đề cơ bản về bộ nhớ

1.Tổ chức bộ nhớ:

-Bộ nhớ máy tính đc chia thành các ngăn nhớ và đánh địa chỉ liên tiếp

-Việc truy cập vào bộ nhớ là truy cập theo địa chỉ chứ ko phải theo nội dung.

-Chương trình muốn thực hiện phải nạp vào bộ nhớ máy tính.

2.Điạ chỉ thực và ảo:

a.Địa chỉ thực

-Là địa chỉ vật lí.

-Dựa trên cách đánh địa chỉ các ngăn nhớ.

-Đối với dòng máy PC thì cách đánh địa chỉ như sau:

+Bộ nhớ được chia thành các đoạn hay các segment(64K). Các bytes trong trong các segment này được đánh địa chỉ từ 0(gọi là các offset).

Địa chỉ vật lí của byte xác định dựa trên (segment,offset).

VDụ:

b.Địa chỉ ảo(địa chỉ logic)

-Được HĐH tạo ra để nạp các chương trình vào bộ nhớ 1 cách mềm dẻo, linh hoạt.

Đồng thời cho phép người lập trình tách biệt được quá trình lập trình với kiến trúc của 1 máy tính cụ thể.

-Với người lập trình thì dữ liệu được gắn bởi các tên gọi.

-Để biến đổi từ các tên gọi sang các địa chỉ bộ nhớ HĐH sử dụng ánh xạ bộ nhớ.

-Mặt khác để tạo ra cơ chế nạp chương trình và quản lí vùng bộ nhớ nạp chương trình thì hệ thống gắn thêm địa chỉ cơ sở vào địa chỉ thực(địa chỉ cơ sở, (segment,offset)).

1.3 Quá trình dịch chương trình từ ngôn ngữ bậc cao.

-Tổng quát:

SOURCE -----------> OBJECT------------->LOAD

compile Link

-Kết quả bước dịch : Ngoài môđun đích ta còn nhận được bảng tên trong(Ánh xạ tên)

Bảng tên trong có dạng như sau:

Khai báo:

Int A[10];

Float B;

Float C;

A[6]=C*2+B

Lệnh A[6] = C*2 + B

Ô nhớ 10 = 24*26+20

(Nội dung ô nhớ 10 = nội dung ô nhớ..... nội dung ô nhớ 20)

Tiết 2 Cấu trúc của chương trình

1.Kiến trúc tuyến tính(độc lập)

-Chương trình chỉ có 1 môđun duy nhất được nạp vào bộ nhớ 1 lần.Vùng bộ nhớ được giải phóng khi chương trình thực hiện xong.

-VDụ: Các tệp *.com

*Ưu và nhược điểm:

-Ưu điểm: +Chương trình quản lí đơn giản.

+Thời gian nạp chương trình nhanh

-Nhược điểm: Sử dụng bộ nhớ kém hiệu quả.

Vdụ:

2.Kiến trúc động

-Chia chương trình thành nhiều môđun : m1,m2....mk

-Cách nạp chương trình:

+Lúc đầu nạp m1 vào bộ nhớ.

+Kết thúc m1, m1 nạp m2 vào bộ nhớ và tổ chức cho m2 thực hiện.

(m1 kết thúc giải phóng vùng nhớ của m1,m2 có thể sử dụng vùng nhớ đó). Quá trình diễn ra liên tục đến khi kết thúc ở môđun p (1<=p<=k)

*Ưu và nhược điểm:

-Ưu điểm: +Tiết kiệm bộ nhớ.

-Nhược điểm: +Nạp bộ nhớ chậm

+ Đòi hỏi kĩ năng, kiến thức về lập trình hệ thống.

3.Kiến trúc Overlay

-Khi sử dụng kĩ thuật "chia để trị" để thiết lập giải thuật cho bài toán, ta xây dựng lược đồ cho cấu trúc chương trình.

-Ta nhận thấy rằng, tại 1 thời điểm chương trình chỉ thực hiện theo 1 nhánh nào đó của cây. Như vậy tại thời điểm này chỉ cần nạp các môđun trên nhánh đó vào bộ nhớ.

-Nhân xét:

+Giải sử số nút là n.

+Độ sâu của cây là h.

+Ở 1 thời điểm chỉ cần nạp tối đa h vùng nhớ để nạp 1 nhánh cây(h<<n).

+h vùng nhớ này trong quá trình chương trình hoạt động sẽ được sử dụng luân phiên để nạp các nhánh cây. Nhánh nạp sau phủ lên nhánh nạp trước.

+Hầu hết các chương trình trong máy tính đều có cấu trúc này.

+VD: Các file *.exe

*Ưu và nhược điểm:

-Ưu điểm: +Tiết kiệm bộ nhớ.

+Cấu trúc Overlay dễ dàng xác lập.

-Nhược điểm: +Tốn thời gian nạp các môđun.(Do có thể nạp đi nạp lại 1 môđun nhiều lần(Re_Entrance))

 Khắc phục : Tạo vùng nhớ đệm(cache) trong bộ nhớ chứa môđun.

+Nếu khai báo sai cấu trúc Overlay thì hệ thống bị rối lọan.

4.Các tệp lệnh máy *.COM, *.EXE và nạp chương trình vào trong PC

a.Tệp .COM

-Không chứa các lệnh

Call far địa chỉ

JMP far đại chỉ

-Đặc điểm: Khi nạp vào bộ nhớ thì lệnh đầu tiên sẽ được trao quyền ngay

b.Tệp .EXE

-Được hình thành bởi các cấu trúc Overlay.

-Chương trình gồm nhiều đoạn.

-Đầu tệp (header) có đoạn ghi 32 bytes mô tả kiến trúc tệp và xác định đoạn điều khiển.

-Cho phép 2 lệnh: Call far và JMP far

c.Nạp chương trình vào bộ nhớ trong PC:

1 chương trình ứng dụng được nạp vào bộ nhớ chiếm 3 phần liên tiếp nhau:

Heap Code Stack

Khi nạp vào bộ nhớ,HDDH luôn tạo ra 1 khối nhớ PSP 256bytes (khối tiền tố của chương trình)chứa tham số về môi trường sử dụng tệp lệnh máy. Ví dụ cá tham số liên quan đến ngăn xếp các địa chỉ(stack) để kết nối chương trình.

Trong byte 2C và 2D của khối này sẽ trỏ đến 1 vùng nhớ vùng nhớ này chứa xâu kí tự kết thức là kí tự '\0' . Xâu này là tên tệp lệnh máy được nạp vào đoạn bộ nhớ trên.

Tiết 3: Các chiến lược quản lí bộ nhớ

1.Kĩ thuật phân vùng

a.Chiến lược MFT(Multil_Fixed Tasking)

-Xuất hiện sớm

-Nội dung: Bộ nhớ được chia làm những vùng còn gọi là những chương có kích thước cố định:

-Mỗi chương được ấn định là chỉ phục vụ cho bài toán ở 1 số lớp nào đó.

Vd:

-Chương trình người dùng sẽ được gắn 1 số hiệu đặc trưng cho 1 lớp bài toán nào đó.

-Chương trình người dùng chỉ được nạp vào trng các chương còn rảnh và có lớp bài toán phù hợp.

-Kích thước chương không nhỏ hơn kích thước chương trình người dùng yêu cầu.

* Ưu, nhược điểm:

-Ưu điểm : Cách quản lí bộ nhớ đơn giản.

-Nhược điểm: Hiệu suất sử dụng thấp, dễ gây hiện tượng thiếu bộ nhớ giả tạo.

Theo như ví dụ trên:

Nếu ta có 1 chương trình ở lớp E --> Báo lỗi ko có lớp nào phù hợp,bộ nhớ ko phục vụ.

Nếu có 1 Ctrình lớp B 60K chạy trong vùng P0

-->Khi thêm 1 chương trình lớp B 81K thì sẽ báo lỗi thiếu bộ nhớ.

b.Chiến lược MTV:

-Khi khởi tạo HĐH bộ nhớ là 1 vùng liên tục.

-Ở 1 thời điểm nào đó,chương trình xin bộ nhớ,HĐH sẽ cấp cho nó 1 vùng bộ nhớ liên tục nếu có.

-Khi chương trình kết thúc, vùng nhớ được giải phóng và co thể dùng để nạp chương trình khác.

(Không phân chương trước,dùng đến đâu tạo bộ nhớ đến đó)

-Nhận xét: Sau 1 thời gian thực hiện,bộ nhớ xuất hiện hiện tượng phân mảnh.

dễ phát sinh hiện tượng thiếu bộ nhớ giả tạo.

Để khắc phục : Đưa ra phương pháp dồn chỗ : tạm ngường 1 số chương trình, thực hiện dồn chỗ, để tạo vùng nhớ liên tục.

*Ưu và nhược điểm:

-Ưu điểm: linh hoạt,mềm dẻo.

-Nhược điểm: Vẫn phát sinh hiện tượng thiếu bộ nhớ giả tạo, tuy khắc phục được (dồn chỗ) nhưng làm chậm thời gian tính toán.

2.Chiến lược phân đoạn

-Phần lớn chương trình có cấu trúc phân đoạn. Khi nạp vào bộ nhớ mỗi đoạn của chương trình tương ứng chiếm dữ 1 đoạn bộ nhớ.

Chú ý: Không nhất thiết là phải theo đúng trình tự liên tục.

VD:

- Vấn đề :Quản lí Đoạn bộ nhớ như thế nào?

- Để quản lí đoạn bộ nhớ người ta dùng 1 khối quản lí SCB(Segment control blocked)

-SCB bao gồm các thông tin:

+Số hiệu đoạn

+Trạng thái(đã dùng/chưa dùng)

+Địa chỉ đoạn

+Kích thước đoạn

-Xây dựng bảng quản lí đoạn để quản lí các thông tin trên:

-Để quản lí bộ nhớ HĐH dùng 2 danh sách liên kết:

+Danh sách lỗ trống

+Danh sách các đoạn sử dụng

Quy về bài toán quản lí danh sách

*Ưu và nhược điểm:

- Ưu : Sử dụng kĩ thuật này cho phép tận dụng lỗ trống trong bộ nhớ mà không phải dồn chỗ phù hợp với cấu trúc đa đoạn(Overlay).

-Nhược: để thực hiện 1 lệnh ta phải thực hiện qua ánh xạ nhiều bộ nhớ.Do đó tốn thời gian.

3.Chiến lược phân trang

-Chia chương trình thành m trang có kích thước bằng nhau.

-Chia bộ nhớ thành n trang có kích thước bằng nhau.

-Giả sử với điều kiện m>>n (tức là không thể nạp cùng lúc vào bộ nhớ)

-Ở 1 thời điểm bất kì nạp n trang của chương trình vào bộ nhớ.

-Khi thực hiện lệnh ở 1 trang trong chương trình mà phần điạ chỉ trong toán hạng lại tham chiếu đến 1 trang khác trong chương trình nằm ngoài bộ nhớ xảy ra hiện tượng lỗi trang

-Để khác phục hiện tượng trên dừng thực hiện chương trình, nạp trang bị tham chiếu vào trong bộ nhớ.Như vậy trang vừa nạp sẽ thay thế 1 trang trong bộ nhớ.

-Vấn đề đặt ra: Thay thế trang nào trong bộ nhớ?

-Có 3 cách thay trang (Chưa có đánh giá cụ thể gì về 3 cách này)

+Thay trang ít sử dụng nhất

+Thay trang có lần truy cập mới nhất tới nó, nhưng lần truy cập này là lâu nhất.

+Thay cho trang đã nạp lâu nhất.

*Ưu và nhược điểm:

-Ưu điểm: Tạo bộ nhớ có cảm giác vô hạn

-Nhược: Tốc độ hệ thống chậm do việc thay trang.(Để truy nhập vào địa chỉ của 1 biến trong chương trình ta phải tra qua các bảng quản lí: bảng tên trong, bảng phân trang chương trình,bảng tra cứu nạp trang, bảng quản lí trangtốn thời gian)

4.Chiến lược kết hợp

-Kết hợp giữa 2 chiến lược phân đọan và phân trang. Bộ nhớ được chia làm nhiều đoạn Logic. 1 Đoạn bao gồm nhiều trang

-Tích hợp ưu điểm của cả 2 chiến lược trên.

-Tuy nhiên cũng tích hợp nhược điểm của 2 chiến luợc trên.

-Khắc phục: Sử dụng phần cứng để hỗ trợ tra bảng.

Tiết 4 Quản lí bộ nhớ trong PC

1. Chiến lược quản lí:

1. 1 trang hay đơn vị cấp phát bộ nhớ(paragraph(16bytes)).

2. Ở 1 thời điểm xác định thì ô nhớ 413(0,413)lưu số lượng bộ nhớ chưa sử dụng.

3. Để quản lí các đoạn bộ nhớ người ta sử dụng thành phần có tên là MMU(Memory manager Unit). Thành phần này quản lí bộ nhớ dựa trêncơ sở sử dụng các khối MCB(Memory Control Block). Mỗi khối có kích thước bằng 1 phân đoạn được sử dụng để quản lí 1 đoạn bộ nhớ.

4. Kiến trúc

5. Byte đầu tiên nhận biết đoạn bộ nhớ cuối cùng được sử dụng.

+ Nếu là cuối cùng chứa kí tự Z.

+ Nếu không phải chứ kí tự nhớ M.

6. 2 bytes kế tiếp trỏ đến địa chỉ vùng bộ nhớ đoạn mã

7. 2 bytes xác định kích thước đoạn mã.

8. Như vậy nếu biết MCB1 thì có thể khảo sát toàn bộ bộ nhớ.

-Khi nạp 1 chương trình vào bộ nhớ HDDH luôn tạo 1 khối tiền tố PSP ( Program Status Prefix) gồm 266 bytes xác định các thông tin về môi trường cho đoạn mã. Trong byte 2C và 2D của khối này sẽ trỏ đến 1 vùng nhớ vùng nhớ này chứa xâu kí tự kết thức là kí tự '\0' . Xâu này là tên chương trình nạp vào đoạn bộ nhớ trên.

2. Không gian địa chỉ ảo:

Trên PC, HĐH sử dụng phương thức địa chỉ ảo khi nạp chương trình.

Với mỗi đoạn chương trình HĐH sử dụng bảng quản lí địa chỉ phục vụ cho chương trình đó

Sử dụng địa chỉ cơ sở như 1 thành phần. Trong địa chỉ bộ nhớ để tạo cơ chế tùy biến khi nạp chương trình.

3.Chương trình thường trú và môi trường đa nhiệm:

a.Khái niêm về môi trường đa nhiệm:

-Là môi trường cho phép nhiều chương trình hoạt động song song, cùng chia sẻ tài nguyên của hệ thống.

Việc khởi động và kết thúc chương trình là do HĐH đảm nhiệm.

b.Trình thường trú: TSR(Terminal and Stay Resident )

- Là chương trình mà sau khi kết thúc vẫn còn ở lại trong bộ nhớ.

-Trong hệ thống TSR có các chương trình chạy song song.Nhưng chia sẻ tài nguyên là do người dùng,việc khởi động kết thúc chương trình cũng là do người dùng đảm nhận.

*Kiến trúc của chương trình thường trú gồm có 2 phần:

-Khởi tạo: Khởi tạo ngăn xếp

+Đảm bảo tính duy nhất của chương trình thường trú.(Vì nếu có 2 chương trình thường trú giống nhau trong bộ nhớ sẽ xảy ra xung đột khi chia sẻ tài nguyên.)

+Nguyên lí đánh dấu:

.Nếu đã có: Ko nạp

.Nếu chưa có đánh dấu rồi nạp. Thường dùng ô nhớ mà HĐH ít dùng để đánh dấu(ô nhớ 475)

+Khởi tạo các tham số môi trường cho cho phần thường trú.

+Nạp phần thường trú vào bộ nhớ: Hầu hết các trình thường trú đặt vào bộ nhớ bằng cách thay thế dịch vụ đã có của HĐH.

-Thường trú:

+Có tính tự chủ(tự điều độ).

+Đảm bảo sao lưu,phục hồi ngữ cảnh hệ thống.

+Không cho phép ngắt thao tác có tốc độ cao.

+Khi giải phóng trình thường trú thì chương trình nạp sau phải giải phóng trước.

Ôn tập cuối chương 3

Câu hỏi 1 Vì sao phải quản lí bộ nhớ? Nhiệm vụ,mục tiêu của quản lí bộ nhớ?

Câu hỏi 2 Các phương thức quản lí bộ nhớ?

Câuhỏi 3: Phân biệt môi trường đa nhiệm và hệ thống thường trú?

Đáp án

Câu1:

*Quản lí bộ nhớ vì:

-Bộ nhớ là tài nguyên hữu hạn khả năng năng phục vụ.

-Mọi chương trình muốn thực hiện đều phải nạp vào bộ nhớ.

-Mọi hệ điều hành mong muốn có nhiều hơn các tiến trình trong bộ nhớ.

*Nhiệm vụ của quản lí bộ nhớ:

-Nhiệm vụ chính của thành phần quản lí bộ nhớ của HĐH :

+ Hiệu suất cao tức là nạp được và nạp được nhiều chương trình của người sử dụng vào bộ nhớ, mà không phụ thuộc nhiều vào giới hạn của bộ nhớ vật lí.

+Tránh xung đột: khi chia sẻ tài nguyên bộ nhớ.

-Nhiệm vụ cụ thể:

+Thực hiện việc tái định vị chương trình,tiến trình: Các mô đun trong chương trình có thể bị vào ra lại nhiều lần(Re-Entrance) do đó HĐH cần xác định đúng vị trí mà nó được nạp trước đó khi đưa môđun đó vào lại trong bộ nhớ.

+Bảo vệ bộ nhớ: 1 tiến trình được bảo vệ chống lại sự truy xuất bất hợp lệ của tiến trình khác vào vùng nhớ của nó.

+Chia sẻ bộ nhớ. Cho phép nhiều tiến trình có thể truy cập đến cùng 1 địa chỉ trên bộ nhớ(tính mềm dẻo).

+Tổ chức bộ nhớ logic: Làm cho HĐH và phần cứng giao dịch 1 cách hiệu quả với các môđun, và dữ liệu trong các môđun của chương trình.

+Tổ chức bộ nhớ vật lí.:Tổ chức luồng thông tin giữa bộ nhớ chính và bộ nhớ phụ.

Câu2:Các phương thức quản lí bộ nhớ?(Xem phía trên)

-Chiến lược phân vùng

+Chiến lược MFT(Multil_Fixed Tasking)

+Chiến lược MTV( Multil_Variant Tasking)

-Chiến lược phân đoạn

-Chiến lược phân trang

Câu3: Phân biệt môi trường đa nhiệm và hệ thống thường trú?

-Giống nhau: Đều có các chương trình hoạt động song song

-Khác:

Đối với đa nhiệm: Đối với thường trú:

Khởi tạo ,kết thúc chương trình do HĐH đảm nhiệm. do người dùng đảm nhiệm

cấp phát tài nguyên cho chương trình do HĐH đảm nhiệm. do người dùng đảm nhiệm

Tính duy nhất Không. 1 chương trình có thể có nhiều phiên bản trong bộ nhớ (do có chia sẻ tài nguyên) Có . Một chương trình chỉ tồn tại 1 phiên bản trong bộ nhớ (do không chia sẻ tài nguyên)

Câu4: Trình bày lược đồ quản lí bộ nhớ trong PC: (Xem phía trên )

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: