1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

93 4 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 93
Dung lượng 5,2 MB

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

Nội dung

CÁC KHÁI NIỆM➢ Các yêu cầu đối với việc quản lý bộ nhớ: ▪ Cấp phát bộ nhớ cho các process ▪ Tái định vị relocation: khi swapping,… ▪ Bảo vệ: phải kiểm tra truy xuất bộ nhớ có hợp lệ khôn

Trang 1

Chapter 3: Memory

Trang 2

NỘI DUNG

I Các khái niệm

II Các kiểu địa chỉ nhớ

III Chuyển đổi địa chỉ nhớ

IV.Cấp phát bộ nhớ liên tục

V Cấp phát bộ nhớ không liên tục

Trang 3

▪ Những phần nào được nạp vào?

➢ Quản lý bộ nhớ giúp tối ưu hóa hoạt động của bộ nhớ

▪ Tối ưu hóa số tiến trình cùng lúc ở trong bộ nhớ chính nhằm nâng cao

tính đa chương.

Tận dụng tối đa bộ nhớ của máy tính.

Trang 4

I CÁC KHÁI NIỆM

➢ Quản lý bộ nhớ là công việc của hệ điều hành với sự hỗ trợ của phần cứng nhằm phân phối, sắp xếp các process trong bộ nhớ sao cho hiệu quả tối ưu.

➢ Mục tiêu cần đạt là nạp càng nhiều process vào bộ nhớ càng tốt

(gia tăng tính đa chương).

➢ Trong hầu hết hệ thống, kernel sẽ chiếm một phần cố định của bộ

nhớ, phần còn lại phân phối cho các process.

Trang 5

➢ Layout của bộ nhớ:

I CÁC KHÁI NIỆM

Trang 6

I CÁC KHÁI NIỆM

➢ Các yêu cầu đối với việc quản lý bộ nhớ:

▪ Cấp phát bộ nhớ cho các process

▪ Tái định vị (relocation): khi swapping,…

▪ Bảo vệ: phải kiểm tra truy xuất bộ nhớ có hợp lệ không

▪ Chia sẻ: cho phép các process chia sẻ vùng nhớ chung

▪ Kết gán địa chỉ nhớ luận lý (logic) của user vào địa chỉ thực (vật lý)

Trang 7

II CÁC KIỂU ĐỊA CHỈ NHỚ

➢ Bộ nhớ:là một dãy các ô nhớliên tục nhau

➢ Mỗi ô nhớ (một word) có một địa chỉ

MOV AX, 10

MOV BX, 20

ADD AX, AX, BX

Trang 8

II CÁC KIỂU ĐỊA CHỈ NHỚ

➢ Địa chỉ vật lý (physical address – địa chỉ thực, địa chỉ tuyệt đối) là một vị trí thực trong bộ nhớ chính.

➢ Địa chỉ logic (logical address – địa chỉ luận lý) là tham chiếu đến một vị trí nhớ độc lập với cấu trúc và tổ chức vật lý của bộ nhớ.

tham chiếu bộ nhớ đều là địa chỉ logic.

➢ Địa chỉ tương đối (relative address) là một kiểu địa chỉ logic trong đó các địa chỉ được biểu diễn tương đối so với một điểm xác định nào đó trong chương trình.

➢ Khi lệnh được thực thi, các tham chiếu đến địa chỉ logic phải được dịch sang địa chỉ vật lý Thao tác này cần có sự hổ trợ của phần cứng để đạt hiệu suất cao.

Trang 9

NẠP CHƯƠNG TRÌNH VÀO BỘ NHỚ

➢ Bộ linker: kết hợp các object module thành một file nhị phâncó khả năng

thực thi gọi là load module.

➢ Bộ loader: nạp load module vào bộ nhớ:

Trang 10

CƠ CHẾ THỰC HIỆN LINKING

Trang 11

III CHUYỂN ĐỔI ĐỊA CHỈ NHỚ

