1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Hệ Điều Hành

58 404 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Đồng Bộ Hóa Tiến Trình
Tác giả Silberschatz, Galvin, Gagne
Trường học Unknown
Chuyên ngành Operating Systems
Thể loại Bài giảng
Năm xuất bản 2006
Thành phố Unknown
Định dạng
Số trang 58
Dung lượng 1,49 MB

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

Nội dung

6.3 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006Giới thiệu Một tiến trình cộng tác là một tiến trình ảnh hưởng hay bị ảnh hưởng

Trang 1

Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

TIẾN TRÌNH

Trang 3

6.3 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giới thiệu

Một tiến trình cộng tác là một tiến trình ảnh hưởng hay

bị ảnh hưởng tới các tiến trình khác đang thực thi trong

hệ thống

Các tiến trình hợp tác có thể chia sẽ trực tiếp không gian địa chỉ vật lý, hay được phép chia sẽ dữ liệu thông qua

tập tin

Trang 4

Tổng quan

 Sự truy cập đồng thời để chia sẽ dữ liệu có thể đem lại kết quả không nhất quán

 Tính nhất quán của việc duy trì dữ liệu yêu cầu cơ

chế để đảm bảo thứ tự thi hành của việc điều độ tiến trình

 Giả định rằng chúng ta muốn cung cấp một giải

pháp để bài toán người tiêu dùng - người sản xuất

Trang 5

6.5 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Mã của tiến trình người sản xuất

Trang 6

Mã của tiến trình người tiêu thụ

Trang 7

6.7 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Điều kiện cạnh tranh (race condition)

 Giả thiết thực thi ban đầu với “count = 5” :

T0: producer thực thi register1 = count {register1 = 5}

T1: producer thực thi register1 = register1 + 1 {register1 = 6} T2: producer thực thi register2 = count {register2 = 5}

T3: producer thực thi register2 = register2 - 1 {register2 = 4} T4: producer thực thi count = register1 {count = 6 }

T5: producer thực thi count = register2 {count = 4}

Trang 9

6.9 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Đoạn găng

1 Điều kiện cạnh tranh - Nhiều quá trình truy xuất cùng thao

tác dữ liệu đồng hành để chia sẽ dữ liệu và kết quả của việc thực thi phụ thuộc vào thứ tự xác định ở đó việc truy xuất xảy ra

2 Đoạn găng – Phân đoạn mã chia sẽ dữ liệu được truy cập

trong các tiến trình đồng thời

3 Phần đi vào – Vùng mã thực hiện yêu cầu quyền để đi

vào đoạn găng của nó.

4 Phần kết thúc – Vùng mã được chạy sau khi ra khỏi đoạn

găng.

Trang 10

Đoạn găng

Trang 11

6.11 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

 Giả sử rằng mỗi tiến trình đang thực thi với tốc độ khác 0

 không có giả thuyết nào được quan tâm về tốc tương đối của n

quá trình

Trang 12

Giải pháp

Giải pháp “chờ đợi bận”

Giải pháp “SLEEP AND WAKEUP”

Trang 13

6.13 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giải pháp “chờ đợi bận”:

Giải pháp hai tiến trình (two process Solution)

 Hai tiến trình chia thành hai biến :

 Int turn;

 Boolean flag[2]

 Biến turn cho biết quá trình diễn biến được tiến hành

trong đoạn găng

 Mảng flag được dùng để hiển thị một tiến trình sẵn sàng

đi vào đoạn găng flag[i] = true nghĩa là process Pi đang sẵn sàng!

Trang 14

Giải pháp “chờ đợi bận”

Giải thuật 1:

Để hai tiến trình chia sẽ một biến số nguyên chung turn

được khởi tạo bằng 0 hoặc 1 Nếu turn = 0 thì Pi được phép thực thi trong đoạn găng của nó

Giải pháp này đảm bảo rằng chỉ một tiến trình tại một thời điểm có thể ở trong đoạn găng của nó

Trang 15

6.15 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Cấu trúc của tiến trình pi trong giải thuật 1

Trang 16

Giải pháp “chờ đợi bận”

Giải thuật 2:

Ta thay thế biến turn với mảng flag[2];

Các phần tử của mảng được khởi tạo tới false

