Что делает операционная система? Каковы её основные функции?
Операционная система (ОС) — это системное программное обеспечение, которое управляет аппаратными ресурсами компьютера и предоставляет сервисы для прикладных программ, являясь посредником между аппаратурой и пользовательскими приложениями.
Аналогия: ОС — это администрация отеля. Гости (приложения) не лезут в электрощитовую и не делят номера самостоятельно. Администрация распределяет номера (память), регулирует доступ к ресурсам (лифт, бассейн) и обеспечивает безопасность.
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 — это покажет системное мышление.