Что такое системные вызовы

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

Ответ

Системные вызовы (syscalls) — это интерфейс между пользовательскими процессами и ядром ОС. Они позволяют программам запрашивать услуги ядра: работа с файлами, сетью, процессами и т.д.

В Go системные вызовы обычно скрыты за высокоуровневыми API из стандартной библиотеки. Например, os.Open() внутри использует open() или openat().

Пример с низкоуровневым вызовом через syscall:

package main

import (
    "fmt"
    "syscall"
)

func main() {
    err := syscall.Chmod("/tmp/testfile", 0777)
    if err != nil {
        fmt.Println("Error:", err)
    }
}

Важно:

  • В Go предпочтительнее использовать стандартные пакеты (os, net и др.)
  • Прямые syscalls могут быть непереносимы между ОС
  • Некоторые syscalls блокирующие, что может влиять на горутины