Báo cáo bài tập lớn - Đề tài Hiện thực, mô phỏng giải thuật định thời FCFS
Bạn đang xem tài liệu "Báo cáo bài tập lớn - Đề tài Hiện thực, mô phỏng giải thuật định thời FCFS", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bao_cao_bai_tap_lon_de_tai_hien_thuc_mo_phong_giai_thuat_din.pdf
Nội dung text: Báo cáo bài tập lớn - Đề tài Hiện thực, mô phỏng giải thuật định thời FCFS
- ĐẠI HỌC QUÓC GIA TP. HCM TRƯỜNG ĐẠI HỌC CO NG NGHÊ ̣ THO NG TIN NHÓM 4 BÁO CÁO BÀI TẬP LỚN Lớp: OSYS1.D11.2 Đê ̀ tai:̀ Danh sách nhóm STT MSSV Họ Tên 1 11520267 Lý Trọng Nhân 2 11520114 Nguyễn Thanh Hòa 3 11520605 Vũ Thị Ngọc Tháng 12/2012
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 MỤC LỤC Phần I: LÝ THUYẾT I.1 Khái niệm 1 I.2 Nguyên lý hoạt động 1 I.3 Ứng dụng 1 Phần II: HIỆN THỰC II.1 Sơ đồ khối: 2 II.2 Source code hiện thực FCFS 2 II.3 Mô tả hoạt động 5 Phần III: TỔNG KẾT III.1 Ưu điểm: 7 III.2 Nhược điểm: 7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 Phần I: LÝ THUYẾT I.1 Khái niệm First Come First Served (FCFS) là giải thuật định thời CPU đơn giản nhất. Với giải thuật này, tiến trình nào yêu cầu CPU trước sẽ được cấp phát CPU trước. Giải thuật FCFS là giải thuật định thời không trưng dụng CPU (Non-Preemptive). Process sẽ thực thi đến khi kết thúc hoặc bị blocked do I/O (nhập/xuất). I.2 Nguyên lý hoạt động Việc cài đặt FCFS được quản lí dễ dàng với hàng đợi FIFO (FIFO queues). Khi một tiến trình yêu cầu sử dụng CPU, nó sẽ được thêm vào cuối hàng đợi (PCB của nó được liên kết tới đuôi FIFO queues). CPU sẽ được cấp phát cho một tiến trình tại đầu hàng đợi. Sau đó, tiến trình này sẽ được lấy ra khỏi hàng đợi FIFO. Pn P0 P1 P2 Pn-1 I.3 Ứng dụng FCFS thường được sử dụng trong các hệ thống bó (batch system). Giải thuật FCFS đặc biệt không phù hợp với hệ thống chia sẻ thời gian. 1/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 Phần II: HIỆN THỰC II.1 Sơ đồ khối: Input FCFS Output Giản đồ Gantt. S ố lượng process. Sắp xếp Process theo Tên process. arrival time. Thời gian đáp ứng trung bình. Burst time. Tính toán các thông số. Thời gian đợi trung Arival time. Xuất giản đồ Gantt và bình. các thông số. Thời gian hoàn thành trung bình. II.2 Source code hiện thực FCFS // Khai báo thư viện #include #include #include #include using namespace std; // Khai báo biến toàn cục int n, Bt[20], At[20], Wt[20], Swt=0, Stt=0; float Awt, Att; string name[20]; // Hàm nhập thông tin các tiến trình void Nhap() { do { cout 0): "; cin>>n; if (n<=0) cout<<" So luong process phai lon hon 0. Vui long nhap lai!"; } while (n<=0); for(int i=0; i<n; i++) { cin.ignore(80,'\n'); cout<<" \n NHAP THONG TIN PROCESS THU "<<i+1<<" "<<endl; cout<<" Ten process: "; getline(cin,name[i]); 2/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 cout >Bt[i]; cout >At[i]; } } // Hàm vẽ khung cho giản đồ Gantt void Khung() { cout<<endl; for (int i=0; i<n*16; i++) cout<<"-"; cout<<"-"; cout<<endl; } // Hàm vẽ giản đồ Gantt void Gantt() { cout<<"\n\t\t\tGANTT CHART\n"; Khung(); for(int i=0; i<n; i++) cout<<"|\t"<<name[i]<<"\t"; cout<<"|"; Khung(); for(int i=0; i<n; i++) cout<<Wt[i]<<"\t\t"; cout<<Wt[n-1]+Bt[n-1]; Khung(); } // Hàm tính toán các thông số void Tinhtoan() { Wt[1]=0; for(int i=1; i<n; i++) { Wt[i]=Bt[i-1]+Wt[i-1]; } for(int i=0; i<n; i++) { Swt+=Wt[i]-At[i]; Stt+=Wt[i]+Bt[i]-At[i]; } Att=(float)Stt/n; Awt=(float)Swt/n; } // Hàm xuất thông tin tính toán void Xuat() { Gantt(); cout<<"\n - Thoi gian doi trung binh: "<<setprecision(3)<<Awt<<" ms"; 3/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 cout At[j]) { tam=Bt[i]; Bt[i]=Bt[j]; Bt[j]=tam; tam=At[i]; At[i]=At[j]; At[j]=tam; chuoitam=name[i]; name[i]=name[j]; name[j]=chuoitam; } } } } // Giải thuật FCFS void fcfs() { Sapxep(); Tinhtoan(); Xuat(); } // HÀM MAIN void main() { Nhap(); fcfs(); getch(); } 4/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 II.3 Mô tả hoạt động a) Nhập dữ liệu: Hàm Nhap() được thực hiện, người sử dụng cung cấp các thông tin (Input): + Số lượng Process. + Tên Process. + Burst time. + Arival time. b) Sắp xếp: Các tiến trình được sắp xếp theo thứ tự Arrival time bởi hàm Sapxep(). c) Tính toán: Chương trình gọi hàm Tinhtoan() để tính các thông số liên quan: thời gian đợi trung bình, thời gian hoàn thành trung bình. Riêng thời gian đáp ứng trung bình không cần tính vì trong giải thuật FCFS, thời gian đợi trung bình bằng thời gian đáp ứng trung bình. 5/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 d) Xuất kết quả: Hàm Xuat() được thực thi. Đầu tiên nó sẽ gọi hàm Gantt() vẽ giản đồ. Sau đó xuất các thông số đã được tính toán ở trên. 6/7
- HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS Nhóm BÀI TẬP LỚN LỚP OSYS1.D11.2 4 Phần III: TỔNG KẾT III.1 Ưu điểm: - Đơn giản, dễ hiện thực. - Process không bị phân phối lại. - Chi phí thấp: không phải thay đổi thứ tự ưu tiên điều độ. III.2 Nhược điểm: - Tiến trình ngắn cũng phải chờ như tiến trình dài. - Thời gian chờ đợi trung bình tăng vô hạn khi hệ thống tiệm cận tới khả năng phục vụ của mình. - Khi gặp tiến trình bị ngắt, các tiến trình khác sẽ bị xếp hàng lâu. HẾT 7/7