➢ Chuyển đổi địa chỉ: quá trình ánh xạ địa chỉ từ không gian địa chỉ

này sang không gian địa chỉ khác.

➢ Biểu diễn địa chỉ nhớ:

▪ Trong source code: tượng trưng (symbolic – biến, hằng, pointer, )

▪ Thời điểm biên dịch: các địa chỉ có thể tái định vị (relocatable

address) hay địa chỉ tương đối (relative address).

• Ví dụ: biến a ở vị trí 14 bytes so với phần header của module.

▪ Thời điểm linking/ loading: địa chỉ tuyệt đối Ví dụ: địa chỉ nằm tại địa chỉ bộ nhớ thực: 2030.

Trang 12

III CHUYỂN ĐỔI ĐỊA CHỈ NHỚ

Trang 13

III CHUYỂN ĐỔI ĐỊA CHỈ NHỚ

➢ Việc ánh xạ chỉ thị, dữ liệu vào địa chỉ bộ nhớ có thể xảy ra tại 3

thời điểm:

Thời điểm biên dịch: nếu biết trước địa chỉ bộ nhớ của chương

trình thì có thể kết gán địa chỉ tuyệt đối lúc biên dịch Nếu địa chỉ bắt đầu của vùng nhớ bị thay đổi thì sẽ phải biên dịch lại.

Thời điểm nạp: vào thời điểm loading, loader phải chuyển đổi

địa chỉ khả tái định vị thành địa chỉ thực dựa trên một địa chỉ nền.

Trang 14

CHUYỂN ĐỔI VÀO THỜI ĐIỂM DỊCH

➢ Ví dụ: chương trình com của MS-DOS

Trang 15

CHUYỂN ĐỔI VÀO THỜI ĐIỂM NẠP

Trang 16

CHUYỂN ĐỔI VÀO THỜI ĐIỂM NẠP

➢ Hệ điều hành sẽ trả về địa chỉ bắt đầu nạp tiến trình và thay các địa chỉ tham chiếu trong tiến trình (đang là địa chỉ logic) bằng địa chỉ vật lý theo công thức:

(địa chỉ vật lý) = (địa chỉ bắt đầu) + (địa chỉ logic)

➢ Mô hình linker -loader

Trang 17

CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI

Thời điểm thi hành: khi trong quá trình

thực thi, process có thể được di chuyển

từ segment này sang segment khác trong

bộ nhớ thì quá trình chuyển đổi địa chỉ

được trì hoãn đến thời điểm thực thi.

▪ Cần phải có hỗ trợ từ phần cứng để ánh

xạ địa chỉ (ví dụ: thanh ghi cơ sở và

thanh ghi giới hạn (base registers, limit

registers)).

▪ Sử dụng trong đa số các OS đa dụng

trong đó có các cơ chế swapping,

paging, segmentation

Trang 18

CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI

if (địa chỉ logic) < (giá trị thanh ghi giới hạn) then

(địa chỉ vật lý) = (giá trị thanh ghi nền) + (địa chỉ logic)

else báo lỗi

➢ Mô hình Base and Bound:

Trang 19

CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI

➢ Trong khi thực thi:

▪ Địa chỉ được chuyển đổi động trong khi thực thi.

▪ Không gian địa chỉ vật lý có thể không liên tục (noncontigunous).

▪ Cần có phần cứng để chuyển đổi địa chỉ logic sang địa chỉ vật lý

được nhanh.

Trang 20

MEMORY MANAGEMENT UNIT (MMU)

➢ Là một cơ chế phần cứng để ánh xạ địa chỉ logic thành địa chỉ

vật lý vào thời điểm xử lý.

➢ Trong mô hình MMU, mỗi địa chỉ phát sinh bởi một tiến trình

được cộng thêm giá trị của thanh ghi tái định vị (relocation

register) tại thời điểm nó truy xuất đến bộ nhớ.

