Professional Documents
Culture Documents
He Dieu Hanh Duynn Chuong 4 Quan Ly Bo Nho 1 (Cuuduongthancong - Com)
He Dieu Hanh Duynn Chuong 4 Quan Ly Bo Nho 1 (Cuuduongthancong - Com)
.c
ng
co
Chương 4
an
th
ng
QUẢN LÝ BỘ NHỚ
o
du
u
cu
1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
1
Nội dung chương 4
om
1. Địa chỉ và các vấn đề liên quan.
.c
2. Một số cách tổ chức chương trình.
ng
3. Phân chương bộ nhớ.
co
Phân đoạn bộ nhớ.
an
4.
th
5. Phân trang bộ nhớ. ng
6. Bộ nhớ ảo.
o
du
8.
CuuDuongThanCong.com https://fb.com/tailieudientucntt 2
Địa chỉ và các vấn đề liên quan
om
Quản lý bộ nhớ là công việc của hệ điều hành với sự
.c
hỗ trợ của phần cứng nhằm phân phối, sắp xếp các
ng
co
process trong bộ nhớ sao cho hiệu quả.
an
Mục tiêu cần đạt được là nạp càng nhiều process vào
th
ng
bộ nhớ càng tốt (gia tăng mức độ đa chương trình)
o
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Các yêu cầu đối với việc quản lý bộ nhớ
.c
Cấp phát bộ nhớ cho các process
ng
Tái định vị (relocation): khi swapping,…
co
Bảo vệ: phải kiểm tra sự truy xuất bộ nhớ từ các
an
th
process có hợp lệ không. ng
Chia sẻ: cho phép các process chia sẻ vùng nhớ
o
du
Kết gắn địa chỉ nhớ luận lý của user vào địa chỉ
thực 4
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Địa chỉ nhớ
.c
Địa chỉ vật lý (physical address - địa chỉ thực): một vị trí thực
ng
trong bộ nhớ chính.
co
Địa chỉ luận lý (logical address): một vị trí nhớ được diễn tả
an
trong một chương trình
th
Trình biên dịch (compiler) tạo ra mã lệnh chương trình
ng
trong đó mỗi tham chiếu bộ nhớ đều là địa chỉ luận lý
o
Địa chỉ tương đối (relative address): kiểu địa chỉ luận lý
du
trong đó các địa chỉ được biểu diễn tương đối so với một
u
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Địa chỉ nhớ
.c
Khi một lệnh được thực thi, các tham chiếu đến địa
ng
co
chỉ luận lý phải được chuyển đổi thành địa chỉ thực.
an
Thao tác chuyển đổi thường có sự hỗ trợ của phần
th
ng
cứng để đạt hiệu suất cao
o
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Chuyển đổi địa chỉ
.c
Là quá trình ánh xạ một địa chỉ từ không gian địa chỉ
ng
nay sang không gian địa chỉ khác.
co
Biểu diễn địa chỉ nhớ
an
th
Trong source code: symbolic (các biến, hằng, pointer,…)
ng
Thời điểm biên dịch: thường là địa chỉ tương đối
o
du
module.
Thời điểm linking/loading: có thể là địa chỉ thực.
Ví dụ: dữ liệu nằm tại địa chỉ bộ nhớ thực 1212 7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Chuyển đổi địa chỉ
.c
Địa chỉ lệnh (instruction) và dữ liệu (data) được chuyển đổi
ng
thành địa chỉ thực có thể xảy ra tại ba thời điểm khác nhau
co
Compile time: nếu biết trước địa chỉ bộ nhớ của chương
trình thì có thể gán địa chỉ tuyệt đối lúc biên dịch.
an
– Khuyết điểm: cần biên dịch lại nếu thay đổi địa chỉ nạp
chương trình th
ng
Load time: tại thời điểm biên dịch, nếu chưa biết tiến trình
o
du
sẽ nằm ở đâu trong bộ nhớ thì compiler phải sinh mã địa chỉ
u
tương đối. Vào thời điểm loading, loader phải chuyển đổi
cu
địa chỉ tương đố thành địa chỉ thực dựa trên một địa chỉ nền
(base address).
– Địa chỉ thực được tính toán vào thời điểm 8nạp chương
trình phải tiến hành reload nếu địa chỉ nền thay đổi.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Địa chỉ và các vấn đề liên quan
om
Chuyển đổi địa chỉ
.c
Execution time: khi trong quá trình thực thi, process
ng
có thể được di chuyển từ segment nay sang
co
segment khác trong bộ nhớ thì quá trình chuyển
an
đổi địa chỉ được trì hoãn đến thời điểm thực thi
th
– CPU tạo ra địa chỉ luận lý cho process
ng
– Phần cứng cần hỗ trợ cho việc ánh xạ địa chỉ.
o
du
om
Các chương trình được tổ chức theo các cấu trúc sau:
.c
Cấu trúc tuyến tính
ng
Cấu trúc động
co
Cấu trúc Overlay
an
th
Cấu trúc phân trang ng
Cấu trúc phân đoạn
o
du
u
cu
10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Một số cách tổ chức chương trình
om
Cấu trúc tuyến tính:
.c
Tất cả các module, thư viện sử dụng trong chương
ng
trình khi biên dịch sẽ được biên dịch thành một
co
module duy nhất
an
th
Khi thực thi, hệ điều hành phải nạp toàn bộ module
ng
này vào bộ nhớ
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt 11
Một số cách tổ chức chương trình
om
Cấu trúc động:
.c
Chương trình được viết dưới dạng các module
ng
riêng rẽ.
co
Các module riêng rẽ được biên dịch thành các
an
th
module riêng, không tích hợp. ng
Khi thực thi, hệ điều hành chỉ nạp module chính vào
o
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt
12
Một số cách tổ chức chương trình
om
Cấu trúc overlay:
.c
Chương trình được biên dịch thành các module
ng
riêng rẽ.
co
Các module chương trình được chia thành các mức
an
khác nhau:
th
- Mức 0: Chứa module gốc dùng để nạp chương
o ng
trình.
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt
13
Một số cách tổ chức chương trình
om
Cấu trúc overlay (tt):
.c
Các module trong cùng một mức có thể có kích
ng
thước khác nhau. Kích thước của module lớn nhất
co
trong lớp được xem là kích thước của mức.
an
Bộ nhớ dành cho chương trình cũng được tổ chức
th
thành các mức tương ứng với các chương trình.
o ng
Khi thực thi chương trình hệ điều hành nạp sơ đồ
du
om
Cấu trúc phân trang:
.c
Các module chương trình được biên dịch thành một
ng
module duy nhất nhưng sau đó được chia thành
co
các phần có kích thước bằng nhau được gọi là các
an
trang.
th
Bộ nhớ phải được phân trang, tức chia thành các
o ng
không gian nhớ bằng nhau gọi là khung trang.
du
CuuDuongThanCong.com https://fb.com/tailieudientucntt
15
Một số cách tổ chức chương trình
om
Cấu trúc phân đoạn:
.c
Chương trình được biên dịch thành nhiều module
ng
độc lập, được gọi là các đoạn.
co
Bộ nhớ được phân đoạn thành các không gian có
an
kích thước khác nhau tương ứng với kích thước
của các đoạn chương trình. th
o ng
Khi thực thi chương trình, hệ điều hành có thể nạp
du
tất cả các đoạn, hoặc một vài đoạn cần thiết, vào
u
cu
các phân đoạn nhớ liện tiếp hoặc không liên tiếp.
Hệ điều hành có bộ điều khiển đoạn (SCT –
Segment Control Table)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
16
Phân chương bộ nhớ
om
Phân vùng cố định:
.c
Không gian địa chỉ được chia thành 2 vùng cố định:
ng
Vùng địa chỉ thấp dùng để chứa hệ điều hành
co
Vùng còn lại cấp cho các tiến trình được nạp vào bộ
an
nhớ chính (vùng dành cho người dùng).
Với hệ điều hành đơn chương:
th
ng
Vùng dành cho người dùng chỉ cấp cho một process
o
du
vùng.
Khi chương trình người dùng đưa ra địa chỉ cần truy
xuất, hệ điều hành sẽ so sánh với giá trị giới hạn
trong thanh ghi giới hạn để kiểm soát việc truy xuất.
CuuDuongThanCong.com https://fb.com/tailieudientucntt 17
Phân chương bộ nhớ
om
Phân vùng cố định:
.c
Với hệ điều hành đa chương:
ng
Vùng nhớ người dùng được chia thành nhiều phần
co
có kích thước khác nhau. Mỗi phần được gọi là
an
phân vùng.
th
Mỗi tiến trình có thể được nạp vào một phân vùng
ng
còn trống bất kỳ, nếu kích thước của nó là phù hợp.
o
du
om
Phân vùng cố định:
.c
Khi chương trình có kích thước quá lớn so với
ng
phân vùng?
co
Có thể thiết kế theo cấu trúc overlay.
an
Chỉ nạp phần cần thiết vào bộ nhớ. Khi cần nạp
th
thêm module mới thì ghi đè lên nội dung đang nhớ.
ng
Khi chương trình có kích thước quá nhỏ so với
o
du
phân vùng?
u
cu
om
Phân vùng động:
.c
Vùng nhớ người dùng được phân chia trước.
ng
Khi một tiến trình được nạp vào bộ nhớ thì hệ điều
co
hành sẽ cấp phát không gian nhớ vừa đủ cho nó.
an
Khi tiến trình kết thúc, hệ điều hành sẽ thu hồi để cấp
cho tiến trình khác.
th
ng
Hệ điều hành phải có cơ chế thích hợp để quản lý
o
du
om
Phân vùng động:
.c
Bản đồ bit
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt 21
Phân chương bộ nhớ
om
Phân vùng động:
.c
Danh sách liên kết
ng
co
an
th
o ng
du
u
cu
om
Phân vùng động:
.c
Các chiến lược cấp phát động:
ng
Best-fit: Chọn khối nhớ có kích thước vừa đúng
co
bằng kích thước của tiến trình cần nạp vào bộ
an
nhớ.
th
First-fit: Hệ điều hành sẽ tìm kiếm khối nhớ phù
o ng
hợp với yêu cầu. Khối nhớ đầu tiên phù hợp tìm
du
om
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân đoạn bộ nhớ (Segmentation)
om
Cơ chế MMU (Memory Management Unit) trong kỹ
.c
thuật phân đoạn
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân đoạn bộ nhớ (Segmentation)
om
Cài đặt bảng phân đoạn
.c
STBR (Segment Table Base Register) để lưu địa chỉ
ng
bắt đầu của bảng phân đoạn.
co
STLR (Segment Table Limit Register) lưu số phân
an
đoạn.
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân đoạn bộ nhớ (Segmentation)
om
Chia sẻ phân đoạn
.c
ng
co
an
th
o ng
du
u
cu
MMU gán hai phần tử trong hai bảng phân đoạn của hai tiến
trình cùng giá trị
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân đoạn bộ nhớ (Segmentation)
om
Bảo vệ phân đoạn
.c
Attribute: R (chỉ đọc), X (thực thi), W (ghi),…
ng
co
an
th
ng
Nhận xét về kỹ thuật phân đoạn:
o
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Phân trang đơn:
.c
Bộ nhớ chính được chia thành các phần bằng nhau
ng
và cố định. Đánh số thứ tự cho các phần này, bắt
co
đầu từ số 0. Các phần này được gọi là các khung
an
trang.
th
Không gian địa chỉ của các tiến trình cũng được
o ng
chia thành các phần có kích thước bằng kích thước
du
Khi tiến trình nạp vào bộ nhớ thì các trang được
nạp vào các khung trang bất kỳ còn trống. Các
khung trang này có thể không liên tiếp nhau.
CuuDuongThanCong.com https://fb.com/tailieudientucntt 29
Phân trang bộ nhớ (paging)
om
.c
ng
co
an
th
o ng
du
u
cu
om
Cấu trúc địa chỉ ảo:
.c
Kích thước của trang là lũy thừa của 2n (9<=n<=
ng
13)
co
Kích thước của không gian địa chỉ ảo là 2m (CPU
an
dùng địa chỉ ảo m bít)
th
m-n bit cao của địa chỉ ảo sẽ biễu diễn số hiệu
ng
trang, và n bit thấp biễu diễn địa chỉ tương đối
o
du
trong trang
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Cơ chế MMU (Memory Management Unit) trong mô
.c
hình phân trang
ng
co
Điạ chỉ vật lý = vị trí bắt đầu của khung trang f + d
an
th
o ng
du
u
cu
om
Cách tính điạ chỉ vật lý
.c
của MMU:
ng
chép d vào n bit thấp
co
của địa chỉ vật lý.
an
chép f vào (m-n) bit
cao của địa chỉ vật lý
th
o ng
Ví dụ: Một hệ thống có địa chỉ
du
om
Cài đặt bảng trang
.c
Thanh ghi PTBR (Page Table Base Register): lưu địa
ng
chỉ bắt đầu của bảng trang.
co
Thanh ghi PTLR (Page Table Limit Register): lưu số
an
phần tử trong bảng trang.
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Bộ nhớ kết hợp (Translation Lookaside Buffers - TLBs)
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Ví dụ:
.c
Một hệ thống máy tính 32 bit: kích thước 1 khung trang là 4K.
ng
Hỏi hệ thống quản lý được tiến trình kích thước tối đa là bao
co
nhiêu?
an
Máy tính 32 bit => địa chỉ ảo (p,d) có 32 bit => số bít của p +
th
số bít của d = 32, mà 1 trang 4K=212 bytes => d có 12 bit =>p
ng
có 20 bit => 1 bảng trang có 220 phần tử.
o
du
=> Hệ thống quản lý được tiến trình có tối đa 220 trang => kích
u
thước tiến trình lớn nhất là 220 x 212 byte = 232 byte =4 GB.
cu
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.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Tổ chức bảng phân trang
.c
Phân trang đa cấp.
ng
co
Bảng trang băm.
an
Bảng trang nghịch đảo
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Phân trang
.c
đa cấp
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Phân trang page number page offset
.c
đa cấp p1 p2 d
ng
10 10 12
co
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
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Bảng trang băm
.c
Khi không gian Một máy tính 64 bít, có RAM 256MB, kích
ng
địa chỉ ảo > 32 thước 1 khung trang là 4KB.
co
bít) Bảng trang thông thường phải có 252
an
mục, nếu dùng bảng trang băm có thể sử
th
ng dụng bảng có số mục bằng số khung trang
vật lý là 216 (<<252) với hàm băm là
o
hasfunc(p)=p mod 216
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Bảng trang băm: Cơ chế chuyển đổi địa chỉ khi sử
.c
dụng bảng trang băm
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Bảng trang nghịch
.c
đảo
ng
Bảng trang duy nhất để
co
quản lý bộ nhớ của tất
an
cả các tiến trình.
th
Mỗi phần tử của bảng ng
trang nghịch đảo là cặp
o
(pid, p)
du
trình
p là số hiệu trang.
Mỗi địa chỉ ảo là một bộ
ba (pid, p, d).
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Bảo vệ trang
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Chia sẻ bộ nhớ
.c
Các tiến trình dùng chung một số khung trang
ng
Ghi cùng số hiệu khung trang vào bảng trang
co
của mỗi tiến trình
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Nhận xét
.c
Loại bỏ được hiện tượng phân mảnh ngoại.
ng
co
Vẫn có hiện tượng phân mảnh nội.
an
Kết hợp cả hai kỹ thuật phân trang và phân đoạn:
Phân trang các phân đoạn.
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Mô hình phân trang kết hợp phân đoạn (Paged
.c
Segmentation)
ng
Một tiến trình gồm nhiều phân đoạn.
co
Mỗi phân đoạn được chia thành nhiều trang, lưu trữ vào
an
các khung trang có thể không liên tục.
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phân trang bộ nhớ (paging)
om
Cơ chế MMU trong mô hình phân đoạn kết hợp phân trang
.c
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt