1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình mô phỏng kiểm tra tính an toàn của hệ thống

12 32 0

Đ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

Tiêu đề Lập Trình Mô Phỏng Kiểm Tra Tính An Toàn Của Hệ Thống
Tác giả Nhóm 17
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Nguyên Lý Hệ Điều Hành
Thể loại bài tập lớn
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 12
Dung lượng 159,6 KB

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

Nội dung

Nội dung của đề tài gồm: Giới thiệu chung. Sơ lược sự an toàn hệ thống. Thuật toán kiểm tra tính an toàn của hệ thống. Bài code của thuật toán. Ví dụ minh họa. Hệ điều hành là một môn học góp phần cung cấp những nội dung kiến thức chung nhất về hệ điều hành máy tính, nó giúp người học nắm bắt được những nguyên lý cơ bản và những nguyên tắc làm việc của một hệ điều hành máy tính tổng quát. Từ đó có thể áp dụng để làm việc tốt với các hệ điều hành cụ thể trên thực tế, hình dung được xu hướng phát triển của những hệ điều hành mới trong tương lai. Để phục vụ cho học tập nhóm chúng tôi đã nhận đề tài : ”Lập trình mô phỏng kiểm tra tính an toàn hệ thống”. Nhằm giúp các bạn hiểu được về cách kiểm tra tiến trình an toàn trong hệ điều hành cũng như việc phân bổ tài nguyên cho các tiến trình. Mặc dù nhóm chúng tôi đã giành thời gian tìm kiếm tài liệu và làm bài nhưng không tránh khỏi còn thiếu sót, mong thầy góp ý để bài tập lớn của chúng em được đầy đủ hơn.

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN

MÔN HỌC: NGUYÊN LÝ HỆ ĐIỂU HÀNH

Đề tài: Lập trình mô phỏng kiểm tra tính an toàn

của hệ thống

Nhóm sinh viên thực hiện: Nhóm 17 Lớp: Hệ Thống Thông Tin - K6

HÀ NỘI -2012 LỜI NÓI ĐẦU

Đề tài: Lập trình mô phỏng kiểm tra tính an toàn của hệ thống

Trang 2

Nội dung của đề tài gồm:

- Giới thiệu chung

- Sơ lược sự an toàn hệ thống

- Thuật toán kiểm tra tính an toàn của hệ thống

- Bài code của thuật toán

- Ví dụ minh họa

Hệ điều hành là một môn học góp phần cung cấp những nội dung kiến thức chung nhất về hệ điều hành máy tính, nó giúp người học nắm bắt được những nguyên lý cơ bản và những nguyên tắc làm việc của một hệ điều hành máy tính tổng quát Từ đó có thể áp dụng để làm việc tốt với các hệ điều hành cụ thể trên thực tế, hình dung được

xu hướng phát triển của những hệ điều hành mới trong tương lai

Để phục vụ cho học tập nhóm chúng tôi đã nhận đề tài : ”Lập trình mô phỏng kiểm tra tính an toàn hệ thống” Nhằm giúp các bạn hiểu được về cách kiểm tra tiến trình an toàn trong hệ điều hành cũng như việc phân bổ tài nguyên cho các tiến trình

Mặc dù nhóm chúng tôi đã giành thời gian tìm kiếm tài liệu và làm bài nhưng không tránh khỏi còn thiếu sót, mong thầy góp ý để bài tập lớn của chúng em được đầy đủ hơn

Xin chân thành cảm ơn!

1 GIỚI THIỆU CHUNG

Trang 3

Phần mềm mô phỏng kiểm tra tính an toàn hệ thống được thiết kế dựa trên các thuật toán chuyển hệ sang trạng thái an toàn và thuật toán kiểm tra tính an toàn của hệ điều hành

Được lập trình bằng ngôn ngữ C++

2 SƠ LƯỢC VỀ SỰ AN TOÀN HỆ THỐNG

2.1.Bế tắc(deadlock)

Trong môi trường đa chương, nhiều tiến trình có thể cạnh tranh một số giới hạn tài nguyên Một tiến trình tài nguyên, nếu tài nguyên không sẵn dùng tại thời điểm đó, tiến trình đi vào trạng thái chờ Tiến trình chờ có thể không bao giờ chuyển trạng thái trở lại vì tài nguyên chúng yêu cầu bị giữ bởi những tiến trình đang chờ khác Trong trường hợp này được gọi là deadlock (bế tắc)

Điều kiện xảy ra bế tắc khi và chỉ khi có các điều kiện sau trong hệ thống: có tài nguyên “găng”, có hiên tượng giữ và đợi, không có hệ thống phân phối lại tài nguyên, có hiện tượng chờ đợi vòng tròn

Phòng chống bế tắc: Áp dụng các biện pháp để hệ thống không rơi vào trạng thái bế tắc Áp dụng các biện pháp kiểm tra xem tiến trình có rơi vào bế tắc hay không, nếu có thông báo trước khi xảy ra và tìm cách giải quyết

2.2.Tránh bế tắc và an toàn hệ thống

2.2.1.Tránh bế tắc

Mỗi khi phân bổ tài nguyên cho các tiến trình, hệ thống sẽ kiểm tra xem liệu việc phân bổ đó có đẩy hệ thống vào tình trạng bế tắc hay không Nếu có tìm cách giải quyết trước khi bế tắc xảy ra

2.2.2 Khái niệm dãy tiến trình an toàn

Cho 1 dãy tiến trình P1, P2, P3, …, Pn song hành Dãy tiến trình gọi là an toàn (safe process) nếu với mọi tiến trình Pi, tài nguyên mà Pi cần có được thỏa mãn bởi các tài nguyên khả dụng của hệ thống và tài nguyên do các tiến trình Pi’ đang giữ với điều kiện i’<i

Hệ thống ở trạng thái an toàn tại một thời điểm nếu dãy tiến trình song hành tại thời điểm đó có thể được sắp xếp thành dãy an toàn

Ví dụ:

Trang 4

Tiến trình Max Need Current Need

Là một dãy an toàn

3 THUẬT TOÁN KIỂM TRA TÍNH AN TOÀN CỦA HỆ THỐNG

3.1.Thuật toán chuyển sang trạng thái an toàn

Giả sử hệ có n tiến trình và m kiểu tài nguyên Các cấu trúc dữ liệu sử dụng trong thuật toán được xây dựng như sau:

- Available : mảng 1x m thể hiện số tài nguyên có thể sử dụng của mỗi kiểu Nếu

- Max: mảng n x m thể hiện số tài nguyên cực đại mà mỗi tiến trình yêu cầu Nếu

cực đại là k

- Allocation: mảng n x m thể hiện số tài nguyên mỗi kiểu hiện đã phân bổ cho

- Need: mảng n x m thể hiện số tài nguyên còn cần của mỗi tiến trình

Need(i,j)=Max(i,j) – Allocation(i,j)

- Request: Mảng n x m thể hiện yêu cầu tài nguyên của các tiến trình

sau:

Else Error;

Step 3: Hệ thống dự định phân bổ tài nguyên

Trang 5

Avaiable i = Avaiable i – Request i

Step 4: kiểm tra hệ có ở trạng thái an toàn hay không

Nếu có phân bổ tài nguyên theo dự tính

3.2.Thuật toán kiểm tra tính an toàn hệ thống

Trong thuật toán này ta sử dụng thêm 2 cấu trúc dữ liệu

- Work : Mảng 1x m thể hiện số tài nguyên khả dụng của hệ thống và số tài

- Finish : Mảng 1x n đánh dấu các tiến trình đã xét

Thuật toán:

Step 1: khởi tạo

Work: = Avaiable Finish [i]:= false; Với mọi i=1…n Step 2: Tìm i sao cho Finish(i)=false và Need(i)<= Work

Nếu không tìm thấy, goto Step 4;

Step 3: Work:=Work+ Allocation(i);

Finish(i):=true;

Step 4: Nếu Finish(i)=true với mọi i thì hệ thống ở trạng thái an toàn, ngược lại

hệ thống gặp bế tắc

3.3.Bài code của thuật toán

#include<conio.h>

#include<iostream.h>

#include<stdio.h>

#include<string.h>

void main()

{

clrscr();

int allocation[50][50];

Trang 6

int max[50][50];

int need[50][50];

int available[50];

int work[50];

char* finish[20];

int tientrinh[20];

int n,m,i,j,d1,d2, check;

cout<<"Nhap so kieu tai nguyen m= "; cin>>m; cout<<"Nhap Allocation:";

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

for(j=0; j<m; j++)

{

gotoxy(10+3*j, 4+i);

cin>>allocation[i][j];

}

cout<<"Nhap Max: ";

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

for(j=0; j<m; j++)

{

gotoxy(10+3*j,10+i);

cin>>max[i][j];

}

cout<<"Nhap Available: ";

for(j=0; j<m; j++)

{

gotoxy(10+3*j,16);

cin>>available[j];

}

cout<<"So tai nguyen ma tien trinh can: "; for (i=0; i<n; i++)

Trang 7

for (j=0; j<m; j++)

}

}

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

for (j=0; j<m; j++)

{

gotoxy(10+3*j,19+i);

cout<<need[i][j];

}

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

finish[i]="false";

