CT178 – Nguyên lý hệ điều hành 1 Khoa Công nghệ Thông tin và Truyền thông, Đại học Cần Thơ GV Lâm Nhựt Khang PROJECT NGUYÊN LÝ HỆ ĐIỀU HÀNH Học kỳ 1 – 2022 2023 Máy ảo sử dụng Ubuntu VM Các file cần n[.]
CT178 – Nguyên lý hệ điều hành PROJECT - NGUYÊN LÝ HỆ ĐIỀU HÀNH Học kỳ – 2022-2023 Máy ảo sử dụng: Ubuntu VM Các file cần nộp - 01 báo cáo mô tả chi tiết cách giải vấn đề nêu lên project (kể hình ảnh minh họa kết lệnh anh/chị thực theo trình tự) Tên file CT178_MSSV_HoTen - Tất code (cả mức kernel user) có liên quan Lưu ý: - Không nén/share file nộp lên GG Classroom - File báo cáo cần có Họ tên MSSV phần tuyên bố bên - Code cần có thích rõ ràng, đầy đủ HỌ VÀ TÊN:………………………………………….MSSV:…………………… Tuyên bố: Project tôi, Họ tên SV (MSSV:…………….), tự thực hiện, không chép Nếu có chép nào, tơi hồn tồn chịu trách nhiệm PHẦN 1: XÂY DỰNG LINUX KERNEL (2.0 điểm) Thực chế độ người dùng root (root user) $su A CHUẨN BỊ LINUX KERNEL CODE (phần hướng dẫn thực CentOS Tuy nhiên, sinh viên cần thực Ubuntu) Download cài đặt tool cần thiết vào hệ thống Nếu thực CentOS: #yum install -y gcc ncurses-devel make wget #yum apt-get install -y gcc openssl-devel #yum apt-get install -y gcc elfutils-libelf-devel #yum apt-get install bison #yum apt-get install flex Nếu thực Ubuntu: $sudo apt-get install -y gcc libncurses5-dev make wget $sudo apt-get install -y gcc libssl-dev $sudo apt-get install bison $sudo apt-get install flex Xác định phiên kernel: # uname –r Khoa Công nghệ Thông tin Truyền thông, Đại học Cần Thơ GV: Lâm Nhựt Khang CT178 – Nguyên lý hệ điều hành Kết có dạng (đây ví dụ minh họa, thực tế khác): 4.4.0-31-generic (Ubuntu) Kết có dạng (đây ví dụ minh họa, thực tế khác): 3.10.0-693el7.x86-64 (CentOS) Truy cập http://kernel.org https://cdn.kernel.org/pub/linux/kernel/ download source code kerenl Kế tiếp, download kernel 5.9 giải nén source code: # wget http://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.tar.gz # tar xvzf linux-5.9.tar.gz (chú ý: thay đổi tên kernel phù hợp) B CẤU HÌNH KERNEL MỚI Đảm bảo đường dẫn ~/linux-5.9 “linux-5.9” top directory kernel source Tạo file cấu hình (config file) # make menuconfig Chú ý, khơng thay đổi thơng tin Nhấn ESC để save khỏi menu cấu hình (configuration menu) File cấu hình tạo C BIÊN DỊCH KERNEL Tại ~/linux-5.9, tạo kernel image nén (compressed kernel image) # make –j4 Biên dịch kernel modules: # make modules D CÀI ĐẶT KERNEL Cài đặt kernel modules # make modules_install Cài đặt the kernel # make install E THAY ĐỔI FILE CẤU HÌNH GRUB (GRUB CONFIGURATION FILE) Thay đổi file cấu hình grub: # vim /etc/default/grub Thực thay đổi sau: GRUB_DEFAULT=0 GRUB_TIMEOUT=25 F REBOOT VM Reboot kernel mới: # reboot Sau boot, kiểm tra thơng tin kernel có chưa: # uname -r Kết có dạng: 5.9 Khoa Cơng nghệ Thông tin Truyền thông, Đại học Cần Thơ GV: Lâm Nhựt Khang CT178 – Nguyên lý hệ điều hành PHẦN 2: THÊM LỜI GỌI HỆ THỐNG VÀO LINUX KERNEL (2.0 điểm) Thực thêm lời gọi hệ thống helloworld vào Linux kernel Lời gọi hệ thống thực in thông điệp “Xin chao Ten toi la XXX ” vào syslog (XXX tên MSSV anh/chị) Anh/chị cần cài đặt lời gọi hệ thống mức kernel viết chương trình mức người dùng (user-level) để kiểm tra lời gọi hệ thống tạo Anh/chị tham khảo tài liệu sau: https://tldp.org/LDP/lkmpg/2.6/html/x181.html https://brennan.io/2016/11/14/kernel-dev-ep3/ https://medium.com/@ssreehari/implementing-a-system-call-in-linux-kernel-4-7-1-6f98250a8c38 https://tssurya.wordpress.com/2014/08/19/adding-a-hello-world-system-call-to-linux-kernel-3-16-0/ PHẦN 3: ĐỊNH THỜI CPU (3.0 điểm) Anh/chị viết chương trình tên MSSVdtcpu.c để thực thuật toán định thời CPU sau: FCFS, Priority trưng dụng, Round Robin Chương trình MSSVdtcpu.c nhận vào tham số n tiến trình Mỗi định thời tạo biểu đồ Gantt thể trạng thái tiến trình (dạng chuỗi string): sử dụng R cho trạng thái running W cho trạng thái waiting Cuối cùng, chương trình thực tính tốn giá trị trung bình thời gian waiting time, respond time turnaround time định thời tương ứng Mơ tả chương trình: Chương trình cho phép người dùng nhập vào số lượng tiến trình n Sau chương trình cho phép người dùng nhận vào (n x 2)+1 tham số q x1 y1 x2 y2 … xn yn q giá trị quantum sử dụng cho định thời Round Robin, xi yi thời gian đến hệ thống thời gian chiếm dụng CPU tiến trình i Output chương trình có dạng sau: - Sử dụng dòng “********************************” để phân tách định thời - Sử dụng dịng để thơng báo thuật tốn định thời sử dụng Ví dụ “Dinh thoi FCFS” - Mỗi tiến trình có dịng trạng thái (chuỗi định thời) Ví dụ: RRRRRWWRRRR - Dịng cuối thuật toán định thời in giá trị trung bình waiting time (AVGW), respond time (AVGR) turnaround time(AVGT) Khoa Công nghệ Thông tin Truyền thông, Đại học Cần Thơ GV: Lâm Nhựt Khang CT178 – Nguyên lý hệ điều hành Ví dụ: người dùng nhập vào số lượng tiến trình n Kế tiếp chương trình cho phép người dùng nhập vào tham số tiến trình, giả sử người dùng nhập 2 Output sau: ******************************** Dinh thoi FCFS RR WRRR -WWWRR AVGW= 1.33 AVGR=1.33 AVGT=3.66 ******************************** Dinh thoi SJF khong trung dung ……… PHẦN 4: QUẢN LÝ BỘ NHỚ (3.0 điểm) Xét hệ thống máy tính với không gian nhớ thật 1KB, không gian nhớ ảo cần 12 bit để biểu diễn Giả sử kích thước trang với kích thước khung 128 bytes Với bảng trang Viết chương trình MSSVqlbn.c nhận vào tham số (parameter) filename Trong filename chứa dãy truy cập địa luận lý, địa lưu trữ dạng 8bytes (unsigned long type) Chương trình MSSVqlbn.c đọc phân tích địa chỉ, chuyển đổi địa file sang địa vật lý tương ứng in hình *******************HẾT******************* Khoa Cơng nghệ Thơng tin Truyền thông, Đại học Cần Thơ GV: Lâm Nhựt Khang