1. Trang chủ
  2. » Thể loại khác

file_goc_771406

57 12 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

Định dạng
Số trang 57
Dung lượng 5,25 MB

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

Nội dung

Selling an Idea or a Product GV Đỗ Công Đức Khoa khoa học máy tính NGUYÊN LÝ HỆ ĐIỀU HÀNH (3 Tín chỉ) 04/20/2 2 Chương 3 Quản lý bộ nhớ 2 Chương 3 QUẢN LÝ BỘ NHỚChương 3 QUẢN LÝ BỘ NHỚ  Bộ nhớ là thi[.]

Trang 1

GV: Đỗ Công ĐứcKhoa khoa học máy tính

NGUYÊN LÝ HỆ ĐIỀU HÀNH

(3 Tín chỉ)

Trang 2

Chương 3: QUẢN LÝ BỘ NHỚ

 Bộ nhớ là thiết bị lưu trữ dữ liệu của máy tính thông qua

đó CPU có thể trao đổi thông tin với môi trường ngoài

 Bộ nhớ chính được tổ chức như một mảng một chiều các

từ nhớ (word) và mỗi từ có một địa chỉ

 Việc trao đổi thông tin với môi trường ngoài là thao tác đọc ghi dữ liệu vào bộ nhớ tại một địa chỉ cụ thể

Trang 3

Chương 3: QUẢN LÝ BỘ NHỚ

 Bộ nhớ gồm có: bộ nhớ trong (chính) và bộ nhớ ngoài (phụ) Nhưng bộ nhớ thì có hạn mà yêu cầu bộ nhớ thì

vô hạn

 Bộ nhớ là tài nguyên dùng để cấp phát và chia sẻ cho

nhiều tiến trình đang ở trong trạng thái kích hoạt

 Công cụ quản lý bộ nhớ là phân trang (paging) và phân đoạn (Segmentation) HĐH kết hợp phân trang và phân đoạn để quản lý

Trang 5

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

 Bộ phận quản lý bộ nhớ có nhiệm vụ đưa các tiến trình

vào bộ nhớ để hoạt động

 Giải quyết các trường hợp trên bộ nhớ không còn

không gian trống để nạp các tiến trình

 Bảo vệ các tiến trình trên bộ nhớ tránh các trường hợp

truy xuất bất hợp lệ xảy ra

 Cấp các vùng nhớ cho các tiến trình có yêu cầu

Bộ phận quản lý bộ nhớ phải thực hiện

Trang 6

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

3.1.1 Sự tái định vị (Relocation)

 Bộ nhớ được chia sẻ cho nhiều tiến trình và bộ nhớ của các tiến trình yêu cầu thì luôn luôn lớn hơn bộ nhớ vật lý của hệ thống

 Khi không còn đủ bộ nhớ chính để nạp thì chương trình đang chạy thì có thể Swap out ra đĩa và được Swap in vào thời điểm thích hợp nhưng phải swap in đúng vị trí đã nạp trước đó

 Đôi khi chương trình swap out có thể được swap in vào lại nhưng không đúng vị trí mà nó được nạp trước đó

Trang 7

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

 Hệ thống quản lý bộ nhớ phải thực hiện không cho các tiến trình của người sử dụng truy cập đến bất kỳ một vị trí nào của chính HĐH, ngoại trừ vùng dữ liệu mà HĐH cung cấp cho chương trình người sử dụng

Trang 8

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

3.1.3 Chia sẻ bộ nhớ

 Hệ thống quản lý bộ nhớ phải điều khiển việc truy cập đến không gian bộ nhớ được chia sẻ mà không vi phạm đến các yêu cầu bảo vệ bộ nhớ

 Ngoài ra HĐH đa nhiệm phải chia sẻ không gian nhớ cho các tiến trình để HĐH có thể nạp được nhiều tiến trình vào bộ nhớ và tiến trình này có thể hoạt động đồng thời với nhau

Trang 9

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

 Công cụ đáp ứng cho yêu cầu này là sự phân đoạn

Đa số các chương trình đều được chia thành các modul:

Trang 10

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

3.1.5 Tổ chức bộ nhớ vật lý

Bộ nhớ của máy tính gồm bộ nhớ chính và bộ nhớ phụ:

 Bộ nhớ chính: truy cập nhanh dữ liệu và chương trình chỉ giữ một khối lượng nhỏ, chỉ sử dụng tại thời điểm hiện tại không lưu trữ lâu dài trên nó và phải thường xuyên làm tươi

 Bộ nhớ phụ: truy cập chậm, nó lưu trữ lớn và cho phép lưu trữ chương trình và dữ liệu trong một khoảng thời gian dài

