Chuyên mục trả lời câu hỏi


No photo description available.

Trả lời:

Ta có thể hiểu thế này, một tiến trình (process) được tạo ra khi bạn tải và chạy một chương trình từ đĩa, nó sẽ có một không gian địa chỉ riêng, độc lập hoàn toàn với các tiến trình khác. Hai tiến trình sẽ nằm ở hai dải địa chỉ khác nhau, nếu muốn nói chuyện thì phải thông qua một cơ chế giao tiếp IPC nào đó (inter-process communication), như TCP/IP, namepipes… Một thread là một luồng xử lý của CPU, là một dãy lệnh mà CPU sẽ thực thi, dãy lệnh đó hiển nhiên sẽ được nạp vào và nằm bên trong một tiến trình.

Có thể hiểu nôm na, mỗi process là một nhà máy, còn các thread là các công nhân. Hai công nhân làm cùng nhà máy thì có thể truy cập vào các tài nguyên chung, còn khác nhà máy thì buộc phải dùng dịch vụ chuyển phát thì mới trao đổi thông tin được. Một nhà máy thì có ít nhất một công nhân – single thread (nhưng cũng có thể có nhiều hơn – multi thread).

Việc điều phối giữa các CPU là theo từng thread, vì thread không được cấp CPU thì sẽ đứng im không chạy. Các trạng thái kiểu như running, sleep là trạng thái của thread, không phải của process. Process thì chỉ cần có tồn tại hay không thôi, khi nó được nạp vào thì thread đầu tiên cũng bắt đầu chạy, khi thread cuối cùng kết thúc thì nó cũng được giải phóng. Vì process gắn liền với thread như vậy nên ta hay nói process đang chạy – thực chất là thread trong process đang chạy.

Hầu hết các HĐH đều quản lý process và thread theo kiểu cha – con, tuy nhiên có một điều thú vị là trong Linux trước đây người ta không có khái niệm thread, khi tạo một thread, người ta sẽ tạo ra một process mới với địa chỉ bộ nhớ trùng khớp lên địa chỉ của process cha. Việc quản lý nội bộ bên trong rất phức tạp nên bạn đọc chỉ cần quan tâm đến việc lập trình từ góc độ viết ứng dụng là đủ.

Trả lời:

Thực ra anh nghĩ nếu em đọc kỹ thì có lẽ các bài đó không phải là các bài giới thiệu về thread. Khi mới học về process người ta ít khi nhắc đến khái niệm thread, vì sẽ làm vấn đề phức tạp lên và người học không hiểu được. Để đơn giản hóa thì nói đó là trạng thái của process cũng không sai, vì như trên có nói, thread và process gắn liền với nhau: mỗi process phải có ít nhất một thread, và mỗi thread phải thuộc một process nào đó.Tương tự như khi ta nói: nhà máy đó đang hoạt động – câu này không có gì sai, nhưng nó có nghĩa là các công nhân bên trong đang làm việc, chứ không có nghĩa bản thân cái nhà máy đang hoạt động.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: