1. Trang chủ
  2. » Trung học cơ sở - phổ thông

hệ thống máy tính 2020 nguyễn văn quang it

70 7 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

Định dạng
Số trang 70
Dung lượng 2,09 MB

Nội dung

yêu cầu tài nguyên, nó sẽ chờ đến khi tài nguyên sẵn sàng để cấp phát thì gửi một thông điệp đến tiến trình đang bị khóa trên tài nguyên đó để đánh thức tiến trình này... 49[r]

(1)

adlock

(2)

Khái niệm Thread

2

❑ Trong các hệ điều hành truyền thống, tiến trình có khơng gian địa một thead duy nhất.

❑ Trong thực tế, người dùng mong muốn có nhiều thread điều khiển không gian địa chạy song song, tiến trình riêng biệt.

(3)

Khái niệm Thread

3

Khái niệm Thread:

− Một tiến trình có nhiều thread, thread

thực chức cụ thể không gian địa tiến trình

− Mỗi thread bao gồm:

Một đếm chương trình (Program counter): theo

dõi thị thực thi

(4)

Khái niệm multithreading

4

❑ Trạng thái nhiều threads chạy song song trong

cùng một tiến trình gọi là multithreading

(5)

Trạng thái thread

5

❑ Một thread có trạng thái: running, blocked, ready, terminated.

❑ Mỗi thread có stack riêng, chứa frame cho

(6)

Các thủ tục thread

6

pthread_exit: Khi thread kết thúc công việc.

pthread_wait: Trong một hệ thống thread, một thread có thể chờ thread khác.

(7)

Lý sử dụng thread

7

❑ Chia sẻ không gian địa tất các dữ liệu thread

❑ Thread khơng có tài ngun gắn liền với nó, do đó dễ dàng tạo hủy so với tiến trình.

❑ Tăng hiệu năng, có máy tính I/O đáng

(8)

Ví dụ multithreading

8

Web server multithreading

Dispatcher: đọc yêu cầu từ

mạng, chọn worker thread rỗi, đánh thức

chuyển từ trạng thái block sang trạng thái ready

◼ Khi worker thread đánh

(9)(10)

Giao tiếp tiến trình

10

❑ Có ba lý liên quan đến giao tiếp các tiến trình:

− Trao đổi thông tin − Chia tài nguyên

(11)

Điều kiện tương tranh

Race Conditions

11

(12)

Miền găng - Critical Regions

12

Một phần chương trình mà nhớ chia sẻ

được truy cập gọi miền găng (critical

region hoặc critical section).

❑ Nếu đảm bảo khơng có hai tiến trình truy cập

(13)

Miền găng - Critical Regions

13

Tránh điều kiện tương tranh

− Khơng có 2 tiến trình đồng thời miền găng − Khơng có giả định thực tốc

độ hay số CPU

− Khơng có tiến trình chạy bên ngồi miền găng ngăn chặn tiến trình khác

− Khơng có tiến trình cần phải chờ đợi mãi để

(14)

Loại trừ lẫn với

14

(15)

Loại trừ lẫn với

15

Cấm ngắt – Disabling interrupts

Ý tưởng

◼ Mỗi tiến trình cấm tất ngắt sau vào miền

găng kích hoạt lại trước khỏi miền găng

◼ Tiến trình cấm ngắt kiểm tra cập nhật

nhớ chia sẻ mà khơng sợ tiến trình khác can thiệp

Nhận xét

(16)

Loại trừ lẫn với

16

Sử dụng biến Lock

− Đây giải pháp phần mềm

− Các tiến trình chia sẻ biến lock, giá trị khởi tạo

− Tiến trình muốn vào miền găng phải kiểm tra biến lock

◼ Nếu lock= 0, tiến trình thiết lập giá trị cho lock =1

đi vào miền găng

(17)

Loại trừ lẫn với

17

Sử dụng biến Lock

− Đoạn code sử dụng biến lock

