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 1GV: Đỗ Công ĐứcKhoa khoa học máy tính
NGUYÊN LÝ HỆ ĐIỀU HÀNH
(3 Tín chỉ)
Trang 2Chươ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 3Chươ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 5NHIỆ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 6NHIỆ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 7NHIỆ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 8NHIỆ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 9NHIỆ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 10NHIỆ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 11NHIỆ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 12có 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 13CẤ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 14CẤ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 16CẤ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 17CẤ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 18CẤ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 19CẤ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 20CẤ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 21CẤ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 22CẤ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 23CẤ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 24CẤ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 25KỸ 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 26KỸ 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 27KỸ 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 28Process
Trang 29KỸ 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 30KỸ 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 34KỸ 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 36vù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 37KỸ 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 38KỸ 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 39KỸ 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 40KỸ 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 41KỸ 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 42KỸ 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 43KỸ 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 44KỸ 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 45KỸ 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