Lõi và chủ đề? Làm thế nào để tất cả hoạt động chính xác?


0

Tôi bối rối vì điều này ... nếu một CPU có 2 lõi logic, nó có thể chạy hai chương trình đồng thời 100%, đúng không? Mặt khác, 2 chương trình trên một CPU phải được phân chia thời gian 100% (không thể chạy độc lập vì cùng một lõi phải chuyển đổi giữa các bối cảnh và như vậy). Nếu điều này là đúng, việc chia sẻ chương trình giữa các lõi và luồng như thế nào?

Ví dụ: giả sử tôi có 100 tiến trình chạy trên 2 lõi ... hệ điều hành có thử và chia 50 cho mỗi lõi để cân bằng tải không? Họ sẽ được phân tán ngẫu nhiên?

Giả sử tôi khởi chạy mspaint.exe trên chip Intel lõi tứ ... nó sẽ được thực thi từ đâu (lõi 1, 2, 3, 4?) Và nó sẽ tiếp tục thực thi ở đó cho đến khi đóng? Về cơ bản, CPU logic nào sẽ làm gì với chương trình nào và các lõi xử lý song song các điểm thực thi khác nhau từ RAM khi chương trình được chạy?

Ngoài ra, điều gì sẽ xảy ra nếu bạn sử dụng 200 luồng với 100 tiến trình trên 4 lõi ... mỗi luồng sẽ vẫn nằm giữa một bối cảnh trên lõi cân bằng tải?

Câu hỏi cuối cùng : Có thực sự có thể chọn một lõi cụ thể hoặc chương trình cho nhiều lõi trực tiếp mà không cần một trình nền trong suốt hoặc HĐH thực hiện ngẫu nhiên cho bạn không? Làm thế nào, nếu tất cả mọi người nói là "chỉ sử dụng chủ đề"? Là sử dụng đa luồng ánh xạ đến lõi? Nếu vậy, làm thế nào là sử dụng một luồng được điều chỉnh theo lõi mà không có sự can thiệp của hệ điều hành nếu các luồng trên lõi đơn không hoạt động đồng thời?


2
Bạn có thể đang tìm kiếm quá nhiều sự chắc chắn. Có rất nhiều thuật ngữ khác nhau bay xung quanh và thường các định nghĩa là một chút lỏng lẻo. Và về mặt bộ xử lý, một ứng dụng riêng lẻ sẽ chạy trên ứng dụng nào, và nó sẽ luôn là cùng một ứng dụng, và mọi thứ sẽ được "cân bằng" (bất cứ điều gì có nghĩa là vào lúc này), đó là phụ thuộc vào hệ điều hành và cấu hình cao.
Daniel R Hicks

1
(Và rất thường xuyên trải đều các luồng của một tiến trình giữa nhiều CPU sẽ gây ra ảnh hưởng về hiệu năng, do các tắc nghẽn về hiệu năng vốn có trong bộ nhớ dùng chung.)
Daniel R Hicks

Câu trả lời:


5

Như một người dùng khác nhận xét, nó chủ yếu phụ thuộc vào hệ điều hành.

nếu CPU có 2 lõi logic, nó có thể chạy hai chương trình đồng thời 100%,   Vâng?

Đồng thời có, song song không. Xem: https://softwareengineering.stackexchange.com/questions/190719/the-difference-b between-con-hiện-and-vô tuyến

Ví dụ: giả sử tôi có 100 tiến trình đang chạy trên 2 lõi ...   Hệ điều hành thử và chia 50 trên mỗi lõi để cân bằng tải? Họ sẽ   Phân tán ngẫu nhiên?

Mỗi hệ điều hành có thuật toán lập lịch riêng.

Giả sử tôi khởi chạy mspaint.exe trên chip Intel lõi tứ ... nó sẽ ở đâu   được thực thi từ (lõi 1, 2, 3, 4?) và nó sẽ tiếp tục thực thi   Có cho đến khi gần?

Chúng tôi không biết nó sẽ được thực thi ở đâu và rất có thể nó sẽ không tiếp tục thực thi từ đầu đến cuối trên cùng một lõi. Một lần nữa, phụ thuộc vào bộ lập lịch hệ điều hành.

Có thực sự có thể chọn một lõi cụ thể, hoặc chương trình cho   đa lõi trực tiếp mà không cần daemon trong suốt hoặc HĐH   làm điều đó ngẫu nhiên cho bạn?

Rõ ràng là có: https://stackoverflow.com/questions/663958/how-to-control-which-core-a- Process-runs-on

Làm thế nào, nếu tất cả mọi người nói là "chỉ sử dụng   chủ đề "? Đang sử dụng đa luồng được ánh xạ tới lõi? Nếu vậy, cách sử dụng   một luồng được điều chỉnh theo lõi mà không cần sự can thiệp của hệ điều hành nếu các luồng trên   lõi đơn không đồng thời làm việc?

Tôi không hiểu câu hỏi ở đây, nhưng ý tưởng cơ bản với các luồng là bạn tạo chúng và HĐH chạy bằng thuật toán lập lịch của nó, bạn không cần phải kiểm soát lõi logic hoặc vật lý nào sẽ chạy (có thể có trường hợp bạn có thể muốn làm điều đó, tôi không chắc tại sao).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.