1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn viết chương trình minh hoạ cho các giải thuật quản lý bộ nhớ theo phương pháp phân trang

13 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Viết chương trình minh họa cho các giải thuật quản lý bộ nhớ theo phương pháp phân trang
Tác giả Nguyễn Minh Hiếu, Chu Hoàng Tường, Nguyễn Trung Kiên, Trần Duy Hùng, Hoàng Minh Hưởng
Người hướng dẫn TS. Đỗ Quốc Huy
Trường học Trường Đại học Bách khoa Hà Nội, Viện Công nghệ Thông tin & Truyền thông
Chuyên ngành Nguyên lý Hệ điều hành
Thể loại Bài tập lớn
Thành phố Hà Nội
Định dạng
Số trang 13
Dung lượng 0,98 MB

Nội dung

- Mảng 1 chiều reference chứa các số của trang.- Mảng 1 chiều buffer chứa các số trang trong các khung trang khởi tạo ban đầu bằng -1.- Khai báo mảng 2 chiều mem_layout có số cột là số c

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

BÁO CÁO BÀI TẬP LỚN NGUYÊN LÝ HỆ ĐIỀU HÀNH

Đề tài: Viết chương trình minh hoạ cho các giải thuật quản lý

bộ nhớ theo phương pháp phân trang

Giảng viên hướng dẫn: TS Đỗ Quốc Huy

Sinh viên thực hiện: 1 Nguyễn Minh Hiếu 20194049

2 Chu Hoàng Tường 20194209

3 Nguyễn Trung Kiên 20194086

4 Trần Duy Hùng 20194070

5 Hoàng Minh Hưởng 20194075

Hà Nội

Trang 2

Mục lục

I GIỚI THIỆU ĐỀ TÀI 2

II NỘI DUNG CHÍNH 2

1 Nguyên tắc 2

2 Chú ý 3

3 Phân biệt chiến lược phân trang – phân đoạn 3

4 Thực hiện chương trình 4

a Nạp chương trình vào bộ nhớ 4

b Truy cập bộ nhớ 4

5 Chuyển đổi địa chỉ 6

6 Nạp trang và thay thế trang 6

7 Ưu điểm 7

8 Nhược điểm 7

III MIÊU TẢ CHƯƠNG TRÌNH 7

1 Thuật toán FIFO (First in first out): 7

2 Thuật toán OPT (Chiến lược tối ưu/Optimal): 8

3 Thuật toán LRU (Last-recently-used): 9

IV MIÊU TẢ GIAO DIỆN CHƯƠNG TRÌNH 10

1 Màn hình chính 10

2 Truy cập địa chỉ 11

3 Nạp và thay thế trang theo 3 thuật toán trên 12

V TÀI LIỆU THAM KHẢO 12

Trang 3

I GIỚI THIỆU ĐỀ TÀI

- Tên đề tài: Viết chương trình minh hoạ cho các giải thuật quản lý bộ nhớ theo

phương pháp phân trang

- Tổng quan:

Phân trang là một phương pháp quản lý bộ nhớ được sử dụng bởi hệ điều hành Phân trang cho phép bộ nhớ chính sử dụng dữ liệu nằm trên thiết bị lưu trữ phụ Những dữ liệu này được lưu trữ trong thiết bị lưu trữ thứ cấp dưới dạng các khối có cùng kích thước được gọi là trang Phân trang cho phép hệ điều hành sử dụng dữ liệu không vừa với bộ nhớ chính Khi một chương trình cố gắng truy cập một trang, trước tiên, bảng trang được kiểm tra để xem liệu trang đó có trên bộ nhớ chính hay không Bảng trang chứa thông tin chi tiết về nơi các trang được lưu trữ Nếu nó không có trong bộ nhớ chính, nó được gọi là lỗi trang Hệ điều hành chịu trách nhiệm xử lý các lỗi trang mà không hiển thị cho chương trình Trước tiên, hệ điều hành sẽ tìm nơi lưu trữ trang cụ thể đó trong bộ nhớ thứ cấp và sau đó đưa nó vào khung trang trống trong bộ nhớ chính Sau đó, nó cập nhật bảng trang để chỉ ra rằng dữ liệu mới nằm trong bộ nhớ chính và trả điều khiển trở lại chương trình đã yêu cầu trang lúc đầu

II NỘI DUNG CHÍNH

1 Nguyên tắc

- Bộ nhớ vật lý được chia thành từng khối có kích thước bằng nhau : trang vật lý (frames – khung trang)