Trang 11

NHIỆM VỤ CỦA QUẢN LÝ BỘ NHỚ

3.1.5 Tổ chức bộ nhớ vật lý

Thông tin giữa bộ nhớ chính và bộ nhớ phụ là do hệ thống

 Bộ nhớ chính dành cho chương trình cùng với dữ liệu của

nó thường là không đủ, chương trình và dữ liệu phải tổ chức thành modul và gán trong cùng một vùng của bộ nhớ Trong đó chương trình chính chịu trách nhiệm chuyển modul vào ra khi cần thiết

 Người lập trình không thể xác định không gian nhớ còn trống hoặc khi nào thì không gian nhớ sẽ trống mà việc này do bộ phận quản lý bộ nhớ thực hiện

Trang 12

có sự hỗ trợ của trình biên dịch và các ngôn ngữ.

 Các cấu trúc chương trình như tuyến tính, động, overlay,

Trang 13

CẤU TRÚC CHƯƠNG TRÌNH

3.2.1 Cấu trúc chương trình tuyến tính

 Các modul, thư viện dịch thành một modul chứa các thông tin cần thiết để chương trình có thể chạy độc lập

 Chương trình viết bằng Pascal, có sử dụng thư viện chuẩn hoặc đồ họa Sau khi biên dịch ta được một file EXE

 Mang file EXE đến máy bất kỳ cũng chạy được không cần phải cài pascal

 Tập tin thực thi (.EXE) có tính độc lập cao, có tốc độ thực hiện chương trình cao vì chỉ cần nạp một lần.

Trang 14

CẤU TRÚC CHƯƠNG TRÌNH

3.2.1 Cấu trúc chương trình tuyến tính

Hạn chế của của chương trình dịch theo cấu trúc tuyến tính

 Tốn bộ nhớ vì sau mỗi lần biên dịch thì kích thước chương trình tăng lên

 Các modul, thư viện được sử dụng một lần nhưng lại chiếm bộ nhớ từ khi chương trình được nạp vào cho đến khi kết thúc

 HĐH windows không hỗ trợ cấu trúc này vì nó không tiết kiệm được bộ nhớ, tốn bộ nhớ và làm cho sự đa chương giảm xuống

Trang 16

CẤU TRÚC CHƯƠNG TRÌNH

3.2.2 Cấu trúc chương trình động

 Cấu trúc động chương trình gồm modul chính và các modul khác Modul chính có thể gọi modul khác của chương trình vào bộ nhớ

 HĐH chỉ nạp modul chính vào bộ nhớ, modul chính chỉ chứa chủ yếu là các dữ liệu dùng chung, các thủ tục khởi tạo, các lời gọi thủ tục, thư viện Khi cần thì modul chính mới gọi các modul khác

Trang 17

CẤU TRÚC CHƯƠNG TRÌNH

3.2.2 Cấu trúc chương trình động

 Nạp modul vào bộ nhớ thì chỉ nạp một modul mà có thủ tục hay thư viên có sử dụng Khi thực hiện xong thì nó có thể giải phóng bộ nhớ để cấp cho cho modul khác.

 Chương trình viết bằng Visual basic dịch theo cấu trúc động thành các file EXE không thể chạy trên một máy khác nếu thiếu các tập tin OCX (Object Component eXtension), DLL (Dynamic Link Library)

 Windows có nhiều DLL chứa một nhóm các thủ tục dịch vụ, DLL sinh ra trong cài đặt một ứng dụng, các DLL bị xóa, hỏng thì ứng dụng không hoạt động được, vì lời gọi thủ tục không được đáp ứng.

Trang 18

CẤU TRÚC CHƯƠNG TRÌNH

3.2.2 Cấu trúc chương trình động

 Tập tin DLL hỗ trợ rất nhiều cho windows trong việc thực thi chương trình cấu trúc động, DLL chứa các thủ tục dịch vụ mà hầu hết các ứng dụng đều sử dụng nó DLL không được nạp vào trong quá trình khởi động mà

nó chỉ được nạp khi có một thủ tục dịch vụ gọi nó

 Việc thực thi chương trình cấu trúc động có hạn chế là chậm vì nó không được nạp vào tất cả vào bộ nhớ

 Cấu trúc động tiết kiệm được bộ nhớ nên làm cho sư đa

