Báo cáo bài tập lớn hệ điều hành đề tài system call và virtual memory

18 43 0
Báo cáo bài tập lớn hệ điều hành đề tài system call và virtual memory

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG Báo cáo tập lớn Hệ Điều Hành Đề tài System call virtual memory Giáo viên hướng dẫn: TS Phạm Văn Tiến Sinh viên thực hiện: Tên Nguyễn Thành Trung Phạm Đức Thắng Hà Nội, 06-2022 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ContentsMỤCLỤC Lời nói đầu I System call 1.1 Tổng quan 1.2Phương pháp giải 1.3Cách triển khai mã nguồn 2.Mô tả mã nguồn sửa đổi 2.1 Argument Passing 2.2 System call liên quan đến tiến trình 2.3.System call liên quan đến tập tin 3.KẾT QUẢ TIEU LUAN MOI download : skknchat123@gmail.com moi nhat II VIRTUAL MEMORY 1.1 Tổng quan Call PageFault Handler Function 20 Page fault handler 20 2.2 Memmory mapped file .20 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Lời nói đầu Hệ điều hành (Operating System - OS) phần mềm hệ thống quản lý phần cứng máy tính, tài nguyên phần mềm cung cấp dịch vụ chung cho chương trình máy tính Hệ điều hành đóng vai trị trung gian việc giao tiếp người sử dụng phần cứng máy tính, cung cấp môi trường cho phép người sử dụng phát triển thực ứng dụng họ cách dễ dàng Hệ điều hành chia sẻ thời gian lập lịch cho tác vụ để sử dụng hệ thống cách hiệu bao gồm phần mềm kế toán để phân bổ chi phí thời gian xử lý, lưu trữ dung lượng lớn, in ấn tài nguyên khác Hệ điều hành trước sau luôn giữu vai trị qua trọng thời đại cơng nghệ Được hướng dẫn thầy Phạm Văn Tiến, nhóm em tìm hiểu hệ điều hành pintos chọn đề tài System call Virtual memory để làm đề tài nghiên cứu cho tập lớn Chúng em xin chân thành cảm ơn hướng dẫn, dạy tận tình thầy giúp chúng em hoàn thành tập lớn lần TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BẢNG PHÂN CHIA CÔNG VIỆC Phạm Đức Thắng System call Virtual Memory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat I.System call 1.1 Tổng quan Trong máy tính, system call cách lập trình chương trình máy tính u cầu dịch vụ từ nhân hệ điều hành mà thực thi Một system call cách làm cho chương trình thực tương tác với hệ điều hành Một chương trình máy tính thực thi system call thực yêu cầu tới nhân hệ điều hành System call cung cấp dịch vụ hệ điều hành tới chương trình phía người dùng thơng qua Application Program Interface (API) Nó cung cấp giao diện process hệ điều hành phép tiến trình mức độ người dùng truy vấn dịch vụ hệ điều hành Hầu hết tất chương trình mà cần tài nguyên cần phải sử dụng system call Nhìn vào sơ đồ, process thực thi bình thường user mode system call làm gián đoạn điều Sau system call thực thi sở ưu tiên kernel mode Sau thực thi system call kernel mode, trở lại user mode việc thực thi process phía người dùng nối lại 1.2Phương pháp giải Pintos hỗ trợ system call exit Yêu cầu đặt phần cài đặt thêm system call sau: halt, exec, wait practice Mỗi syscall khai báo cài đặt thư mục TIEU LUAN MOI download : skknchat123@gmail.com moi nhat thư viện cấp độ người dùng, cụ thể tập tin lib/user/syscall.c Tập tin chứa thông tin tham số system call cách chuyển xử lý chế độ kernel Các hàm xử lý system call kernel cần phải cài đặt tập tin userprog/syscall.c Chức cụ thể system call cần cài đặt sau: - halt: Tắt (dừng) hệ thống - exec: Tạo chương trình process_execute() - (Pintos khơng hỗ trợ fork Về chất exec Pintos tương - tự fork Linux) - wait: Chờ tiến trình practice: Thêm vào tham số đầu tiên, sau trả kết System call sử dụng cho mục đích thử nghiệm giống tên gọi Để cài đặt system call, trước hết cần tìm hiểu thao tác đọc ghi cách an toàn liệu có khơng gian nhớ ảo tiến trình cấp độ người dùng Các tham số system call nằm stack tiến trình người dùng, bên trỏ stack Chú ý rằng, trỏ stack không hợp lệ chương trình gọi system call, nhân hệ điều hành bị crash Một số tham số system call trỏ đến buffer bên khơng gian địa tiến trình người dùng, buffer khơng hợp lệ lúc nên cần phải cẩn thận làm - TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 1.3Cách triển khai mã nguồn Sau xác định toàn chức vấn đề đặt ra, nhóm em xếp sử dụng ngơn ngữ lập trình C để tạo thành chương trình hồn chỉnh đưa vào sử dụng Chương trình C hồn chỉnh biên dịch “a test framework” có sẵn người đề tài cung cấp chạy thông qua Termial hệ điều hành Ubuntu 20.04 Kết cuối hiển thị hình giao diện Terminal 2.Mô tả mã nguồn sửa đổi 2.1 Argument Passing Hiện tại, mã nguồn Pintos, hàm process_execute() không hỗ trợ truyền tham số vào tiến trình Vì em thực thêm phân tích cú pháp tên file truyền vào cấu trúc lại Stack Sau gọi hàm process_execute() chạy lệnh pintos -q run ‘echo x’ với echo chương trình để in tham số hình Như vậy, sau chạy hệ điều hành thực đến hàm syscall_hander() nằm src/userprog/syscall.c in hình chuỗi “system call!” TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 2.2 System call liên quan đến tiến trình Tại hàm syscall_hander(), tham số truyền vào Ta struc intr_frame *f tìm hiểu gì, tìm tới src/threads/interrupt.h Nhận thấy intr_frame trỏ đến esp, ta nhận system call number Ta gỡ lỗi printf() để xem system call number mà hệ thống gọi tới Vậy số gì, ta quan sát src/lib/syscall-nr.h Số SYS_WRITE echo.c chương trình sử dụng để in hệ thống gọi SYS_WRITE Ta sử dụng số lại để tương ứng với syscall TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Tiếp theo, ta triển khai trường hợp mà hệ thống gọi tới syscall Thực thay đổi src/userprog/syscall.c Ta cần cộng thêm số hợp lý cho tham số để trỏ tới syscall number Stack Trước tiên thực với SYS_EXIT SYS_WRITE: hàm exit() viết là: Với SYS_WRITE Trong hàm write() viết là: Thêm dùng printf() hàm syscall_hander() để quan sát bên ta vừa thay đổi TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Chạy thử lại, ta nhận kết Còn SYS_HALT, đơn giản ta cần gọi hàm shut _power_off() Như ta sửa đổi triển khai syscall liên quan đến quản lý tiến trình 2.3.System call liên quan đến tập tin Yêu cầu phần cài đặt thêm system call cần cho việc sử dụng tập tin, cụ thể thao tác: create, remove, open, filesize, read, write, seek, tell close Hiện TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Pintos có sẵn hệ thống quản lý tập tin đơn giản Lưu ý rằng, cài đặt, cần gọi hàm thích hợp có sẵn thư viện tập tin hệ thống, không cần phải tự cài đặt thao tác với tập tin khác Hệ thống tập tin Pintos không phả safe Do đó, i threadkhi cài đặt system call trên, cần đảm bảo chúng không gọi nhiều hàm xử lý tập tin lúc Đến ội d n ung thực hành 3, số hàm đồng phức tạp thêm vào hệ thống tập tin Pintos, phần này, cần sử dụng biến lock toàn cục để đảm bảo thread safety Lưu ý không chỉnh sửa thư mục /filesys phần 32 Một điểm cần lưu ý tiến trình chạy, cần phải đảm bảo khơng có đối tượng khác chỉnh sửa tập tin thực thi (đang lưu đĩa) Hai hàm file_deny_write() file_allow_write() sử dụng để thực điều Chú ý: Mã nguồn thực ội dung thực hành n tiếp tục sử dụng để cài đặt mở rộng ội dung thự n h Do hàm đó, kết kiểm thử hoạt động chức n ội dung thực hành phụ thuộc vào việc system call cài đặt 3.KẾT QUẢ Sau triển khai syscall bên trên, em thực kiểm tra thay đổi so với mã nguồn ban đầu mà Pintos cung cấp Thực “make check” src/userprogram sau thay đổi, kết thu sau: 1 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Kết thu được, test case cho halt, exec, wait syscall quản lý tiến trình create, remove, open, filesize, read, write, seek, tell, close syscall quản lý tập tin PASS Những trường hợp FAIL lại, em tiếp tục khắc phục VIRTUAL MEMORY 1.1 Tổng quan AI Bộ nhớ ảo Pintos chia thành vùng: user virtual memory (bộ nhớ ảo người dùng) kernel virtual memory (bộ nhớ ảo kernel) Bộ nhớ ảo người dùng địa ảo đến địa PHYS_BASE định nghĩa threads/vaddr.h có giá trị mặc định 0xc0000000 (3 GB) Bộ nhớ ảo kernel chiếm phần khơng gian cịn lại nhớ ảo, từ địa PHYS_BASE GB Bộ nhớ ảo người dùng xác định theo tiến trình Khi nhân hệ điều hành thực việc chuyển từ tiến trình sang tiến trình khác, đồng thời chuyển đổi không gian nhớ ảo cách thay đổi cấu trúc bảng trang xử lý (hàm pagedir_activate() userprog/pagedir.c) Ngược lại, nhớ ảo kernel có tính tồn cục Nó ánh xạ theo cách thức tương tự, khơng có phân biệt tiến trình người dùng tiến trình hệ thống Trong Pintos, nhớ ảo kernel ánh xạ 1 với nhớ vật lý, - địa PHYS_BASE Điều có nghĩa địa ảo PHYS_BASE truy cập vào địa vật lý 0, địa ảo PHYS_BASE + 0x1234 truy cập vào địa vật lý 0x1234 hết nhớ vật lý Lưu ý rằng, chương trình người dùng truy cập vào nhớ ảo người dùng Bất kỳ truy cập vào nhớ ảo kernel gây lỗi trang phải xử TIEU LUAN MOI download : skknchat123@gmail.com moi nhat lý hàm page_fault() userprog/exception.c đồng thời tiến trình phải kết thúc Tiến trình tiểu trình tạo nhân hệ điều hành truy cập hai nhớ ảo Tuy nhiên, có truy cập vào vùng nhớ chưa ánh xạ từ đối tượng phát sinh lỗi trang, tương tự với chương trình người dùng 1.2 Phương pháp triển khai mã nguồn Ta làm việc thư mục vm cho dự án Thư mục vm chứa tệp Makefiles Thay đổi từ userprog Makefile bật cài đặt -DVM Tất mã ta viết nằm tệp tệp giới thiệu dự án trước ’device/block.h/c’ Cung cấp quyền truy cập đọc ghi dựa khu vực để chặn thiết bị Ta sử dụng giao diện để truy cập phân vùng hoán đổi thiết bị khối ‘pgae.h/c’ Cấu trúc liệu trang, gọi trang ảo, vùng liên tục nhớ ảo có độ dài 4.096 byte (kích thước trang) địa ảo 32 bit chia thành số trang 20 bit độ lệch trang 12 bit (hoặc bù đắp), sau: 'frame.h/c' Cấu trúc liệu khung nhân, gọi khung vật lý khung trang, vùng liên tục nhớ vật lý 'swap.h/swap.c' Dữ liệu nghiêm ngặt vùng hoán đổi Khe trao đổi vùng liên tục, có kích thước trang khơng gian đĩa phân vùng hốn đổi 2.Mơ tả mã nguồn 2.1 Phân trang( paging) Xử lý lỗi trang Pintos hàm page_fault () để xử lý xảy lỗi trang Đường dẫn: pintos / src / userprog / exception.c Quá trình xử lý page_fault pintos tạo "lỗi phân đoạn" vô điều kiện lỗi xảy sau cho phép xác minh địa kết thúc : TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Xóa q trình xử lý liên quan đến Kill (1) Xác thực lỗi_addr Call PageFault Handler Function Page fault handler Handle_mm_fault hàm gọi để xử lý xảy lỗi trang Chỉ định trang vật lý xảy lỗi trang vàt ải tệp từ đĩa lên trang vật lý Ánh xạ địa thực ảo với bảng trang tải xong nhớ vật lý Ghi tệp vào nhớ vật lý Đường dẫn: Pintos / src / vm / page.c Kết 2.2 Memory mapped file Memory mapped file: Xử lý tệp I/O dạng truy cập nhớ thông thường cách ánh xạ khối đĩa vào trang nhớ Một tệp ban đầu đọc cách sử dụng phân trang nhu cầu Các lần đọc/ghi đến/từ tệp coi nhớ thông thường truy cập đơn giản hóa truy cập tệp cách xử lý tệp I/O thông qua nhớ thay đọc () ghi () gọi hệ thống cho phép số quy trình ánh xạ tệp cho phép trang nhớ chia sẻ TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Memory mapped filed I/O: Cho phép truy cập thuận tiện vào thiết bị I/O, nhiều kiến trúc máy tính cung cấp I/O ánh xạ nhớ trường hợp này, phạm vi địa nhớ đặt sang bên ánh xạ tới ghi thiết bị đọc ghi vào địa nhớ khiến liệu chuyển đến từ ghi thiết bị Kết TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 2.3 Swapping Swapping giúp: Lưu trữ trang chọn khu vực hoán đổi chúng đưa vào khu vực liệu ngăn xếp trang trao đổi quy trình tải lại vào nhớ cách sửa đổi phân trang theo yêu cầu để vận hành chế thay trang thuật toán dựa LRU Khi truy xuất nhớ người dùng, mã nguồn phần nhânđược cài đặt phải có khả xử lý lỗi trang ngăn chặn việc xảy lỗi trang Có thể cài đặt phần cách thực hai hướng chỉnh sửa mã nguồn sau: thay đổi hàm tập tin thay userprog/pagedir.c vaddr.h threads/ đổi hàm page_fault() userprog/exception.c Kết quả: 2.4.Stack Bên system call có lỗi trang xảy chương trình người dùng, sử dụng thuộc tính esp cấu trúc (được truyền vào struct intr_frame syscall_handler() page_fault()) để lấy giá trị trỏ stack Khi cài đặt stack, áp đặt số giới hạn kích thước stack cách mà phần lớn hệ điều hành thực Một vài hệ điều hành cho phép TIEU LUAN MOI download : skknchat123@gmail.com moi nhat người dùng điều chỉnh giá trị này, chẳng hạn lệnh ulimit số hệ thống Unix Trên nhiều hệ thống GNU/Linux, kích thước giới hạn mặc định MB Trang stack cấp phát khởi tạo thơng qua tham số dịng lệnh thời điểm nạp, điều giúp khơng cần phải chờ có lỗi xảy Tất trang stack xem thay Khi trang bị thay thế, cần phải lưu xuống vùng swap Kết quả: TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ... nhân hệ điều hành mà thực thi Một system call cách làm cho chương trình thực tương tác với hệ điều hành Một chương trình máy tính thực thi system call thực yêu cầu tới nhân hệ điều hành System call. .. điều hành trước sau luôn giữu vai trị qua trọng thời đại cơng nghệ Được hướng dẫn thầy Phạm Văn Tiến, nhóm em tìm hiểu hệ điều hành pintos chọn đề tài System call Virtual memory để làm đề tài. .. hệ điều hành Hầu hết tất chương trình mà cần tài nguyên cần phải sử dụng system call Nhìn vào sơ đồ, process thực thi bình thường user mode system call làm gián đoạn điều Sau system call thực

Ngày đăng: 27/09/2022, 08:47

Hình ảnh liên quan

BẢNG PHÂN CHIA CÔNG VIỆC - Báo cáo bài tập lớn hệ điều hành đề tài system call và virtual memory
BẢNG PHÂN CHIA CÔNG VIỆC Xem tại trang 5 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan