Professional Documents
Culture Documents
Lhs 3121410423 Baithuhoachlan2
Lhs 3121410423 Baithuhoachlan2
Lhs 3121410423 Baithuhoachlan2
Process synchronization
4. Semaphore là gì?
Ngoài spinlock và mutex lock, ta cũng có thể áp dụng kỹ thuật semaphore để
bảo vệ dữ liệu trong critical resource. Không chỉ là một kỹ thuật đồng bộ tài
nguyên, semaphore cũng được biết đến là một kỹ thuật đồng bộ hoạt động.
Semaphore là một cấu trúc dữ liệu, được dùng để đồng bộ tài nguyên và đồng
bộ hoạt động.
Khi được dùng với mục đích đồng bộ tài nguyên, semaphore tương tự như
một bộ các chìa khóa dự phòng. Nếu một thread lấy được một chiếc chìa khóa,
thread đó được phép truy cập vào tài nguyên. Nhưng nếu không còn chiếc chìa
khóa nào, thread đó phải đợi cho tới khi một thread khác trả lại chìa khóa dự
phòng. Nhờ vậy, race condition sẽ bị ngăn chặn.
Vì hoạt động của binary semaphore tương tự như mutex lock, nên loại
semaphore này thường được sử dụng để đồng bộ dữ liệu, phòng tránh race
condition. Trong khi lập trình device driver, ta đặt hàm down và up lần lượt
vào trước và sau critical section của mỗi thread.
ứng dụng : Semaphores còn được sử dụng phổ biến trong các ngôn ngữ lập
trình - những ngôn ngữ mà về bản chất không hỗ trợ những dạng khác của
sự đồng bộ hóa. Chúng cũng được sử dụng trong các kĩ thuật đồng bộ ban
đầu như trong các hệ điều hành. Xu hướng trong sự phát triển của ngôn ngữ
lập trình, dường như là hướng vào các dạng cấu trúc đồng bộ hóa, giống như
đồng bộ hóa các kênh. Cộng thêm sự không đầy đủ trong cách phân chia với
deadlock, semaphore không bảo vệ người lập trình khỏi các lỗi đơn giản
trong việc lấy một semaphore - cái mà luôn luôn được thay đổi bởi các tiến
trình đồng thời, và cũng quên giải phóng semaphore sau khi lấy ra.(theo
wikipedia)
5. Buffer problem
Bounded Buffer Problem, trong đó tiến trình sản xuất chỉ có thể tạo ra tối đa
một số lượng vật phẩm nhất định. Sau đó nó cần chờ tiến trình tiêu thụ lấy ra
dùng để giải phóng không gian bộ đệm và tiếp tục tạo ra vật phẩm mới. Về phía
còn lại, tiến trình tiêu thụ nếu như không thấy có vật phẩm mình cần trong bộ
đệm thì nó sẽ đợi cho đến khi tiến trình sản xuất tạo ra.
Giải quyết vấn đề: sử dụng semaphores
Unbounded Buffer Problem, trong đó tiến trình sản xuất có thể tiếp tục tạo ra
các vật phẩm và không có giới hạn về kích thước của bộ đệm.
6. reader writer problem
7. dining philosophers problem
tạm dịch là bữa tối của các triết gia, (ví dụ bữa tối của các triết gia) là một ví
dụ điển hình và cực kì nổi tiếng khi nhắc đến các vấn đề trong bài toán xử lý
concurrent. một vấn đề đồng bộ hóa cổ điển trong hệ điều hành. Với sự hiện
diện của nhiều hơn một quy trình và tài nguyên hạn chế trong hệ thống, vấn
đề đồng bộ hóa phát sinh. Nếu một tài nguyên được chia sẻ giữa nhiều quá
trình cùng một lúc thì nó có thể dẫn đến sự không nhất quán về dữ liệu.
Hành động đồng bộ hóa quá trình thực thi sao cho không có hai quá
trình nào có quyền truy cập vào cùng một dữ liệu và tài nguyên liên
quan được gọi là đồng bộ hóa quá trình trong hệ điều hành. Phần quan
trọng là một phần của chương trình cho phép bạn truy cập các biến hoặc tài
nguyên được chia sẻ. Trong một phần quan trọng, một hành động nguyên tử
(quy trình chạy độc lập) là cần thiết, có nghĩa là chỉ một quy trình duy nhất
có thể chạy trong phần đó tại một thời điểm.
Vấn đề: sẽ không có hai người có thể ăn cùng một lúc, bằng cách sử dụng
giải pháp đã nói trên nhược điểm của kĩ thuật vừa trình bày là nó có thể lỗi.
lỗi sẽ xảy ra khi tất cả người ngồi trong bàn ăn đó đều cầm chiếc đũa của
mình cùng một lúc, vì vậy, nó khiến cho tất cả mọi người trên bàn đều
không thể ăn được phần thức ăn của mình.
• Từ đó ta thấy: Đồng bộ hóa quy trình được định nghĩa là không có hai
quy trình nào có quyền truy cập vào cùng một dữ liệu và tài nguyên liên
quan.
• Bài toán Nhà triết học ăn uống là một ví dụ về bài toán đồng bộ hóa quy
trình.
• Triết gia là một phép tương tự cho quy trình và đũa cho tài nguyên, chúng ta
có thể cố gắng giải quyết các vấn đề đồng bộ hóa quy trình bằng cách sử
dụng điều này.
• Giải pháp của vấn đề Triết gia ăn uống tập trung vào việc sử dụng các
semaphores.
• Không có hai triết gia gần đó có thể ăn cùng một lúc bằng cách sử dụng giải
pháp nói trên cho vấn đề triết gia ăn uống, và tình huống này gây ra bế tắc,
đây là một nhược điểm của bài toán triết gia ăn uống.