➢ Chương trình người dùng chỉ quan tâm đến địa chỉ lôgic; nó không

thấy địa chỉ vật lý thật sự.

Trang 21

MEMORY MANAGEMENT UNIT (MMU)

Trang 22

DYNAMIC LINKING

➢ Quá trình link một số module ngoài (external module) được thực hiện sau

khi đã tạo xong load module.

▪ Trong windows: module ngoài là các file dll, trong Unix là các file so

(shared library).

➢ Load module chỉ chứa các tham chiếu đến các module ngoài Các tham

chiếu này có thể chuyển đổi trong thời điểm sau:

▪ Loading time (load time dynamic linking)

▪ Run time: khi có một lời gọi đến thủ tục được định nghĩa trong module

ngoài (run time dynamic linking).

➢ OS chịu trách nhiệm tìm các module ngoài và kết nối vào load module (kiểm tra xem module ngoài đã load vào bộ nhớ chưa).

Trang 23

DYNAMIC LINKING

Ưu điểm:

➢ Module ngoài là một thư viện, thủ tục cung cấp các tiện ích của OS Các chương trình thực thi có thể dùng các phiên bản khác nhau của module ngoài mà không cần sửa đổi, biên dịch lại.

➢ Chia sẻ: một module ngoài chỉ cần nạp vào bộ nhớ một lần Các process cần dùng module ngoài này thì cùng chia sẻ đoạn mã của module ngoài đó.

➢ Phương pháp dynamic linking cần có sự hổ trợ của OS trong việc kiểm tra xem thủ tục nào có thể chia sẻ giữa các process hay một phần mã của riêng process.

Trang 24

DYNAMIC LOADING

Cơ chế: chỉ khi nào được gọi đến thì một thủ tục mới được nạp

vào bộ nhớ chính => tăng độ hiệu dụng của bộ nhớ (memory utilization) bởi vì các thủ tục ít dùng sẽ không chiếm chỗ trong bộ nhớ.

➢ Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã chương trình

có tần xuất sử dụng thấp, không sử dụng thường xuyên.

Trang 25

MÔ HÌNH QUẢN LÝ BỘ NHỚ THỰC

➢ Các cơ chế quản lý bộ nhớ thực sau đây rất ít (hầu như là không có) được dùng trong các hệ thống hiện đại, tuy nhiên, nó là ý tưởng cơ bản cho mô hình quản lý bộ nhớ ảo sau này.

▪ Phân chia cố định (fix partition)

▪ Phân chia động (dynamic partition)

▪ Phân trang đơn giản (simple paging)

▪ Phân đoạn đơn giản (simple segmentation).

➢ Mô hình này không bao gồm bộ nhớ ảo, chỉ duy nhất bộ nhớ thực.

Trang 26

IV CẤP PHÁT BỘ NHỚ LIÊN TỤC

Trang 27

IV CẤP PHÁT BỘ NHỚ LIÊN TỤC

Ý tưởng:

➢ Mỗi tiến trình được nạp vào một vùng nhớ liên tục đủ lớn để

chứa toàn bộ tiến trình.

➢ Ưu điểm: việc chuyển đổi địa chỉ logic thành địa chỉ vật lý và

ngược lại chỉ cần dựa vào một công thức đơn giản

<địa chỉ vật lý> = <địa chỉ bắt đầu> + <địa chỉ logic>

➢ Nhược điểm: cấp phát liên tục có nhược điểm lớn nhất là không

sử dụng hiệu quả bộ nhớ do hiện tượng phân mảnh bộ nhớ.

Trang 28

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ

➢ Không thể nạp được một tiến trình nào đó do không có một vùng nhớ trống liên tục đủ lớn trong khi tổng kích thước các vùng nhớ trống

đủ để thỏa mãn yêu cầu.

Trang 29

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ

➢ Phân mảnh ngoại (external fragmentation):

▪ Vùng nhớ còn trống đủ lớn để thỏa mãn một yêu cầu cấp phát, nhưng lại không liên tục.