Trang 19

CẤU TRÚC CHƯƠNG TRÌNH

3.2.3 Cấu trúc chương trình Overlay

 Cấu trúc Overlay, chương trình được biên dịch thành các modul riêng lẽ và được phân thành các lớp, kích thước của modul lớn nhất là kích thước của lớp

 Modul của lớp 0 có thể nạp modul của lớp 1,2,3…vào bộ nhớ, modul trong cùng lớp không được gọi lẫn nhau

 Cấu trúc Overlay cần biết thông tin như: chương trình gồm modul, modul gồm thủ tục, thư viện nào, kích thước,

có bao nhiêu lớp để cung cấp khi biên dịch xây dựng sơ

đồ biên dịch và thực thi Sơ đồ này gọi là sơ đồ Overlay

Trang 20

CẤU TRÚC CHƯƠNG TRÌNH

3.2.3 Cấu trúc chương trình Overlay

 HĐH dùng Overlay để điều khiển thực thi chương trình

 Các sơ đồ Overlay chứa trong một tập tin gọi là tập tin sơ

đồ Overlay và nó được nạp đầu tiên khi HĐH thực hiện

 Với Overlay HĐH chia không gian nhớ thành các đoạn nhớ có kích thước bằng với kích thước của các lớp modul chương trình và nạp sơ đồ overlay vào bộ nhớ, nạp modul

ở lớp 0 và dùng sơ đồ Overlay để nạp các modul khác

• Các modul phải nạp vào đúng đoạn bộ nhớ dành cho lớp

• Modul được gọi nạp vào sau được quyền ghi đè lên

Trang 21

CẤU TRÚC CHƯƠNG TRÌNH

3.2.3 Cấu trúc chương trình Overlay

 Cấu trúc Overlay chỉ cần đủ bộ nhớ để nạp sơ đồ overlay

 Cấu trúc overlay đòi hỏi cao ở người lập trình, nên ít HĐH sử dụng

Trang 22

CẤU TRÚC CHƯƠNG TRÌNH

3.2.4 Cấu trúc chương trình phân trang

 Phân trang các modul được biên dịch thành một modul duy nhất, chia thành các phần có kích thước bằng nhau

 Cấu trúc phân trang HĐH phải phân trang có kích thước bằng nhau, bằng với kích thước các trang chương trình gọi là các khung trang (Frame)

 Khi thực hiện, HĐH nạp trang của chương trình vào tại các khung trang liên tiếp hoặc không liên tiếp trên bộ nhớ

 HĐH xây dựng PCT: page control table để biết được một trang đã được nạp vào bộ nhớ, nếu nạp rồi thì được chứa

Trang 23

CẤU TRÚC CHƯƠNG TRÌNH

3.2.5 Cấu trúc chương trình phân đoạn

 Phân đoạn các modul được biên dịch thành các modul riêng lẻ và gọi là các đoạn chương trình

 Bộ nhớ phải được phân đoạn, có kích thước không bằng nhau, tương ứng với kích thước của các đoạn chương trình, gọi là các phân đoạn bộ nhớ

 Khi thực hiện, HĐH nạp các đoạn của chương trình tại các phân đoạn liên tiếp hoặc không liên tiếp trên bộ nhớ

Trang 24

CẤU TRÚC CHƯƠNG TRÌNH

3.2.5 Cấu trúc chương trình phân đoạn

 HĐH xây dựng SCT: segment control table, để biết đoạn

đã được nạp vào bộ nhớ hay chưa và ở phân đoạn nào

Ưu điểm của phân trang và phân đoạn:

 Có hỗ trợ từ chương trình biên dịch, tiết kiệm bộ nhớ

 HĐH đa nhiệm, hỗ trợ nhiều cho 2 cấu trúc này và đặc biệt là HĐH có cài đặt sử dụng máy ảo

 Ít xảy ra việc thiếu bộ nhớ vì chương trình có thể được đưa ra khỏi đĩa và đưa vào lại thời điểm thích hợp

Hạn chế: tốn bộ nhớ để chứa PCT, SCT, làm chậm tốc độ

Trang 25

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.1 Kỹ thuật phân vùng cố định

 Không gian địa chỉ được chia thành 2 phần cố định:

• Phần vùng địa chỉ thấp dùng để chứa chính HĐH

