1. Khái niệm (1): Kết nối địa chỉ
Kết nối địa chi:
- Chƣơng trình:
• Bao gồm dữ liệu & mã lệnh
• Phải đƣợc đƣa từ đĩa vào bộ nhớ trong
• Và đƣợc đặt vào một tiến trình để nó có thể chạy.
- Input queue: Tập hợp các tiến trình trên đĩa đang chờ để đƣợc đƣa vào trong bộ nhớ để chạy chƣơng trình.
- Chƣơng trình của ngƣời sử dụng Phải đi qua một số bƣớc trƣớc khi đƣợc chạy.
1. Khái niệm (2): Kết nối địa chỉ
Các bƣớc thực hiện chƣơng trình ngƣời dùng
1. Khái niệm (3): Kết nối địa chỉ
• Kết nối địa chỉ: Q trình liên kết địa chỉ của các lệnh và dữ liệu tới các địa chỉ bộ nhớ
1. Khái niệm (3): Kết nổi địa chỉ
Có thể xảy ra 3 giai đoạn khác nhau:
• Compile time: Nếu vị trí bộ nhớ đƣợc biết trƣớc, Mã chính xác (absolute
code) có thể đƣợc sinh ra; Phải biên dịch lại mã nếu vị trí bắt đầu thay đổi.
• Load time: Phải sinh ra mã có thể tái định vị (relocatable code) nếu khơng
biết vị trí bộ nhớ ở giai đoạn biên dịch.
• Execution time: Sự liên kết bị hoãn lại đến giai đoạn chạy nếu trong q
trình thực hiện, tiến trình có thể bị chuyển từ một đoạn bộ nhớ đến đoạn khác→ Cần có sự hỗ trợ phần cứng để ánh xạ địa chi (ví dụ, base và limit registers).
1. Khái niệm (3): Liên kết địa chỉ
Minh họa
Khái niệm (3): Liên kết địa chỉ
Base and Limit Registers (Đăng ký cơ sở và giới hạn)
• Một cặp thanh ghi cơ sở và giới hạn xác định không gian địa chỉ logic • CPU phải kiểm tra mọi bộ nhớ đƣợc tạo truy cập trong chế độ ngƣời dùng để chắc chắn rằng nó nằm giữa giới hạn cơ sở cho điều đó và ngƣời dùng
1. Khái niệm(4): Địa chỉ lôgic & Địa chỉ vật lý.
Các địa chỉ: • Logic (ào) • Và vật lý
Là nhƣ nhau trong các giai đoạn gắn kết địa chỉ compile-time và load-time; Chúng khác nhau trong execution-time.
1. Khái niệm(5): Địa chỉ lôgic & Địa chỉ vật lý
Memory-Management Unit
- (MMU): Là thiết bị phần cứng; Ánh xạ địa chi ảo tới địa chi vật lý.
• Trong lƣợc đồ MMU, giá trị trong thanh ghi định vị (relocation register) đƣợc cộng với tất cả địa chỉ đƣợc sinh ra bởi tiến trình của ngƣời dung tại thời điểm nó đƣợc gửi tới bộ nhớ.
• Chƣơng trình của ngƣời dùng làm việc với các địa chỉ logic; Nó khơng bao giờ nhận ra các địa chỉ vật lý thực.
Bảo vệ địa chỉ phần cứng
1. Khái niệm(7): Dynamic Loading-Tải động
• Chƣơng trình(routine): Chỉ đƣợc nạp vào bộ nhớ khi nó đƣợc gọi. • Ƣu điểm:
o Sử dụng không gian bộ nhớ tốt hơn;
o Tiến trình khơng dùng đến thì khơng bao giờ đƣợc nạp.
• Đặc điểm:
o Khơng yêu câu sự hỗ trợ đặc biệt từ HĐH,
o Đƣợc thực hiện thông qua thiết kế chƣơng trình.
1. Khái niệm(8): Dynamic Linking-Liên kết động
• Việc liên kết hỗn lại đến execution time.
• Ứng dụng liên kết động đặc biệt hữu dụng đối với các thƣ viện chƣơng trình; Nhất là trong việc cập nhật thƣ viện (Ví dụ: sửa lỗi)
1. Khái niệm(8): Dynamic Linking-Liên kết động
Stub:
• Đoạn mã nhỏ: Sử dụng để định vị các chƣơng trình thƣ viện cƣ trú trong bộ nhớ thích hợp (memory-resident library routine).
• Khi đƣợc thực hiện: Stub kiểm tra routine cần đến có trong bộ nhớ của tiến trình:
o Nếu chƣa thì chƣơng trình nạp routine vào bộ nhớ
o Nếu rồi Stub tự thay thế chính nó bởi địa chỉ của chƣơng trình rồi thực
hiện chƣơng trình đó.
1. Khái niệm (9): cơ chế Overlays
• Ý tƣởng: Chỉ giữ trong bộ nhớ những lệnh và dữ liệu cần đến tại mọi thời điểm (Thƣờng là các module tải) -> Giảm khơng gian nhớ liên tục dành cho chƣơng trình
• Sử dụng khi tiến trình có dung lƣợng lớn hơn bộ nhớ đƣợc cấp phát cho nó.
1. Khái niệm (9): cơ chế Overlays
• Cơ chế Overlay: Cho phép tổ chức chƣơng trình thành các đơn vị chƣơng trình(module)
•Module ln tồn tại trong q trình thực hiện - >Module chƣơng trình chính.
• Quan hệ độc lập/phụ thuộc chỉ sự có mặt của 1 nhóm module trong bộ nhớ địi hỏi/khơng địi hỏi sự có mặt của một nhóm module khác • Các module độc lập khơng cần thiết phải có mặt đồng thời trong bộ nhớ
- Ex: Chƣơng trình gồm
• 1 module ctr chính A (Địi hỏi bộ nhớ 30k); • Mọi module ctr khác đều phụ thuộc vào A
- A sử dụng 2 module độc lập: B(24KB), C(1OKB)
o B sử dụng 2 module độc lập: D(12KB), E(10K)
o C sử dụng 2 module độc lập: G(12KB), H(8KB)
o H sử dụng 2 module độc lập: I(6KB), J(6KB)
1. Khái niệm(10): cơ chế Overlays(tt)
Overlay: - Cây chƣơng trình gốc B cần: 24 + 12 = 36K - Cây chƣơng trình gốc C cần: • 10 + 8 + 6 = 24K - B, C độc lập khơng có mặt đồng thời ->Cần 36K (lấy module lớn) - Cả chƣơng trình cần: 30 (cho A) + 36 = 66K Không sử dụng overlay cần: • 30+24+10+12+10+12+8+6 + 6=118K
1. Khái niệm (10): Swapping
Một tiến trình có thể đƣợc tạm thời hoán đổi ra khỏi bộ nhớ tới backing store, và rồi đƣợc đƣa trở lại bộ nhớ để thực hiện tiếp.
Backing store: Thiết bị nhớ thứ cấp đủ lớn (đĩa từ) để cung cấp bản sao của tất cả hình ảnh bộ nhớ cho tất cả ngƣời sử dụng; Phải cung cấp sự truy nhập trực tiếp tới, các hình ảnh bộ nhớ này.
Roll out, roll in: Biến thể hoán đổi đƣợc sử dụng cho thuật giải lập lịch dựa trên mức ƣu tiên (príority-based scheduling); Tiến trình có mức ƣu tiên thấp hơn bị thay ra để tiến trình có mức ƣu tiên cao hơn có thể đƣợc nạp và thực hiện.
• Phần lớn thời gian hốn đổi là thời gian chuyển dữ llệu;
• Tổng thời gian chuyển tỷ lệ thuận với dung lƣợng bộ nhớ hốn đổI.
• Swap out: Chọn tiến trình để đƣa ra backing store
• Swap in: •Chọn tiến trìinh từ backing store để đƣa vào bộ nhớ trong
• Trong các hệ điêu hành sử dụng swapping, tồn tại module hệ thống swapper có chức năng:
o Chọn tiến trình swap out,
o Chọn tiến trình swap in,
o Định vị & quản lý không gian chuyển
1. Khái niệm(11): Sự phân mảnh - Fragmentation
• External Fragmentation: Tổng khơng gian bộ nhớ thực tế đủ đáp ứng yêu
cầu, nhƣng nó khơng năm kê nhau.
• Internal Fragmentation: Bộ nhớ đƣợc phân phối có thể lớn hơn khơng
đáng kể so với bộ nhớ đƣợc yêu cầu; Sự khác biệt kích thƣớc này là bộ nhớ bên trong một phân vůng, nhƣng không đƣợc sử dụng.
o Di chuyển các nội dung bộ nhớ để đặt tất cả các vùng nhớ tự do lại với nhau thành một khối lớn.
o Kết khối chỉ có thể tiến hành nếu: Sự tái định vị là động, và
nó đƣợc thực hiện trong execution time.
2. Các yêu cầu đối với quản lý bộ nhớ (1)
• Tái định vị: (relocation)
• Bảo vệ: (protection) • Chia sẻ: (sharing)
• Tổ chức lơgic (logical organization) • Tổ chức vật lý (physical organization)
2. Các yêu cầu đối với quản lý bộ nhớ (2): Tái định vị (relocation)
- Vấn đề:
o Khi một tiến trình đƣợc đƣa ra khỏi bộ nhớ. Sau đó lại đƣợc đƣa
vào ở một địa chi khác
o Khi tiến trình có thể lại ở vị trí khác yêu cầu tái định vị
- Giải pháp: Dùng địa chỉ tƣơng đối à cơ chế chuyển địa chi tƣơng đối
thành địa chỉ thực (ví dụ dùng thanh ghi base, limit)
2. Các yêu cầu đối với quản lý bộ nhớ (2): Tái định vị (relocation)
3. Các mơ hình quản lý bộ nhớ
Mơ hình đơn giản
• Mơ hình phân phối liên tục: Khơng có cơ chế swapping & bộ nhớ ảo
o Mono-programming: Đơn chƣơng
o Multi-programming with fixed partitions: Đa chƣơng với phân vùng cố
định
o Multi-programming with variant partitions: Đa chƣơng với phân vùng
thay đổi
•Các mơ hình phân phối gián đoạn
o Simple paging: Phân trang đơn giản
o Simple segmentation: Phân đoạn đơn giản
Mơ hình bộ nhớ ảo (Vitual memory) • Paging: Phân trang
• Segmentation: Phân đoạn
• Hybrid (segmentation + paging): Kết hợp
3.1. Mơ hình đơn giản
- Các mơ hình phân phối liên tục: Khơng có cơ chế swapping & bộ nhớ ảo
• Mono-programming (Lập trình đơn lẻ)
(Đa lập trình với phân vùng cố định)
• Multi-programming with variant partitions
(Đa lập trình với phân vùng biến thể)
- Các mơ hình phân phối khơng liên tục
• Simple paging (Phân trang đơn giản)
• Simple segmentation (Phân trang đơn giản)
3.1.1. Phân phối liên tục (1)
• Bộ nhớ chính đƣợc chia thành 2 phần:
o Nơi HĐH cƣ trú, thƣờng ở vùng nhớ thấp, chứa bảng vector ngắt.
o Các tiến trình của ngƣời dùng đƣợc chứa trong vùng nhớ cao.
• Phân phối phân vùng đơn (Single-partition allocation): Mỗi tiến trình chi làm việc trong vùng nhớ đã đƣợc phân
• Lƣợc đồ thanh ghi định vị: Đƣợc sử dụng để bảo vệ các tiến trình của ngƣời sử dụng từ các tiến trình khác và từ sự thay đổi dữ liệu và mã HĐH.
• Relocation register chứa giá trị địa chỉ vật lý nhỏ nhất;
• Limit register chứa dải địa chỉ logic: Mỗi địa chỉ logic phải nhỏ hơn limit register.
3.1.1. Phân phối liên tục(2)
3.1.1. Phân phối liên tục (2)
• Ví dụ các thanh ghi Relocation và Limit
3.1.1. Phân phối liên tục (3): Mono-programming (Đơn lập trình)
• Operation system + 1 user program
3.1.1. Cấp phát liên tục (4): MultiProgram - Fixed Partitions
- Bộ nhớ:
o Đƣợc chia thành các partition (phân vùng or miền or chƣơng..) cố định;
o Tên partition, địa chỉ, dung lƣợng đƣợc gán trong quá trình khởi tạo hệ
điều hành
- Partition 0: Dành cho nhân hệ điều hành
- Mỗi tiến trình đƣợc tải vào một partition nhất định và chỉ hoạt động trong partition chứa nó .
- Số tiến trình đồng thời trong bộ nhớ xác định trƣớc
• Tƣơng ứng với chế độ MVT (Multiprogramming w/a Variable number of Tasks) (Của hệ điều hành)
• Các tiến trình đƣợc nạp liên tục vào bộ nhớ đến khi còn đủ dung lƣợng. • Số lƣợng tiến trình đồng thời trong bộ nhớ không định trƣớc
3.1.1. Phân phối liên tục(5): MultiPrograming-Variant partitions • Multiple-partition allocation
3.1.2. Phân phối khơng liên tục
• Phân trang đơn giản: (simple paging) • Phân đoạn đơn giản: (simple segmenting)
3.1.2.1. Phân trang đơn giản (1)
Bộ nhớ tiến trình:
- Không gian địa chỉ logic của một tiến trình có thể khơng kề nhau;
- Tiến trình đƣợc phân phối bộ nhớ vật lý bất kỳ lúc nào khi bộ nhớ sẵn có.
Frame (page vật lý) : Chia bộ nhớ vật lý thành những khối có kích thƣớc cổ
định là lũy thừa của 2 (512 bytes - 16 MB). Đƣợc gọi là các frame (page vật lý).
Page (logic) : Chia bộ nhớ logic (dành cho các tiến trình) thành các khối cùng
kích thƣớc - các page. Mỗi page có kích thƣớc = 1 frame
3.1.2.1. Phân trang đơn giản(1)
- Ln theo dõi tất cả các frame cịn trống.
- Để chạy một chƣơng trình có kích thƣớc n pages, cần phải tìm n frames
cịn trống và nạp chƣơng trình.
- Thiết lập một bảng phân trang (page table) để biên dịch (translate) các địa
chỉ logic thành địa chỉ vật lý.
- Nội dung mỗi phần tử trong page table cho biết chỉ số frame (địa chỉ cơ
sở) của bộ nhớ vật lý
3.1.2.1. Phân trang đơn giản(2)
Lược đồ biên dịch địa chỉ
- Địa chỉ đƣợc tạo ra bởi CPU đƣợc chia thành:
o Page number (p):
o Đƣợc sử dụng làm chỉ số trang trong page table;
o Chứa địa chi cơ sở (base akddress) của mỗi trang trong bộ nhớ vật
lý.
- Page offset (d): Kết hợp với địa chỉ cơ sở để xác định địa chỉ bộ nhớ vật
lý đƣợc gửi đến bộ nhớ.
Ví dụ về phân trang
• n = 2 và m = 4 bộ nhớ 32 byte và trang 4 byte Ví dụ về phân trang (tiếp)
3.1.2.1. Phân trang đơn giản(5)
Hoạt động của Page Table
- Page table: Đƣợc lƣu trong main memory.
- Page-table base register (PTBR): Chỉ tới page table.
- Page-table length register (PRLR): Cho biết kích thƣớc của page
- Trong lƣợc đồ phân trang:
o Mọi sự truy nhập lệnh/dữ liệu yêu cầu 2 lần truy nhập bộ nhớ: Một
cho page table và một cho lệnh /dữ liệu (địa chi ô nhớ trong page). - truy nhập chậm hơn.
o Vấn đề 2 lần truy nhập bộ nhớ có thể đƣợc giải quyết bằng cách sử
dụng một bộ nhớ cache tra cứu nhanh đặc biệt. Gọi là bộ nhớ liên kết - associative memory or translation look-aside buffers (TLB)
3.1.2.1. Phân trang đơn giản(6)
• Phân trang với TLB
• Address translation (A') - Dịch địa chỉ (A ') • If A' is in associative register, get frame out.
(Nếu A' nằm trong thanh ghi liên kết, get frame out) • Otherwise get frame from page table in memory
(Nếu khơng thì lấy khung từ bảng trang trong bộ nhớ)
3.1.2.1. Phân trang đơn giản (7): Effective Access Time - Thời gian truy cập hiệu quả
- Associative Lookup (Tra cứu liên kết) = ε time unit (đơn vị thời gian)
- Assume memory cycle time is 1 microsecond (Giả sử thời gian chu kỳ bộ nhớ là 1 micro giây)
- Hit ratio (Tỷ lệ truy cập)
•percentage of times (phần trăm số lần)
o That a page number is found in the associative registers (Số trang đƣợc
tìm thấy trong các thanh ghi liên kết);
o ration related to number of associative registers (khẩu phần liên quan đến
số lƣợng thanh ghi liên kết)
(Phần trăm số lần tìm thấy trang trong cache).
Surpose Hit ratio (Tỷ lệ truy cập mục tiêu) = a.
In case Not found is 1- α (Trong trƣờng hợp Khơng tìm thấy là 1- α)
3.1.2.1. Phân trang đơn giản (12): Two-Level Paging Example
• Địa chỉ logic (trên máy 32-bit với kích thƣớc trang 4K) đƣợc chia thành:
o Số trang gồm 20 bit.
o Một trang offset bao gồm 12 bit.
• Vì bảng trang đƣợc phân trang, số trang đƣợc chia thành:
o Số trang 10 bit.
o Độ lệch trang 10 bit.
• Nhƣ vậy, một địa chỉ logic nhƣ sau:
o trong đó p1 là chỉ mục trong bảng trang ngoài, và p2 là dịch chuyển (độ
rời) trong trang của bảng trang ngoài.
3.1.2.1. Phân trang đơn giản(14): Address-Translation Scheme (Lƣợc đồ dịch địa chỉ)
• Address-translation scheme for a two-level 32-bit paging architecture (Lƣợc đồ dịch địa chỉ cho kiến trúc phân trang 32 bit hai cấp)
Không gian địa chỉ lôgic 64 bit
- Ngay cả lƣợc đồ phân trang hai cấp cũng khơng đủ nếu kích thƣớc trang là 4
KB (212)
• Bảng trang sau đó có 252 mục nhập
• Nếu lƣợc đồ hai cấp, các bảng trang bên trong có thể là 210 mục nhập 4 byte • Địa chỉ sẽ trơng giống nhƣ
• Bảng trang ngồi có 242 mục nhập hoặc 244 byte
• Một giải pháp là thêm bảng trang ngoài thứ 2
• Nhƣng trong ví dụ sau, bảng trang ngồi thứ 2 vẫn có kích thƣớc 234 byte và có thể có 4 quyền truy cập bộ nhớ để có đƣợc một vị trí bộ nhớ vật lý
Three-level Paging Scheme (Lƣợc đồ phân trang ba cấp)
3.1.2.2. Phân đoạn đơn giản (1)
• Lƣợc đồ quản lý bộ nhớ: Giúp ngƣời sử dụng 'nhìn thấy' bộ nhớ.
• Một chƣơng trình là một tập hợp các đoạn. Mỗi đoạn là một đơn vị logic nhƣ là:
o main program,
o procedure,
o function,
o object,
o local variables, global variables,
o common block,
o stack
3.1.2.2. Phân đoạn đơn giản (2)
• Chƣơng trình: Dƣới góc nhìn của ngƣời sử dụng
3.1.2.2. Phân đoạn đơn giản (3)
3.1.2.2. Phân đoạn đơn giản (4)
Kiến trúc phân đoạn
• Địa chỉ logic gồm 2 thành phần: <segment-number, offset>,
• Segment table
- Tƣơng tự báng phân trang,
- Nội dung mỗi mục trong Segment table gồm có:
o Base: Chứa địa chi vật lý đầu tiên của đoạn trong bộ nhớ.
o Limit: Xác định độ dài của đoạn.
- Segment-table base register (STBR): Trỏ tới vị trí của Segment table
(bảng phân đoạn) trong bộ nhớ.
- Segment-table length register (STLR): Xác định số đoạn mà một chƣơng
trình sử dụng;
- Segment number s: Là hợp lệ nếu s< STLR.
3.1.2.2. Phân đoạn đơn giản (5)
Kiến trúc phân đoạn(tiếp)
• Phân đoạn: Các đoạn có kích thƣớc khác nhau (khác với phân trang) • Định vị động đƣợc thực hiện bởi bảng phân đoạn
- Giải quyết bài toán phân phối bộ nhớ động
- First fit/best fit
- Có sự phân mảnh ngồi
3.1.2.2. Phân đoạn đơn giản (6)
Lược đồ phân đoạn
3.1.2.2. Phân đoạn đơn giản (7)
Ví dụ
3.1.2.3. Kết hợp phân đoạn - phân trang – MULTICS (1)
• Nguyên tắc: Bộ nhớ đƣợc phân thành các đoạn; Sau đó mỗi đoạn lại đƣợc phân trang.
• Hệ thống MULTICS giải quyết đƣợc vấn đề: phân mảnh ngoài và thời gian