Gymterview
junior

Что делает операционная система? Каковы её основные функции? <!-- grade: junior -->

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

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

1. Управление процессами

  • Создание, выполнение и завершение процессов.
  • Планирование (scheduling) — распределение процессорного времени между процессами.
  • Механизмы синхронизации (мьютексы, семафоры).
  • Межпроцессное взаимодействие (IPC).

2. Управление памятью

  • Выделение и освобождение оперативной памяти для процессов.
  • Виртуальная память и трансляция адресов.
  • Защита памяти — процесс не может обратиться к памяти другого процесса.
  • Подкачка (swap) — использование диска при нехватке RAM.

3. Управление файловой системой

  • Организация данных на накопителях в виде файлов и каталогов.
  • Операции: создание, чтение, запись, удаление, переименование.
  • Управление правами доступа (rwx в Linux, ACL в Windows).
  • Поддержка различных файловых систем (ext4, NTFS, FAT32).

4. Управление устройствами ввода/вывода

  • Абстрагирование работы с аппаратурой через драйверы.
  • Унифицированный интерфейс работы с устройствами (в Unix — «всё есть файл»).
  • Буферизация, кэширование, спулинг (очередь печати).

5. Управление сетью

  • Реализация сетевых протоколов (TCP/IP стек).
  • Сокеты — API для сетевого взаимодействия.
  • Управление сетевыми интерфейсами.

6. Безопасность и контроль доступа

  • Аутентификация пользователей (логин/пароль).
  • Разграничение прав доступа к файлам и ресурсам.
  • Изоляция процессов друг от друга.

7. Пользовательский интерфейс

  • CLI (Command Line Interface) — командная строка (bash, PowerShell).
  • GUI (Graphical User Interface) — графический интерфейс.

Ядро (Kernel)

Ядро — центральная часть ОС, работающая в привилегированном режиме (kernel mode) с полным доступом к аппаратуре. Пользовательские приложения работают в user mode и обращаются к ядру через системные вызовы (syscalls): open(), read(), write(), fork(), exec(), mmap() и т.д.

Разделение на kernel mode и user mode обеспечивает безопасность: приложение не может напрямую обращаться к оборудованию или чужой памяти, а вынуждено просить ОС через syscall.

Значение для Java-разработчика

  • JVM работает как обычный процесс ОС и использует все перечисленные механизмы.
  • Java-потоки (Thread) отображаются на потоки ОС (в HotSpot — 1:1 mapping). С Java 21 появились виртуальные потоки (Virtual Threads), управляемые JVM.
  • Java NIO использует системные вызовы (epoll в Linux, IOCP в Windows) для эффективного ввода/вывода.
  • Понимание syscalls помогает при профилировании: strace (Linux) или ProcessMonitor (Windows) показывают, какие системные вызовы делает JVM.

Вывод

ОС управляет процессами, памятью, файлами, устройствами, сетью и безопасностью. Ядро (kernel) работает в привилегированном режиме и предоставляет сервисы через системные вызовы. JVM — обычный процесс ОС, и все механизмы ОС напрямую влияют на работу Java-приложения.

На собеседовании: junior-вопрос. Перечислите 5-7 основных функций ОС. Покажите связь с Java: «потоки Java маппятся на потоки ОС 1:1, NIO использует epoll/IOCP, heap живёт в виртуальной памяти». Если расскажете про разделение kernel mode / user mode и syscalls — это покажет системное мышление.