▪ Dùng kết khối (compacting), nếu có thể, để gom lại thành vùng nhớ liên tục.

➢ Phân mảnh nội (internal fragmentation):

▪ Vùng nhớ được cấp phát lớn hơn vùng nhớ yêu cầu.

▪ Thường xảy ra khi bộ nhớ thực được chia thành các khối kích thước

cố định (fixed-sized block) và các process được cấp phát theo đơn vị khối.

Trang 30

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ

OS sẽ cấp phát hẳn khối18,464 bytes cho process

 dư ra 2 bytes không dùng!

Trang 31

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ

➢ Ví dụ: nếu bộ nhớ có ba vùng nhớ trống liên tục với kích thước 1MB, 3MB, 5MB thì không thể nào nạp một chương trình có kích thước 6MB

mặc dù tổng kích thước bộ nhớ trống là 9MB.

Trang 32

IV CẤP PHÁT BỘ NHỚ LIÊN TỤC

➢ Để giải quyết vấn đề phân mảnh bộ nhớ:

▪ Đề ra chiến lược cấp phát hợp lý

▪ Tái định vị các tiến trình

▪ Sử dụng kỹ thuật hoán vị (swapping)

▪ Sử dụng kỹ thuật phủ lấp (overlay)

Trang 33

FIXED PARTITION

➢ Chia bộ nhớ thành nhiều partition có kích thước bằng

nhau hoặc khác nhau.

➢ Process nào có kích thước nhỏ hơn hoặc bằng kích

thước của partition thì được nạp vào partition đó.

➢ Nếu chương trình có kích thước lớn hơn partition thì

phải dùng cơ chế overlay.

➢ Nhận xét: dễ bị phân mảnh nội => không hiệu quả

Trang 34

CHIẾN LƯỢC PLACEMENT

➢ Partition có kích thước bằng nhau:

▪ Còn một partition trống => process được nạp vào partition đó.

▪ Không còn partition trống nhưng trong đó có process đang bị blocked => swap process đó ra bộ nhớ phụ nhường chỗ cho process mới.

Trang 35

CHIẾN LƯỢC PLACEMENT

➢ Partition có kích thước khác nhau:

▪ Gán mỗi process vào partition có

kích thước nhỏ nhất, phù hợp với nó.

▪ Có hàng đợi cho mỗi partition.

▪ Giảm thiểu phân mảnh nội.

▪ Vấn đề: có thể có hàng đợi full, một

số hàng đợi empty.

Trang 36

CHIẾN LƯỢC PLACEMENT

➢ Partition có kích thước không

Trang 37

DYNAMIC PARTITION

Trang 38

➢ Dùng để quyết định cấp phát khối bộ nhớ nào còn trống cho process.

➢ Chiến lược placement:

▪ Best-fit: chọn khối nhớ trống nhỏ nhất vừa đủ để cấp phát.

▪ First-fit: chọn khối nhớ trống phù hợp đầu tiên kể từ đầu bộ nhớ

▪ Next-fit: chọn khối nhớ trống phù hợp đầu tiên kể từ vị trí cấp

phát cuối cùng

▪ Worst-fit: chọn khối nhớ trống lớn nhất

ĐỀ RA CHIẾN LƯỢC CẤP PHÁT HỢP LÝ

Trang 39

CHIẾN LƯỢC PLACEMENT

Trang 40

ĐỀ RA CHIẾN LƯỢC CẤP PHÁT HỢP LÝ

➢ Chọn vùng nhớ trống nào để cấp phát cho một tiến trình khi có nhu cầu.

First-fit: Cấp phát vùng nhớ trống liên tục đầu tiên đủ lớn.

Best-fit: Cấp phát vùng nhớ trống liên tục nhỏ nhất đủ lớn Chiến

lược này tạo ra lỗ trống nhỏ nhất còn thừa lại => phải tìm kiếm trên toàn bộ danh sách các vùng trống.

Next-fit: chọn khối nhớ trống phù hợp đầu tiên kể từ vị trí cấp phát

cuối cùng.

Worst-fit: cấp phát vùng nhớ trống liên tục lớn nhất đủ lớn => phải

tìm kiếm trên toàn bộ danh sách.

➢ First-fit tốt hơn về tốc độ và Best-fit tối ưu hóa việc sử dụng bộ nhớ.

Trang 41

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH

➢ Kết hợp các mảnh bộ nhớ trống nhỏ rời rạc thành một vùng nhớ

trống lớn liên tục.

➢ Đòi hỏi nhiều thời gian xử lý, ngoài ra sự kết buộc địa chỉ phải

thực hiện vào thời điểm xử lý vì các tiến trình có thể bị di chuyển

trong quá trình dồn bộ nhớ.

Trang 42

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH

Trang 43

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH

Trang 44

KỸ THUẬT HOÁN VỊ (SWAPPING)

Cơ chế: Một process có thể tạm thời bị swap ra khỏi bộ nhớ

chính và lưu trên một hệ thống lưu trữ phụ Sau đó, process có thể được nạp lại vào bộ nhớ để tiếp tục quá trình thực thi.

Chính sách:

Round Robin

Roll out, Roll in: Dùng theo độ ưu tiên (process có độ ưu tiên thấp

sẽ bị swap out ra thay thế cho process có độ ưu tiên cao hơn).

Hiện nay, ít hệ thống sử dụng cơ chế swapping trên.

Trang 45

KỸ THUẬT HOÁN VỊ (SWAPPING)

Trang 46

KỸ THUẬT PHỦ LẤP (OVERLAY)

Cơ chế: Chia chương trình (process) thành nhiều phần nhỏ hơn bộ

nhớ, mỗi phần là một overlay Tại mỗi thời điểm, chỉ giữ lại trong

bộ nhớ những lệnh hoặc dữ liệu cần thiết, giải phóng các lệnh/dữ liệu chưa hoặc không cần dùng đến.

➢ Cơ chế này rất hữu ích khi kích thước một process lớn hơn không gian bộ nhớ cấp cho process đó.

➢ Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ trợ của các thư viện lập trình) chứ không cần sự hỗ trợ của hệ điều hành.

Trang 47

KỸ THUẬT PHỦ LẤP (OVERLAY)

Trang 48

Giả sử bộ nhớ chính được cấp phát các phân vùng có kích thước là

600K, 500K, 200K, 300K (theo thứ tự), sau khi thực thi xong, các

tiến trình có kích thước 212K, 417K, 112K, 426K (theo thứ tự) sẽ

được cấp phát bộ nhớ như thế nào, nếu sử dụng: Thuật toán First

fit , Best fit , Next fit, Worst fit ? Thuật toán nào cho phép sử dụng

bộ nhớ hiệu quả nhất trong trường hợp trên

BÀI TẬP

Trang 49

V CẤP PHÁT KHÔNG LIÊN TỤC

Ý tưởng: chia các vùng nhớ thành các frame (segment), các tiến

trình thành các fragment (pages) Các fragment (pages) sẽ được đưa vào các frame (segment) Các frame (segment) sẽ không được lưu trữ liên tục trên không gian vùng nhớ.

➢ Các kỹ thuật:

▪ Phân trang (paging)

▪ Phân đoạn (segment)

▪ Phân trang kết hợp phân đoạn.

Trang 50

PHƯƠNG PHÁP PHÂN TRANG (PAGING)

➢ Không gian địa chỉ logic của một tiến trình có thể không liên tục.

➢ Chia bộ nhớ vật lý thành các khối có kích thước cố định gọi là khung(frame) (kích thước là số mũ của 2, từ 512 đến 8192 bytes).

➢ Chia bộ nhớ logic thành các khối có cùng kích thước và gọi là trang(pages).

➢ Lưu trạng thái của tất cả các khung (frame).

➢ Để chạy một chương trình có kích thước n trang, cần phải tìm n khung trống

và nạp chương trình vào.

➢ Tạo một bảng trang để chuyển đổi địa chỉ lôgic sang địa chỉ vật lý.

➢ Có hiện tượng phân mảnh bộ nhớ nội vi

Trang 51

PHƯƠNG PHÁP PHÂN TRANG (PAGING)

Trang 52

MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ

Số hiệu trang (Page number)(p)–được dùng như là một chỉ số

của một bảng trang chứa địa chỉ cơ sở của mỗi trang trong bộ nhớ vật lý.

Địa chỉ tương đối trong trang (Page offset)(d)–kết hợp với địa chỉ

cơ sở để định ra không gian địa chỉ vật lý được gởi đến bộ nhớ.

Bảng trang sẽ có tổng cộng 2 m /2 n = 2 m - n

mục (entry)

Trang 53

MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ

Trang 54

MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ

Trang 55

CHUYỂN ĐỔI ĐỊA CHỈ NHỚ TRONG TRANG

Trang 56

CÀI ĐẶT BẢNG TRANG (PAGE TABLE)

➢ Bảng trang được đặt trong bộ nhớ.

Page-table base register (PTBR) chỉ đến bảng trang.

Page-table length register (PRLR) cho biết kích thước của bảng trang.

➢ Với mô hình này, mọi sự truy cập chỉ thị/ dữ liệu đều đòi hỏi hai lần truy cập vùng nhớ: 1)truy cập bảng trang; 2)chỉ thị hoặc dữ liệu => có vẻ chậm.

➢ Khắc phục vấn đề hai lần truy cập vùng nhớ bằng cách sử dụng một vùng

đệm phần cứng tra cứu nhanh đặc biệt (special fast-lookup hardware) gọi là

associative registers hoặc translation look-aside buffers (TLBs)

Trang 57

CÀI ĐẶT BẢNG TRANG (PAGE TABLE)

Trang 58

TRANSLATION LOOK-ASIDE BUFFERS

➢ TLB tìm kiếm truy xuất dữ liệu với tốc độ cực nhanh.

➢ Ánh xạ page number:

▪ Nếu page number có trong TLB (hit) => lấy ngay được frame

number => tiết kiệm được việc truy cập bộ nhớ để lấy frame number

từ bảng phân trang.

▪ Ngược lại (miss), phải lấy frame number từ bảng phân trang như

bình thường.

Trang 59

BẢO VỆ VÙNG NHỚ

➢ Làm sao biết trang nào của tiến trình nào? Cần bảo vệ các tiến

trình truy xuất vào trang không phải của mình.

➢ Việc bảo vệ vùng nhớ được cài đặt bằng cách liên kết một khung

với một bit, gọi là bit kiểm tra hợp lệ (valid-invalid bit).

Valid-invalid bit được đính kèm vào mỗi ô trong bảng trang:

▪ “valid” chỉ ra rằng trang đi kèm là nằm trong không gian địa chỉ

lôgic của tiến trình vì vậy truy xuất trang này là hợp lệ.

▪ “invalid” chỉ ra rằng trang đi kèm không nằm trong không gian địa chỉ lôgic của tiến trình.

Trang 61

TỔ CHỨC BẢNG TRANG (PAGE TABLE)

➢ Chỉ một bảng trang (cho mỗi tiến trình)

➢ Tiến trình nhiều trang => quản lý bộ nhớ rất lớn => số trang nhiều

=> kích thước của bảng trang phải lớn => không tối ưu.

➢ Giải pháp:

▪ Phân trang đa cấp (multilevel paging)

▪ Bảng trang nghịch đảo

Trang 62

PHÂN TRANG ĐA CẤP

➢ Phân chia bảng trang thành các phần nhỏ

➢ Bản thân bảng trang cũng được phân trang

Ngày đăng: 15/08/2022, 14:06

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w