CT178 – Nguyên lý hệ điều hành 1
PROJECT - NGUYÊN LÝ HỆ ĐIỀU HÀNH
Học kỳ I – 2020-2021
PHẦN 1: XÂY DỰNG LINUX KERNEL
Thực hiện ở chế độ người dùng root (root user)
$sudo -s
A. CHUẨN BỊ LINUX KERNEL CODE
1. Download và cài đặt tool cần thiết vào hệ thống thực hiện ở 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
2. Xác định phiên bản hiện tại của kernel:
# uname –r
Khoa Công nghệ Thông tin và 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 2
3. Truy cập http://kernel.org hoặc https://cdn.kernel.org/pub/linux/kernel/ và download source code của kerenl hiện tại. Kế tiếp, download kernel 5.9 và giải nén source code:
kerenl hien tai 5.4
# wget http://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.tar.gz
# tar xvzf linux-5.9.tar.gz
B. CẤU HÌNH KERNEL MỚI
1. Đảm bảo đường dẫn hiện tại ở ~/linux-5.9 và “linux-5.9” ở top directory của kernel source.
2. Tạo file cấu hình (config file)
chay lenh #cd linux-5.9
# make menuconfig
C. BIÊN DỊCH KERNEL
1. Tại ~/linux-5.9, tạo kernel image nén (compressed kernel image)
# make –j4
2. Biên dịch kernel modules:
# make modules
truoc khi chay lenh make modules chay lenh #make
D. CÀI ĐẶT KERNEL
1. Cài đặt kernel modules
# make modules_install
2. 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 hiện các thay đổi sau:
GRUB_DEFAULT=0
GRUB_TIMEOUT=25
F. REBOOT VM
1. Reboot kernel mới:
# reboot
2. Sau khi boot, kiểm tra thông tin kernel mới có đúng chưa:
# uname -r
Kết quả sẽ có dạng: 5.9
Khoa Công nghệ Thông tin và 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 3
PHẦN 2: THÊM LỜI GỌI HỆ THỐNG VÀO LINUX KERNEL
Thực hiện thêm lời gọi hệ thống helloworld vào Linux kernel. Lời gọi hệ thống thực hiện in ra thông điệp “Xin chao. Ten toi la XXX ” vào syslog (XXX là tên và MSSV của anh/chị). Anh/chị cần cài đặt lời gọi hệ thống ở mức kernel và viết mộ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
Khoi tao thu muc helloworld trong thu muc linux-5.9
su dung thu muc helloworld tao file helloworld.c va Makefile voi noi dung nhu sau:
quay lai thu muc linux-5.9 truy cap vao file Makefile them heloworld/ vao cuoi nhu sau.
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ helloworld/
truy cap vao duong dan sau
them noi dung nhu hinh o cuoi va tren #endif
truy cap vao file syscall_64.tbl theo duong dan sau va them vao dong lenh nhu trong hinh
sau do bien dich va dat lai kernel:
kiem tra so loi cua may bang lenh : #nproc
sau do make -jn, trong do n la so loi
#make modules
#make modules_install install
sau do reboot lai may.
de kiem tra xem da them loi goi he thong chua ,thi lam theo cac buoc sau.
test thu:
bien dich file test.c neu ket qua: return 0 thi goi he thong thanh cong. neu -1 thi khong thanh cong.
thanh cong
dung lenh #dmesg de goi he thong
hoan tat.
PHẦN 3: ĐỊNH THỜI CPU
Anh/chị viết chương trình tên MSSVdtcpu.c để thực hiện các thuật toán định thời CPU đã học (FCFS, SJF không trưng dụng, SJF trưng dụng và Round Robin). Chương trình MSSVdtcpu.c sẽ nhận vào các tham số của n tiến trình. Mỗi bộ định thời sẽ tạo một biểu đồ Gantt thể hiện trạng thái của tiến trình (dạng chuỗi string): sử dụng R cho trạng thái running và W cho trạng thái waiting. Cuối cùng, chương trình sẽ thực hiện tính toán các giá trị trung bình của thời gian waiting time, respond time và turnaround time của mỗi bộ định thời tương ứng.
// Thực thi
PHẦN 4: QUẢN LÝ BỘ NHỚ
Xét một hệ thống máy tính với không gian bộ nhớ thật 1KB, không gian bộ nhớ ảo cần 12 bit để biểu diễn. Giả sử kích thước của trang bằng với kích thước của khung và bằng 128 bytes. Với bảng trang như dưới đây
Viết chương trình MSSVqlbn.c nhận vào một tham số (parameter) là filename. Trong filename chứa một dãy truy cập các địa chỉ luận lý, mỗi địa chỉ được lưu trữ dưới dạng 8bytes (unsigned long type). Chương trình MSSVqlbn.c sẽ đọc và phân tích các địa chỉ, chuyển đổi địa chỉ trong file sang địa chỉ vật lý tương ứng và in ra màn hình.
--
PHẦN 5: MÁY ẢO
Trình bày tất cả những gì anh/chị hiểu về máy ảo (virtual machine).
Máy ảo (Virtual Machine - VM) được xem là một chương trình máy tính (client) được chạy trên một hệ điều hành chủ (host) và hoạt động giống như một máy tính thật, tức là có chạy hệ điều hành và các phần mềm trên đó.
Máy ảo cũng giống như máy thật có HĐH, RAM, CPU, CARD MẠNG,...
Ví dụ: VirutalBox là một hypervisor phổ biến. Phần mềm này đảm nhận việc phân bổ các phần CPU, RAM, đĩa lưu trữ và các thành phần khác để máy ảo có thể dùng nó chạy bình thường. Khi dùng VirutalBox để cài một bản sao hệ điều hành trong đĩa ảo, sẽ có một máy ảo đầy đủ tính năng.
Một máy ảo chạy sẽ chia sẻ tài nguyên phần cứng cùng với máy thật, điều này sẽ gây ảnh hưởng lớn tới máy thật
*******************HẾT*******************