Можно ли запустить 10 процессов на одноядерном устройстве

«Можно ли запустить 10 процессов на одноядерном устройстве» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Одноядерный процессор выполняет процессы по очереди через механизм переключения контекста (context switching). ОС быстро переключается между процессами, создавая иллюзию параллельного выполнения.

Пример на Go:

package main

import (
    "fmt"
    "sync"
)

func worker(id int, wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Printf("Worker %d startedn", id)
}

func main() {
    var wg sync.WaitGroup
    for i := 1; i <= 10; i++ {
        wg.Add(1)
        go worker(i, &wg)
    }
    wg.Wait()
}

Ключевые моменты:

  1. ОС управляет планированием процессов
  2. Переключение происходит быстро (миллисекунды)
  3. Реальное выполнение последовательное
  4. Go-рутины - это не процессы, но концепция похожа