Quản lý bộ nhớ trong hệ điều hành: Liền kề, hoán đổi, phân mảnh
Quản lý bộ nhớ là gì?
Quản lý bộ nhớ là quá trình kiểm soát và điều phối bộ nhớ máy tính, gán các phần được gọi là khối cho các chương trình đang chạy khác nhau để tối ưu hóa hiệu suất tổng thể của hệ thống.
Đây là chức năng quan trọng nhất của hệ điều hành, quản lý bộ nhớ chính. Nó giúp các tiến trình di chuyển qua lại giữa bộ nhớ chính và đĩa thực thi. Nó giúp HĐH theo dõi mọi vị trí bộ nhớ, bất kể nó được phân bổ cho một số tiến trình hay nó vẫn còn trống.
Tại sao nên sử dụng quản lý bộ nhớ?
Dưới đây là những lý do nên sử dụng quản lý bộ nhớ:
- Nó cho phép bạn kiểm tra xem cần phân bổ bao nhiêu bộ nhớ cho các tiến trình để quyết định bộ xử lý nào sẽ nhận bộ nhớ vào thời điểm nào.
- Theo dõi bất cứ khi nào hàng tồn kho được giải phóng hoặc chưa được phân bổ. Theo đó sẽ cập nhật trạng thái.
- Nó phân bổ không gian cho các thói quen ứng dụng.
- Nó cũng đảm bảo rằng các ứng dụng này không can thiệp lẫn nhau.
- Giúp bảo vệ các tiến trình khác nhau khỏi nhau
- Nó đặt các chương trình vào bộ nhớ để bộ nhớ được sử dụng hết mức.
Kỹ thuật quản lý bộ nhớ
Dưới đây là một số kỹ thuật quản lý bộ nhớ quan trọng nhất:
Phân bổ liền kề duy nhất
Đây là kỹ thuật quản lý bộ nhớ dễ dàng nhất. Trong phương pháp này, tất cả các loại bộ nhớ của máy tính ngoại trừ một phần nhỏ dành riêng cho HĐH đều có sẵn cho một ứng dụng. Ví dụ: hệ điều hành MS-DOS phân bổ bộ nhớ theo cách này. Một hệ thống nhúng cũng chạy trên một ứng dụng duy nhất.
Phân bổ được phân vùng
Nó chia bộ nhớ chính thành nhiều phân vùng bộ nhớ khác nhau, hầu hết là các vùng bộ nhớ liền kề. Mỗi phân vùng lưu trữ tất cả thông tin cho một nhiệm vụ hoặc công việc cụ thể. Phương pháp này bao gồm việc phân bổ một phân vùng cho một công việc khi nó bắt đầu và không được phân bổ khi nó kết thúc.
Quản lý bộ nhớ phân trang
Phương pháp này chia bộ nhớ chính của máy tính thành các đơn vị có kích thước cố định được gọi là khung trang. Đơn vị quản lý bộ nhớ phần cứng này ánh xạ các trang thành các khung cần được phân bổ trên cơ sở trang.
Quản lý bộ nhớ phân đoạn
Bộ nhớ được phân đoạn là phương pháp quản lý bộ nhớ duy nhất không cung cấp cho chương trình của người dùng một không gian địa chỉ tuyến tính và liền kề.
Các phân đoạn cần được hỗ trợ phần cứng dưới dạng bảng phân đoạn. Nó chứa địa chỉ vật lý của phần trong bộ nhớ, kích thước và các dữ liệu khác như trạng thái và bit bảo vệ quyền truy cập.
Hoán đổi là gì?
Swapping là phương pháp trong đó tiến trình sẽ được hoán đổi tạm thời từ bộ nhớ chính sang bộ nhớ lưu trữ dự phòng. Sau đó, nó sẽ được đưa trở lại bộ nhớ để tiếp tục thực thi.
Kho lưu trữ sao lưu là một đĩa cứng hoặc một số thiết bị lưu trữ thứ cấp khác 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. Nó cũng có khả năng cung cấp quyền truy cập trực tiếp vào những hình ảnh bộ nhớ này.
Lợi ích của việc hoán đổi
Dưới đây là những lợi ích/ưu điểm chính của việc hoán đổi:
- Nó cung cấp mức độ đa chương trình cao hơn.
- Cho phép di chuyển động. Ví dụ: nếu liên kết địa chỉ tại thời điểm thực thi đang được sử dụng thì các tiến trình có thể được hoán đổi ở các vị trí khác nhau. Ngược lại, trong trường hợp có ràng buộc về thời gian biên dịch và tải, các tiến trình sẽ được di chuyển đến cùng một vị trí.
- Nó giúp sử dụng bộ nhớ tốt hơn.
- Lãng phí tối thiểu thời gian CPU khi hoàn thành để có thể dễ dàng áp dụng phương pháp lập lịch dựa trên mức độ ưu tiên để cải thiện hiệu suất của nó.
Phân bổ bộ nhớ là gì?
Cấp phát bộ nhớ là một quá trình trong đó các chương trình máy tính được cấp phát bộ nhớ hoặc không gian.
Ở đây, bộ nhớ chính được chia thành hai loại phân vùng
- Bộ nhớ thấp – Operahệ thống ting nằm trong loại bộ nhớ này.
- Bộ nhớ cao– Các tiến trình của người dùng được giữ trong bộ nhớ cao.
Phân bổ phân vùng
Bộ nhớ được chia thành các khối hoặc phân vùng khác nhau. Mỗi quá trình được phân bổ theo yêu cầu. Phân bổ phân vùng là một phương pháp lý tưởng để tránh phân mảnh nội bộ.
Dưới đây là các sơ đồ phân bổ phân vùng khác nhau:
- Phù hợp đầu tiên: Trong kiểu phù hợp này, phân vùng được phân bổ, là khối đủ đầu tiên kể từ đầu bộ nhớ chính.
- Phù hợp nhất: Nó phân bổ tiến trình cho phân vùng là phân vùng nhỏ nhất đầu tiên trong số các phân vùng trống.
- Không phù hợp nhất: Nó phân bổ tiến trình cho phân vùng, đây là phân vùng có sẵn miễn phí lớn nhất trong bộ nhớ chính.
- Phù hợp tiếp theo: Nó gần giống với Fit đầu tiên, nhưng Fit này tìm kiếm phân vùng đủ đầu tiên từ điểm phân bổ cuối cùng.
Phân trang là gì?
Phân trang là một cơ chế lưu trữ cho phép HĐH truy xuất các tiến trình từ bộ lưu trữ phụ vào bộ nhớ chính dưới dạng các trang. Trong phương pháp Phân trang, bộ nhớ chính được chia thành các khối bộ nhớ vật lý có kích thước cố định nhỏ, được gọi là khung. Kích thước của khung phải được giữ giống như kích thước của một trang để tận dụng tối đa bộ nhớ chính và tránh phân mảnh bên ngoài. Phân trang được sử dụng để truy cập dữ liệu nhanh hơn và đó là một khái niệm logic.
Phân mảnh là gì?
Các tiến trình được lưu trữ và xóa khỏi bộ nhớ, điều này tạo ra không gian bộ nhớ trống, quá nhỏ để các tiến trình khác sử dụng.
Đôi khi, các tiến trình đó không thể phân bổ cho các khối bộ nhớ vì kích thước nhỏ và các khối bộ nhớ của nó luôn không được sử dụng, được gọi là phân mảnh. Loại sự cố này xảy ra trong hệ thống cấp phát bộ nhớ động khi các khối trống khá nhỏ nên không thể thực hiện bất kỳ yêu cầu nào.
Hai loại phương pháp phân mảnh là:
- Phân mảnh bên ngoài
- Phân mảnh nội bộ
- Sự phân mảnh bên ngoài có thể được giảm bớt bằng cách sắp xếp lại nội dung bộ nhớ để đặt tất cả bộ nhớ trống vào một khối duy nhất.
- Sự phân mảnh bên trong có thể được giảm bớt bằng cách chỉ định phân vùng nhỏ nhất, vẫn đủ tốt để thực hiện toàn bộ quá trình.
Phân khúc là gì?
Phương pháp phân đoạn hoạt động gần giống như phân trang. Sự khác biệt duy nhất giữa hai loại này là các phân đoạn có độ dài thay đổi, trong khi đó, ở phương pháp phân trang, các trang luôn có kích thước cố định.
Một phân đoạn chương trình bao gồm chức năng chính của chương trình, cấu trúc dữ liệu, chức năng tiện ích, v.v. HĐH duy trì một bảng bản đồ phân đoạn cho tất cả các quy trình. Nó cũng bao gồm một danh sách các khối bộ nhớ trống cùng với kích thước, số phân đoạn và vị trí bộ nhớ của nó trong bộ nhớ chính hoặc bộ nhớ ảo.
Tải động là gì?
Tải động là một quy trình của một chương trình không được tải cho đến khi chương trình gọi nó. Tất cả các thủ tục phải được chứa trên đĩa ở định dạng tải có thể định vị lại. Chương trình chính sẽ được nạp vào bộ nhớ và được thực thi. Tải động cũng cung cấp khả năng sử dụng không gian bộ nhớ tốt hơn.
Liên kết động là gì?
Liên kết là một phương pháp giúp HĐH thu thập và hợp nhất các mô-đun mã và dữ liệu khác nhau thành một tệp thực thi duy nhất. Tập tin có thể được tải vào bộ nhớ và thực thi. HĐH có thể liên kết các thư viện cấp hệ thống thành một chương trình kết hợp các thư viện tại thời điểm tải. Trong phương pháp liên kết động, các thư viện được liên kết tại thời điểm thực thi, do đó kích thước mã chương trình có thể vẫn nhỏ.
Sự khác biệt giữa tải tĩnh và tải động
Tải tĩnh | Tải động |
---|---|
Tải tĩnh được sử dụng khi bạn muốn tải chương trình của mình một cách tĩnh. Sau đó, tại thời điểm biên dịch, toàn bộ chương trình sẽ được liên kết và biên dịch mà không cần bất kỳ mô-đun bên ngoài hoặc phụ thuộc chương trình nào. | Trong chương trình được tải động, các tham chiếu sẽ được cung cấp và quá trình tải sẽ được thực hiện tại thời điểm thực thi. |
Tại thời điểm tải, toàn bộ chương trình được tải vào bộ nhớ và bắt đầu thực hiện. | Các quy trình của thư viện chỉ được tải vào bộ nhớ khi chúng được yêu cầu trong chương trình. |
Sự khác biệt giữa liên kết tĩnh và liên kết động
Dưới đây là sự khác biệt chính giữa Liên kết tĩnh và Liên kết động:
Liên kết tĩnh | Liên kết động |
---|---|
Liên kết tĩnh được sử dụng để kết hợp tất cả các mô-đun khác mà chương trình yêu cầu thành một mã thực thi duy nhất. Điều này giúp hệ điều hành ngăn chặn mọi sự phụ thuộc vào thời gian chạy. | Khi sử dụng liên kết động, nó không cần liên kết mô-đun hoặc thư viện thực tế với chương trình. Thay vì sử dụng tham chiếu đến mô-đun động được cung cấp tại thời điểm biên dịch và liên kết. |
Tổng kết
- Quản lý bộ nhớ là quá trình kiểm soát và điều phối bộ nhớ máy tính, gán các phần được gọi là khối cho các chương trình đang chạy khác nhau để tối ưu hóa hiệu suất tổng thể của hệ thống.
- Nó cho phép bạn kiểm tra xem cần phân bổ bao nhiêu bộ nhớ cho các tiến trình để quyết định bộ xử lý nào sẽ nhận bộ nhớ vào thời điểm nào.
- Trong Phân bổ liền kề đơn, tất cả các loại bộ nhớ của máy tính ngoại trừ một phần nhỏ dành riêng cho HĐH đều có sẵn cho một ứng dụng
- Phương pháp phân bổ phân vùng chia bộ nhớ chính thành các phân vùng bộ nhớ khác nhau, hầu hết là các vùng bộ nhớ liền kề nhau
- Phương pháp quản lý bộ nhớ phân trang chia bộ nhớ chính của máy tính thành các đơn vị có kích thước cố định được gọi là khung trang
- Bộ nhớ được phân đoạn là phương pháp quản lý bộ nhớ duy nhất không cung cấp cho chương trình của người dùng một không gian địa chỉ tuyến tính và liền kề.
- Swapping là phương pháp trong đó tiến trình sẽ được hoán đổi tạm thời từ bộ nhớ chính sang bộ nhớ lưu trữ dự phòng. Sau đó, nó sẽ được đưa trở lại bộ nhớ để tiếp tục thực thi.
- Cấp phát bộ nhớ là một quá trình trong đó các chương trình máy tính được cấp phát bộ nhớ hoặc không gian.
- Phân trang là một cơ chế lưu trữ cho phép HĐH truy xuất các tiến trình từ bộ lưu trữ phụ vào bộ nhớ chính dưới dạng các trang.
- Phân mảnh đề cập đến tình trạng của đĩa trong đó các tệp được chia thành nhiều phần nằm rải rác xung quanh đĩa.
- Phương pháp phân đoạn hoạt động gần giống như phân trang. Sự khác biệt duy nhất giữa hai loại này là các phân đoạn có độ dài thay đổi, trong khi đó, ở phương pháp phân trang, các trang luôn có kích thước cố định.
- Tải động là một quy trình của một chương trình không được tải cho đến khi chương trình gọi nó.
- Liên kết là một phương pháp giúp HĐH thu thập và hợp nhất các mô-đun mã và dữ liệu khác nhau thành một tệp thực thi duy nhất.