HĐH - Ôn Tập Cuối Kỳ - Part 1 (Lý Thuyết) | Facebook
Có thể bạn quan tâm
Để trải nghiệm phiên bản Facebook mới nhất, hãy chuyển sang trình duyệt được hỗ trợ.FacebookTham gia hoặc đăng nhập Facebook Email hoặc điện thoạiMật khẩuBạn quên tài khoản ư?Đăng nhậpBạn có muốn tham gia Facebook không?Đăng kýĐăng kýHĐH - Ôn tập cuối kỳ - Part 1 (Lý thuyết)Lưu Biêu Nghị·Thứ Ba, 4 tháng 6, 2019·Nhóm công khai#HĐH #StudyWithMeChào các bạn !Ở bài viết này, mình sẽ cùng nhau ôn tập lại một vài nội dung phục vụ cho việc ôn tập cuối kỳ nhé.Ôn tập chương 5.Câu 1 : Khi nào thì xảy ra tranh chấp race condition ?Race condition là tình trạng nhiều process truy xuất và thao tác đồng thời lên dữ liệu chia sẻ. Kết quả cuối cùng của việc truy xuất đồng thời này phụ thuộc thứ tự thực thi của các lệnh thao tác dữ liệu.Ví dụ điển hình về bounded buffer :Cho rằng biến counter là biến được chia sẻ giữa Producer và Consumer (tức là, biến counter có thể được đọc và được ghi bởi cả Producer và Consumer). Và Producer và Consumer chạy đồng thời cùng lúc với nhau (Concurrent).Vậy việc gì sẽ xảy ra ?Thực ra, mã giả trên mà bạn thấy sẽ được biên dịch lại thành hợp ngữ. Và dù chỉ 1 dòng lệnh counter++ (hoặc counter--), thực tế mã hợp ngữ được biên dịch ra bao gồm 3 mã như sau :Như các bạn thấy, để tăng (hoặc giảm) biến counter cần đến những 3 lệnh. Việc đa chương của máy tính chẳng qua chỉ là thực hiện 1 tác vụ tại một thời điểm nhất định, nhưng việc chuyển qua lại tác vụ rất nhanh giữa chúng đã tạo ra một cảm giác cho người sử dụng là máy tính của chúng ta đang thực hiện nhiều công việc cùng 1 lúc.Khi máy tính thực hiện một tác vụ, nó đang thực hiện các lệnh hợp ngữ trên. Và Scheduler có thể cắt (interrupt) một tác vụ bất kỳ ngay sau khi thực hiện xong dòng lệnh của hợp ngữ (VD sau khi thực hiện xong dòng 2, Scheduler ngắt không cho thực hiện tiếp lệnh 3 và chuyển qua process khác, sau đó mới quay lại thực hiện lệnh 3).Vậy giả sử như ta có các thời điểm với các lệnh như sau (biến counter đang có giá trị là 5) : T0: producer thực hiện dòng 1 : register1 = counter {register1 = 5}T1: producer thực hiện dòng 2 : register1 = register1 + 1 {register1 = 6} (ngắt)T2: consumer thực hiện dòng 1 : register2 = counter {register2 = 5} (Oh-No).T3: consumer thực hiện dòng 2 : register2 = register2 − 1 {register2 = 4} (ngắt)T4: producer thực hiện dòng 3 : counter = register1 {counter = 6} (ngắt)T5: consumer thực hiện dòng 3 : counter = register2 {counter = 4} (Oh-No).Kết quả trả ra không đúng như ta mong muốn. Producer chạy 1 lần (counter++), Consumer chạy 1 lần (counter--) thì lẽ ra kết quả của chúng ta phải là counter=5. Thế mà kết quả cuối cùng của chúng ta đã trở thành 4 (kết quả không chính xác). Ngược lại, nếu chúng ta đổi chỗ T4 và T5 với nhau, chúng ta sẽ được counter = 6 (?!).Vậy dữ liệu của chúng ta không được nhất quán.Để dữ liệu chia sẻ được nhất quán, cần bảo đảm sao cho tại mỗi thời điểm chỉ có một process được thao tác lên dữ liệu chia sẻ. Do đó, cần có cơ chế đồng bộ hoạt động của các process này.Câu 2 : Vấn đề Critical Section là gì ?Đầu tiên, chúng ta hãy xét một hệ thống có n tiến trình (tạm đặt tên của n tiến trình này là {P0, P1, ..., Pn−1}). Từng tiến trình đều có một đoạn mã, gọi là critical section (CS), tên tiếng Việt là vùng tranh chấp. Trong CS, các đoạn mã thao tác lên dữ liệu chia sẻ giữa các tiến trình.Một đặc tính quan trọng mà chúng ta cần quan tâm, đó chính là khi process P0 đang chạy đoạn mã bên trong CS thì không một process nào khác được chạy đoạn mã bên trong CS (để đảm bảo cho dữ liệu được nhất quán). Hay nói cách khác là 1 CS trong một thời điểm nhất định, chỉ có 1 process được phép chạy.Và vấn đề vùng tranh chấp (Critical Section Problem) là vấn đề về việc tìm một cách thiết kế một giao thức (một cách thức) nào đó để các process có thể phối hợp với nhau hoàn thành nhiệm vụ của nó.Câu 3 : Yêu cầu của lời giải cho vấn đề vùng tranh chấp (CS Problem) ?Một lời giải cho vấn đề vùng tranh chấp (CS Problem) phải đảm bảo được 3 tính chất sau :
- Loại trừ tương hỗ (Mutual Exclusion) : Khi một process P đang thực thi trong vùng tranh chấp (CS) của nó thì không có process Q nào khác đang thực thi trong CS của Q.
- Phát triển (Progress) : Một tiến trình tạm dừng bên ngoài CS không được ngăn cản các tiến trình khác vào CS.
- Chờ đợi giới hạn (Bounded Waiting) : Mỗi process chỉ phải chờ để được vào CS trong một khoảng thời gian có hạn (finite wait time). Không được xảy ra tình trạng đói tài nguyên (starvation).
- Tính chất :
- Tiếp tục tiêu thụ CPU trong khi chờ đợi vào miền găng (thông qua việc kiểm tra điều kiện vào CS liên tục).
- Không đòi hỏi sự trợ giúp của hệ điều hành.
- Cơ chế chung :
- Bao gồm một vài loại :
- Sử dụng các biến cờ hiệu.
- Sử dụng việc kiểm tra luân phiên.
- Giải pháp của Peterson.
- Cấm ngắt (giải pháp phần cứng – hardware).
- Chỉ thị TSL (giải pháp phần cứng – hardware).
- Tính chất :
- Từ bỏ CPU khi chưa được vào CS.
- Cần sự hỗ trợ từ hệ điều hành (để đánh thức process và đưa process vào trạng thái blocked).
- Cơ chế chung :
- Bao gồm một vài loại :
- Semaphore.
- Monitor.
- Message.
- Khởi tạo semaphore. Giá trị khởi tạo ban đầu của Semaphore chính là số lượng process được thực hiện CS trong cùng 1 thời điểm.
- Wait(S) hay còn gọi là P(S) : Giảm giá trị semaphore đi một đơn vị (S = S – 1). Nếu giá trị S âm, process thực hiện lệnh wait() này sẽ bị blocked cho đến khi được đánh thức.
- Signal(S) hay còn gọi là V(S) : Tăng giá trị semaphore (S = S + 1). Kế đó nếu giá trị S <= 0 (S<=0 tức là vẫn còn process đang bị blocked), lấy một process Q nào đó đang bị blocked rồi gọi wakeup(Q) để đánh thức process Q đó.
- P(S) hay wait(S) sử dụng để giành tài nguyên và giảm biến đếm S = S – 1.
- V(S) hay signal(S) sẽ giải phóng tài nguyên và tăng biến đếm S = S + 1.
- Nếu P được thực hiện trên biến đếm <= 0, tiến trình phải đợi V hay chờ đợi sự giải phóng tài nguyên.
- P1 chạy trước.
- P2 chạy trước.
- Ở P1, ta thấy signal được đặt sau A1, đồng nghĩa với việc sau khi thực hiện A1 xong, P1 sẽ “mở cổng” chặn của P2 và cho phép P2 thực hiện B2. Sau khi thực hiện signal, P1 tiếp tục bị chặn lại bởi hàm wait.
- Ở đây, ta thấy ở P2 cũng có signal nằm đằng sau B1. Vậy chỉ sau khi thực hiện B1, P1 mới được cho phép thực hiện tiếp A2.
- Hệ thống có 2 file trên đĩa (A và B).
- P1 đang mở (đang khoá) file A và yêu cầu file B.
- P2 đang mở (đang khoá) file B và yêu cầu file A.
- Loại trừ tương hỗ (Mutual Exclusion) : Có ít nhất 1 tài nguyên đang bị chiếm giữ theo cơ chế không chia sẻ (nonshareable mode). Hay nói cách khác, chỉ có một process P1 duy nhất được sử dụng tài nguyên A trong một thời điểm. Nếu một process P2 khác yêu cầu tài nguyên nói trên, process P2 phải chờ đến khi tài nguyên A đã được process P1 giải phóng.
- Giữ và chờ (Hold and Wait) : Một process P1 phải đang giữ ít nhất một tài nguyên A và đang chờ một hoặc nhiều tài nguyên B đang bị giữ bởi một process B2 khác.
- Không trưng dụng (Non-Preemption) : Tài nguyên không thể bị lấy lại, tức là tài nguyên chỉ có thể được giải phóng khi process đang giữ nó trả lại sau khi đã hoàn thành xong công việc.
- Chu trình đợi (Circular Wait) : Tồn tại một tập {P0,…,Pn} các process đang đợi sao cho :
- P0 đợi một tài nguyên mà P1 giữ.
- P1 đợi một tài nguyên mà P2 giữ.
- …
- Pn đợi một tài nguyên mà P0 giữ.
- Chúng ta có thể dùng một giao thức để bảo vệ hoặc tránh deadlock, bảo đảm rằng hệ thống sẽ không bao giờ rơi vào trạng thái deadlock.
- Khác biệt :
- Ngăn deadlock : Không cho phép ít nhất một trong 4 điều kiện cần cho deadlock xảy ra. Hoạt động bằng cách giới hạn yêu cầu tài nguyên của process.
- Tránh deadlock : Các process cần cung cấp thông tin về tài nguyên nó cần, để hệ thống cấp phát tài nguyên một cách thích hợp.
- Khác biệt :
- Chúng ta có thể cho phép hệ thống rơi vào trạng thái deadlock, kiểm tra deadlock và phục hồi hệ thống.
- Chúng ta có thể bỏ qua deadlock và xem như deadlock chưa từng xuất hiện (Windows/Linux). Tuy nhiên, deadlock không được phát hiện, về lâu dài sẽ dẫn đến việc giảm hiệu suất của hệ thống. Cuối cùng, hệ thống có thể ngưng hoạt động và phải khởi động lại.
- Ngăn loại trừ tương hỗ (Mutual Exclusion) :
- Đối với tài nguyên không chia sẻ (printer) : Không làm được.
- Đối với tài nguyên chia sẻ (read-only file) : Không cần thiết.
- Ngăn giữ và chờ (Hold and Wait) :
- Cách 1 : Mỗi tiến trình yêu cầu toàn bộ tài nguyên cần thiết một lần. Nếu có đủ tài nguyên thì hệ thống sẽ cấp phát, nếu không đủ tài nguyên thì tiến trình phải bị block.
- Cách 2 : Khi yêu cầu tài nguyên, tiến trình không được giữ tài nguyên nào. Nếu đang có thì phải trả lại trước khi yêu cầu thêm.
- Ngăn không trưng dụng (no preemption) : Nếu tiến trình A có giữ tài nguyên và đang yêu cầu tài nguyên khác nhưng tài nguyên này chưa được cấp phát ngay thì :
- Cách 1 : Hệ thống lấy lại mọi tài nguyên mà A đang giữ.
- A chỉ bắt đầu lại được khi có được các tài nguyên đã bị lấy lại cùng với tài nguyên đang yêu cầu.
- Cách 2 : Hệ thống sẽ xem tài nguyên mà A yêu cầu :
- Nếu tài nguyên được giữ bởi một tiến trình khác đang đợi thêm tài nguyên, tài nguyên này được hệ thống lấy lại và cấp phát cho A.
- Nếu tài nguyên được giữ bởi tiến trình không đợi tài nguyên, A phải đợi và tài nguyên của A bị lấy lại. Tuy nhiên hệ thống chỉ lấy lại các tài nguyên mà tiến trình khác yêu cầu.
- Cách 1 : Hệ thống lấy lại mọi tài nguyên mà A đang giữ.
- Ngăn Circular Wait : Gán một thứ tự cho tất cả các tài nguyên trong hệ thống :
- Tập hợp tài nguyên : R = {R1, R2, … , Rn}.
- Ví dụ : F(tap drive) = 1, F (disk) = 5, F (printer) = 12.
- Mỗi tiến trình chỉ có thể yêu cầu thực thể của một loại tài nguyên theo thứ tự tăng dần (định nghĩa bởi hàm F) của loại tài nguyên.
- VD : Chuỗi yêu cầu hợp lệ : Tap Drive -> Disk -> Printer.
- Khi một tiến trình yêu cầu một thực thể của loại tài nguyên Rj thì nó phải trả lại các tài nguyên Ri với F(Ri) > F(Rj).
- Tập hợp tài nguyên : R = {R1, R2, … , Rn}.
- Tiếng Việt
- English (UK)
- 中文(台灣)
- 한국어
- 日本語
- Français (France)
- ภาษาไทย
- Español
- Português (Brasil)
- Deutsch
- Italiano
- Đăng ký
- Đăng nhập
- Messenger
- Facebook Lite
- Video
- Địa điểm
- Trò chơi
- Marketplace
- Meta Pay
- Cửa hàng trên Meta
- Meta Quest
- Ray-Ban Meta
- Meta AI
- Threads
- Chiến dịch gây quỹ
- Dịch vụ
- Trung tâm thông tin bỏ phiếu
- Chính sách quyền riêng tư
- Trung tâm quyền riêng tư
- Nhóm
- Giới thiệu
- Tạo quảng cáo
- Tạo Trang
- Nhà phát triển
- Tuyển dụng
- Cookie
- Lựa chọn quảng cáo
- Điều khoản
- Trợ giúp
- Tải thông tin liên hệ lên & đối tượng không phải người dùng
- Cài đặt
- Nhật ký hoạt động
Từ khóa » Hệ Thống Rơi Vào Trạng Thái Deadlock Khi
-
Deadlock – Wikipedia Tiếng Việt
-
Hệ điều Hành: Deadlock - .vn
-
Bai 5 Trac Nghiem Deadlock - PDFCOFFEE.COM
-
Deadlock Trong Hệ điều Hành? Kiến Thức Cơ Bản - W3seo
-
Bài Giảng Hệ điều Hành Chương 6 Deadlock (khóa Chết) - Tài Liệu Text
-
Chương 7 Tắt Nghẽn - Tài Liệu Text - 123doc
-
Vấn đề Deadlock Trong Hệ Thống - Tài Liệu, Ebook
-
Deadlock Là Gì? Cách Phát Hiện Và Phương Pháp Xử Lý Tốt Nhất
-
[PDF] Hệ điều Hành,trần Thị Như Nguyệt,dhcntt
-
HĐH - Ôn Tập Cuối Kỳ - Part 2 (Lý Thuyết) | Facebook
-
Nguyên Lý Hệ điều Hành - Bế Tắc (Deadlock)
-
Trắc Nghiệm Hệ Điều Hành - Bài 29
-
Chương 6 - Deadlock - Nguyên Lý Hệ điều Hành
-
Nguyên Lí Hệ điều Hành -Chương 6 ( J White ) Quiz - Quizizz