1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo : Hiện thực, mô phỏng giải thuật định thời FCF5 potx

9 1,9K 30
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 1,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Khi một tiến trình yêu cầu

Trang 1

STT MSSV Họ Tên

Danh sách nhóm

ĐẠI HỌC QUÓC GIA TP HCM TRƯỜNG ĐẠI HỌC CO NG NGHÊ ̣ THO NG TIN

Đề tài:

BÁO CÁO BÀI TẬP LỚN

Lớp: OSYS1.D11.2

NHÓM 4

Trang 2

MỤC LỤC

I.1 Khái niệm 1

I.2 Nguyên lý hoạt động 1

I.3 Ứng dụng 1

II.1 Sơ đồ khối: 2

II.2 Source code hiện thực FCFS 2

II.3 Mô tả hoạt động 5

III.1 Ưu điểm: 7

III.2 Nhược điểm: 7

Trang 3

HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS

BÀI TẬP LỚN LỚP OSYS1.D11.2

Nhóm

4

Pn

Pn-1

P2 P1

P0

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

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

Trang 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 nhập thông tin các tiến trình

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

Trang 5

HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS

BÀI TẬP LỚN LỚP OSYS1.D11.2

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" ;

Trang 6

cout<< "\n - Thoi gian dap ung trung binh: " <<setprecision(3)<<Awt<< " ms" ; // Trong giải thuật FCFS, thời gian đợi trung bình = thời gian đáp ứng trung bình.

cout<< "\n - Thoi gian hoan thanh trung binh: " <<setprecision(3)<<Att<< " ms" ;

}

// Hàm sắp xếp các tiến trình:

void Sapxep()

{

int tam;

string chuoitam;

cout<< "\n\n GIAI THUAT 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 thuật FCFS

void fcfs()

{

Sapxep();

Tinhtoan();

Xuat();

}

// HÀM MAIN

void main()

{

Nhap();

fcfs();

getch();

}

Trang 7

HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS

BÀI TẬP LỚN LỚP OSYS1.D11.2

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ải thuật FCFS, thời gian đợi

trung bình bằng thời gian đáp ứng trung bình

Trang 8

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

Trang 9

HIỆN THỰC, MÔ PHỎNG GIẢI THUẬT ĐỊNH THỜI FCFS

BÀI TẬP LỚN LỚP OSYS1.D11.2

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

Ngày đăng: 06/03/2014, 10:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w