Trang vật lý được đánh số 0,1,2, : địa chủ vật lý của trang

Trang được dùng làm đơn vị phân phối nhớ

- Bộ nhớ logic (chương trình )được chia thành từng trang có kích thước bằng trang vật lý : trang logic ( pages )

- Khi thực hiện chương trình

Nạp trang logic (từ bộ nhớ ngoài) vào trang vật lý

Xây dựng một bảng quản lý trang (PCB: Page Control Block) dùng

để xác định mối quan hệ giữa trang vật lý và trang logic

Mỗi phần tử của PCB ứng với một trang chương trình: Cho biết trang vật lý chứa trang logic tương ứng

Địa chỉ truy nhập được chia thành

• Số hiệu trang (p) : Chỉ số trong PCB để tìm địa chỉ cơ sở trang

• Độ lệch trong trang (d): Kết hợp địa chỉ cơ sở của trang để tìm

ra địa chỉ vật lý

Trang 4

2 Chú ý

- Dung lượng trang luôn là lũy thừa của 2

Cho phép ghép giữa số hiệu trang vật lý và độ lệch trong

trang

Ví dụ: Bộ nhớ n bit, kích thước trang 2k

- Không cần thiết nạp toàn bộ trang logic vào

Số trang vật lý phụ thuộc kích thước bộ nhớ, số trang logic tùy ý

PCB cần trường dấu hiệu (Mark) cho biết trang đã được nạp vào bộ nhớ chưa

+ M = 0 Trang chưa tồn tại

+ M = 1 Trang đã được đưa vào bộ nhớ vật lý

- Phân biệt chiến lược phân trang - phân đoạn

Chiến lược phân đoạn

- Các modul phụ thuộc cấu trúc logic của chương trình

- Chiến lược phân trang

- Các khối có kích thước độc lập kích thước chương trình

- Kích thước khối phụ thuộc phần cứng (VD: 29 → 213 bytes)

3 Phân biệt chiến lược phân trang – phân đoạn

Cơ sở để Phân trang Phân đoạn

Trang 5

so sánh

Căn bản Một trang có kích thước khối cố định. Một phân đoạn có kích thước thay đổi Phân

mảnh Phân trang có thể dẫn đến phân mảnh nội bộ Sự phân mảnh có thể dẫn đến sự phân mảnh bên ngoài Địa chỉ Địa chỉ do người dùng chỉ định được CPU chia thành số trang

và phần bù

Người dùng chỉ định mỗi địa chỉ bằng hai đại lượng là số phân đoạn và độ lệch (Giới hạn phân đoạn)

Kích

thước

Phần cứng quyết định kích

thước trang

Kích thước phân đoạn được chỉ định bởi người dùng

Bảng Phân trang liên quan đến một bảng trang có chứa địa chỉ cơ

sở của mỗi trang

Phân đoạn liên quan đến bảng phân đoạn

có chứa số phân đoạn và độ lệch (độ dài phân đoạn)

4 Thực hiện chương trình

a Nạp chương trình vào bộ nhớ

Trang 6

- Nạp chương trình: Xây dựng bảng quản lý trang và luôn giữ trong bộ nhớ PTBR (Page-table base register) trỏ tới PCB

PTLR(Page-table length register) kích thước PCB

-Thực hiện truy nhập

Địa chỉ truy nhập được chia thành dạng <p, d>

PTBR + p K : Địa chỉ phần tử p của PCB trong bộ nhớ∗

K Kích thước 1 phần tử của PCB

Kiểm tra Mp

Mp = 0 : Lỗi trang, sinh một ngắt để tiến hành nạp trang

Xin trang vật lý tự do (Hết trang tự do?)

Tìm kiếm trang logic ở bộ nhớ ngoài và nạp trang

Sửa lại trường địa chỉ A và dấu hiệu M

Mp = 1 : Trang đã tồn tại,

Lấy Ap ghép với d ra địa chỉ cần tìm

Trang 7

5 Chuyển đổi địa chỉ

6 Nạp trang và thay thế trang

-Nhận xét

Số trang vật lý dành cho chương trình lớn

Thực hiện nhanh nhưng hệ số song song giảm

Số trang vật lý dành cho chương trình bé

Hệ số song song cao nhưng thực hiện chậm do hay thiếu

trang

⇒ Hiệu quả phụ thuộc các chiến lược nạp trang và thay thế trang

-Các chiến lược nạp trang

Nạp tất cả: Nạp toàn bộ chương trình