• Phần còn lại là phần user program, sẵn sàng cho việc

sử dụng của các tiến trình khi được nạp vào bộ nhớ

 Phần user program đối với:

• HĐH đơn nhiệm: kiểm soát được sự truy xuất, bằng

thanh ghi giới hạn địa chỉ Khi truy xuất vào một địa chỉ thì HĐH so sánh địa chỉ đã ghi trong thanh ghi giới hạn Nếu nhỏ hơn không cho truy xuất, ngược lại cho truy xuất

Trang 26

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.1 Kỹ thuật phân vùng cố định

• HĐH đa nhiệm: user program phân ra thành nhiều

phân vùng Khi tiến trình nạp vào thì kích thước của

nó phải nhỏ hơn kích thước của partition còn trống Nếu không còn Partition trống thì HĐH phải chuyển một tiến trình (Swap out) ra ngoài:

- Tiến trình đó có kích thước vừa đủ

- Không ở trạng thái ready, running

- Không có liên quan đến tiến trình running khác

Trang 27

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.1 Kỹ thuật phân vùng cố định

 Có hạn chế đối với partition có kích thước bằng nhau:

• CT có kích thước nhỏ hơn với partition thì xảy ra hiện

tượng phân mảnh bên trong, gây lãng phí bộ nhớ.

Ví dụ: có 3 không gian trống là 30KB nằm rãi rác trên bộ nhớ, khi nạp một modul có kích thước 12KB cũng không thực hiện được, hiện tượng này gọi là phân mảnh bộ nhớ.

Trang 28

Process

Trang 29

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.1 Kỹ thuật phân vùng cố định

 Mỗi phân vùng có một hàng đợi

 Hệ thống dùng hàng đợi chung cho tất cả các phân vùng

Trang 30

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

 Số lượng, kích thước của mỗi phân vùng thay đổi

 Phần user program không được phân chia trước mà khi có tiến trình được nạp thì HĐH cấp cho nó một không gian vừa đủ để chứa tiến trình, phần còn lại để sẵn sàng cấp cho tiến trình khác sau này

Trang 31

• Một phần được cấp cho tiến trình.

• Phần còn lại là trả lại hoặc tìm các vùng nhớ còn trống để

kết hợp thành một vùng nhớ lớn hơn để đáp ứng cho tiến trình có yêu cầu

Trang 34

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

 Tiến trình được nạp vào bộ nhớ thì HĐH phải lựa chọn khối nhớ trống phù hợp nạp vào.

đúng bằng kích thước của tiến trình cần được nạp.

chọn khối nhớ trống đầu tiên có kích thước đủ lớn để nạp.

nhớ vừa được cấp phát và chọn khối nhớ trống kế tiếp đủ lớn để nạp tiến trình

Trang 35

 Khối nhớ 22k nếu theo thuật toán First-fit, phân mảnh 6k

 Khối nhớ 18k nếu theo thuật toán Best-fit, phân mảnh 2k

 Khối nhớ 36k nếu theo thuật toán Next-fit, phân mảnh 20k

Trang 36

vùng nhớ thường có kích thước lớn, hạn chế sự phân mảnh

tìm khối nhớ bằng kích thước của tiến trình yêu cầu, giảm hiệu suất và chọn khối nhớ vừ đủ nên dẫn đến sự phân mảnh

Trang 37

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

 Thiếu bộ nhớ HĐH Swap out tiến trình ra ngoài sau đó swap

in Khi nạp lại thì có thể đúng hoặc không đúng với phân vùng nạp đầu tiên Sự thay đổi này làm ảnh hưởng đến việc truy xuất dữ liệu.

 Ví dụ CT có code tại địa chỉ 100K, nếu được nạp vào phân vùng 1 có địa chỉ 100k thì truy xuất là 200K.

 Nếu nạp tại phân vùng 2 có địa chỉ 200k thì truy xuất 300k

Để giải quyết vấn đề này HĐH phải thực hiện công tác tái định vị tiến trình vào bộ nhớ nhưng tránh việc truy xuất đến vùng nhớ của tiến trình khác.

Trang 38

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

 Sử dụng 2 thanh ghi đặc biệt

• Thanh ghi cơ sở (base register): Dùng để ghi địa chỉ cơ sở

của tiến trình tiến trình được nạp vào bộ nhớ.

• Thanh ghi giới hạn (limit register): Dùng để ghi địa chỉ

