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

Thực Hành Hệ Điều Hành UIT lab4

14 1,3K 1

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 1 MB

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

Nội dung

Môn học Hệ điều hành Họ tên Nguyễn Thanh Hiếu Báo cáo Bài tập lab 4 Lớp IT007 M21 HTCL 2 Bài làm I 1 Vẽ sơ đồ giải thuật của các giải thuật lập lịch tiến trình ❖FCFS (First Come First Served) ❖ RR (Round Robin) ❖ SJF (Shortest Job First) ❖ SRT (Shortest Remain Time) 2 Giải thích các thuật ngữ STT Thuật ngữ Mô tả 1 Arrival time Thời gian (Thời điểm) một tiến trình nạp vào hệ thống 2 Burst time Tổng thời gian một tiến trình thực hiện 3 Quantum time Thời gian định mức trong thuật toán Round Robin 4.

Trang 1

Môn học: Hệ điều hành Họ tên: Nguyễn Thanh Hiếu

Bài làm

I

1 Vẽ sơ đồ giải thuật của các giải thuật lập lịch tiến trình:

❖FCFS (First Come First Served)

❖ RR (Round Robin)

Trang 2

❖ SJF (Shortest Job First)

Trang 3

❖ SRT (Shortest Remain Time)

Trang 4

2 Giải thích các thuật ngữ

1 Arrival time Thời gian (Thời điểm) một tiến trình nạp

vào hệ thống

2 Burst time Tổng thời gian một tiến trình thực hiện

3 Quantum time Thời gian định mức trong thuật toán

Round Robin

4 Response time

Thời gian đáp ứng: Khoảng thời gian

process nhận yêu cầu lần đầu tiên đến khi yêu cầu đầu tiên được đáp ứng

Trang 5

5 Waiting time Thời gian chờ: Tổng thời gian một

process đợi trong ready queue

6 Turnaround time

Thời gian hoàn thành: Là khoảng thời

gian từ lúc nạp đến lúc kết thúc của một

tiến trình

7 Average waiting

time

Thời gian chờ trung bình: Tổng thời

gian chờ của các tiến trình chia cho số

tiến trình

8 Average turnaround

time

Thời gian hoàn thành trung bình: Tổng

thời gian hoàn thành của các tiến trình

chia cho số tiến trình

II

EX: Viết chương trình mô phỏng giải thuật FCFS

Giải

Trang 6

Kết quả

1 Viết chương trình mô phỏng giải thuật SJF với các yêu cầu sau:

❖ Nhập số lượng process

❖ Nhập process name, arrival time, burst time

❖ In ra Process name, response time, waiting time, turnaround time, average waiting time, average turnaround time

Giải

/*File bai1.c*/

#include<stdio.h>

int main()

{

int time,bt[10],at[10],sum_bt=0,smallest,n,i;

Trang 7

int sum_turnaround=0,sum_wait=0;

printf("Enter no of processes : ");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("Enter Process Name,arrival time, burst time for process P%d :

",i+1);

scanf("%d%d%d",&smallest,&at[i],&bt[i]);

sum_bt+=bt[i];

}

bt[9]=9999;

printf("\n\nProcess\t Turnaround\t Respone\t Waiting \n\n");

for(time=0;time<sum_bt;)

{

smallest=9;

for(i=0;i<n;i++)

{

if(at[i]<=time && bt[i]>0 && bt[i]<bt[smallest])

smallest=i;

}

if(smallest==9)

{

time++;

continue;

}

printf("%d\t \t%d\t \t%d\t \t%d\t\n",smallest+1,time+bt[smallest]-at[smallest],time-at[smallest],time-at[smallest]);

Trang 8

sum_turnaround+=time+bt[smallest]-at[smallest];

sum_wait+=time-at[smallest];

time+=bt[smallest];

bt[smallest]=0;

}

printf("\n\n average waiting time = %f",sum_wait*1.0/n);

printf("\n\n average turnaround time = %f",sum_turnaround*1.0/n); return 0;

}

Kết quả

2 Viết chương trình mô phỏng giải thuật SRT với các yêu cầu sau:

