Giáo trình hướng dẫn phân tích tập hợp các tiến trình hoạt động của hệ thống singleprocessor p8

5 7 0
Giáo trình hướng dẫn phân tích tập hợp các tiến trình hoạt động của hệ thống singleprocessor p8

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

Thông tin tài liệu

Giải pháp dùng Message Với giải pháp này chương trình dùng thông điệp empty. Empty hàm ý có một chỗ trống. Buffer. Khi khởi tạo tiến trình Consumer gởi ngay N thông điệp empty đến tiến trình Producer. Tiến trình Producer tạo ra một dữ liệu mới và chờ đến khi nhận được một thông điệp empty từ consumer thì gởi ngược lại cho Consumer một thông điệp có chứa dữ liệu mà nó tạo ra.

y o c u -tr a c k c Producer/Consumer.Remove; ; Until F End; Parend END { } II.3.4.3 Giải pháp dùng Message Với giải pháp chương trình dùng thơng điệp empty Empty hàm ý có chỗ trống Buffer Khi khởi tạo tiến trình Consumer gởi N thơng điệp empty đến tiến trình Producer Tiến trình Producer tạo liệu chờ đến nhận thơng điệp empty từ consumer gởi ngược lại cho Consumer thơng điệp có chứa liệu mà tạo Sau gởi thơng điệp Emtry, tiến trình consumer chờ để nhận thơng điệp chứa liệu từ tiến trình producer Sau xử lý xong liệu consumer gởi lại thơng điệp empty đến tiến trình producer Sơ đồ điều độ sau: Program Producer/Consumer; Var Buffersize: integer; M, m’: Message; { -} BEGIN Buffersize = N; ParBegin Procedure Producer(); Begin Repeat ; Receive(Consumer,m); Send(Consumer,m) Until F End; { } Procedure Consumer () {kích thước Buffer} d o m o w w w d o C lic k to bu y bu to k lic C w w w N O W ! h a n g e Vi e N PD ! XC er O W F- w m h a n g e Vi e w PD XC er F- c u -tr a c k c y o c u -tr a c k c Var I:integer; Begin For I := to N Do Send(Producer ,m); Repeat Receive(Producer ,m); Send (Producer,m); Until F End Parend END { }  Bài toán 2: Trong mơi trường hệ điều hành đa nhiệm, tồn file chia sẻ, file sở liệu Nhiều tiến trình hoạt động đồng thời hệ thống chia sẻ sử dụng file sở liệu Tiến trình cần đọc nội dung file sở liệu gọi là tiến trình Reader Tiến trình cần cập nhật thơng tin vào file sở liệu gọi là tiến trình Writer Trong hệ thống này, cơng tác điều độ tiến trình cần phải thực ràng buộc sau: Có thể có nhiều tiến trình Reader đồng thời đọc file sở dũ liệu Khơng cho phép tiến trình Writer ghi vào sở liệu tiến trình Reader khác đọc sở liệu Chỉ có tiến trình Writer phép ghi vào file sở liệu Hãy dùng giải pháp Semafore, Monitor, Message để tổ chức điều độ cho tiến trình Reader Writer tốn II.3.4.4 Giải pháp dùng Semaphore (sự đánh tín hiệu cờ) Giải pháp sử dụng biến chung RC hai semaphore (sự đánh tín hiệu cờ) Mutex DB  RC (readcount) dùng để ghi nhận số lượng tiến trình Reader muốn truy xuất file sở liệu, khởi gán  Mutex: dùng để kiểm soát truy xuất đến RC, khởi gán  DB: dùng để kiểm tra truy xuất độc quyền đến sở liệu, khởi gán Sau sơ đồ điều độ: d o m o w w w d o C lic k to bu y bu to k lic C w w w N O W ! h a n g e Vi e N PD ! XC er O W F- w m h a n g e Vi e w PD XC er F- c u -tr a c k c y o c u -tr a c k c Program Producer/Consumer; Const Mutex: Seamafore = 1; Db : Seamafore = 1; Rc : byte = 0; { } BEGIN ParBegin Procedure Reader(); Begin Repeat Down(mutex); Rc = Rc+1; If Rc = then Down(db); Up(mutex); {chấm dứt truy xuất Rc} ; Down(mutex) Rc = Rc-1 If Rc = then Up(db); Up(mutex); < Xử lý liệu đọc được> Until F End; { } Procedure Writer(); Begin Repeat ; Down(Db); Up(db); Until F End; ParEnd d o m o w w w d o C lic k to bu y bu to k lic C w w w N O W ! h a n g e Vi e N PD ! XC er O W F- w m h a n g e Vi e w PD XC er F- c u -tr a c k c y o c u -tr a c k c End { } Giải pháp dùng Monitor Giải pháp sử dụng biến chung RC, để ghi nhận số lượng tiến trình reader muốn truy xuất sở liệu Tiến trình Writer phải chuyển sang trạng thái khoá RC > Khi khỏi đoạn găng tiến trình Reader cuối đánh thức tiến trình Write bị khố Sau sơ dồ điều độ: II.3.4.5 Program Producer/Consumer; Monitor Readerwriter Condition Okwrite,Okread Var Rc: integer; Busy: boolean = False; { -} Procedure Beginread() Begin If (busy) then wait(okread); Rc = Rc+1; Signal(okread); End; Procedure Finishread() Begin Rc = Rc - 1; If Rc = Then Wait(okwrite); End; Procedure Beginwrite(); Begin Rc = Rc - 1; If (busy) or (Rc 0) Then Wait(okwrite); Busy = True; End; Procedure FinishWrite() Begin Busy = False; d o m o w w w d o C lic k to bu y bu to k lic C w w w N O W ! h a n g e Vi e N PD ! XC er O W F- w m h a n g e Vi e w PD XC er F- c u -tr a c k c y o c u -tr a c k c If (Okread) Then Signal(okread) Else Signal(okwrite); End; Endmonitor { } BEGIN ParBegin Procedure Reader (); Begin Repeat ReaderWriter.BeginRead(); ReaderWriter.FinishRead(); Until F End; Procedure Writer (); Begin Repeat ReaderWriter.BeginWrite(); ReaderWriter.FinishWrite(); Until F End; Parend END { } II.3.4.6 Giải pháp dùng Message Giải pháp cần phải có tiến trình Sever điều khiển việc truy xuất sở liệu Các tiến trình Writer Reader gửi thơng điệp u cầu truy xuất đến server nhận từ Sever thông điệp hồi đáp tương ứng Sơ đồ điều độ sau: Program Begin ParBegin Producer/Consumer; d o m o w w w d o C lic k to bu y bu to k lic C w w w N O W ! h a n g e Vi e N PD ! XC er O W F- w m h a n g e Vi e w PD XC er F- c u -tr a c k c ... trường hệ điều hành đa nhiệm, tồn file chia sẻ, file sở liệu Nhiều tiến trình hoạt động đồng thời hệ thống chia sẻ sử dụng file sở liệu Tiến trình cần đọc nội dung file sở liệu gọi là tiến trình. .. trình Reader Tiến trình cần cập nhật thơng tin vào file sở liệu gọi là tiến trình Writer Trong hệ thống này, cơng tác điều độ tiến trình cần phải thực ràng buộc sau: Có thể có nhiều tiến trình Reader... ghi nhận số lượng tiến trình reader muốn truy xuất sở liệu Tiến trình Writer phải chuyển sang trạng thái khoá RC > Khi khỏi đoạn găng tiến trình Reader cuối đánh thức tiến trình Write bị khố

Ngày đăng: 08/05/2021, 13:50

Tài liệu cùng người dùng

Tài liệu liên quan