Đại học Bách Khoa TP HCM, Khoa KH & KTMT BÀI TẬP LỚN Môn: Hệ điều hành Thời hạn: 23:59 14/11/2014 Lê Hải Sơn Email: sonlh@hcmut.edu.vn Ngày 23 tháng năm 2014 Bài tập lớn 1: Giả lập giải thuật định thời 1.1 Mơ tả chương trình Viết chương trình C giả lập đo hiệu suất giải thuật định thời CPU: FCFS SJF Thiết kế chương trình sau: CPUs I/O new processes ready-queue waiting-queue Hình 1.1: Thiết kế hệ thống BTL 1 SinhVienZone.com https://fb.com/sinhvienzonevn • Một q trình khởi tạo đưa vào danh sách hàng đợi ready-queue chia sẻ CPU • Các CPU truy cập vào ready-queue để bắt đầu thực thi trình với thời gian CPU-burst tương ứng • Ở CPU, sau hồn thành CPU-burst q trình, q trình chuyển vào hàng đợi waiting-queue để thực tác vụ I/O với thời gian I/Oburst tương ứng cho q trình • I/O xử lý q trình hàng đợi waiting-queue theo sách FCFS • Sau I/O thực xong I/O-burst, trình đưa vào cuối danh sách ready-queue Đối với trình, trạng thái sau: • S_READY: Q trình hàng đợi ready-queue • S_RUNNING: Q trình thực thi CPU • S_WAITING: Q trình hàng đợi waiting-queue xử lý I/O • S_TERMINATED: Q trình kết thúc thực thi 1.2 Giao diện chương trình Tên chương trình schedsim Chương trình hỗ trợ tương tác với người dùng sau: schedsim [-h] [-c #CPUs] -i job_file -s ID -o output_file • -h: Hiển thị hình thơng tin: Tên MSSV thực • -c #CPUs: Cho biết số lượng CPU hệ thống Nếu người dùng không nhập, giá trị mặc định số lượng CPU • -i jobs_file: File đặc tả trình giả lập • -s ID: Định danh định thời dùng để giả lập – FCFS: Định thời FCFS – SJF: Định thời SJF • -o output_file: File output sau chạy giả lập Ví dụ: lệnh sau thực giả lập định thời FCFS cho hệ thống có CPU, thơng tin q trình lấy từ file p1.txt, kết giả lập ghi vào file kq.txt: schedsim -c -i p1.txt -s FCFS -o kq.txt Yêu cầu thực makefile cho chương trình Các sourcecode với file báo cáo đặt chung vào folder với tên MSSV, zip folder lại với tên MSSV.zip nộp Sakai SinhVienZone.com https://fb.com/sinhvienzonevn 1.2.1 Định dạng job_file Đặc tả trình hệ thống khai báo job_file Mỗi dòng file tương ứng với q trình, với định dạng cho dòng sau: Giá trị trường thông tin số tự nhiên, đó, • Start: Thời điểm q trình đẩy vào ready-queue • Total_CPU_burst: Khi tổng thời gian sử dụng CPU vượt qua giá trị này, q trình kết thúc với trạng thái S_TERMINATED • CPU_burst: Thời gian CPU-burst • IO_burst: Thời gian xử lý IO-burst Một ví dụ nội dung job-file cho trình sau: 2 10 20 10 15 4 1.2.2 Định dạng file output File kết cần có thơng tin hiệu suất định thời: trung bình độ lợi CPU (CPU_Util), trung bình thời gian chờ (Waiting_time), trung bình thời gian đáp ứng (Response_time) thời gian hệ thống hồn thành q trình (Total_time), Tất thông tin lưu thành dòng output file sau: 1.3 Hướng dẫn thực chương trình Sau hướng dẫn cách thực chương trình schedsim Mỗi CPU hay I/O tương ứng với trình hay thread Các thread/ trình chia sẻ danh sách waiting-queue ready-queue Bên cạnh đó, có q trình/thread quan trọng khác là: clock khởi tạo trình Xử lý trình CPU while (1) { wait_new_clock(); if (CPU-state == FREE) { ; CPU-state = BUSY; SinhVienZone.com https://fb.com/sinhvienzonevn } ; If (Thời gian chiếm CPU == CPU_burst) { ; CPU-state = FREE; if ( == SUCCESS) CPU-state = BUSY; } pass_current_clock(); } Xử lý trình I/O while (1) { wait_new_clock(); if (IO-state == FREE) { ; IO-state = BUSY; } ; If (Thời gian chiếm I/O == IO_burst) { ; IO-state = FREE; if ( == SUCCESS) IO-state = BUSY; } pass_current_clock(); } Xử lý đồng hồ clock clock = 0; while (1) { start_set_clock(); clock ++; end_set_clock(); } Xử lý việc khởi tạo trình giả lập Sort all processes by start time; while (1) { wait_new_clock(); if (process_start_time == clock) Chuyển trình vào hàng đợi ready; SinhVienZone.com https://fb.com/sinhvienzonevn pass_current_clock(); } Xem mối quan hệ đồng trình/thread hình 1.2 CLOCK CPU I/O Start-process pass current clock start set clock end set clock wait new clock Hình 1.2: Quan hệ đồng trình: CPU, I/O, Clock Khởi tạo trình 1.4 Yêu cầu báo cáo • Trình bày mơ tả q trình thực chương trình • File báo cáo đặt tên MSSV.pdf folder với file sourcecode SinhVienZone.com https://fb.com/sinhvienzonevn Bài tập lớn 2: Sinh trình / thread có quan hệ đồng 2.1 Mơ tả chương trình Viết chương trình C mơ mối quan hệ đồng cho trước tập q trình hay thread Mối quan hệ mơ tả dạng đồ thị có hướng ví dụ Hình 2.1, có q trình tranh chấp sử dụng loại tài nguyên R1, R2 R3 Tài nguyên (chia sẻ) đơn thực thể (như R3) hay đa thực thể (như R1 hay R2) R3 P1 R1 P3 P2 R2 P4 Hình 2.1: Đồ thị quan hệ sử dụng tài nguyên (BTL2) Các trình hay thread sinh phải thể quan hệ phụ thuộc đặc tả Mỗi trình u cầu hay nhiều tài ngun, đó: • Pi → Rj : Q trình Pi đợi thực thể trống tài nguyên Rj • Rj → Pi : Quá trình Pi sử dụng thực thể tài nguyên Rj Sau q trình có ĐỦ tài ngun u cầu, tốn khoảng thời gian T để thực thi (thời gian chiếm CPU), sau trả tài nguyên chiếm giữ cho hệ thống kết thúc 2.2 Giao diện chương trình Tên chương trình syncgen, tương tác với người dùng thông qua cú pháp sau: syncgen [-h] -t Tvalue -i input_file -o output_file • -h: Hiển thị hình thơng tin: Tên MSSV thực • -i input_file: File đặc tả mối quan hệ q trình • -t Tvalue: Giá trị T (đơn vị giây) • -o output_file: File output sau chạy chương trình hệ thống SinhVienZone.com https://fb.com/sinhvienzonevn Ví dụ: lệnh sau thực việc sinh trình theo đặc tả file p1.txt kết chương trình lưu file kq.txt, với thời gian T giây: syncgen -t -i p1.txt -o kq.txt Yêu cầu thực makefile cho chương trình Các sourcecode với file báo cáo đặt chung vào folder với tên MSSV, zip folder lại với tên MSSV.zip nộp Sakai 2.3 Đặc tả input file Input file mô tả quan hệ q trình tài ngun thơng qua ma trận R, • R[i, j] = 1: Quá trình Pi đợi tài nguyên Rj hay Pi → Rj • R[i, j] = −1: Q trình Pi giữ tài nguyên Rj hay Rj → Pi • R[i, j] = 0: Quá trình Pi tài ngun Rj khơng có quan hệ với Bên cạnh đó, dòng file input cho biết số lượng thực thể tài nguyên Với ví dụ Hình 2.1, file input có nội dung Bảng 2.1 (trong phần đóng khung): R1 -1 -1 P1 P2 P3 P4 R2 -1 -1 R3 1 0 Bảng 2.1: Nội dung file input cho ví dụ Hình 2.1 2.4 Đặc tả output file File output chứa thông tin thứ tự hồn thành q trình sinh Với cấu hình input file thời gian T , có nhiều kết ouput khác nhau, cần xuất trường hợp xảy tương ứng thời điểm thực thi Ví dụ, kết ví dụ Hình 2.1 có trường hợp sau: P2 P2 P4 P4 P4 P4 P2 P2 P1 P3 P3 P1 P3 P1 P1 P3 SinhVienZone.com https://fb.com/sinhvienzonevn Nếu chương trình có khả xác định xảy deadlock từ file input, khơng cần thực thi q trình, mà xuất file output chuỗi "DEADLOCK" 2.5 Viết báo cáo • Trình bày mơ tả q trình thực chương trình • File báo cáo đặt tên MSSV.pdf folder với file sourcecode Yêu cầu chung: Các yêu cầu makefile, input, output option chương trình phải thực nghiêm túc xác Mọi lỗi liên quan dẫn đến chương trình khơng thể compile run không xem xét điểm cho assignment Trường hợp phát gian lận nhận điểm cho tồn mơn học SinhVienZone.com https://fb.com/sinhvienzonevn ... (Waiting_time), trung bình thời gian đáp ứng (Response_time) thời gian hệ thống hồn thành q trình (Total_time), Tất thông tin lưu thành dòng output file sau: ... Bài tập lớn 2: Sinh trình / thread có quan hệ đồng 2.1 Mơ tả chương trình Viết chương trình C mơ mối quan hệ đồng cho trước tập trình hay thread Mối quan hệ mơ tả dạng đồ thị có hướng ví dụ Hình... pass_current_clock(); } Xem mối quan hệ đồng trình/thread hình 1.2 CLOCK CPU I/O Start-process pass current clock start set clock end set clock wait new clock Hình 1.2: Quan hệ đồng trình: CPU, I/O, Clock