2012-05-07 33 views
9

Tôi đã tìm thấy câu trả lời cho câu hỏi here. Nhưng tôi không hiểu một số ý tưởng trong câu trả lời. Ví dụ, quy trình nhẹ được cho là chia sẻ không gian địa chỉ logic của nó với các quy trình khác. Nó có nghĩa là gì? Tôi có thể hiểu tình huống tương tự với 2 chủ đề: cả hai đều chia sẻ một không gian địa chỉ, vì vậy cả hai đều có thể đọc bất kỳ biến nào từ phân đoạn bss (ví dụ). Nhưng chúng tôi đã có rất nhiều quy trình khác nhau với các phần bss khác nhau và tôi không biết cách chia sẻ tất cả chúng.Sự khác nhau giữa quá trình nhẹ và luồng?

+1

Có thể có dup của http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread – Gray

+0

Bạn có vẻ rất bối rối về một số khái niệm. Tôi đề nghị bạn đầu tiên nghiên cứu định nghĩa của thread và process. – Tudor

+0

@Gray, Tôi hiểu sự khác biệt giữa các quy trình và chủ đề rất rõ ràng. Vấn đề là với sự hiểu biết các quy trình nhẹ. – Allok

Trả lời

1

Từ MSDN, Threads and Processes:

Processes tồn tại trong hệ điều hành và tương ứng với những gì người dùng thấy như các chương trình hoặc ứng dụng. Mặt khác, một sợi chỉ tồn tại trong một quy trình. Vì lý do này, các chủ đề đôi khi được gọi là là các quy trình trọng lượng nhẹ. Mỗi quy trình bao gồm một hoặc nhiều đề tài .

0

Quy trình chứa một hoặc nhiều chủ đề trong đó và một chuỗi có thể thực hiện bất kỳ điều gì mà quy trình có thể thực hiện. Ngoài ra các luồng trong cùng một quá trình chia sẻ cùng một không gian địa chỉ vì chi phí giao tiếp giữa các luồng thấp vì nó đang sử dụng cùng một phần mã, phần dữ liệu và tài nguyên hệ điều hành, vì vậy tất cả các tính năng của luồng này làm cho nó trở thành một "quá trình nhẹ".

4

Tôi không chắc rằng câu trả lời là chính xác ở đây, vì vậy hãy để tôi đăng phiên bản của mình.

Có sự khác biệt giữa quy trình - LWP (quy trình nhẹ) và chuỗi người dùng. Tôi sẽ để lại định nghĩa quy trình sang một bên vì nó ít nhiều được biết đến và tập trung vào LWP vs user threads. LWP là những gì cơ bản được gọi là chủ đề ngày nay. Ban đầu, luồng người dùng có nghĩa là một luồng được quản lý bởi chính ứng dụng và hạt nhân không biết gì về nó. LWP, mặt khác, là một đơn vị lập kế hoạch và thực hiện bởi hạt nhân.

Ví dụ: Giả sử hệ thống có 3 quy trình khác đang chạy và lên lịch là vòng xoay mà không có ưu tiên. Và bạn có 1 bộ xử lý/lõi.

Tùy chọn 1. Bạn có 2 chủ đề người dùng sử dụng một LWP. Điều đó có nghĩa rằng từ quan điểm hệ điều hành bạn có ONE đơn vị lập kế hoạch. Hoàn toàn có 4 LWP đang chạy (3 người khác + 1 của bạn). LWP của bạn nhận được 1/4 tổng thời gian CPU và kể từ khi bạn có 2 chuỗi người dùng, mỗi người trong số họ nhận được 1/8 tổng thời gian CPU (tùy thuộc vào việc bạn triển khai)

Option2. Bạn có 2 LWP. Từ quan điểm hệ điều hành, bạn có HAI đơn vị lập lịch. Hoàn toàn có 5 LWP đang chạy. LWP của bạn nhận được 1/5 tổng thời gian CPU M andI và ứng dụng của bạn nhận được 2/5 CPU.

Một khác biệt cơ bản - LWP có pid (id quá trình), chủ đề người dùng không.

Vì một số lý do, việc đặt tên có chút sai lầm và chúng tôi gọi LWP là chủ đề.

Chắc chắn có nhiều khác biệt hơn, nhưng vui lòng tham khảo trang trình bày. http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt

EDIT:

Sau khi đăng tải, tôi thấy một bài viết tốt mà giải thích tất cả mọi thứ chi tiết hơn và là bằng tiếng Anh tốt hơn tôi viết. http://www.thegeekstuff.com/2013/11/linux-process-and-threads/

Các vấn đề liên quan