Để thực hiện tốt nhiệm vụ này, hệ điều hành cần phải xem xét các khía cạnh: - Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý physic : làm cách nào để chuyển đổi một địa chỉ tượng
Trang 1CHƯƠNG 6
MỨC MÁY HỆ ĐIỀU
HÀNH
Trang 2CHƯƠNG 6 MỨC MÁY HỆ ĐIỀU HÀNH
6.1 Giới thiệu mức máy hệ điều hành
6.2 Bộ nhớ ảo
6.2.1 Việc phân trang - Paging
6.2.2 Thực hiện việc phân trang
6.2.3 Phương pháp Cấp trang khi có yêu cầu
và Mô hình tập làm việc
6.3 Các chỉ thị vào/ra ảo - tự đọc
Trang 36.1 Giới thiệu mức máy hệ điều hành
• Trình thông dịch chạy trên máy mức 1 có thể thông dịch các chương trình được viết bằng ngôn ngữ máy mức 2
• Trình thông dịch chạy trên máy mức 2 có thể thông dịch các chương trình được viết bằng ngôn ngữ máy mức 3.
Chúng ta gọi mức 3 là mức máy hệ điều hành.
Trang 46.1 Giới thiệu mức máy hệ điều hành
vi chương trình
HĐH thông dịch
Trang 56.1 Giới thiệu mức máy hệ điều hành
- Hệ điều hành chịu trách nhiệm cấp phát vùng nhớ cho các tiến trình
có yêu cầu Để thực hiện tốt nhiệm vụ này, hệ điều hành cần phải
xem xét các khía cạnh:
- Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý (physic) : làm
cách nào để chuyển đổi một địa chỉ tượng trưng (symbolic) trong chương trình thành một địa chỉ thực trong bộ nhớ ch í nh?
- Quản lý bộ nhớ vật lý: làm cách nào để mở rộng bộ nhớ c ó sẵn
nhằm lưu trữ được nhiều tiến trình đồng thời?
- Chia sẻ thông tin: làm thế nào để cho ph é p hai tiến trình có thể
chia sẻ thông tin trong bộ nhớ?
- Bảo vệ: làm thế nào để ngăn chặn c á c tiến trình xâm phạm đến
vùng nhớ được cấp phát cho tiến trình khác?
Trang 66.1 Giới thiệu mức máy hệ điều hành
- Các địa chỉ trong chương trình nguồn là địa chỉ
tượng trưng, vì thế, một chương trình phải trải qua nhiều giai đoạn xử lý để chuyển đổi các địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính
- Có thể thực hiện liên kết các chỉ thị và dữ liệu với
các địa chỉ bộ nhớ vào một trong những thời điểm sau:
Trang 76.1 Giới thiệu mức máy hệ điều hành
Thời điểm biên dịch:
Nếu tại thời điểm biên dịch, có thể biết vị
trí mà tiến trình sẽ thường trú trong bộ nhớ, trình biên dịch có thể phát sinh ngay
mã với các địa chỉ tuyệt đối
Nếu sau đó có sự thay đổi vị trí thường trú
ban đầu của chương trình, cần phải biên dịch lại chương trình.
Trang 86.1 Giới thiệu mức máy hệ điều hành
Nếu tại thời điểm biên dịch, chưa thể biết vị trí
mà tiến trình sẽ thường trú trong bộ nhớ, trình biên dịch cần phát sinh mã tương đối
Sự liên kết địa chỉ được trì hoãn đến thời điểm
chương trình được nạp vào bộ nhớ, lúc này các địa chỉ tương đối sẽ được chuyển thành địa chỉ tuyệt đối do đã biết vị trí bắt đầu lưu trữ tiến
trình
Khi có sự thay đổi vị trí lưu trữ, chỉ cần nạp lại
chương trình để tính toán lại các địa chỉ tuyệt đối, mà không cần biên dịch lại
Trang 96.1 Giới thiệu mức máy hệ điều hành
Thời điểm xử lý:
Nếu có nhu cầu di chuyển tiến trình từ
vùng nhớ này sang vùng nhớ khác trong quá trình tiến trình xử lý, thì thời điểm liên kết địa chỉ phải trì hoãn đến tận thời điểm
xử lý
Để thực hiện liên kết địa chỉ vào thời điểm
xử lý, cần sử dụng cơ chế phần cứng đặc biệt
Trang 106.1 Giới thiệu mức máy hệ điều hành
trên không gian nhớ vật lý:
Địa chỉ logic: còn gọi là địa chỉ ảo, là tất cả các
địa chỉ do bộ xử lý tạo ra
Địa chỉ vật lý: là địa chỉ thực tế mà trình quản lý
bộ nhớ nhìn thấy và thao tác
Không gian địa chỉ: là tập hợp tất cả các địa chỉ
ảo phát sinh bởi một chương trình
Không gian vật lý: là tập hợp tất cả các địa chỉ
vật lý tương ứng với các địa chỉ ảo
Trang 116.1 Giới thiệu mức máy hệ điều hành
Phương thức liên kết địa chỉ vào thời điểm
biên dịch và vào thời điểm nạp: Địa chỉ ảo và địa chỉ vật lý là như nhau
Phương thức liên kết vào thời điểm xử lý:
địa chỉ ảo và địa chỉ vật lý khác nhau.
Trang 126.2 Bộ nhớ ảo
• Thời kỳ đầu bộ nhớ máy tính thường nhỏ chương trình
càng bé càng tốt.
• Giải pháp: sử dụng bộ nhớ phụ + kỹ thuật overlay (mỗi
overlay có thể nằm lọt trong bộ nhớ) đòi hỏi nhiều công
sức của người lập trình cho việc quản lý overlay.
Bộ nhớ ảo (Virtual Memory):
• Được một nhóm nhà khoa học ở Manchester, đề xuất
Trang 136.2.1 Việc phân trang - Paging
• Phân bộ nhớ vật lý thành các khối có kích thước
cố định, bằng nhau: là khung trang - page frame
• Không gian địa chỉ được chia thành các khối có
cùng kích thước với khung trang: gọi là trang (page)
• Khi cần nạp một tiến trình để xử lý, các trang của tiến trình sẽ được nạp vào những khung trang còn trống Một tiến trình kích thước N trang sẽ yêu cầu N khung trang tự do
Trang 146.2.1 Việc phân trang - Paging
Mô hình bộ nhớ phân trang
Trang 156.2.1 Việc phân trang - Paging
Cơ chế MMU trong kỹ thuật phân trang:
Cơ chế phần cứng hỗ trợ thực hiện chuyển đổi
địa chỉ trong cơ chế phân trang là bảng trang
(pages table)
Mỗi phần tử trong bảng trang cho biết các địa chỉ bắt đầu của vị trí lưu trữ trang tương ứng trong
bộ nhớ vật lý (số hiệu khung trang trong bộ nhớ
vật lý đang chứa trang )
Trang 166.2.1 Việc phân trang - Paging
ảo, phải phân biệt 2 miền địa chỉ:
Trang 176.2.1 Việc phân trang - Paging
• Ý tưởng: tách biệt các khái niệm về
không gian địa chỉ và các vị trí nhớ:
• Vào bất cứ thời điểm nào 4096
word bộ nhớ có thể được truy cập
trực tiếp, nhưng chúng không nhất
thiết phải tương ứng với các địa
chỉ từ 0 4095.
• 4096 sử dụng word 0
• 4097 sử dụng word 1
• 8191 sử dụng word 4095 v.v.
Trang 186.2.1 Việc phân trang - Paging
? Điều gì sẽ xảy ra nếu chương trình
nhảy tới một địa chỉ nằm trong
Trang 196.2.1 Việc phân trang - Paging
• Kỹ thuật thực hiện overlay tự động được gọi là phân trang - paging, các đoạn chương trình được đọc vào bộ nhớ chính
từ bộ nhớ phụ được gọi là các trang.
• Cơ chế phân trang có thể coi là trong suốt đối với người
Trang 206.2.2 Thực hiện việc phân trang
• Bộ nhớ ảo cần có bộ nhớ phụ để chứa toàn bộ chương trình.
• Một số quy ước:
nhớ chính là các bản copy
• Cập nhật bản gốc, mọi thay đổi xảy ra với bản copy trong
bộ nhớ chính cần phải phản ánh vào trong bản gốc.
• Không gian địa chỉ ảo được chia thành các trang có kích thước bằng nhau, nằm trong khoảng 512 4096.
Trang 216.2.2 Thực hiện việc phân trang – V í dụ
được chia thành các frame
Trang 226.2.2 Thực hiện việc phân trang – V í dụ
Chuyển đổi địa chỉ: Mỗi địa chỉ phát sinh bởi CPU được chia thành hai phần:
Số hiệu trang (p): sử dụng như chỉ mục đến phần
tử tương ứng trong bảng trang
Địa chỉ tương đối trong trang (d): kết hợp với địa chỉ bắt đầu của trang để tạo ra địa chỉ vật lý mà trình quản lý bộ nhớ sử dụng
Trang 236.2.2 Thực hiện việc phân trang – V í dụ
Để dễ phân tách địa chỉ ảo thành số hiệu trang và địa chỉ tương đối, kích thước của một trang thông thường là một lũy thừa của 2 (512 bytes … 8192 bytes)
và kích thước trang là 2n
Thì m-n bits cao của địa chỉ ảo sẽ biễu diễn số hiệu trang
Trang 246.2.2 Thực hiện việc phân trang – V í dụ
Cơ chế phần cứng hỗ trợ phân trang
Trang 256.2.2 Thực hiện việc phân trang – V í dụ
Cài đặt bảng trang:
Trong trường hợp đơn giản nhất, một tập các
thanh ghi được sử dụng để cài đặt bảng trang
Tuy nhiên việc sử dụng thanh ghi chỉ phù hợp
với các bảng trang có kích thước nhỏ
Nếu bảng trang có kích thước lớn, nó phải được lưu trữ trong bộ nhớ chính, và sử dụng một
thanh ghi để lưu địa chỉ bắt đầu lưu trữ bảng
trang (PTBR)
Trang 266.2.2 Thực hiện việc phân trang – V í dụ
Mô hình bộ nhớ phân trang
Trang 276.2.2 Thực hiện việc phân trang – V í dụ
Trang 286.2.2 Thực hiện việc phân trang – V í dụ
Theo cách tổ chức này, mỗi truy xuất đến dữ liệu hay chỉ thị đều đòi hỏi hai lần truy xuất bộ nhớ:
Truy xuất đến bảng trang
Truy xuất đến bản thân dữ liệu!
Để giảm bớt việc truy xuất bộ nhớ hai lần sử dụng bộ nhớ
cache, có tốc độ truy xuất nhanh và cho phép tìm kiếm song
song, gọi là bộ nhớ kết hợp (TLBs)
TLBs được sử dụng để lưu trữ các trang bộ nhớ được truy cập gần hiện tại nhất Khi CPU phát sinh một địa chỉ, số hiệu trang của địa chỉ sẽ được so sánh với các phần tử trong TLBs
Nếu có trang tương ứng trong TLBs, xác định được ngay số hiệu khung trang tương ứng
Nếu không cần thực hiện thao tác tìm kiếm trong bảng trang
Trang 296.2.2 Thực hiện việc phân trang – V í dụ
Trang 306.2.2 Thực hiện việc phân trang
chỉ (ảo)22 của trang 3.
• Hình b: Mối liên hệ giữa
trang và địa chỉ ảo.
Trang 316.2.2 Thực hiện việc phân trang
Bảng phân trang:
• Bảng phân trang có số đề mục
(entry) bằng số lượng trang ảo,
có 3 trường:
1 Trường 1 (1 bit), 0/1: trang ảo
tương ứng không/có nằm trong
bộ nhớ chính.
2 Trường 2: địa chỉ (nơi chứa)
trang ảo trong bộ nhớ phụ khi
nó không nằm trong bộ nhớ
chính (thí dụ số hiệu track hay
sector trên đĩa).
3 Trường 3 (3 bit): chỉ khung
trang, là nơi mà trang nằm nếu
Trang 32Tạo địa chỉ bộ nhớ chính (vật lý) từ địa chỉ ảo
• Từ đ/c ảo tính được trang ảo
(+ địa chỉ trong trang ảo)
• Từ trang ảo, k.tra page table
sẽ biết trang ảo có trong bộ
nhớ chính không.
• Giả sử có: trường khung
trang 3 bit sẽ chỉ ra trang
nằm ở đâu.
• 3 bit này sẽ được nạp vào 3
bit bên trái nhất của MAR
• 12 bit thấp của MAR được
nạp địa chỉ trong trang ảo.
Nhận được 15 bit, chính là địa
chỉ cần cho bộ nhớ chính
dung lượng 32K.
Trang 336.2.2 Thực hiện việc phân trang
Minh hoạ ánh xạ từ không gian
chỉ ảo lên không gian bộ nhớ
Trang 346.2.2 Thực hiện việc phân trang
• Để tăng tốc độ việc chuyển đổi địa chỉ ảo thành địa chỉ vật
lý, có 2 cách:
• Bảng phân trang thường được giữ trong các thanh ghi phần cứng đặc biệt, việc chuyển đổi được thực hiện trực tiếp bằng phần
cứng Cách này đòi hỏi các chi phí phần cứng.
• Bảng phân trang trong các thanh ghi tốc độ cao và dùng vi
chương trình thực hiện chuyển đổi bằng lập trình trực tiếp đối với các thanh ghi Tuỳ thuộc vào kiến trúc của mức vi chương trình, chuyển đổi bằng cách này có thể gần nhanh bằng cách chuyển đổi trực tiếp bằng phần cứng mà không đòi hỏi phải có các mạch điện đặc biệt.
Trang 356.2.2 Thực hiện việc phân trang
Tổ chức bảng trang:
Mỗi hệ điều hành có một phương pháp riêng
để tổ chức lưu trữ bảng trang Đa số các hệ điều hành cấp cho mỗi tiến trình một bảng trang
Tuy nhiên phương pháp này không thể chấp
nhận được nếu hệ điều hành cho phép quản lý một không gian địa chỉ có dung lượng quá
(232, 264): trong các hệ thống như thế, bản thân bảng trang đòi hỏi một vùng nhớ qúa lớn!
Trang 366.2.2 Thực hiện việc phân trang
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 sẽ được phân trang
Trang 376.2.2 Thực hiện việc phân trang
Bảng trang nghịch đảo: sử dụng duy nhất một bảng trang nghịch đảo cho tất cả các tiến trình Mỗi phần
tử trong bảng trang nghịch đảo phản ánh một khung trang trong bộ nhớ bao gồm địa chỉ logic của một
trang đang được lưu trữ trong bộ nhớ vật lý tại khung trang này, cùng với thông tin về tiến trình đang được
sỡ hữu trang Mỗi địa chỉ ảo khi đ là một bộ � là một bộ
Trang 386.2.2 Thực hiện việc phân trang
Mỗi phần tử trong bảng trang nghịch đảo là một cặp <idp, p > Khi một tham khảo đến bộ nhớ được phát sinh, một phần địa chỉ ảo là <idp, p > được đưa đến cho trình quản lý bộ nhớ để tìm phần tử tương ứng trong bảng trang nghịch đảo
Nếu tìm thấy, địa chỉ vật lý <i,d> sẽ được phát sinh
Trong các trường hợp khác, xem như tham khảo bộ nhớ
đã truy xuất một địa chỉ bất hợp lệ
Trang 396.2.2 Thực hiện việc phân trang
Trang 406.2.2 Thực hiện việc phân trang
Chia sẻ bộ nhớ trong cơ chế phân trang:
Một ưu điểm của cơ chế phân trang là cho phép chia sẻ các trang giữa các tiến trình.Trong trường hợp này, sự chia sẻ được thực hiện bằng cách ánh xạ nhiều địa chỉ logic vào một địa chỉ vật l duy nhất C thể p � là một bộ � là một bộ � là một bộ
dụng kỹ thuật này để cho ph p c tiến trình chia sẻ một vùng code � là một bộ � là một bộ
chung: nếu có nhiều tiến trình của cùng một chương trình, chỉ cần lưu trữ
một đoạn code của chương trình này trong bộ nhớ, các tiến trình sẽ có thể cùng truy xuất đến c c trang chứa code chung này Lưu ý để c thể chia � là một bộ � là một bộ
sẻ một đoạn code, đoạn code này phải có thuộc tính reenterable (cho
phép một bản sao của chương trình được sử dụng đồng thời bởi nhiều
t c vụ) � là một bộ
Trang 416.2.2 Thực hiện việc phân trang
Trang 42Th ảo luận
phân mảnh ngoại vi : mỗi khung trang đều c � là một bộ thể được cấp phát cho một tiến trình nào đ � là một bộ
c yêu cầu Tuy nhiên hiện tượng phân mảnh � là một bộ nội vi vẫn có thể xảy ra khi kích thước của tiến trình không đ ng bằng bội số của k ch � là một bộ � là một bộ
thước một trang, khi đ , trang cuối cùng sẽ � là một bộ
không được sử dụng hết.
Trang 436.2.2 Thực hiện việc phân trang
của kỹ thuật phân trang là sự phân biệt rạch ròi góc nhìn của người dùng và của bộ phận quản lý bộ nhớ vật lý:
người dùng nhìn thấy bộ nhớ như là một không gian liên tục, đồng nhất và chỉ chứa duy nhất bản thân tiến trình này.
người sử dụng được lưu trữ phân tán khắp bộ nhớ vật lý, trong bộ nhớ vật lý đồng thời cũng
Trang 446.2.2 Thực hiện việc phân trang
đổi này là trong suốt đối với người sử
dụng.
trình cấp phát bộ nhớ, hệ điều hành sử
dụng một bảng khung trang, mà mỗi phần
tử mô tả tình trạng của một khung trang
vật lý : tự do hay được cấp phát cho một