for (j=0; j<m; j++)

work[j]=available[j];

i=0; j=0;

do

{

if(finish[i]=="false" && need[i][j]<=work[j]) {

for(d1=0; d1<n; d1++) {

for(d2=0; d2<m; d2++) work[d1]=work[d2]+ allocation[d1][d2]; finish[i]="true";

} j++;

}

if (i=n) i=tientrinh[i];

}

Trang 8

cout<<"\nHe o trang thai an toan\n";

cout<<"Day tien trinh an toan:\n";

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

cout<<"P"<<tientrinh[i]<<",\t";

getch();

}

3.4 Ví d minh h a ụ minh họa ọa

Cho m t dãy ti n trình và 4 ki u tài nguyên đột dãy tiến trình và 4 kiểu tài nguyên được phân bổ như sau: ến trình và 4 kiểu tài nguyên được phân bổ như sau: ểu tài nguyên được phân bổ như sau: ược phân bổ như sau:c phân b nh sau:ổ như sau: ư

Process Allocation Max Available

A B C D A B C D A B C D

P0 0 0 1 2 0 0 1 2 1 5 2 0

P1 1 0 0 0 1 7 5 0

P2 1 3 5 4 2 3 5 6

P3 0 6 3 2 0 6 5 2

P4 0 0 1 4 0 6 5 6

- Tính s tài nguyên mà ti n trình còn c n?ố tài nguyên mà tiến trình còn cần? ến trình và 4 kiểu tài nguyên được phân bổ như sau: ần? - H có tr ng thái an toàn hay không?ệ có ở trạng thái an toàn hay không? ở trạng thái an toàn hay không? ạng thái an toàn hay không? Bài làm: - S tài nguyên mà các ti n trình còn c n Need:ố tài nguyên mà tiến trình còn cần? ến trình và 4 kiểu tài nguyên được phân bổ như sau: ần? Need[i][j] = Max[i][j] – Allocation[i][j] Process Need A B C D P0 0 0 0 0

P1 0 7 5 0

P2 1 0 0 2

P3 0 0 2 0

P4 0 6 4 2

Trang 9

- Ki m tra tính an toàn c a hểu tài nguyên được phân bổ như sau: ủa hệ ệ có ở trạng thái an toàn hay không?

Work = Available = (1,5,2,0);

Xét P0:

Finish[0]=false và Need[0] <= Work

Work=Work+Allocation[0]=(1,5,3,2);

Finish[0]=true;

Xét P1:

Finish[1] = false và Need[1] <= Work

→ P1 chờ

Xét P2:

Finish[2] = false và Need[2] <= Work

Work = Work+Allocation[2]=(2,8,8,6);

Finish[2] = true;

Xét P3:

Finish[3] = false và Need[3] <= Work

Finish[3]=true;

Xét P4:

Work=Work+Allocation[4]=(2,14,12,12);

Finish[4]=true;

Xét P1:

Trang 10

Finish[1]=true;

Finish[i]= true v i m i iới i=0,1,2,3,4); ọi i

→ H th ng tr ng thái an toàn v i th t các ti n trình (P0, P2, P3, P4,ệ có ở trạng thái an toàn hay không? ố tài nguyên mà tiến trình còn cần? ở trạng thái an toàn hay không? ạng thái an toàn hay không? ới i=0,1,2,3,4); ứ tự các tiến trình (P0, P2, P3, P4, ự các tiến trình (P0, P2, P3, P4, ến trình và 4 kiểu tài nguyên được phân bổ như sau: P1)

Trang 11

Tài liệu tham khảo

Giáo trình : Nguyên lý hệ điều hành – giảng viên –Ts.Nguyễn tuấn Tú Giáo trình : Kỹ thuật lập trình C++ – GS.TS.Phạm Văn ẤT

http://www.microsoft.com

http://en.wikipedia.org

Trang 12

MỤC LỤC

L i nói đ u ờ ần? 2

1.Giới thiệu chung 3

2.Sơ lược về sự an toàn hệ thống 3

2.1.Bế tắc(deadlock) 3

2.2.Tránh bế tắc và an toàn hệ thống 3

2.2.1.Tránh bế tắc 3

2.2.2 Khái niệm dãy tiến trình an toàn 3

3.Thuật toán kiểm tra tính an toàn hệ thống 4

3.1.Thuật toán chuyển sang trạng thái an toàn 4

3.2.Thuật toán kiểm tra tính an toàn hệ thống 5

3.3.Bài code của thuật toán 5

3.4.Ví d minh h aụ minh họa ọi i 8

Tài li u tham kh o ệ có ở trạng thái an toàn hay không? ảo .11

Ngày đăng: 04/12/2023, 22:27

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