1. Trang chủ
  2. » Tất cả

Bài tập lớn: KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

34 1 0

Đ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

1 CÁC VẤN ĐỀ PHÁT SINH KHI QUẢN LÝ BỘ NHỚ + Chuyển đổi địa chỉ tương đối trong chương trình thành địa chỉ thực trong bộ nhớ chính. + Quản lý bộ nhớ đã cấp phát và chưa cấp phát. + Các kỹ thuật cấp phát bộ nhớ sao cho: 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. Cho phép nhiều tiến trình có thể dùng chung một phần bộ nhớ của nhau. Mở rộng bộ nhớ để có thể lưu trữ được nhiều tiến trình đồng thời. 1.1 Chuyển đổi địa chỉ tương đối sang tuyệt đối Các địa chỉ trong chương trình thực thi (dạng exe) là địa chỉ tương đối, và cần được chuyển đổi các địa chỉ này thành các địa chỉ tuyệt đối trong bộ nhớ chính. Việc chuyển đổi có thể xảy ra vào một trong những thời điểm sau: + Thời điểm biên dịch (compile time): Nếu tại thời điểm biên dịch, có thể biết vị trí mà tiến trình sẽ được nạp vào 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. Tuy nhiên, nếu về sau có sự thay đổi vị trí của chương trình, cần phải biên dịch lại chương trình. Ví dụ các chương trình .com chạy trên hệ điều hành MSDOS có mã tuyệt đối ngay khi biên dịch. + Thời điểm nạp (load time): 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ẽ được nạp vào trong bộ nhớ, trình biên dịch chỉ phát sinh mã tương đối. Khi nạp chương trình vào bộ nhớ, hệ điều hành sẽ chuyển các địa chỉ tương đối 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ữ, cần nạp lại chương trình để thực hiện lại việc chuyển đổi địa chỉ, không cần biên dịch lại chương trình. + Thời điểm xử lý (execution time): 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ì việc chuyển đổi địa chỉ sẽ được thực hiện vào lúc tiến trình thực thi. Chức năng chuyển đổi địa chỉ do phần cứng cung cấp gọi là MMU (memory management unit). Các hệ điều hành thường dùng việc chuyển đổi theo cách này.

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN : KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Giảng viên hướng dẫn: Sinh viên thực hiện: Lớp: Đề tài: Tình bày chế hoạt động hệ điều hành window đảm bảo tiến trình hoạt dộng có đủ nhớ để hoạt dộng Hà Nội - 2023 CÁC VẤN ĐỀ PHÁT SINH KHI QUẢN LÝ BỘ NHỚ + Chuyển đổi địa tương đối chương trình thành địa thực nhớ + Quản lý nhớ cấp phát chưa cấp phát + Các kỹ thuật cấp phát nhớ cho: - Ngăn chặn tiến trình xâm phạm đến vùng nhớ cấp phát cho tiến trình khác - Cho phép nhiều tiến trình dùng chung phần nhớ - Mở rộng nhớ để lưu trữ nhiều tiến trình đồng thời 1.1 Chuyển đổi địa tương đối sang tuyệt đối Các địa chương trình thực thi (dạng exe) địa tương đối, cần chuyển đổi địa thành địa tuyệt đối nhớ Việc chuyển đổi xảy vào thời điểm sau: + Thời điểm biên dịch (compile time): Nếu thời điểm biên dịch, biết vị trí mà tiến trình nạp vào nhớ, trình biên dịch phát sinh mã với địa tuyệt đối Tuy nhiên, sau có thay đổi vị trí chương trình, cần phải biên dịch lại chương trình Ví dụ chương trình com chạy hệ điều hành MS-DOS có mã tuyệt đối biên dịch + Thời điểm nạp (load time): Nếu thời điểm biên dịch, chưa thể biết vị trí mà tiến trình nạp vào nhớ, trình biên dịch phát sinh mã tương đối Khi nạp chương trình vào nhớ, hệ điều hành chuyển địa tương đối thành địa tuyệt đối biết vị trí bắt đầu lưu trữ tiến trình Khi có thay đổi vị trí lưu trữ, cần nạp lại chương trình để thực lại việc chuyển đổi địa chỉ, khơng cần biên dịch lại chương trình + Thời điểm xử lý (execution time): Nếu có nhu cầu di chuyển tiến trình từ vùng nhớ sang vùng nhớ khác trình tiến trình xử lý, việc chuyển đổi địa thực vào lúc tiến trình thực thi Chức chuyển đổi địa phần cứng cung cấp gọi MMU (memory management unit) Các hệ điều hành thường dùng việc chuyển đổi theo cách 1.2 Không gian địa ảo không gian địa vật lý + Địa ảo (địa logic): địa xử lý (CPU) tạo + Địa vật lý (địa physic): địa thực nhớ chính, địa vật lý gọi địa tuyệt đối/địa thực + Không gian địa ảo tiến trình: tập hợp tất địa ảo tiến trình + Khơng gian điạ vật lý tiến trình: tập hợp tất địa vật lý tương ứng với địa ảo Khi chương trình nạp vào nhớ địa tương đối chương trình CPU chuyển thành địa ảo, thực thi, địa ảo hệ điều hành kết hợp với phần cứng MMU chuyển thành địa vật lý Tóm lại có khái niệm địa ảo việc chuyển đổi địa xảy vào thời điểm xử lý, tiến trình thao tác địa ảo, địa vật lý xác định thực truy xuất nhớ vật lý Hình 1: CPU gởi địa ảo tới MMU, MMU chuyển địa ảo thành địa vật lý 1.3 Quản lý nhớ cấp phát chưa cấp phát Hệ điều hành cần lưu trữ thông tin phần nhớ cấp phát phần nhớ chưa cấp phát Nếu cấp phát cấp cho tiến trình Khi cần cấp phát nhớ cho tiến trình tìm phần nhớ trống thích hợp nhanh chóng nhớ bị phân mảnh cần dồn nhớ lại để tận dụng nhớ để tiến trình thực thi nhanh 1.3.1.1Các phương pháp quản lý việc cấp phát nhớ: a/ Sử dụng dãy bit : bít thứ i khối thứ i cấp phát, chưa cấp phát b/ Sử dụng danh sách liên kết: nút danh sách liên kết lưu thông tin vùng nhớ chứa tiến trình (P) hay vùng nhớ trống hai tiến trình (H) Hình 2: quản lý việc cấp phát nhớ dãy bit danh sách liên kết Trước tiến trình X kết thúc, có trường hợp xảy tiến trình X kết thúc, hệ điều hành cần gom nút trống gần Hình 3: trường hợp xảy trước tiến trình X kết thúc 1.3.2 Các thuật toán chọn đoạn trống: + First-fit: chọn đoạn trống đủ lớn + Best-fit: chọn đoạn trống nhỏ đủ lớn để thỏa mãn nhu cầu + Worst-fit : chọn đoạn trống lớn CÁC MƠ HÌNH CẤP PHÁT BỘ NHỚ Có hai mơ hình dùng để cấp phát nhớ cho tiến trình là: + Cấp phát liên tục: tiến trình nạp vào vùng nhớ liên tục + Cấp phát khơng liên tục: tiến trình nạp vào vùng nhớ khơng liên tục 2.1 Mơ hình cấp phát liên tục Có hai mơ hình cấp phát nhớ liên tục mơ hình Linker-Loader mơ hình Base & Limit 2.1.1 Mơ hình Linker_Loader: Chương trình nạp vào vùng nhớ liên tục đủ lớn để chứa tồn chương trình Hệ điều hành chuyển địa tương đối địa tuyệt đối (địa vật lý ) nạp chương trình, theo công thức: địa tuyệt đối = địa bắt đầu nạp tiến trình + địa tương đối Ví dụ: xét chương trình P.EXE có lệnh Jump 0X200, Giả sử chương trình nạp địa 0X300, địa tương đối 0X200 chuyển thành địa vật lý 0X300+0X200=0X500 Chương trình nạp vào nhớ cho thực thi gọi tiến trình, trường hợp địa tiến trình địa tuyệt đối, cịn địa chương trình địa tương đối Nhận xét: + Vì việc chuyển đổi địa chỉ thực vào lúc nạp nên sau nạp di chuyển tiến trình nhớ + Do khơng có chế kiểm sốt địa mà tiến trình truy cập, nên khơng thể bảo vệ tiến trình bị tiến trình khác truy xuất nhớ tiến trình cách trái phép 2.1.2 Mơ hình Base & Limit Giống mơ hình Linker-Loader phần cứng cần cung cấp hai ghi, ghi (base register) ghi giới hạn (limit register) Khi tiến trình cấp phát vùng nhớ, hệ điều hành cất vào ghi địa bắt đầu vùng nhớ cấp phát cho tiến trình, cất vào ghi giới hạn kích thước tiến trình Hình 5: ví dụ mơ hình base & limit Khi tiến trình thực thi, địa ảo (địa ảo địa tương đối) MMU so sánh với ghi giới hạn để bảo đảm tiến trình khơng truy xuất ngồi phạm vi vùng nhớ cấp cho Sau địa ảo cộng với giá trị ghi địa tuyệt đối nhớ Hình 6: chế MMU mơ hình base&limit Nhận xét: + Có thể di chuyển chương trình nhớ tiến trình nạp dạng địa ảo, tiến trình di chuyển đến vị trí mới, hệ điều hành cần nạp lại giá trị cho ghi nền, việc chuyển đổi địa MMU thực vào thời điểm xử lý + Có thể có tượng phân mảnh ngoại vi (external fragmentation ): tổng vùng nhớ trống đủ để thoả mãn yêu cầu, vùng nhớ lại không liên tục nên không đủ để cấp cho tiến trình khác Có thể áp dụng kỹ thuật “dồn nhớ “ (memory compaction ) để kết hợp mảnh nhớ nhỏ rời rạc thành vùng nhớ lớn liên tục, nhiên kỹ thuật địi hỏi nhiều thời gian xử lý Ví dụ phân mảnh ngoại vi nhớ, tiến trình liên tục vào nhớ, sau thời gian để lại vùng nhớ nhỏ mà khơng thể chứa tiến trình D C A D D D D E E E B B C B B B B B A A A A A F OS OS OS OS OS OS OS OS Hình 7: ví dụ phân mảnh ngoại vi mơ hình cấp phát liên tục * Vấn đề nảy sinh kích thước tiến trình tăng trưởng qúa trình xử lý mà khơng cịn vùng nhớ trống gần kề để mở rộng vùng nhớ cho tiến trình Có hai cách giải quyết: + Dời chỗ tiến trình: di chuyển tiến trình đến vùng nhớ khác đủ lớn để thỏa mãn nhu cầu tăng trưởng tiến trình + Cấp phát dư vùng nhớ cho tiến trình : cấp phát dự phịng cho tiến trình vùng nhớ lớn yêu cầu ban đầu tiến trình Hình 8: dành chỗ trống để tiến trình phát triển mơ hình cấp phát liên tục + Tiến trình ln lưu trữ nhớ suốt q trình xử lý nên tính đa chương hệ điều hành bị hạn chế kích thước nhớ kích thước tiến trình nhớ Cách giải tiến trình bị khóa (đợi tài ngun, đợi kiện,…) tiến trình sử dụng hết thời gian CPU dành cho nó, chuyển tạm thời nhớ phụ (đĩa,…) sau nạp trở lại vào nhớ để tiếp tục xử lý (kỹ thuật swapping) Để tránh tình trạng nhớ bị phân mảnh phải cấp phát vùng nhớ liên tục cho tiến trình, hệ điều hành cấp phát cho tiến trình vùng nhớ tự bất kỳ, không cần liên tục 2.2 Mô hình cấp phát khơng liên tục Có ba mơ hình cấp phát nhớ khơng liên tục mơ hình phân đoạn, mơ hình phân trang mơ hình phân đoạn kết hợp phân trang 2.2.1 Mơ hình phân đoạn (Segmentation) Một chương trình người lập trình chia thành nhiều phân đoạn, phân đoạn có ngữ nghĩa khác hệ điều hành nạp phân đọan vào nhớ vị trí khơng liên tục Ví dụ: chương trình chia làm phân đoạn (segment), phân đoạn nạp vào vùng nhớ trống khơng liên tục Hình 9: mơ hình phân đoạn kỹ thuật cấp phát nhớ không liên tục * Cơ chế MMU kỹ thuật phân đoạn: Khi chương trình nạp vào nhớ, MMU ghi vị trí lưu trữ kích thước phân đoạn vào bảng phân đoạn CPU làm nhiệm vụ chuyển đổi tất địa tương đối chương trình thành địa ảo Phần tử thứ s bảng phân đoạn gồm hai phần (base, limit), base địa vật lý bắt đầu phân đoạn s, limit chiều dài phân đoạn s Mỗi địa ảo gồm hai phần (s,d) với s số hiệu phân đoạn , d địa tương đối phân đoạn s Để chuyển địa ảo (s,d) thành địa vật lý, MMU truy xuất phần tử thứ s bảng phân đoạn, lấy giá trị limit base phân đoạn s, sau kiểm tra điều kiện (d

Ngày đăng: 03/03/2023, 18:15

Xem thêm:

w