- Đọc/Ghi ngày, tháng, năm
HỆ ĐIỀU HÀNH NHIỀU BỘ VI XỬ LÝ
6.4.3. Gang Scheduling
Một ưu điểm của space sharing là loại bỏ được overhead do việc chuyển đổi ngữ cảnh. Tuy nhiên, một nhược điểm của nĩ là thời gian bị lãng phí khi một CPU bị khĩa, nĩ khơng cĩ gì để làm cho đến khi nĩ được giải phĩng. Do vậy, nhiều nhà nghiên cứu đã tìm kiếm giải pháp để thực
hiện điều phối cho phép kết hợp cả thời gian và khơng gian), đặc biệt đối với các tiến trình tạo ra nhiều tiểu trình.
Để tìm hiểu vấn đề gì xảy ra khi các tiểu trình của một tiến trình (hoặc các tiến trình của một cơng việc) được điều phối độc lập, xét một hệ thống với các tiểu trình A0 và A1 thuộc cùng tiến trình A và các tiểu trình B0 và B1 thuộc cùng tiến trình B. Các tiểu trình A0 và B0 được chia sẻ thời gian trên CPU 0; tiểu trình A1 và B1 được chia sẻ thời gian trên CPU 1. Các tiểu trình A0 và A1 cần truyền thơng thường xuyên. Giả sử A0 gửi cho A1 một message, sau đĩ A1 gửi ngược lại cho A0 một hồi đáp, cơng việc này diễn ra lặp đi lặp lại. Giả sử rằng A0 và B1 bắt đầu trước nhưđược chỉ ra trong hình 7-13.
Hình 6.12. Truyền thơng giữa hai tiều trình của cùng một tiến trình A
Trong khe thời gian 0 (0 ms), A0 gửi cho A1 một yêu cầu (request), nhưng A1 khơng thể nhận được cho đến khi nĩ chạy ở khe thời gian 1 (100ms). Nĩ gửi hồi đáp (reply) ngay lặp tức, nhưng A0 khơng nhận được hồi đáp này liền đến khi nĩ chạy lại ở 200 ms sau đĩ. Kết quả là một cặp
request/reply sẽđược hồn thành trong vịng 200 ms. Cách tiếp cận này rõ ràng là khơng hiệu quả. Giải pháp cho vấn đề này là gang scheduling. Cơ chếđiều phối này gồm ba phần:
Các tiểu trình liên quan được điều phối như là một nhĩm.
Tất cả các thành viên của một nhĩm thực thi đồng thời, trên các CPU chia sẻ thời gian. Tất cả các thành viên bắt đầu và kết thúc các khe thời gian cùng nhau.
Bản chất của gang scheduling là cho phép tất cả các CPU được điều phối đồng thời. Nghĩa là, thời gian được chia thành các phần (quantum) rời rạc như trong hình 7-14. Ở đầu mỗi quantum mới, tất cả các CPU được điều phối lại, với một tiểu trình mới đang được bắt đầu trên mỗi quantum. Bắt đầu của mỗi quantum tiếp theo, một sự kiện điều phối khác xảy ra. Trong khoảng giữa, việc điều phối khơng được thực hiện. Nếu một tiểu trình bị khĩa, CPU của nĩ trở về trạng thái rỗi cho đến khi kết thúc quantum.
Một ví dụ cho thấy gang scheduling làm việc như thế nào được minh họa trong hình 7-14. Ởđây, chúng ta cĩ một hệ thống đa xử lý với 6 CPU đang được sử dụng bởi 5 tiến trình từ A đến E với tổng cộng 24 tiểu trình sẵn sàng. Trong suốt khe thời gian 0, các tiểu trình A0 đến A6 được điều phối để chạy. Trong suốt khe thời gian 1, các tiểu trình B0, B1, B2, C0, C1 và C2 được điều phối để chạy. Trong suốt khe thời gian 2, 5 tiểu trình của D và E0 được điều phối để chạy. Sáu tiểu trình cịn lại của tiến trình E được điều phối để chạy trong khe thời gian 3. Sau đĩ chu kỳđược lặp lại, với khe thời gian 4 giống như khe thời gian 0 ...
Hình 6.13. Một ví dụ minh họa cơ chế làm việc của Gang Scheduling
Ý tưởng của gang scheduling là cho tất cả các tiểu trình của một tiến trình chạy cùng nhau, để nếu một trong chúng gửi yêu cầu cho một tiểu trình khác, nĩ sẽ nhận được gần như là lập tức và cĩ thể hồi đáp trở lại cũng hầu như tức thời. Trong hình 7-14, vì tất cả các tiểu trình thuộc tiến trình A đang chạy cùng nhau, trong cùng một quantum, nên chúng cĩ thể gửi và nhận một số lượng rất lớn các message trong cùng quantumđĩ, và vì vậy nĩ loại bỏđược vấn đềđã chỉ ra trong hình 6- 13.
TĨM TẮT
Mặc dù tốc độ máy tính ngày càng được cải thiện nhờ vào các cơng nghệ mới, nhưng nhu cầu của con người vẫn chưa được thỏa mãn. Một trong các cách tiếp cận nhằm mục đích tăng tốc độ của máy tính đĩ là sử dụng nhiều bộ xử lý trên một máy. Mỗi bộ xử lý chỉ cần hoạt động ở tốc độ bình thường cũng đã cung cấp cho hệ thống khả năng tính tốn tốt hơn rất nhiều so với hệ thống chỉ cĩ một bộ xử lý. Hệ thống cĩ nhiều bộ xử lý cĩ thể chia làm 3 loại chính như sau:
+ Đa xử lý dùng bộ nhớ chia sẻ. + Đa xử lý dùng bộ nhớ riêng. + Đa xử lý phân tán.
CÂU HỎI VÀ BÀI TẬP
1. Phân biệt giữa đa chương và đa xử lý. Các loại cấu hình đa xử lý: dùng bộ nhớ chia sẻ, dùng bộ nhớ riêng, hệ thống phân tán.
2. Các cấu hình phần cứng của một hệ thống cĩ nhiều bộ xử lý: UMA dùng bus, UMA dùng crossbar switch, UMA dùng multistage switch network.
3. Cho biết ưu và nhược điểm của việc sử dụng bus chung trong hệ thống đa xử lý. 4. Giới hạn của mơ hình chuyển mạch chéo (crossbar switch).
5. Ưu và nhược của mơ hình mạng chuyển mạch đa tầng (multistage switch network) so với chuyển mạch chép (crossbar switch).
7. Các hệđiều hành hỗ trợ cho hệ thống đa xử lý: mỗi CPU cĩ một hệđiều hành, Hệ điều hành cho nhiều bộ xử lý họat động theo cơ chế Chủ-Tớ (Master-Slave), Hệđiều hành cho hệ thống cĩ nhiều bộ xử lý đối xứng (Symmetric Multiprocessors). Ưu nhược của từng mơ hình.
8. Đồng bộ trong hệ thống đa xử lý cĩ gì khác so với đồng bộ trong hệ thống chỉ cĩ một bộ xử lý? 9. Điều phối trong hệ thống đa xử lý cần quan tâm đến những vấn đề khi so với điều phối trong hệ thống cĩ một bộ xử lý.
10. Các phương pháp điều phối trong hệ thống đa xứ lý: chia sẻ thời gian, chia sẻ khơng gian, gang scheduling. Đánh giá từng phương pháp.
11. Trong một hệ thống cĩ nhiều bộ xử lý, nếu cĩ hai CPU cố gắng truy xuất cùng một từ nhớ vào cùng một thời điểm. Điều gì sẽ xảy ra?
12. Trên một hệ thống máy tính hoạt động với tốc độ 200 MIPS (triệu lệnh trên giây). Giả sử, trong mỗi lệnh, một CPU đều cĩ nhu cầu truy xuất bộ nhớ. Và mỗi tham chiếu đến bộ nhớ yêu cầu một vịng truy xuất bus. Vậy, sẽ cần bao nhiêu CPU để tiêu tốn tồn bộ 400MHz bus. Câu hỏi tương tự nhưng trong trường hợp cĩ sử dụng cơ chế caching, với tỉ lệ thành cơng (ti lệ mà các từ nhớ tham chiếu đến tồn tại trong cache) của các cache là 90%. Nếu hệ thống cần cho phép 32 CPU cùng chia sẻ bus (nhưng khơng làm quá tải bus), thì tỉ lệ thành cơng sẽ là bao nhiêu?
13. Xét mơ hình mạng Omega như trong hình 6-5, nếu đường nối giữa switch 2A và switch 3B bị đứt. Vậy thì những CPU nào sẽ bị ngắt tham chiếu đến các bộ nhớ nào?
14. Trong mơ hình “Chủ-Tớ” (tham khảo hình 6-7), việc xử lý tín hiệu được thực hiện như thế nào? (ví dụ như cĩ một tín hiệu được tạo ra từ bàn phím).
15. Trong mơ hình đối xứng (tham khảo hình 6-8), khi một lời gọi hệ thống được sinh ra, một vấn đề phải được giải quyết ngay sau khi trap xảy ra (điều này khơng xảy ra trong hệ mơ hình “chủ- tớ”). Bản chất của vấn đềđĩ là gì? Nĩ được giải quyết thể nào?
16. Tại sao vấn đềđồng bộ là thực sự cần thiết trong hệ thống cĩ nhiều bộ xử lý?
17. Đối với hệđiều hành hỗ trợ hệ thống đa xử lý đối xứng, các miền găng (trong code của hệ điều hành) hoặc các biến mutex (trong cấu trúc dữ liệu của hệđiều hành) cĩ thực sự cần thiết để tránh việc tương tranh?
18. Khi chỉ thị lênh TSL được sử dụng cho việc đồng bộ trong hệ thống cĩ nhiều bộ xử lý, khối cache đang giữ biến mutex sẽ chuyển đi chuyển về giữa CPU giữ lock và CPU yêu cầu lock nếu cả hai đang tham chiếu đến block đĩ. Để giảm lưu lượng bus, CPU yêu cầu lock sẽ thực thi một chỉ thị lệnh TSL trong 50 vịng bus, cịn CPU giữ lock luơn tham chiếu đến khối cache giữa 2 chỉ thị lệnh liên tiếp. Nếu một khối cache gồm 16 từ nhớ 32-bit, mỗi từ nhớ yêu cầu một vịng bus để truyền, và bus họat động ở tốc độ 400 MHz. Tỉ lệ phần trăm của băng thơng bus đã bị lãng phí do việc duy chuyển khối cache tới lui là bao nhiêu?
19. Trong cơ chếđồng bộ cho hệ thống cĩ nhiều bộ xử lý, một thuật tốn gọi là binary exponential backoff được sử dụng chen vào giữa lần thực hiện cơ chế TSL để thăm dị biến lock. Đồng thời, một tham số khác gọi là độ trễ tối đa (maximum delay) cũng được sử dụng giữa các lần thăm dị. Vậy, thuật tĩan này cĩ làm việc đúng khơng nếu khơng cĩ tham sốđộ trễ tối đa này?
20. Giả sử rằng chỉ thị lệnh TSL khơng cịn được sử dụng cho việc đồng bộ trong hệ thống cĩ nhiều bộ xử lý nữa. Thay vào đĩ, một chỉ thị lệnh khác gọi là SWP sẽđược sử dụng, chỉ thị này tự động trao đổi qua lại nội dung của thanh ghi với từ nhớ trong bộ nhớ. Vậy, chỉ thị SWP này cĩ thể được sử dụng để thực hiện đồng bộ cho hệ thống đa xử lý khơng? Nếu cĩ, nĩ được sử dụng như thế nào? Nếu khơng, vì sao?
21. Giả sử rằng mỗi chỉ thị lệnh được thực thi bởi CPU tốn 5 nsec. Sau khi một chỉ thị lệnh kết thúc, bất kỳ vịng bus nào (cần cho TSL) cũng đều được thực hiện. Mỗi vịng bus tốn thêm 10 nsec. Nếu một tiến trình cố gắng đi vào miền găng sử dụng TSL loop, tỉ lệ phấn trăm của băng thơng bus bị tiêu hao sẽ là bao nhiêu? Giả sử rằng cơ chế caching vẫn hoạt động bình thường để cho phép việc nạp chỉ thị lệnh bên trong loop khơng tốn vịng bus nào.
22. Cơ chế Affinity Scheduling làm giảm cache miss (từ nhớ cần tham chiếu khơng cĩ sẵn trong cache). Vậy nĩ cĩ giảm TLB miss khơng? Và các lỗi trang thì thế nào?