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

Bài giảng Hệ điều hành: Chương 2.3 - TS. Ngô Hữu Dũng

53 45 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 53
Dung lượng 904,4 KB

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

Nội dung

Bài giảng Hệ điều hành: Chương 2.3 do TS. Ngô Hữu Dũng biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm có: Liên lạc giữa các tiến trình, các cơ chế liên lạc, khái niệm đồng bộ tiến trình, tranh đoạt điều khiển,...

Trang 1

HỆ ĐIỀU HÀNH

(OPERATING SYSTEM CONCEPTS)

Wiley - Operating System Concepts(Silberschatz).9th

Trang 2

Giới thiệu môn học

Trang 3

CHƯƠNG 2:

QUẢN LÝ TIẾN TRÌNH – P3

ĐỒNG BỘ TIẾN TRÌNH

Process Management

Trang 4

Nội dung

 Các khái niệm

 chương trình và tiến trình

 các thao tác & trạng thái của tiến trình

 khối điều khiển tiến trình ProcessControlBlock

 Điều phối tiến trình

 Liên lạc giữa các tiến trình

 Đồng bộ tiến trình

 Deadlock

Trang 5

Liên lạc giữa các tiến trình

communication – IPC )

Trang 6

Liên lạc giữa các tiến trình

cung cấp cơ chế liên lạc giữa các tiến trình

lạc giữa các tiến trình giữa các máy tính khác nhau

Trang 8

Communication models

Trang 9

ĐỒNG BỘ TIẾN TRÌNH

Trang 10

Khái niệm

tiến trình có khả năng liên lạc với nhau

Trang 11

Ví dụ 1

characters = characters + 1;

read characters into register r1

increment r1

write register r1 to characters

Trang 12

Ví dụ 1

Trang 13

error (“khong the rut !”);

Trang 14

error (“hettien , ko the rut !”);

Taikhoan = 800

Trang 15

 Mutual exclusion: cơ chế đồng bộ đảm bảo chỉ có một tiểu trình duy nhất được thực hiện trong miền găng tại một thời điểm

 Deadlock: tình trạng các tiểu trình bị khóa mãi mãi

 Starvation: đang thực thi nhưng không có tiến triển.

Trang 16

Tranh đoạt điều khiển

Tranh đoạt điều khiển là gì? (Race condition)

if (taikhoan – tien_rut >= 0)

taikhoan = taikhoan – tien_rut;

else

cout << “Không đủ tiền trong tài khoản”;

Là tình huống mà kết quả của chương trình phụ thuộc vào sự điều phối của hệ thống

Trang 17

Tranh đoạt điều khiển

và Phương pháp giải quyết

Miền găng: là đoạn mã nguồn truy cập tới vùng nhớ dùng chung

//bắt đầu miền găng

If(taikhoan – tienrut >= 0) taikhoan = taikhoan – tienrut;

Else cout<<“Không đủ tiền trong tài khoản”

Trang 18

Bài toán đồng bộ hóa

 Mô hình đảm bảo độc

quyền truy xuất

 Mô hình tổ chức phối hợp giữa 2 tiến trình

Kiểm tra và dành quyền vào CS

Từ bỏ quyền sử dụng CS

CS:

Trang 19

Bài toán đồng bộ hóa

điểm

tiến trình khác vào miền găng

Trang 20

 Nhóm giải pháp Busy Waiting

Trang 21

Nhóm giải pháp Busy Waiting

Dùng biến cờ hiệu

Trang 22

Nhóm giải pháp Busy Waiting

Kiểm tra luân phiên

Trang 23

Nhóm giải pháp Busy Waiting

Giải pháp của Peterson

Trang 24

Nhóm giải pháp Busy Waiting

Trang 25

Nhóm giải pháp Busy Waiting

enter_region:

TSL RX, LOCK | chép giá trị lock vào RX và gán lock = 1

JNE enter_region | jump nếu khác 0

leave_region:

Chỉ thị TSL (Test-and-Set)

Trang 26

Giải pháp Peterson và TSL đều đúng, tuy nhiên chiếm thời gian CPU vì vòng lặp kiểm tra liên tục

 giải pháp sleep and wakeup

Trang 27

Ý tưởng chính

while (TRUE) {

if (busy){

blocked = blocked + 1; sleep();

noncritical-section ();

Trang 28

Nhóm giải pháp Sleep & Wakeup

có 2 thao tác là wait và signal

Down ( Wait hay P): giảm S đi một, và kiểm tra xem process có

bị blocked hay tiếp tục run?

Up (Signal hay V): tăng S lên một, và kiểm tra xem có 1

process đang blocked thì đánh thức nó

-bị ngắt giữa chừng

Semaphore

Trang 29

Nhóm giải pháp Sleep & Wakeup

Cài đặt Semaphore

 Semaphore có thể khởi tạo 1 hoặc 0

Semaphore

Trang 30

Nhóm giải pháp Sleep & Wakeup

Sử dụng Semaphore

 Tổ chức độc quyền truy xuất

Semaphore

Trang 31

Nhóm giải pháp Sleep & Wakeup

(1) Sử dụng semaphore để đảm bảo độc quyền truy suất :

(Khởi tạo 1)

Nguyên tắc :

được vào miền găng => độc quyền truy suất

Semaphore

Trang 32

Nhóm giải pháp Sleep & Wakeup

(2) Sử dụng semaphore để phối hợp hoạt động giữa các

tiến trình :

job2() Trình tự thực hiện là : job2() chỉ được thực hiện sau khi job1() hoàn tất

0 , và cấu trúc chương trình như hình 2

Semaphore

Trang 33

Bài toán sản xuất – tiêu thụ

( hay Vùng đệm có giới hạn )

Trang 34

Bài toán sản xuất – tiêu thụ

( hay Vùng đệm có giới hạn )

Cấu trúc 1 : đảm bảo đồng bộ (phối hợp) giữa 2 tiến trình

đảm bảo đồng bộ giữa 2 tiến trình = đảm bảo 2 ràng buộc

Trang 35

Bài toán sản xuất – tiêu thụ

( hay Vùng đệm có giới hạn )

Cấu trúc 2 : đảm bảo đồng bộ (phối hợp) giữa 2 tiến trình + độc quyền truy suất

Trang 37

Khái niệm

=> Tất cả các tiến trình trong tập hợp bị khóa vĩnh viễn !

Trang 38

Bữa ăn tối của các triết gia

Trang 39

Mô hình hệ thống

sẻ cho các tiến trình có nhu cầu

 tiến trình phải đợi

Trang 40

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

thể làm xuất hiện deadlock

mang bản chất không chia sẻ được

cho nó trong khi chờ được cấp phát thêm một số tài nguyên mới

nắm giữ tự nguyên trao trả

nguyên

Hội đủ 4 điều kiện trên  Deadlock có thể xảy ra

Trang 41

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

Trang 42

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

Trang 43

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

Trang 44

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

Trang 45

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

Trang 47

Giải thuật cấp phát tài nguyên kiểu cũ

Trang 48

Thuật toán nhà băng

Banker’s Algorithm

Trang 49

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

 TestSafe()

Trang 50

Ví dụ

Trang 53

Tóm tắt

Ngày đăng: 30/01/2020, 04:56

TỪ KHÓA LIÊN QUAN

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