Professional Documents
Culture Documents
4 HDH Thread
4 HDH Thread
LUỒNG (TUYẾN)
Nội dung
Khái niệm luồng (tuyến)
Mô hình đa luồng
Thư viện
Xuất bản luồng
Ví dụ
Linux
Khái niệm cơ bản
Là một đơn vị cơ bản về khả năng sử dụng CPU
Tuyến bao gồm
Định danh
Bộ đếm chương trình
Stack
Nhược điểm:
◼ Tiến trình bị block nếu một tuyến bị block
Mô hình đa tuyến (tiếp)
Mô hình nhiều-một
Mô hình đa tuyến (tiếp)
Mô hình một - một
Mô hình một-một ánh xạ một tuyến mức người dùng tới
một tuyến mức nhân
Số lượng tuyến mức nhân bị giới hạn bởi hệ thống
Lợi ích
◼ Cho phép chạy tuần tự hay song song
Nhược điểm
◼ Ảnh hưởng tới sự thực thi của ứng dụng
Mô hình đa tuyến (tiếp)
Mô hình một-một
Mô hình đa tuyến (tiếp)
Mô hình nhiều – nhiều
Mô hình nhiều-nhiều ánh xạ nhiều tuyến mức người dùng
tới một số lượng ít hơn hoặc bằng các tuyến mức nhân
Cho phép hệ điều hành tạo ra một lượng cần thiết tuyến
mức nhân
Lợi ích
◼ Có thể tạo ra nhiều tuyến mức người dùng
◼ Có thể chạy song song
◼ Một tuyến bị block không làm ảnh hưởng đến các tuyến khác
Mô hình đa tuyến (tiếp)
Mô hình nhiều- nhiều
Mô hình đa tuyến (tiếp)
Mô hình hai mức
Mô hình hai mức giống mô hình nhiều-nhiều
Cho phép một tuyến mức người dùng tác động lên một
tuyến mức nhân
Mô hình đa tuyến (tiếp)
Mô hình hai mức
Giới thiệu một số thư viện tuyến
Cung cấp cho người lập trình tập các hàm, thủ tục làm
việc với tuyến
Hai phương pháp hay dùng để cài đặt thư viện
Hoàn toàn trong không gian người sử dụng
Hoàn toàn trong không gian nhân và được hỗ trợ trực tiếp
bởi hệ điều hành
Ba thư viện chính được dùng
POSIX Pthread
Win32
Java
POSIX Pthread
Cung cấp cả hai mức: người dùng và nhân
API tạo và đồng bộ tuyến
Là đặc tả của tuyến, không phải cài đặt
Phổ biến trên các hệ điều hành UNIX (Solari, Linux,..)
Một ví dụ về Pthread
Một ví dụ về Pthread (tiếp)
Một ví dụ về Win32 Thread
Một ví dụ về Win32 Thread (tiếp)
Tuyến trong JAVA
Tuyến trong Java được quản lý trực tiếp bởi JVM
Được cài đặt dựa trên mô hình tuyến của mỗi hệ điều
hành
Được tạo bởi
Lớp Extending Thread
Cài đặt giao diện Runnable
Ví dụ về tuyến trong JAVA
Ví dụ về tuyến trong JAVA (tiếp)
Xuất bản tuyến
Gọi hệ thống fork() và exec()
Thread cancellation of target thread
Không đồng bộ
Trì hoãn
Signal handling
Đồng bộ
Không đồng bộ
Xuất bản tuyến (tiếp)
Thread pools
Thread-specific data
Create Facility needed for data private to thread
Scheduler activations
Ngữ nghĩa fork() và exec()
Gọi hệ thống fork(), tiến trình mới nhân bản toàn bộ
tuyến hay chỉ tạo ra tiến trình với 1 tuyến duy nhất?
Hủy bỏ tuyến
Kết thúc làm việc của một tuyến - tuyến đích - trước khi
nó kết thúc một cách bình thường
Nếu một tuyến mức nhân bị block (đợi vào ra) thì LWP
cũng bị block theo
Schedule activation cung cấp một cơ chế giao tiếp giữa
mức nhân và mức tuyến – upcall
upcall được quản lý bởi upcall handler
Ví dụ về thread trên windows XP
Ứng dụng Windows XP thực thi trên một tiến trình đơn
lẻ
Một tiến trình có một hay nhiều tuyến
Xử dụng mô hình một – một
Thư viện fiber cho phép cài đặt nhiều - nhiều
Một tuyến bao gồm:
Định danh tuyến
Tập thanh ghi ghi lại trạng thái của bộ vi xử lý