Nạp trước: Dự báo trang cần thiết tiếp theo

Nạp theo yêu cầu: Chỉ nạp khi cần thiết

-Các chiến lược thay thế trang

FIFO First In First Out

LRU Least Recently Used

LFU Least Frequently Used

Trang 8

.

7 Ưu điểm

- Tăng tốc độ truy nhập

Hai lần truy nhập bộ nhớ (vào PCB và vào địa chỉ cần tìm)

Thực hiện phép ghép thay vì phép cộng

- Không tồn tại hiện tượng phân đoạn ngoài

- Hệ số song song cao

Chỉ cần một vài trang của chương trình trong bộ nhớ

Cho phép viết chương trình lớn tùy ý

- Dễ dàng thực hiện nhiệm vụ bảo vệ

Địa chỉ truy nhập hợp lệ (vượt quá kích thước)

Tính chất truy nhập (đọc/ghi)

Quyền truy nhập (user/system)

- Cho phép sử dụng chung trang

8 Nhược điểm

- Tồn tại hiện tượng phân đoạn trong

Luôn xuất hiện ở trang cuối cùng

Giảm hiện tượng phân đoạn trang bởi giảm kích thước trang ?

Hay gặp lỗi trang

Bảng quản lý trang lớn

- Đòi hỏi hỗ trợ của phần cứng

Chi phí cho chiến lược phân trang lớn

- Khi chương trình lớn, bảng quản lý trang nhiều phần tử

Chương trình 232, k/thước trang 212 -> PCB có 220 phần tử

Tốn bộ nhớ lưu trữ PCB

Giải quyết: Trang nhiều mức

III MIÊU TẢ CHƯƠNG TRÌNH

- Chọn frame của process sẽ được thay thế trang nhớ

- Mục tiêu: số lượng page-fault nhỏ nhất

- Được đánh giá bằng cách thực thi giải thuâ ~t đói với mỗi chuỗi tham chiếu bô ~ nhớ( memory reference string) và xác định số lần xảy ra page fault

1 Thuật toán FIFO (First in first out):

- Khai báo biến frames chứa số khung trang

- Khai báo biến ref_len chỉ độ dài của trang

Trang 9

- Mảng 1 chiều reference chứa các số của trang.

- Mảng 1 chiều buffer chứa các số trang trong các khung trang khởi tạo ban đầu bằng -1

- Khai báo mảng 2 chiều mem_layout có số cột là số các số của trang và số hàng là

số khung trang

- Khai báo biến fault tính số lỗi trang khởi tạo ban đầu bằng 0

- Cho vòng lặp i chạy từ 0 đến độ dài của trang:

+ Khởi tạo biến search = -1

+ Cho vòng lặp j chạy từ 0 đến số khung trang:

