На одном центральном процессоре каждый процесс запускается в ОС, а процессор перескакивает из одного процесса в другой, чтобы наилучшим образом использовать его. Процесс может иметь много потоков, и в этом случае ЦП запускается через эти потоки, когда он выполняется в соответствующем процессе.
Теперь, на многоядерном процессоре:
-
Поддерживаются ли ядра в каждом процессе или могут ли ядра работать отдельно в разных процессах в определенный момент времени? Например, у вас есть программа A, которая запускает два потока. Может ли двухъядерный процессор запускать оба потока этой программы? Я думаю, что ответ должен быть да, если мы используем что-то вроде OpenMP. Но в то время как ядра работают в этом процессе OpenMP, может ли один из ядер просто переключиться на другой процесс?
-
Для программ, созданных для одного ядра, при запуске на 100%, почему используется загрузка ЦП каждого ядра? (например, двухъядерный процессор 80% и 20%. Процент использования всех ядер всегда может составлять до 100% для этого случая.) Являются ли ядра способными помогать друг другу, управляя каждым потоком каждого процесса, в некотором смысле