❖ Nhập số lượng process

❖ Nhập process name, arrival time, burst time

❖ In ra Process name, response time, waiting time, turnaround time, average waiting time, average turnaround time

Giải

Trang 9

/*File bai2.c*/

#include<stdio.h>

void main()

{

int a[10],b[10],x[10];

int waiting[10],turnaround[10],completion[10];

int i,j,smallest,count=0,time,n;

double avg=0,tt=0,end;

printf("\nEnter the number of Processes: ");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("\nEnter arrival,burst time of process %d : ",i+1); scanf("%d",&a[i]);

scanf("%d",&b[i]);

}

for(i=0;i<n;i++)

x[i]=b[i];

b[9]=9999;

//printf("time => process number");

for(time=0;count!=n;time++)

{

smallest=9;

Trang 10

for(i=0;i<n;i++)

{

if(a[i]<=time && b[i]<b[smallest] && b[i]>0 )

smallest=i;

}

b[smallest] ;

//printf("\n%d => p%d",time+1,smallest);

if(b[smallest]==0)

{

count++;

end=time+1;

completion[smallest] = end;

waiting[smallest] = end - a[smallest] - x[smallest];

turnaround[smallest] = end - a[smallest];

// printf("\n %d %d %d",smallest,wt[smallest],ttp[smallest]); }

}

printf("pid \t burst \t arrival \twaiting \tturnaround \tcompletion"); for(i=0;i<n;i++)

{

printf("\n %d \t %d \t %d\t\t%d

\t\t%d\t\t%d",i+1,x[i],a[i],waiting[i],turnaround[i],completion[i]); avg = avg + waiting[i];

tt = tt + turnaround[i];

}

printf("\n\nThoi gian cho trung binh = %lf\n",avg/n);

printf("Thoi gian hoan thanh trung binh = %lf",tt/n);

}

Trang 11

Kết quả

3 Viết chương trình mô phỏng giải thuật RR với các yêu cầu sau (giả sử tất cả các tiến trình đều có arrival time là 0):

❖ Nhập số process

❖ Nhập quantum time

❖ Nhập process name, burst time

❖ In ra Gantt chart với các thông số: process name, start processor time, stop processor time

❖ In ra average waiting time và average turnaround time

Giải

/*File bai3.c*/

#include<stdio.h>

int main()

{

int count,j,n,time,remain,flag=0,time_quantum;

int wait_time=0,turnaround_time=0,at[10],bt[10],rt[10];

printf("Enter Total Process:\t ");

Trang 12

scanf("%d",&n);

remain=n;

for(count=0;count<n;count++)

{

printf("Enter Burst Time for Process Process Number %d :",count+1); at[count]=0;

scanf("%d",&bt[count]);

rt[count]=bt[count];

}

printf("Enter Time Quantum:\t");

scanf("%d",&time_quantum);

printf("\n\nProcess\t|stop Time|start Time\n\n");

for(time=0,count=0;remain!=0;)

{

if(rt[count]<=time_quantum && rt[count]>0)

{

int starttime;

starttime = time;

time+=rt[count];

rt[count]=0;

flag=1;

printf("P[%d]\t|\t%d\t|\t%d\n",count+1,time-at[count],starttime); }

else if(rt[count]>0)

{

rt[count]-=time_quantum;

time+=time_quantum;

Trang 13

printf("P[%d]\t|\t%d\t|\t%d\n",count+1,time-at[count],time-time_quantum);

}

if(rt[count]==0 && flag==1)

{

remain ;

wait_time+=time-at[count]-bt[count];

turnaround_time+=time-at[count];

flag=0;

}

if(count==n-1)

count=0;

else if(at[count+1]<=time)

count++;

else

count=0;

}

printf("\nThoi gian cho trung binh %f\n",wait_time*1.0/n);

printf("Thoi gian hoan thanh trung binh = %f",turnaround_time*1.0/n);

return 0;

}

Kết quả

Ngày đăng: 03/07/2022, 17:56

TỪ KHÓA LIÊN QUAN

w