Nếu số của trang đã nằm trong các khung trang thì dừng vòng lặp và cho biến search = j ( là vị trí khung trang mà số của trang chính đã nằm vào

Nếu biến search vẫn bằng -1 (nghĩa là không có số nào của khung trang chính nằm trong các khung trang) thì ta thêm số của trang vào khung trang chứa số tồn tại lâu nhất Tăng lỗi trang lên thêm 1 lỗi Lưu lại các số trong khung trang tại vị trí thứ i

2 Thuật toán OPT (Chiến lược tối ưu/Optimal):

- Khai báo biến frames chứa số khung trang.

- Khai báo biến ref_len chỉ độ dài của trang

- Khai báo biến numFault chỉ vị trí số cần thay thế

- Khai báo biến isFull kiểu bool mặc định bằng false

- Mảng 1 chiều kiểu bool hit với độ bằng độ dài của trang

- Mảng 1 chiếu reference chứa các số của trang

- Mảng 1 chiều buffer chứa các số trong các khung trang khởi tạo tất cả bằng -1

- Khai báo mảng 2 chiều mem_layout có số cột là số các số của trang và số hàng là

số khung trang

- Mảng 1 chiều fault chứa các vị trị trí trang lỗi

- Cho vòng lặp i chạy từ 0 đến độ dài trang:

+ Khởi tạo biến search = -1

+ Cho vòng lớp j chạy từ 0 đến số khung trang:

Nếu số thứ j của trang đã nằm trong các khung trang thì cho biến search = j và giá trị mảng hit tại vị trí i bằng true và giá trị của mảng fault tại vị trí i bằng numFault và dừng vòng lặp

+ Nếu biến search = -1:

Nếu biến isFull có giá trị true:

* Khởi tạo 1 mảng index có độ dài bằng số khung trang

* Khởi tạo 1 mảng kiểu bool index_flag có độ dài bằng số khung trang

* Cho vòng lặp j chạy từ i+1 đến độ dài trang:

Cho vòng lặp k chạy từ 0 đến số khung trang:

Trang 10

- Nếu giá trị của mảng reference tại vj trí j bằng giá trị của mảng buffer tại vị trí k ta cho giá trị mảng index tại k bằng j và giá trị mảng index_flag tại vị trí k bằng true rồi dừng vòng lặp

* Khởi tạo biến max bằng giá trị của mảng index tại ví trí đầu tiên

* Khởi tạo biến pointer bằng 0

* Nếu max bằng 0 ta gán maxx bằng 200

* Cho vòng lặp j chạy từ 0 đến số khung trang

Nếu giá trị của mảng index tại vị trí j bằng 0 thì ta gán lại bằng 200

Nếu giá trị của mảng index tại vị trí j lớn hơn max ta gán max bằng giá trị của mảng tại vị trí j và cho biến pointer gán giá trị j

Gán giá trị mảng buffer tại vị trí pointer bằng số của trang tại vị trí i Tăng biến numFault thêm 1 đơn vị

Gán giá trị mảng fault tại vị trí I bằng numFault

Nếu biến isFull bằng false:

* Tăng biến pointer thêm 1 đơn vị

* Nếu biến pointer bằng bằng số khung trang ta gán pointer bằng 0 và gán biến isFull bằng true

+ Lưu lại các số trong khung trang tại vị trí thứ i

3 Thuật toán LRU (Last-recently-used):

- Khai báo biến frames chứa số khung trang

- Khai báo biến ref_len chỉ độ dài của trang

- Mảng 1 chiều reference chứa các số của trang

- Mảng 1 chiều buffer chứa các số trang trong các khung trang khởi tạo ban đầu bằng -1

- Khai báo biến kiểu bool isFull ban đầu bằng false

- Khai báo mảng 2 chiều mem_layout có số cột là số các số của trang và số hàng là

số khung trang

- Khai bảo 1 stack có kiểu số nguyên

- Khai báo biến fault tính số lỗi trang khởi tạo ban đầu bằng 0

- Cho vòng lặp i chạy từ 0 đến độ dài của trang:

+ Nếu stack đã chứa số thứ i của trang:

Tìm phần tử thứ i của mảng reference rồi loại bỏ

+ Thêm vào stack phần tử thứ i của mảng reference

+ Khai báo biến search khởi tạo bằng -1

+ Cho vòng lặp j chạy từ 0 đến số khung trang:

* Nếu giá trị của mảng buffer tại vị trí j bằng giá trị của mảng reference tại vị trí i thì gán search bằng j và dừng vòng lặp

+ Nếu biến search vẫn bằng -1:

* Nếu biến isFull có giá trị true:

Trang 11

- Khai báo biến min_loc là độ dài của trang.

- Cho vòng lặp j chạy từ 0 đến số khung trang:

Nếu stack chứa giá trị thứ j của mảng buffer thì: + Khai báo biến temp có giá trị bằng giá trị của mảng buffer tại vị trí j

+ Nếu temp bé hơn min_loc ta gán min_loc bằng temp và gán pointer bằng j

* Gán giá trị của mảng buffer tại vị trí pointer bằng số thứ i của trang

* Tăng biến fault thêm 1 đơn vị

* Tăng biến pointer thêm 1 đơn vị

* Nếu pointer bằng số khung trang ta gán pointer bằng 0 và gán biến isFull bằng true

+ Lưu lại các số trong khung trang tại vị trí thứ i

IV MIÊU TẢ GIAO DIỆN CHƯƠNG TRÌNH

1 Màn hình chính

Trang 12

2 Truy cập địa chỉ

Trang 13

3 Nạp và thay thế trang theo 3 thuật toán trên

V TÀI LIỆU THAM KHẢO

1 Slide bài giảng “Nguyên lý hệ điều hành” – Viện Công nghệ thông tin & Truyền thông – Trường Đại học Bách khoa Hà Nội

2.https://campuscoke.blogspot.com/p/campuscoke.html?

fbclid=IwAR31wDGH76_nDvrsV2Au6BoFf3ePOBIt0y0OmUpxhCzRKyU1JLC HQZLy1v4

Ngày đăng: 29/05/2024, 17:55

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w