Chương 4 QUẢN LÝ BỘ NHỚ THỰC
4.1 Bộ nhớ thực
4.1.1 Tổ chức bộ nhớ
Bộ nhớ là một thành phần máy tính để lưu chương trình và dữ liệu. Nếu khơng cĩ bộ nhớ để CPU cĩ thể đọc và ghi dữ liệu thì khơng cĩ các chương trình và dữ liệu lưu lại. Khi thực hiện một chương trình, CPU đưa các tiến trình vào hàng đợi và chờ xử lý. Trong quá trình chuyển ngữ cảnh CPU cĩ thể lấy khối dữ liệu tiến trình thao tác thơng qua các hệ thống thanh ghi. Hệ thống thanh ghi trong máy tính là loại bộ nhớ đặc biệt thao tác rất nhanh và luơn luơn cập nhật. Nhưng hệ thống thanh ghi khơng đủ để chứa dữ liệu. Các nhà thiết kế bộ nhớ thường dùng một cơng nghệ mới nhằm tăng sức chứa của các chip, khơng cùng tốc độ nên bộ nhớ càng chậm hơn, CPU cần đợi các chu trình . Do đĩ, đặt một bộ nhớ lớn trong CPU sẽ làm tăng giá thành và kích thước CPU sẽ tăng theo. Vì vậy người ta thiết kế thêm trong CPU một bộ nhớ nhỏ và nhanh gọi là cache . Tác dụng của cache lưu những từ nhớ mà CPU cĩ thể dùng tới. Khi CPU xử lý tiến trình trước tiên sẽ lấy dữ liệu trong bộ nhớ cache này. Bộ nhớ này cũng cĩ một tên khác là cache nội. Khi các byte, từ mà CPU khơng tìm thấy trong cache sẽ tìm trong bộ nhớ cache thứ cấp được tổ chức trong mainboard. Do bộ nhớ cache đắt , nên các nhà thiết kế chỉ tính luợng cache vưà đủ để thao tác. Nếu từ nhớ khơng cĩ sẵn trong cache nĩ tìm đến bộ nhớ chính.
Do bộ nhớ chính khơng cĩ khả năng lưu trữ dữ liệu lâu dài, khi hết hoạt động dữ liệu trong bộ nhớ chính cũng bị mất đi. Bộ nhớ chính vẫn là quá nhỏ khi xử lý chương trình. Người ta muốn lưu nhiều thơng tin hơn khả năng của nĩ và người ta nghĩ đến cây phân cấp bộ nhớ. Tiếp theo bộ nhớ chính là bộ nhớ ngồi để lưu trữ lâu dài hơn
Khi chuyển dần xuống cây phân cấp thời gian truy xuất ngày càng lớn hơn và sức chứa sẽ tăng lên và giá thành giảm xuống. Việc trang bị một hệ thống cĩ nhiều cấp như vậy là do tính kinh tế và mức độ sử dụng của hệ thống đĩ.
4.1.2 Các chiến lược quản lý bộ nhớ
• Chiến lược nạp (fetch) :
Registers Cache
Main me mory
Magnetic disk
Tape Optical disk
Cây phân cấp bộ nhớ
Tốc độ và giá thànhï giảm đần
Để thực hiện một chương trình ta phải cần nạp chương trình vào bộ nhớ chính, tạo lập các tiến trình để xử lý. Hàng đợi nhập hệ thống là tập hợp các chương trình trên đĩa đang chờ nạp vào bộ nhớ để tiến hành xử lý. Các địa chỉ trong chương trình nguồn là địa chỉ tượng trưng. Chương trình phải qua nhiều giai đoạn xử lý để chuyển đổi địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính. Và các dữ liệu hay chương trình từ bộ nhớ thực đưa vào bộ nhớ chính từ địa chỉ đã xác định của bộ nhớ chính. Việc nạp dữ liệu hay chương trình dưới hai hình thức:
- Nạp theo yêu cầu : khi cĩ yêu cầu tài nguyên của các tiến trình. Việc nạp
này tiết kiệm được bộ nhớ chính, nhưng phải chuyển đổi dữ liệu nhiều lần giữa bộ nhớ chính và thực. Tốc độ xử lý giảm.
- Nạp cĩ dự đốn trước : bằng các thuật tốn quản lý bộ nhớ chính , xác định số tài nguyên cĩ thể cần trong tương lai mà nạp các tài nguyên đĩ bộ nhớ chính. Sự nạp thường thực hiện trước tiên trên cache. Tốc độ xử lý nhanh nếu các dữ liệu là cần thiết gọi là cache hit , ngược lại tốn chỗ trong bộ nhớ chính gây ảnh hưởng các tiến trình khác nếu các tài nguyên đĩ chưa sử dụng.
• Chiến lược đặt (placement ) :
xác định vị trí trên bộ nhớ chính để đưa chương trình vào. Cĩ những phương pháp để đặt chương trình vào như sau:
- First fit : cấp phát khối bộ nhớ tự do đầu tiên đủ lớn.
- Best fit : cấp phát khối bộ nhớ tự do nhỏ nhất đầu tiên đủ lớn nhưng đủ lớn để thoả mãn yêu cầu.
- Worst fit: cấp phát khối bộ nhớ tự do lớn nhất.
• Chiến lược thay
thế (replacement) : nếu cịn nhiều
khơng gian nhớ thì khơng phải thay thế những tài nguyên ra ngồi và nạp các dữ liệu khác vào bộ nhớ chính.
Nguyên tắc chung là thay thế khối
khối dữ liệu hoặc chương trình nào cĩ
lần sử dụng kế tiếp, các thời điểm đổi khối nhớ tự do càng xa càng tốt để dành chỗ cho chương trình mới vào.
4.1.3 Các chế độ phân phối bộ nhớ
• Phân phối liên tục
Địa chỉ bắt đâu Độ lớn a 16K c 14K e 5K g 30K Yêu cầu 13K Hệ điều hành 16 KB tự do Đang dùng 14 KB tự do Đang dùng 5 KB tự do Đang dùng 30 KB tự do 0 a b c d e f g h a) Chiến lược FIRST-FIT
Địa chỉ bắt đâu Độ lớn e 5 K c 14K a 16K g 30K Yêu cầu 13K Hệ điều hành 16 KB tự do Đang dùng 14 KB tự do Đang dùng 5 KB tự do Đang dùng 30 KB tự do 0 a b c d e f g h b) Chiến lược BEST FIT
Địa chỉ bắt đâu Độ lớn a 16K c 14K e 5K g 30K Yêu cầu 13K Hệ điều hành 16 KB tự do Đang dùng 14 KB tự do Đang dùng 5 KB tự do Đang dùng 30 KB tự do 0 a b c d e f g h c) Chiến lược WORST -FIT
Danh sách các khối nhớ tự do
Danh sách các khối nhớ tự do
Mỗi chương trình được dành một vùng nhớ liên tục để chứa dữ liệu và chương trình. Các modul của chương trình được tập hợp một khối thống nhất, chứa đầy đủ thơng tin cĩ thể thực hiện được. Chỉ cần định vị chương trình một lần vào bộ nhớ.
M0 M1 M2 M3 M4 M5 M6
Phân phối liên tục cĩ tính lưu động cao, dễ dàng chép chương trình sang địa chỉ khác, nhưng lãng phí bộ nhớ. Điều này gây khĩ khăn trong thực tế là chương trình càng lớn cần phải tiết kiệm bộ nhớ gây ra hiện tượng phân mảnh ngoại vi.
• Phân phối khơng liên tục
Mỗi chương trình được chia thành nhiều modul nhỏ và chiếm vị trí khác nhau
trên bộ nhớ . Khi định vị chương trình hệ thống cần định vị modul gốc. Trong quá trình thực hiện cần tới modul nào thì cấp phát khối nhớ cho module đĩ và nạp tiếp modul đĩ. Khi hoạt động xong nĩ thu hồi khơng gian nhớ.
Phân phối khơng liên tục sẽ tiết kiệm bộ nhớ, nhưng chi phí quản lý các khối nhớ cịn trống cao, thuật tốn định vị bộ nhớ phức tạp gây ra hiện tượng phân mảnh nội vi.