Slide He dieu hanh HỆ ĐIỀU HÀNH Chương 5 – Đồng bộ (1) 4/15/2020 4/15/2020 Copyrights 2020 CE UIT All Rights Reserved 1 Ôn tập chương 4 Tại sao phải định thời? Nêu các bộ định thời và mô tả về chúng?[.]
HỆ ĐIỀU HÀNH Chương – Đồng (1) 02/25/2023 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Ôn tập chương Tại phải định thời? Nêu định thời mô tả chúng? Các tiêu chuẩn định thời CPU? Có giải thuật định thời? Kể tên? Mô tả nêu ưu điểm, nhược điểm giải thuật định thời? F CFS, SJF, SRTF, RR, Priority Scheduling, HRRN, MQ, MFQ 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Bài tập chương Sử dụng giải thuật FCFS, SJF, SRTF, Priority -Pre, RR (10) để tính giá trị th ời gian đợi, thời gian đáp ứng thời gian hồn thành trung bình vẽ giản đồ Gaint 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Mục tiêu chương Hiểu vấn đề tranh chấp tiến trình hệ điều hành Biết giải pháp để giải tranh chấp Hiểu vấn đề giải tranh chấp Biết yêu cầu giải pháp việc giải tranh chấp phân nhóm giải pháp 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Nội dung chương Giới thiệu race condition Giới thiệu giải pháp tổng quát để giải tranh chấp Phân tích chi tiết vấn đề việc giải tranh chấp Yêu cầu giải pháp việc giải tranh chấp Phân nhóm giải pháp 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Vấn đề cần đồng Khảo sát process/thread thực thi đồng thời chia sẻ liệu (qua shared memory, file) Nếu khơng có sự kiểm soát truy cập liệu chia sẻ đưa đến trường hợp khơng quán liệu (data inconsistency) Để trì sự qn liệu, hệ thớng cần có chế bảo đảm sự thực thi có trật tự process đồng thời Q p 02/25/2023 R L Copyrights 2020 CE-UIT All Rights Reserved Bài toán Producer - Consumer P không ghi liệu vào buffer đầy C không đọc liệu từ buffer trống P C không thao tác buffer lúc Giới hạn, không giới hạn ??? P 02/25/2023 Buffer (N) C Copyrights 2020 CE-UIT All Rights Reserved Bounded buffer Quá trình Producer item nextProduce; while(1){ while(count == BUFFER_SIZE); /*khong lam gi*/ buffer[in] = nextProducer; count++; in = (in+1)%BUFFER_SIZE;} Quá trình Consumer biến count chia sẻ producer consumer item nextConsumer; while(1){ while(count == 0); /*khong lam gi*/ nextConsumer = buffer[out]; count ; out = (out+1)%BUFFER_SIZE; } 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Bounded buffer (tt) Các lệnh tăng, giảm biến count tương đương ngôn ngữ máy là: Producer (count++) register1 = count register1 = register1 + count = register1 Consumer (count ) register2 = count register2 = register2 - count = register2 Trong đó, register ghi CPU 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved Bounded buffer (tt) Mã máy lệnh tăng giảm biến count bị thực thi xen kẽ Giả sử count Chuỗi thực thi xảy ra, quantum time = chu kỳ lệnh 02/25/2023 0:producer register1 := count 1:producer register1 := register1 + 2:consumer register2 := count 3:consumer register2 := register2 – 4:producer count := register1 5:consumer count := register2 {register1 = 5} {register1 = 6} {register2 = 5} {register2 = 4} {count = 6} {count = 4} Copyrights 2020 CE-UIT All Rights Reserved 10 Bounded buffer (tt) Mã máy lệnh tăng giảm biến count bị thực thi xen kẽ Giả sử count Chuỗi thực thi xảy ra, quantum time = chu kỳ lệnh 0:producer register1 := count 1:producer register1 := register1 + 2:producer count := register1 3:consumer register2 := count 4:consumer register2 := register2 – 5:consumer count := register2 {register1 = 5} {register1 = 6} {count = 6} {register2 = 6} {register2 = 5} {count = 5} Cần phải có giải pháp để lệnh count++, count phải đơn nguyên (atomic), nghĩa thực lệnh đơn, không bị ngắt nửa chừng 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 11 Bounded buffer (tt) Race condition: nhiều process truy xuất thao tác đồng thời lên liệu chia sẻ (n hư biến count) Kết cuối việc truy xuất đồng thời phụ thuộc thứ tự thực thi l ệnh thao tác liệu Để liệu chia sẻ quán, cần bảo đảm cho thời điểm chỉ có process thao tác lên liệu chia sẻ Do đó, cần có chế đồng hoạt đ ộng process 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 12 Vấn đề Critical Section Giả sử có n process truy xuất đồng thời liệu chia sẻ Cấu trúc process Pi có đoạn code sau: Do { entry section /* vào critical section */ critical section /* truy xuất dữ liệu chia xẻ */ exit section /* rời critical section */ remainder section /* làm những việc khác */ } While (1) Trong process có đoạn code có chứa thao tác lên liệu chia s ẻ Đoạn code gọi vùng tranh chấp (critical section, CS) 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 13 Vấn đề Critical Section (tt) Vấn đề Critical Section: phải bảo đảm sự loại trừ tương hỗ (mutual exclusion, mutex), tức process thực thi vùng tranh chấp, process khác đồng thời thực thi lệnh vùng tranh chấp 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 14 Yêu cầu lời giải cho CS Problem Lời giải phải thỏa ba tính chất: (1) Loại trừ tương hỗ (Mutual exclusion): Khi process P thực thi v ùng tranh chấp (CS) khơng có process Q khác thực thi CS Q (2) Progress: Một tiến trình tạm dừng bên ngồi vùng tranh chấp khơng ngă n cản tiến trình khác vào vùng tranh chấp (3) Chờ đợi giới hạn (Bounded waiting): Mỗi process chỉ phải chờ để vào v ùng tranh chấp khoảng thời gian có hạn định Khơng xảy tình trạng đói tài ngun (starvation) 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 15 Phân loại giải pháp Nhóm giải pháp Busy Waiting Sử dụng biến cờ hiệu Sử dụng việc kiểm tra luân phiên Giải pháp Peterson Cấm ngắt Chỉ thị TSL Nhóm giải pháp Sleep & Wakeup Semaphore Monitor Message 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 16 Các giải pháp “Busy waiting” Tiếp tục tiêu thụ CPU chờ đợi vào vùng tranh chấp Khơng địi hỏi sự trợ giúp Hệ điều hành While (chưa có quyền) do_nothing() ; CS; Từ bỏ quyền sử dụng CS 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 17 Các giải pháp “Sleep & Wake up” Từ bỏ CPU chưa vào vùng tranh chấp Cần Hệ điều hành hỗ trợ if (chưa có quyền) Sleep() ; CS; Wakeup (somebody); 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 18 Tóm tắt lại nội dung buổi học Race condition Các giải pháp tổng quát để giải tranh chấp Các chi tiết vấn đề việc giải tranh chấp Yêu cầu giải pháp việc giải tranh chấp Các nhóm giải pháp 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 19 THẢO LUẬN 02/25/2023 Copyrights 2020 CE-UIT All Rights Reserved 20 ... register1 := count 1: producer register1 := register1 + 2:consumer register2 := count 3:consumer register2 := register2 – 4:producer count := register1 5:consumer count := register2 {register1 = 5}... register1 := count 1: producer register1 := register1 + 2:producer count := register1 3:consumer register2 := count 4:consumer register2 := register2 – 5:consumer count := register2 {register1 = 5}... biến count tương đương ngôn ngữ máy là: Producer (count++) register1 = count register1 = register1 + count = register1 Consumer (count ) register2 = count register2 = register2 -