Thi hành luồng trong không gian ng−ời dùng

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

Hỗ trợ luồng nh− một gói thêm vào đã đ−ợc thực hiện trên nhiều hệ thống bao gồm gói luồng DCE từ Tổ chức phần mềm mã mở OSF và gói QT nhẹ (LWP: Light Weight Process) từ Sun. Vấn đề thi hành cốt lõi là nắm giữ đ−ợc các lời gọi hệ thống đang kết khối từ một luồng và lập lịch luồng để thực hiện trong một QT. Trong thi hành luồng trong không gian ng−ời dùng (ch−ơng trình ng−ời dùng), một QT đ−ợc ấn định chia xẻ thời gian bộ xử lí nh− th−ờng đ−ợc làm trong bất cứ HĐH nào. Khoảng thời gian đ−ợc ấn định này là đa thành phần giữa các luồng đang tồn tại. Các luồng chạy dựa trên th− viện hỗ trợ thời gian chạy luồng. Trách nhiệm của một thủ tục thời gian chạy luồng là thực hiện việc chuyển ngữ cảnh từ luồng này sang luồng khác. Mỗi lời gọi hệ thống kết khối từ một luồng đang thực hiện là không bị HĐH bẫy lỗi nh−ng đ−ợc gửi tới một thủ tục thời gian chạy. Thủ tục thời gian chạy sẽ đơn giản khi giữ lại TCB của luồng gọi và tải (nạp) TCB của luồng mà nó lựa chọn tạo thành các thanh ghi phần cứng (bộ đếm ch−ơng trình, các thanh ghi và các con trỏ stack) với giả thiết rằng nó đ−ợc phép thực hiện nh− các thao tác đặc cách. Và kết quả, không một kết khối thực sự trong hệ thống xuất hiện nh−ng một luồng bị kết khối trong hàng đợi đ−ợc duy trì bằng th− viện hỗ trợ thời gian chạy, và sự thực hiện QT lại đ−ợc tiếp tục với một luồng khác.

Việc chuyển ngữ cảnh luồng yêu cầu một tải rất nhỏ vì nó bao hàm việc l−u giữ và khôi phục chỉ bộ đếm ch−ơng trình, các con trỏ stack. Hơn nữa, việc lập lịch chạy luồng đ−ợc thực hiện bằng Th− viện thời gian chạy, ng−ời dùng có quyền lựa chọn mức −u tiên tới luồng đ−ợc tạo. Lập lịch cho luồng thông th−ờng là theo không −u tiên và dựa theo quyền −u tiên vào tr−ớc thì phục vụ tr−ớc (FCFS - First Come First

Served); Nó có thể là lập lịch có −u tiên theo các mức khác nhau khi luồng mới đ−ợc tạo có mức −u tiên cao hơn. Sơ đồ có −u tiên, chẳng hạn việc thực hiện cuộn (RR: Round Robin) các luồng sẽ khó hơn khi không sử dụng ngắt đồng hồ và thật sự là không cần thiết ở mỗi mức luồng. Nếu cần, một luồng có thể bao gồm nguyên thuỷ luồng ngủ hoặc nh−ờng cho phép từ bỏ sự thực hiện của một luồng tới luồng khác

nhằm tạo ra tính không đồng bộ chạy luồng. Các nguyên thủy luồng có trong các gói luồng điển hình là:

• Quản lí luồng để thực hiện việc tạo luồng, tạm dừng, kết thúc luồng.

• ấn định −u tiên và các thuộc tính luồng khác.

• Hỗ trợ đồng bộ và truyền thông chẳng hạn nh− semaphore, monitor, và CTĐ.

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