Nếu flag[i] là true => Pi sẵn sàng đi vào đoạn găng

Trang 17

6.17 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Cấu trúc của tiến trình pi trong giải thuật 2

Trang 18

Giải pháp “chờ đợi bận”

Giải thuật 3 (giải pháp Peterson):

Kết hợp hai ý tưởng trong giải thuật 1 và 2  được một giải pháp đúng với vấn đề đoạn găng, hai yêu cầu được thỏa mãn

Các tiến trình chia sẽ hai biến:

Boolean flag[2]

Int turn;

Khởi tạo flag[0] = flag[1] = false

Giá trị turn = 0 hoặc 1

Trang 19

6.19 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giải thuật 3 (giải pháp Peterson)

Trang 20

Giải pháp Peterson

Trang 21

6.21 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giải pháp nhiều tiến trình (giải thuật Bakery):

Phát triển cho môi trường phân tán

Cấu trúc dữ liệu chung là:

Boolean choosing[n];

Int number [n];

được khởi tạo tới false và 0 tương ứng

Ta định nghĩa các ký hiệu sau:

(a,b) < (c,d) nếu a<c hay nếu a==c và b<d.max (a0,…,an-1) là số k>=ai với i=0,…,n-1

Trang 22

Giải pháp nhiều tiến trình (giải thuật Bakery):

Trang 23

6.23 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Trang 24

Đồng bộ hoá phần cứng

Trang 25

6.25 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Chỉ thị Swap

Thao tác trên nội dung của hai từ

Giống như chỉ thị TestAndSet, nó được thực thi theo tính nguyên tử

Void Swap(boolean &a, boolean &b)

B=temp;

}

Hình 0-9:Định nghĩa chỉ thị Swap

Trang 26

Chỉ thị Swap

Trang 27

6.27 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Các giải thuật này không thỏa mãn yêu cầu chờ đợi

Trang 29

6.29 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giải pháp “SLEEP và WAKEUP”

SLEEP là một lời gọi hệ thống có tác dụng làm

“nghẽn” hoạt động của tiến trình gọi nó và chờ đến khi được một tiến trình khác “đánh thức”

Lời gọi hệ thống WAKEUP nhận một tham số duy nhất: tiến trình sẽ được kích hoạt trở lại (đặt về trạng thái sẵn sàng)

Trang 31

6.31 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Semaphore

Một semaphore S là một biến số nguyên được truy xuất chỉ thông qua hai thao tác nguyên tử: wait và signal Các thao tác này được đặt tên P (cho wait-chờ để kiểm tra và cho signal-báo hiệu để tăng).

Định nghĩa cơ bản của wait trong đoạn mã là:

wait(S) {

while(S<=0)

;//no-op S ;

} Định nghĩa cơ bản của signal trong đoạn mã là:

Signal(S) {

S++;

}

Trang 33

6.33 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Cài đặt

Chúng ta định nghĩa một semaphore như một cấu trúc

được viết bằng ngôn ngữ C như sau:

Typedef struct{

Int value;

Struct process *L;

} semaphore;

Trang 34

Mỗi semaphore có một giá trị nguyên và một danh sách các tiến trình L

Khi một tiến trình phải chờ trên một semaphore, nó được thêm vào danh sách các tiến trình L

Một thao tác signal xóa một tiến trình ra khỏi danh sách các tiến trình đang chờ và đánh thức tiến trình đó

Trang 35

6.35 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Trang 37

6.37 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Deadlocks và đói tài nguyên

Chúng ta xét một hệ thống chứa hai tiến trình P0 và P1, mỗi truy xuất hai semaphore, S và Q, được đặt giá trị 1

Trang 39

6.39 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Trang 40

P chờ cho đến khi Q rời khỏi monitor hoặc chờ điều kiện khác.

Q chờ cho đến khi P rời khỏi monitor hoặc chờ điều kiện khác

Trang 41

6.41 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Cài đặt cơ chế monitor dùng semaphonre

Trang 42

Một tiến trình cần truy xuất tài nguyên phải chú ý tới thứ tự sau:

Ở đây R là thể hiện của kiểu ResourceAllocation

Trang 43

6.43 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

 Một tiến trình có thể truy xuất tài nguyên mà không đạt được quyền truy xuất trước đó

 Một tiến trình sẽ không bao giờ giải phóng tài nguyên một khi nó được gán truy xuất tới tài nguyên đó

 Một tiến trình có thể cố gắng giải phóng tài nguyên mà nó không bao giờ yêu cầu

 Một tiến trình có thể yêu cầu cùng tài nguyên hai

lần(không giải phóng tài nguyên đó trong lần đầu)

Trang 44

Các bài toán đồng bộ hoá nguyên thuỷ

Trang 45

6.45 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Trang 46

Bài toán bộ đọc bộ ghi

Khái niệm

Bộ đọc- bộ ghi là một đối tượng dữ liệu được chia sẽ nhiều tiến trình đồng hành Sự khác nhau giữa các tiến trình có thể chỉ cần đọc nội dung của đối tượng được

chia sẽ và các tiến trình cần cập nhật trên đối tượng

được chia sẽ bằng cách gọi các tiến trình cập nhật là bộ ghi

Nếu một bộ ghi và vài tiến trình khác truy xuất cùng một lúc có thể dẫn đến sự hỗn độn  yêu cầu các bộ ghi có truy xuất loại trừ lẫn nhau tới đối tượng chia sẽ gọi là bài toán bộ đọc bộ ghi

Trang 47

6.47 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Giải pháp

Giải pháp cho bài toán này có thể dẫn đến việc đói tài nguyên(các bộ ghi có thể bị đói hoặc các bộ đọc có thể bị đói)

Trang 49

6.49 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Trang 50

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

Trang 51

6.51 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Dữ liệu được chia sẽ là:

Semaphore chopstick[5];

Tất cả các phần tử của chopstick được khởi tạo 1

Trang 53

6.53 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

⇒ Gây ra deadlock.

Giả sử rằng năm triết gia bị đói cùng một lúc và mỗi triết gia chiếm lấy chiếc đũa bên trái của a ta => tất cả các phần chopstic=0 khi mỗi triết gia cố gắng giành lấy chiếc đũa bên phải, triết gia sẽ bị chờ mãi mãi Giải pháp:

 Cho phép nhiều nhất bốn triết gia đang ngồi cùng một lúc trên bàn.

 Cho phép một triết gia lấy chiếc đũa của ông ta chỉ nếu cả hai chiếc đũa là sẵn dùng(để làm điều này ông ta phải lấy chúng trong miền tuơng trực).

 Dùng một giải pháp bất đối xứng; nghĩa là một triết gia lẽ chọn đũa bên trái đầu tiên của ông ta và sau đó chiếc đũa bên phải của ông ta.

Trang 54

Một số ví dụ về đồng bộ hoá.

Đồng bộ hoá hệ điều hành Solaris

Đồng bộ hoá Windows XP

Trang 55

6.55 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Đồng bộ hoá hệ điều hành Solaris

 Thực thi một loại của khoá để hỗ trợ đa nhiệm, xử lí

đa phương (bao gồm những chuỗi thời gian thực),

và đa tiến trình

 Sử dụng biến điều kiện và khoá đọc ghi khi đoạn

cốt dài hơn cần truy cập đến dữ liệu

Trang 56

Đồng bộ hoá Windows XP

 Sử dụng ngắt mặt nạ bảo vệ truy cập đến tài

nguyên chung trên hệ thống bộ xử lí độc nhất

 Sử dụng khoá quay trên hệ thống đa nhiệm

 Mặc dù những cung cấp gửi đi đối tượng mà có

thể hoạt động giống như mutexes và cờ hiệu

 Những đối tượng gửi đi có thể cung cấp những

sự kiện

 Một sự kiện hoạt động giống như một biến điều kiện

Trang 57

Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006

Thành viên nhóm:

1 Hoàng Thị Lệ Hằng

2 Phan Thị Lợi

3 Trương Thị Tuyết Sương

4 Hoàng Thị Minh Thuý

5 Huỳnh Thị Minh Trí

6 Lê Thị Tuyền

Trang 58

Kết thúc.

Good lucky!

Ngày đăng: 29/11/2013, 06:11

TỪ KHÓA LIÊN QUAN

w