while (TRUE) {

while (lock == 1); // wait lock = 1;

critical-section(); //thực đoạn găng

lock = 0; //kết thúc đoạn găng phải đặt

(18)

Loại trừ lẫn với

18

Nhận xét:

− Khi lock==0: Tiến trình thứ vào miền găng

nhưng chưa kịp thiết lập lock=1,

− Một tiến trình khác chạy theo lịch trình, kiểm tra

thấy lock==0, thiết lập lock=1, vào miền găng

(19)

Loại trừ lẫn với

19

Kiểm tra luân phiên - Strict Alternation

− Hai tiến trình dùng chung biến turn kiểu integer,

giá trị khởi tạo

turn = 0, tiến trình P1 vào miền găng, P1 rời

khỏi miền găng, turn =1 cho phép P2 vào miền găng

turn = 1, tiến trình P2 vào miền găng P1 chờ

(20)

Loại trừ lẫn với

20

while (TRUE) {

while (turn != 0)/* loop */ ; critical_region();

turn = 1;

noncritical_region(); }

while (TRUE) {

while (turn != 1); /* loop */ ; critical_region();

turn = 0;

noncritical_region(); }

(21)

Loại trừ lẫn với

21

Nhận xét:

− Ngăn tình trạng tiến trình đồng thời vào

miền găng

− Số lần vào miền găng P1, P2 cân bằng,

(22)

Loại trừ lẫn với

22

Giải pháp Peterson

− Ban đầu khơng có tiến trình miền găng − Hai tiến trình P0 P1 sử dụng hai biến dùng

chung turn, interesse[2]

turn = 0 đến phiên P0; Nếu turn=1 đến phiên P1

◼ Nếu Pi muốn vào miền găng thiết lập

(23)

Loại trừ lẫn với

23

Khởi tạo:

Interesse[0]=Interesse[1]=false; turn = 0 hoặc 1

◼ Giả sử Pi muốn vào miền găng gọi enter_region, và

thiết lập

interesse[i]=TRUE,

turn=j (đề nghị thử Pj vào miền găng)

◼ Nếu tiến trình Pj khơng vào miền găng thiết lập

interesse[j]=FALSE, Pi vào

(24)

Loại trừ lẫn với

(25)

Loại trừ lẫn với

25

Nhận xét:

− Ngăn chặn tình trạng mâu thuẫn truy xuất ◼ Pi vào miền găng

interesse[j]=FALSE ◼ Hoặc turn = i

◼ Nếu hai tiến trình muốn vào miền găng

interesse[i] = interesse[j] =TRUE

◼ Nhưng giá trị turn

(26)

Loại trừ lẫn với

26

Giải pháp Test and Set Lock – TSL

− Tập lệnh máy có thêm thị đặc biệt để

kiểm tra cập nhật nội dung vùng nhớ đơn vị thao tác, gọi thị TSL

(27)

Loại trừ lẫn với

27

Nhận xét:

Giảm nhẹ cơng việc lập trình việc cài đặt

TSL như lệnh máy phức tạp

(28)

28

Giải pháp: Dùng system calls: sleep wakeup

Sleep: đình tiến trình tiến trình khác đánh thức

Wakeup: tham số tiến trình đánh thức

Ý tưởng

− Tiến trình chưa đủ điều kiện vào miền găng, gọi Sleep để tự khóa, chờ tiến trình khác gọi Wakeup để giải phóng

(29)

29

Code Sleep and Wakeup

int busy; // miền găng bị chiếm

int blocked;//số tiến trình bị tạm khóa

while (1) { if (busy){

blocked = blocked + 1; sleep();}

else busy = 1;

critical-section (); busy = 0;

if(blocked){

(30)

30

dụ: bài toán sản xuất - tiêu dùng.

− Hai tiến trình chia sẻ buffer chung, kích thước

cố định

◼ P1: nhà sản xuất, đặt thông tin vào buffer,

◼ P2: người tiêu dùng, lấy thông tin từ buffer

− P1 muốn đặt phần tử vào buffer, buffer đầy, sleep, đánh thức P2 lấy nhiều phần tử từ buffer

P2 muốn lấy phần tử từ buffer buffer rỗng,

sleep, P1 weakup P2 đặt phần tử vào

(31)

31

(32)

32

Hoạt động consumer

(33)

33

Semaphore s một biến có thuộc tính

− Một số nguyên dương e

− Một hàng đợi f lưu danh sách tiến trình

ở trạng thái waiting

Hai thao tác được định nghĩa trên semaphore

Down(s): giảm giá trị e đi 1.

Nếu e ≥ tiếp tục xử lý.

Ngược lại, e < 0, tiến trình phải chờ.

(34)

34

Down(s) e= e - 1; if e<0

{

status(P)=waiting;

enter(P,f(s)); }

Up(s)

e= e + 1; if e=0

{

exit(Q,f(s));

//Q tiến trình

đang chờ trên s

status(Q)= ready;

enter(Q,ready-list);

(35)

35

❑ Sử dụng semaphore để giải toán

Nhà sản xuất người tiêu dùng:

− Sử dụng semaphore: ◼ Full: đếm số khe đầy

Empty: đếm số khe rỗng

Mutex: để đảm bảo nhà sản xuất người

(36)(37)(38)

38

❑ Một mutex là một biến thuộc trong hai trạng thái: unlock hoặc lock

Hai thủ tục sử dụng:

mutex_lock: Khi thread cần truy cập vào miền găng Nếu mutex unlock gọi thành cơng vào miền găng

mutex_unlock: Thread trong miền găng kết thúc

(39)

39

(40)

40

Monitors (Hoare(1974) Brinch& Hansen) là một cấu trúc liệu bao gồm biến thủ tục.

Đặc điểm:

− Các biến cấu trúc liệu bên monitor

chỉ thao tác thủ tục định nghĩa bên monitor (encapsulation)

− Tại thời điểm, có tiến trình

(41)

41

Monitor là một cấu trúc với thuộc tính:

Biến điều kiện (c)

Hàng đợi chứa tiến trình bị khóa f(c)

Hai thao tác kèm theo là Wait Signal:

Wait(c): chuyển trạng thái tiến trình gọi sang blocked ,

và đặt tiến trình vào hàng đợi c

Signal(c): có tiến trình bị khóa

(42)

42

Wait

Wait(c) {

status(P)=blocked; enter(P,f(c));

}

Signal

if (f(c) != NULL) {

exit(Q,f(c));

//chọn1 tiến trình chờ c statusQ)=ready;

(43)

43

Cài đặt monitors

monitor <tên monitor > {

condition <list biến đ/kiện>;

<khai báo các biến>;

procedure Action1(); { }

procedure Actionn(); { }

(44)

44

❑ Dùng monitor trong bài toán sản xuất – tiêu dùng

❑ Chỉ có thủ tục

(45)

45

Nhận xét

(46)

46

Giải pháp:

− Dựa sở trao đổi thông điệp với hai thao

tác nguyên thủy Send Receive để thực

sự đồng hóa

send(destination, &message): gởi thơng điệp

đến tiến trình hay gởi vào hộp thư

receive(source, &message): nhận thông điệp từ

(47)

47

Sử dụng

− Một tiến trình kiểm sốt việc sử dụng tài nguyên

và nhiều tiến trình khác u cầu tài ngun

− Tiến trình có yêu cầu tài nguyên gởi thông

(48)

48

− Khi sử dụng xong tài ngun, tiến trình gởi

thơng điệp khác đến tiến trình kiểm sốt để báo kết thúc truy xuất

− Tiến trình kiểm sốt: nhận thơng điệp

(49)

49

❑ Cấu trúc tiến trình yêu cầu tài nguyên trong

giải pháp truyền thông điệp

while (TRUE) {

Send(process controler, request message); Receive(process controler,accept message);

critical-section();

(50)

50

(51)

51

(52)

52

Nhận xét:

Semaphoremonitor có thể giải vấn đề

truy xuất độc quyền máy tính có nhiều xử lý chia nhớ dùng chung

(53)

53

❑ Bài toán triết gia ăn tối:

− Có triết gia ăn tối mì ống, ngồi xung quanh bàn trịn, trước mặt người có nĩa Muốn ăn cần có nĩa, người lấy nĩa trước mặt khơng có triết gia ăn

(54)

54

❑ Hoạt động triết gia:

− Ăn: cầm nĩa

− Suy nghĩ: đặt nĩa xuống − Đói: cố gắng lấy nĩa

Giải pháp

− Sử dụng array, State để theo dõi triết gia

đang ăn, suy nghĩ, hay đói

− Triết gia bên cạnh xác định macro

LEFT RIGHT

(55)(56)(57)(58)

Khái niệm

❑ Deadlock

− Các tiến trình tập hợp chờ đợi lẫn nhau

◼ cạnh tranh sử dụng tài nguyên hay giao tiếp

− Chờ đợi kiện không xảy

 Tất tiến trình tập hợp bị khóa vĩnh

viễn !

(59)

Mơ hình hệ thống

(60)

Các điều kiện xảy Deadlock

(61)

Đồ thị cấp phát tài nguyên

❑ Nhận xét

(62)

Đồ thị cấp phát tài nguyên

❑ Khơng có chu trình=> khơng deadlock

(63)

Đồ thị cấp phát tài nguyên

❑ Có chu trình => deadlock

(64)

Đồ thị cấp phát tài ngun

❑ Có chu trình => khơng deadlock

(65)

Các tốn xử lý deadlock

❑ Ngăn chặn tắc nghẽn

❑ Tránh/ Ngăn ngừa tắc nghẽn (*)

❑ Phát hiện Xử lý tắc nghẽn

(66)

Bài toán ngăn ngừa deadlock

(67)

Bài toán ngăn ngừa deadlock

(68)

Thuật toán nhà băng Banker’s Algorithm

(69)

Thuật toán nhà băng Banker’s Algorithm

❑ TestSafe()

(70)

❑ Ý tưởng bản: đảm bảo ln có "con đường hiểm"

❑ Biểu đồ tài nguyên rút gọn

❑ Điều thực thi với thuật toán ngân

hàng:

❑ Khi yêu cầu thực

❑ Giả sử bạn chấp nhận

❑ Giả vờ làm tất yêu cầu pháp lý khác ❑ Biểu đồ bị giảm?

❑ Nếu vậy, phân bổ tài ngun u cầu ❑ Nếu khơng, khóa chủ đề

Ngày đăng: 27/04/2021, 17:05