Thời gian thực thi: nếu quá trình có thể được di chuyển trong thời gian thực thi từ một phân đoạn bộ nhớ này tới một phân đoạn bộ nhớ khác thì việc liên kết Liên kết các chỉ thị và dữ
Trang 1QUẢN LÝ
QUẢN LÝ
BỘ NHỚ
BỘ NHỚ
Trang 2Giới thiệu
Bộ nhớ chính là một tài nguyên của hệ thống dùng để
cấp phát và chia sẻ cho nhiều tiến trình đang ở trạng thái
hoạt động
Quản lí bộ nhớ là một trong những nhiệm vụ quan trọng
và phức tạp nhất của hệ điều hành
Công cụ cơ bản của quản lí bộ nhớ là sự phân trang
(paging) và sự phân đoạn(segmentation).Mỗi tiếp cận
có ưu điểm và nhược điểm riêng.Có thể kết hợp giữa
phân trang và phân đoạn để có được một chiến lược
quản lí bộ nhớ linh hoạt hơn Chọn phương pháp quản lý
bộ nhớ cho một hệ thống xác định phụ thuộc vào nhiều yếu tố, đặc biệt trên thiết kế phần cứng của hệ thống
Chúng ta thấy nhiều giải thuật yêu cầu hỗ trợ phần cứng mặc dù các thiết kế gần đây đã tích hợp phần cứng và
hệ điều hành
Trang 3Mục đích
Hiểu các cách khác nhau để quản lý bộ nhớ
Hiểu tiếp cận quản lý bộ phân trang và phân đoạn
Vận dụng một cách quản lý bộ nhớ phù hợp với hệ thống xác định
Trang 5Nền tảng
Bộ nhớ là trung tâm để điều hành hệ
thống máy tính Bộ nhớ chứa một mảng lớn các từ (words) hay các bytes, mỗi
phần tử với địa chỉ riêng CPU lấy các chỉ thị từ bộ nhớ dựa theo giá trị của thanh đếm chương trình.
Trang 6Liên kết địa chỉ
Chương trình được nạp vào bộ nhớ và
được đặt trong một tiến trình để chạy.
Input queue - tập hợp các tiến trình trên đĩa đang chờ đợi để được đưa vào bộ nhớ
để thực thi.
Chương trình người dùng đi qua một vài bước trước khi chạy
Trang 7 Thời gian thực thi: nếu quá trình có thể được di
chuyển trong thời gian thực thi từ một phân đoạn bộ
nhớ này tới một phân đoạn bộ nhớ khác thì việc liên kết Liên kết các chỉ thị và dữ liệu tới các địa chỉ có thể được thực hiện tại bất cứ bước nào sau đây:
Trang 8Xử lý nhiều bước của chương trình người
dùng
Trang 9Không gian địa chỉ logic và không gian
địa chỉ vật lí
Không gian địa chỉ logic ràng buộc với một không gian địa chỉ vật lý là trung tâm để quản lý bộ nhớ thích hợp
Logical address - được tạo ra bởi CPU, còn
được gọi là địa chỉ ảo
Physical address - địa chỉ được thấy bởi các
đơn vị bộ nhớ
Địa chỉ logic và địa chỉ vật lý là như nhau trong thời gian biên dịch và thời gian nạp địa chỉ ràng buộc nhau Cơ chế liên kết địa chỉ tại thời điểm
Trang 10Định vị tự động dùng thanh ghi tái định
vị
Trang 11 Nạp động không yêu cầu hỗ trợ đặc biệt từ hệ điều hànhNạp động không yêu cầu hỗ trợ đặc biệt từ hệ điều hành
Trang 12Liên kết động và các thư viện
Khi stub này được thực thi, nó kiểm tra để thấy chương
trình con được yêu cầu đã ở trong bộ nhớ hay chưa Nếu chưa, chương trình này sẽ nạp chương trình con vào trong
bộ nhớ Dù là cách nào, stub thay thế chính nó với địa chỉ của chương trình con và thực thi chương trình con đó
Liên kết động đặc biệt hữu ích cho các thư viện
Trang 13thi Tuy nhiên, một tiến trình có thể được hoán vị (swapped) tạm thời khỏi bộ nhớ tới vùng lưu trữ phụ backing store, sau đó mang trở lại bộ nhớ để việc thực thi được tiếp tục.
một đĩa tốc độ cao Nó phải đủ lớn để chứa các bản sao của tất cả hình ảnh bộ nhớ cho tất cả
người dùng, và nó phải cung cấp truy xuất trực tiếp tới các hình ảnh bộ nhớ này.
Trang 14 Thí dụ, giả sử một môi trường đa chương với
giải thuật lập thời biểu CPU round-robin Khi
định mức thời gian hết, bộ quản lý bộ nhớ sẽ
bắt đầu hoán vị ra (swap out) vùng lưu trữ phụ tiến trình vừa mới kết thúc và hoán vị vào (swap in) một tiến trình khác tới không gian bộ nhớ
được trống (hình 0-4) Do đó, bộ định thời biểu CPU sẽ cấp những phần thời gian tới những tiến trình khác trong bộ nhớ
Trang 15Hoán vị hai tiến trình dùng đĩa
như là backing store
Trang 16 Một biến thể của chính sách hoán vị này được dùng cho các giải thuật định thời trên cơ sở ưu tiên Nếu một tiến trình có độ ưu tiên cao hơn đến và muốn phục vụ, bộ quản lý bộ nhớ có thể hoán vị ra tiến trình có độ ưu tiên thấp hơn để mà nó có thể nạp và thực thi tiến trình có
độ ưu tiên cao hơn Khi tiến trình có độ ưu tiên cao hơn kết thúc, tiến trình có độ ưu tiên thấp hơn có thể được hoán vị vào trở lại và được tiếp tục Biến thể của hoán vị này thường được gọi là cuộn ra (roll out), và cuộn vào (roll in)
Phần lớn thời gian trao đổi là thời gian chuyển giao; thời gian chuyển giao tổng số là tỷ lệ thuận với số lượng bộ nhớ đổi chỗ
Các phiên bản sửa đổi của hoán vị được tìm thấy trên nhiều hệ thống (như UNIX, Linux và Windows)
Trang 17Cấp phát liên tục
Cấp phát liên tục
-Một cho hệ điều hành định vị
-Một cho các quá trình người dùng
Thanh ghi tái định vị chứa giá trị địa chỉ vật lý nhỏ
nhất, thanh ghi giới hạn chứa dãy các địa chỉ luận lý (thí dụ: tái định vị = 100040 và giới hạn = 74600)
Với các thanh ghi tái định vị và giới hạn, mỗi địa chỉ luận lý phải ít hơn thanh ghi giới hạn; MMU (đơn vị
quản lý bộ nhớ) ánh xạ địa chỉ luận lý động bằng cách cộng giá trị trong thanh ghi tái định vị Địa chỉ được tái định vị này được gửi tới bộ nhớ (như hinh dưới)
Trang 18Hỗ trợ phần cứng cho các thanh ghi tái định
vị và các giới hạn
Trang 19Phân mãnh
External Fragmentation - tổng bộ nhớ không gian tồn tại để đáp ứng yêu cầu, nhưng nó không phải là tiếp giáp
Internal Fragmentation - cấp phát bộ nhớ có thể không lớn hơn so với
bộ nhớ yêu cầu; sự khác biệt này là kích thước bộ nhớ trong một
phân vùng, nhưng không được sử dụng
Phân mãnh bộ nhớ có thể là phân mãnh trong hoặc phân mãnh ngoài
Xét cơ chế cấp phát nhiều phân khu với một lỗ trống có kích thước 18,464 bytes Giả sử rằng quá trình tiếp theo yêu cầu 18,462 bytes Nếu chúng ta cấp phát chính xác khối được yêu cầu, chúng ta để lại một lỗ trống có kích thước 2 bytes Chi phí để giữ vết của lỗ này sẽ lớn hơn kích thước của lỗ trống
Tiếp cận thông thường là chia bộ nhớ vật lý thành những khối có kích thước cố định, và cấp phát bộ nhớ dựa theo đơn vị của kích thước
khối Với tiếp cận này, bộ nhớ được cấp phát tới một quá trình có thể
là lớn hơn một chút so với khối được yêu cầu Sự chênh lệnh giữa hai
số này là phân mãnh trong-bộ nhớ bị phân mãnh trong đối với một phân khu thì không thể được dùng
Trang 20Hệ thống đa chương với phân khu động
Tập hợp các lỗ trống được tìm thấy để xác định lỗ nào là tốt nhất để cấp phát Các chiến lược first-fit, best-fit,
worst-fit là những chiến lược phổ biến nhất được dùng để chọn một lỗ trống từ tập hợp các lỗ trống
• First-fit: cấp phát lỗ trống đầu tiên đủ lớn Tìm kiếm có thể bắt đầu tại đầu tập hợp các lỗ trống hay tại điểm kết thúc của tìm kiếm first-fit trước đó Chúng ta dừng tìm
kiếm ngay khi chúng ta tìm thấy một lỗ trống đủ lớn
• Best-fit: cấp phát lỗ trống nhỏ nhất đủ lớn Chúng ta phải tìm toàn bộ danh sách, trừ khi danh sách được xếp thứ tự theo kích thước Chiến lược này tạo ra lỗ trống nhỏ nhất còn thừa lại
• Worst-fit: cấp phát lỗ trống lớn nhất Chúng ta phải tìm toàn danh sách trừ khi nó được xếp theo thứ tự kích
thước Chiến lược này tạo ra lỗ trống còn lại lớn nhất mà
có thể có ích hơn lỗ trống nhỏ từ tiếp cận best-fit
Trang 21 Một giải pháp đối với phân mãnh ngoài là kết lại thành khối (compaction)
trống với nhau trong một khối lớn Kết khối không phải luôn thực hiện được Nếu việc tái định vị là tĩnh và được thực hiện tại thời điểm hợp dịch và nạp thì việc kết khối là không thể
thực hiện được Kết khối chỉ có thể thực hiện được chỉ nếu tái định vị là động và được thực hiện tại thời điểm thực thi Nếu địa chỉ được tái định vị động, tái định vị yêu cầu chỉ di chuyển chương trình và dữ liệu, sau đó thay đổi thanh ghi nền để
phản ánh địa chỉ nền mới Khi kết khối là có thể, chúng ta
phải xác định chi phí của nó.
tới cuối bộ nhớ; tất cả lỗ trống di chuyển theo hướng ngược lại, tạo ra một lỗ trống lớn của bộ nhớ sẳn dùng Cơ chế này
có thể đắt.Một giải pháp khác cho vấn đề phân mãnh ngoài là cho phép không gian địa chỉ luận lý của một quá trình là
không liên tục, do đó cho phép một quá trình được cấp phát
bộ nhớ vật lý bất cứ đâu sau khi sẳn dùng Hai kỹ thuật bù trừ để đạt giải pháp này là phân trang và phân đoạn
Trang 22Phân trang
Phân trang là cơ chế quản lý bộ nhớ cho phép không gian địa chỉ vật
lý của quá trình là không kề nhau.
Bộ nhớ vật lý được chia thành các khối có kích thước cố định được gọi
là các khung (frames)
Bộ nhớ luận lý cũng được chia thành các khối có cùng kích thước
được gọi là các trang (pages).
Khi một quá trình được thực thi, các trang của nó được nạp vào các khung bộ nhớ sẳn dùng từ vùng lưu trữ phụ Vùng lưu trữ phụ được chia thành các khối có kích thước cố định và có cùng kích thước như các khung bộ nhớ
Tất cả các khung trống phải giử lại tất cả các track
Để thực hiện một chương trình với kích thước n trang thì cần phải tìm
n khung trống và nạp chương trình vào
Ta phải cài đặt bảng trang để chứa địa chỉ nền của mỗi trang trong
bộ nhớ vật lý Địa chỉ nền này được kết hợp với độ dời trang để định nghĩa địa chỉ bộ nhớ vật lý mà nó được gởi đến đơn vị bộ nhớ
Trang 23Phương pháp phân trang cơ bản
Số trang được dùng như chỉ mục vào bảng trang
và bảng trang chứa địa chỉ nền của mỗi trang
trong bộ nhớ vật lý.
Địa chỉ nền này được kết hợp với độ dời trang
để định nghĩa địa chỉ bộ nhớ vật lý mà nó được gởi đến đơn vị bộ nhớ
Trang 24Phần cứng phân trang
Trang 25Sự thi hành của bảng trang
bảng trang
thước của bảng trang
Trang 26Bảo vệ
Bảo vệ bộ nhớ trong môi trường phân trang được thực hiện bằng cách bảo vệ bit kết hợp với mỗi khung trang Bình thường, các bit được lưu giữ trong bảng trang.
-Thêm một bit là thường gắn liền với mỗi mục nhập
trong bảng trang: một bit hợp lệ- không hợp lệ
-Khi bit này được thiết lập để "hợp lệ", phân trang liên quan trong không gian địa chỉ logic của tiến trình và là
một (hay pháp lý hợp lệ) phân trang hợp lệ
-Khi bit được thiết lập để "không hợp lệ", trang không
có trong không gian địa chỉ logic của tiến trình địa chỉ
bất hợp lệ bị mắc kẹt bởi sử dụng bit hợp lệ- không hợp
lệ Hệ điều hành này đặt ra cho mỗi bit để cho phép hoặc không cho phép truy cập vào phân trang
Trang 27Bit hợp lệ hoặc không hợp lệ trong
bảng trang
Trang 28Cấu trúc bảng trang
-Trang phân cấp
-Bảng trang băm
-Bảng trang đảo
Trang 30Bảng trang được băm
Thường dùng cho việc quản lý Không gian địa chỉ lớn hơn 32bit,giá trị băm là số
Trang 31Cơ chế của bảng trang được băm
Trang 32Bảng trang đảo
Có một mục nhập cho mỗi trang thực của
bộ nhớ.
Mặc dù cơ chế này giảm lượng bộ nhớ
được yêu cầu để lưu mổi bảng
trang,nhưng nó gia tăng lượng thời gian cần cho việc tìm kiếm bảng khi có 1 tham chiếu xay ra.
Trang 33Hoạt động của bảng trang đảo
Trang 34Mã và dữ liệu riêng tư:
Mỗi tiến trình có bản sao riêng của mình về đăng ký và lưu trữ dữ liệu để giữ các dữ liệu để thực hiện của tiến trình
Trang cho mã và dữ liệu riêng tư có thể xuất hiện bất cứ đâu trong cùng một không gian địa chỉ logic
đâu trong cùng một không gian địa chỉ logic
Trang 35+ kích thước: tùy theo từng đoạn.
- Phân đoạn là một cơ chế quản lý bộ nhớ hổ trợ tầm nhìn bộ nhớ của người dùng.
Trang 36PHÂN ĐOẠN
Tầm nhìn chương trình của người dùng:
Trang 37trong bộ nhớ.
Trang 38PHÂN ĐOẠN
Cách nhìn logic về phân đoạn:
1 4
2 3
3 1
3
Trang 39PHÂN ĐOẠN
- Hệ điều hành sử dụng bảng phân đoạn SCTđể theo dõi các bảng phân đoạn: (gồm 2 trường) + base segment: địa chỉ cơ sở của phân
Trang 40thước lớn thì được lưu vào bộ nhớ chính) + STLR(segment table length register): để ghi kích thước hiện tại của bảng phân
đoạn.
Trang 41PHÂN ĐOẠN
- Một địa chỉ vật lý gồm có 2 phần: số hiệu phân đoạn s (từ 0 đến giới hạn đoạn) và độ dời phân đoạn d.
Trang 42PHÂN ĐOẠN
Sơ đồ về quá trinh xác định địa chỉ vật lý:
Trang 43PHÂN ĐOẠN
Xét ví dụ về phân đoạn:
Trang 44Phân đoạn và Phân trang
Hệ thống MULTICS giải quyết vấn đề của các
phân mảnh ngoài và thời gian dài tìm kiếm bằng cách phân trang các phân đoạn
Giải pháp khác với phân đoạn thuần túy trong
đó bảng đoạn không chứa địa chỉ cơ sở của
phân đoạn, mà đúng hơn là địa chỉ cơ sở của
một bảng trang cho phân đoạn này
một bảng trang cho phân đoạn này
Trang 45Phân đoạn với phân trang -
Intel 386
Như được hiển thị trong sơ đồ sau đây, Intel
386 sử dụng phân đoạn với phân trang để quản
lý bộ nhớ với hai cấp sơ đồ phân trang
Trang 46Intel 30.386 Địa chỉ Translation