Hệ điều hành có phân bổ từng quy trình cho một lõi riêng biệt không?


15

Ok tôi biết các đối số cổ điển để tránh lõi tứ. Ở cấp độ ứng dụng, hầu hết các ứng dụng chưa được viết cho nhiều lõi. Hầu hết các phần mềm máy tính để bàn thậm chí không cần song song.

Tuy nhiên, ở cấp độ HĐH, dường như rõ ràng HĐH sẽ phân chia các quy trình trên các lõi khác nhau. Đây có phải là một đối số để có được nhiều lõi hơn không? Điều đó có giúp ích gì nhiều trong nhiều tình huống không? Bạn sẽ nhận được một vài nhiệm vụ chuyên sâu về CPU - mỗi quá trình đó có thể sẽ chiếm 100% số lõi của chúng, nhưng tôi vẫn có thể duyệt web và đặt câu hỏi về SuperUser trên lõi cuối cùng của mình .... phải không?


Một luồng cơ bản cho câu hỏi này và các câu trả lời là giả định rằng một quy trình đơn là luồng đơn. Đây không phải là trường hợp trong nhiều trường hợp. Và ngay cả khi quy trình là một luồng đơn, một số thư viện hệ thống / dll sẽ thêm các luồng của riêng họ.
harrymc

Câu trả lời:


12

HĐH không thể phân chia một tiến trình đơn luồng riêng lẻ trên nhiều lõi (mặc dù nó có thể thay đổi lõi mà ứng dụng đang chạy, nhưng đó là một câu hỏi khác nhau), tuy nhiên, nó có thể chạy nhiều tiến trình, mỗi lõi trên một lõi riêng. Vì vậy, vâng, nếu bạn có nhiều ứng dụng chuyên sâu về bộ xử lý đang chạy trong nền, có khả năng bạn vẫn sẽ có một lõi dự phòng đang hoạt động ít hoặc không có gì bạn có thể sử dụng để chạy các ứng dụng khác.


Từ khóa ở đây là nếu bạn có nhiều ứng dụng chuyên sâu về bộ xử lý - đó là tình huống không phổ biến đối với hầu hết người dùng.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn vì sự trả lời. Vâng, trường hợp sau là những gì tôi đang cố gắng mô tả.
Doug T.

3

Để thêm vào câu trả lời của @ heavyyd, lý do cho điều này là HĐH không có khả năng xác định phần nào của quy trình có thể chạy song song và phần nào không. Nếu một chương trình không được thiết kế để chạy trên các lõi song song, bạn có thể có các thói quen trong ứng dụng được thiết kế để chạy tuần tự cùng lúc. Điều này có thể gây ra tất cả các loại sự cố (như nếu 2 thường trình sử dụng cùng một khối bộ nhớ nhưng không có nghĩa là chạy cùng một lúc).

HĐH có thể sử dụng nhiều lõi cho nhiều tiến trình vì dù sao đi nữa, nhưng việc lan truyền một ứng dụng lõi đơn trên nhiều lõi sẽ gây ra tất cả các loại hành vi không mong muốn.


Cảm ơn. Tôi hiểu điều đó. Câu hỏi của tôi có thể đã được từ ngữ kém. Tôi muốn hỏi thêm về quá trình đặt os vào các lõi riêng biệt. Không bằng cách nào đó kỳ diệu làm cho các lõi quá trình đơn luồng.
Doug T.

3

Khi nói đến nó, không có vấn đề gì nếu bộ xử lý sử dụng 1% hoặc 95% sử dụng (miễn là ổn định ở mức 95% và không đạt đỉnh), các chương trình sẽ chạy ở cùng tốc độ miễn là nó không đạt 100%. Chu kỳ CPU không sử dụng chỉ đơn giản là lãng phí.

Do đó, Windows 7 (trên bộ xử lý tương thích) có một công nghệ được gọi là "lõi đỗ xe", về cơ bản vô hiệu hóa các lõi không sử dụng trên máy tính của bạn để tiết kiệm điện.

Các ứng dụng đơn luồng được tự động đưa vào các lõi thay thế - Tôi không chắc về công nghệ đằng sau này, nhưng tôi biết nó hoạt động khá tốt.


2

Tình cảm ban đầu của bạn là chính xác - có một sự tiêu cực nghiêng về nhiều lõi, và nó không thực sự là tất cả những gì xứng đáng.

Trước đây khi hầu hết người dùng chỉ sử dụng máy tính để bàn của họ để xử lý văn bản đơn giản, có thể đã xảy ra tranh cãi. Nhưng ngày nay, với những thứ như trình duyệt có nhiều tab, mỗi tab trong quy trình riêng của họ (chrome và nghĩa là phân tách cấp độ quy trình cho tab) cộng với những thứ như bộ giải mã video trong các trang web và các tác vụ bổ sung có thể dễ dàng được giảm tải như đang di chuyển kết xuất các hiệu ứng hay còn gọi là css3, ngay cả trình duyệt một mình cũng có thể biện minh cho lý do cho nhiều ram hơn và một vài lõi.

Thêm vào đó, một số người dùng cũng có thể chơi game trên PC này hoặc sử dụng các công cụ như Garageband, imovie, phanh tay, nhiều lõi có thể là một lợi ích rất lớn.

Thật không đúng khi cho rằng bạn cần tối đa hóa (nghĩa là sử dụng 100% cpu trên một lõi) một lõi để lõi khác có ích. Bởi vì chúng ta đang nói chuyện song song ở đây. Chuyển đổi tác vụ trong một cpu thường thực hiện một loạt các hoạt động trước khi nó hoán đổi ngăn xếp của nó sang một quy trình khác. Không phải tất cả các tác vụ này đều bị ràng buộc cpu, vì vậy bạn sẽ không thấy một cpu tăng đột biến mặc dù lõi bị khóa.

Về cơ bản, bạn đã đúng, nhưng số lõi hiệu quả nhất là gì? 2? 4? 12? Điều này rất có thể phụ thuộc vào thói quen của người dùng ... Tôi có xu hướng 2-4 này cho hầu hết người dùng, nhưng tôi chỉ đoán.

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.