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
Danh sch nhm
TP. HCM
Đề tài:
BÁO CÁO BÀI TẬP LỚN
Lp: OSYS1.D11.2
Tháng 12/2012
NHÓM 4
HIỆN THỰC,MÔPHỎNGGIẢITHUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
Nhóm
4
Nhóm
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ỎNGGIẢITHUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
1/7
Nhóm
4
Pn
Pn-1 P2P1P0
Phần I: LÝ THUYẾT
I.1 Khái niệm
First Come First Served (FCFS) là giảithuậtđịnhthời CPU đơn giản
nhất. Với giảithuậ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ảithuật FCFS là giảithuậtđịnhthờ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.
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.
HIỆN THỰC,MÔPHỎNGGIẢITHUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
2/7
Nhóm
4
Phần II: HIỆN THỰC
II.1 Sơ đồ khối:
II.2 Source code hiện thực FCFS
// Khai báo thư viện
#include <conio.h>
#include <string>
#include <iomanip>
#include <iostream>
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 nhp thông tin các tiến trnh
void Nhap()
{
do
{
cout<<"\n Nhap so luong process (n>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]);
Sắp xếp Process theo
arrival time.
Tính toán các thông số.
Xuất giản đồ Gantt và
các thông số.
FCFS
Số lượng process.
Tên process.
Burst time.
Arival time.
Input
Giản đồ Gantt.
Thời gian đáp ứng
trung bình.
Thời gian đợi trung
bình.
Thời gian hoàn thành
trung bình.
Output
HIỆN THỰC,MÔPHỎNG GIẢI THUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
3/7
Nhóm
4
cout<<" Burst Time: ";
cin>>Bt[i];
cout<<" Arrival Time: ";
cin>>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";
HIỆN THỰC,MÔPHỎNG GIẢI THUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
4/7
Nhóm
4
cout<<"\n - Thoi gian dap ung trung binh: "<<setprecision(3)<<Awt<<"
ms"; // Trong giải thut FCFS, thời gian đợi trung bnh = thời gian đáp ứng
trung bnh.
cout<<"\n - Thoi gian hoan thanh trung binh: "<<setprecision(3)<<Att<<"
ms";
}
// Hàm sắp xếp các tiến trnh:
void Sapxep()
{
int tam;
string chuoitam;
cout<<"\n\n GIAITHUAT FIRST COME FIRST SERVED \n";
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(At[i]>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 thut FCFS
void fcfs()
{
Sapxep();
Tinhtoan();
Xuat();
}
// HÀM MAIN
void main()
{
Nhap();
fcfs();
getch();
}
HIỆN THỰC,MÔPHỎNG GIẢI THUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
5/7
Nhóm
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ảithuật FCFS, thời gian đợi
trung bình bằng thời gian đáp ứng trung bình.
HIỆN THỰC,MÔPHỎNG GIẢI THUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
6/7
Nhóm
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.
HIỆN THỰC,MÔPHỎNG GIẢI THUẬTĐỊNHTHỜI FCFS
BÀI TẬP LỚN LỚP OSYS1.D11.2
7/7
Nhóm
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
.
Đề tài:
BÁO CÁO BÀI TẬP LỚN
Lp: OSYS1.D11.2
Tháng 12/2012
NHÓM 4
HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS
BÀI TẬP LỚ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
BÀI