Luồng thực hiện là gì

Một phần của tài liệu Giáo trình hệ điều hành (Trang 47 - 48)

CHƯƠNG 2 : QUẢN LÝ TIẾN TRÌNH

2.2. LUỒNG

2.2.1. Luồng thực hiện là gì

Trong phần trước, ta đã thấy tiến trình có thể được xem xét từ hai khía cạnh: thứ nhất, tiến trình là một đơn vị sở hữu tài nguyên, và thứ hai: tiến trình là một đơn vị thực hiện cơng việc tính tốn xử lý.

Với vai trị sở hữu tài ngun, tiến trình được cấp một số tài nguyên như bộ nhớ, các file mở, thiết bị vào/ra, mà tiến trình có thể dùng để phục vụ nhu cầu của mình.

Với vai trị đơn vị xử lý, tiến trình được cấp CPU để thực hiện các lệnh của mình. Khi cấp phát CPU, hệ điều hành sẽ quan tâm tới vai trị đơn vị xử lý của tiến trình, có thể độc lập với vai trị sở hữu tài nguyên.

Trong các hệ điều hành trước đây, mỗi tiến trình chỉ tương ứng với một đơn vị xử lý

duy nhất. Các lệnh của tiến trình được thực hiện theo một thứ tự nào đó phụ thuộc vào

chương trình, dữ liệu, và tình huống rẽ nhánh cụ thể trong khi thực hiện, nhưng mỗi thời điểm vịng đời của tiến trình chỉ có thể tương ứng với một điểm nhất định trong chuỗi lệnh được thực hiện. Điều này có nghĩa là tiến trình khơng thể thực hiện nhiều hơn một công việc cùng một lúc.

Hệ điều hành hiện đại thường cho phép tách riêng vai trị thực hiện lệnh của tiến trình. Mỗi đơn vị thực hiện của tiến trình, tức là một chuỗi lệnh được cấp phát CPU để thực hiện độc lập được gọi là một luồng thực hiện. Hệ điều hành hiện nay thường hỗ trợ đa luồng

(multithreading), tức là cho phép nhiều chuỗi lệnh được thực hiện cùng lúc trong phạm vi một tiến trình (cần lưu ý, đối với máy tính với một CPU, tại mỗi thời điểm chỉ có một luồng được thực hiện, nhưng các luồng sẽ lần lượt được phân phối CPU tương tự cách chia sẻ thời gian giữa các tiến trình). Minh họa khái niệm luồng trong tiến trình được thể hiện trên hình 2.4.

Việc sử dụng nhiều luồng có thể minh họa qua một số trường hợp sau. Trình duyệt web thơng dụng như IE hay Firefox đều cho phép vừa tải dữ liệu trang web về vừa hiển thị nội dung trang và phần ảnh để tránh cho người dùng không phải chờ đợi cho đến khi tải được toàn bộ dữ liệu. Để làm được điều này, trình duyệt được tổ chức thành một số luồng thực hiện

song song với nhau. Trong khi một luồng đang tải dữ liệu thì luồng khác hiển thị dữ liệu đã nhận được.

Hình 2.4: Tiến trình và luồng

Một minh họa khác là những ứng dụng phải thực hiện đồng thời một số công việc tương tự nhau, chẳng hạn những hệ thống client-server trong đó một server phải phục vụ nhiều client. Lấy ví dụ hệ thống bán vé máy bay. Phần cài trên các đại lý (client) sẽ liên lạc với phần trung tâm (server) để nhận dữ liệu và gửi các yêu cầu đặt, giữ vé. Cùng một thời điểm có thể có rất nhiều client cùng liên lạc với server. Để phục vụ nhiều client cùng một lúc, trong các hệ thống không sử dụng đa luồng, server sẽ phải sinh ra rất nhiều tiến trình, mỗi tiến trình phục vụ một client. Đấy chính là cách những hệ thống trước đây sử dụng. Hiện nay, các hệ thống xây dựng trên hệ điều hành hiện đại sử dụng mơ hình đa luồng để giải quyết vấn đề loại này. Tiến trình của server duy trì một luồng làm nhiệm vụ nhận yêu cầu từ phía client. Khi nhận được yêu cầu, server sẽ tạo ra một luồng mới và chuyển yêu cầu cho luồng này xử lý. Luồng nhận yêu cầu sau đó lại được giải phóng đề chờ nhận u cầu khác. Ưu điểm chính của cách tiếp cận nhiều luồng là quá trình tạo ra luồng mới nhanh hơn nhiều so với tạo ra tiến trình mới. Ngồi ra cịn một số ưu điểm khác sẽ được phân tích trong phần sau.

Một phần của tài liệu Giáo trình hệ điều hành (Trang 47 - 48)

Tải bản đầy đủ (PDF)

(183 trang)