Các ứng dụng luồng

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 50 - 52)

Luồng có nhiều ứng dụng trong HĐH phân tán. Chúng th−ờng đ−ợc dùng khi thi hành một QT phục vụ cung cấp các dịch vụ t−ơng tự hoặc có quan hệ tới các QT đa khách, chẳng hạn nh− phục vụ trạm cuối hoặc phục vụ file.

Khi một yêu cầu phục vụ (serving request) từ QT khách tới một QT phục vụ đơn luồng, thì QT phục vụ này tự tạm ngừng (có thể quan niệm phục vụ này nh− một tài nguyên đ−ợc điều khiển bởi một semaphore nhị phân) để chờ đợi hoàn thiện các điều kiện hoặc thao tác nào đó từ tr−ớc. Tuy nhiên, việc tạm ng−ng phục vụ lại kết khối các yêu cầu khách mới đ−ợc đ−a tới phục vụ. Để tăng thông l−ợng hệ thống, đa bản sao của cùng một phục vụ đ−ợc khởi tạo cho các yêu cầu khác nhau tới cùng một phục vụ một cách đồng thời. Do các luồng phục vụ này có mã lệnh t−ơng tự nhau và bắt buộc phải t−ơng tác nhau qua thông tin toàn cục đ−ợc chia xẻ, vì vậy chúng đ−ợc nhóm trong một không gian điạ chỉ, và nh− vậy là đã khởi tạo tính đa luồng trong một phục vụ đơn. QT khách cũng đ−ợc điều khiển theo cách hoàn toàn t−ơng tự. Một QT khách yêu cầu tạo ra nhu cầu đồng thời tới các phục vụ và bỏ qua việc bị kết khối bởi bất kỳ từ các yêu cầu dịch vụ này.

Hình 3.4 mô tả ba ứng dụng luồng trong hệ phân tán.

• Phục vụ trạm cuối (phức hợp và tập trung dữ liệu) trong hình 3.4a:

Chức năng tập hợp dữ liệu đa thành phần từ nhiều trạm cuối vào bộ đệm chung và gửi dữ liệu phức trong một bộ đệm chung tới một máy tính (hay mạng). Nếu không dùng đa luồng, phục vụ trạm cuối cần bầu cử trạm cuối đ−a vào bằng cách sử dụng dịch vụ nguyên thuỷ không kết khối. Theo quan niệm, sẽ đơn giản hơn nếu thiết kế phục vụ thành đa luồng, mỗi từ chúng đáp ứng một input riêng. Mã lệnh của các luồng này là đồng nhất nên đ−ợc chia xẻ nh− mã thực hiện lại mà mỗi luồng có stack cục bộ riêng của mình. Việc truy nhập vào buffer cùng đ−ợc chia xẻ bởi các luồng cần loại trừ ràng buộc. Việc loại trừ ràng buộc có thể đạt đ−ợc bằng cách sử dụng ph−ơng pháp đồng bộ bộ nhớ chia xẻ nh− semaphore hay bộ kiểm tra, vì tất cả các luồng chia xẻ một vùng địa chỉ. Hơn nữa đồng bộ luồng có thể hiệu quả hơn nhiều vì QT đồng bộ chỉ gọi phần cục bộ và có thể tránh đ−ợc việc gọi nhân trong một số tr−ờng hợp. Các luồng trong ví

dụ phục vụ trạm cuối này đ−ợc tạo tĩnh và chạy không tiền định. Về cơ bản, chúng chạy giống nh− một bộ điều khiển ngắt thật sự.

• Hình 3.4b, trình bày một tình huống ứng dụng luồng khác. Phục vụ File thi hành các thao tác dịch vụ file khác nhau theo yêu cầu từ khách. Một luồng đ−ợc tạo ra cho mỗi thao tác và điều khiển đ−ợc quay lại luồng chính, và nh− vậy luồng chính có thể tiếp nhận một yêu cầu mới. Trong những điều kiện nào đó, luồng đ−ợc kết khối, và một luồng khác đ−ợc lập lịch để thực hiện. Luồng ngừng tồn tại khi công việc của nó hoàn thành. Kết khối luồng và lập lịch luồng đ−ợc trình bày ở phần sau. Chú ý là trong ví dụ về phục vụ file, tồn tại luồng chính phục vụ nh− một trình điều phối công việc cho các dịch vụ file đồng thời; việc khởi tạo và kết thúc luồng là động. Tạo luồng và huỷ luồng là đơn giản vì lí do dùng lại không gian nhớ. Đây là cấu trúc luồng phổ biến cho phần lớn các loại phục vụ này.

• Ví dụ thứ 3 về luồng cho trong hình 3.4(c) là một khách đ−a ra nhiều yêu cầu tới các phục vụ khác nhau. Đa luồng trong QT khách làm cho nó có thể đạt đ−ợc đồng thời các dịch vụ và dị bộ thậm chí khi thông tin yêu cầu trả lời là đồng bộ. Một ứng dụng hữu dụng của cấu trúc này là việc cập nhật đồng thời các bản sao file nhân bản mà đ−ợc quản lí bởi nhiều phục vụ file.

Hỗ trợ luồng trong nhiều HĐH hiện đại rất rộng lớn bởi vậy ng−ời lập trình ứng dụng có thể viết các ch−ơng trình đồng thời một cách hiệu quả. Ví dụ, ứng dụng duyệt web đa luồng có thể khởi tạo việc truyền fie đa thành phần, cho phép làm chậm QT truyền file ở Internet chồng lên nhau.

• Một ví dụ ứng dụng đa luồng khác là hệ thống đa cửa sổ. Các ứng dụng toạ độ cửa sổ trở nên dễ dàng hơn nếu chúng đ−ợc thực hiện ở trong luồng với chia xẻ vùng địa chỉ logic chia xẻ. Chẳng hạn, một luồng có thể thực hiện một hoạt động trong cửa sổ này mà kết quả lại để trong một cửa sổ khác. Để thực hiện hiệu quả những ứng dụng này, các luồng −u tiên và các hỗ trợ bộ đa xử lí đ−ợc đòi hỏi.

Luồng .... Luồng Luồng B ộ đẹm Đọ c Yêu cầu Chính Ghi Luồng Luồng

Những luồng tĩnh đồng nhất độngđồng thời Những luồng Yêu cầu đồng thời và dị bộ Hình 3.4. Các ứng dụng luồng

c) Phục vụ Khách a) Phục vụ trạm cuối b) Phục vụ File

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 50 - 52)