cuối cùng của tiến trình trong bộ nhớ

Trang 39

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

 Việc thiết lập giá trị của các thanh ghi này được thực hiện

cả khi tiến trình lần đầu tiên được nạp và swap in vào lại

bộ nhớ

• Thứ nhất: cộng địa chỉ ô nhớ với giá trị địa chỉ trong thanh

ghi cơ sở để có được địa chỉ tuyệt đối của ô nhớ cần truy xuất

• Thứ hai: địa chỉ được so sánh với thanh ghi giới hạn: nếu

nằm trong giới hạn cho truy xuất, ngược lại thì ngắt lỗi truy xuất bộ nhớ.

Trang 40

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.2 Kỹ thuật phân vùng động

• Hạn chế của kỹ thuật này là phân mảnh bộ nhớ và lãng phí

bộ nhớ Để khắc phục HĐH sử dụng phân trang/phân đoạn

Địa chỉ tương đối

So sánh

Program

Data

Gởi ngắt đến hệ điều hành Tiến trình trong

bộ nhớ <

>

Trang 41

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.3 Kỹ thuật phân trang đơn

 Không gian địa chỉ được chia thành các phần có kích thước c ố

định bằng nhau gọi là khung trang (Frame page).

 Không gian địa chỉ của tiến trình được chia bằng với khung trang gọi là trang (page)

 Khi tiến trình nạp vào bộ nhớ thì nạp vào các khung trang trống

 HĐH theo dõi các khung trang còn trống hay đã cấp phát vào một danh sách và danh sách này được update thường xuyên.

Trang 42

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.3 Kỹ thuật phân trang đơn

 H Đ H d ùng PCT Page control table để theo dõi các trang trên bộ

Trang 43

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.3 Kỹ thuật phân trang đơn

 C ác bảng trang có kích thước nhỏ chứa trong thanh ghi, ngược lại chứa trong bộ nhớ chính dùng thanh ghi để lưu trữ địa chỉ bắt đầu nơi lưu trữ bảng trang gọi là PTBR: page table base register

 Khi cần truy xuất bộ nhớ CPU phát ra địa chỉ logic gồm:

• Số hiệu trang (page): Số hiệu trang cần truy xuất.

• Địa chỉ tương đối trong trang (offset): kết hợp với địa chỉ bắt

đầu của trang để xác định địa chỉ vật lý của ô nhớ cần truy xuất

Trang 44

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.4 Kỹ thuật phân đoạn đơn

 Không gian địa chỉ bộ nhớ vật lý được chia thành các phần có kích thước c ố định kh ông bằng nhau gọi là ph ân đoạn

(Segment) Mỗi phân đoạn bao gồm số hiệu phân đoạn và kích thước của nó

 Khi một tiến trình được nạp vào bộ nhớ thì tất cả các đoạn của nó

sẽ được nạp vào các phân đoạn còn trống khác nhau trên bộ nhớ

Trang 45

KỸ THUẬT CẤP PHÁT BỘ NHỚ CHÍNH

3.3.4 Kỹ thuật phân đoạn đơn

 HĐH sử dụng bảng SCT (Segment control table) để theo dõi các đoạn tiến trình khác nhau trên bộ nhớ Bảng này có 2 trường:

• Trường thứ nhất: Địa chỉ cơ sở (base) của phân đoạn mà đoạn

chương trình tương ứng được nạp

• Trường thứ hai: Cho biết độ dài, giới hạn (length/limit) của

phân đoạn và có tác dụng dùng để kiểm soát sự truy xuất

 Các bảng phân đoạn có kích thước nhỏ chứa trong các thanh ghi, ngược lại được chứa trong bộ nhớ chính, HĐH dùng thanh ghi lưu trữ địa chỉ bắt đầu nơi lưu trữ bảng phân đoạn gọi là thanh ghi STBR: Segment table base register

Ngày đăng: 20/04/2022, 15:39

HÌNH ẢNH LIÊN QUAN

 Bảng đồ bit - file_goc_771406
ng đồ bit (Trang 32)
Ví dụ: giả sử có các khối nhớ như hình sau và có 1 tiến trình 16K cần được nạp vào bộ nhớ - file_goc_771406
d ụ: giả sử có các khối nhớ như hình sau và có 1 tiến trình 16K cần được nạp vào bộ nhớ (Trang 35)

TRÍCH ĐOẠN

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