Дисциплина: Сетевое и системное администрирование
Курс: 3 курс СПО
Основная учебная ОС: ALT Linux Server без графического интерфейса
Формат: теория + схемы + таблицы + визуальные материалы + короткие выводы после каждой главы
Цель лекции: понять, как современная операционная система управляет процессором, памятью, устройствами, файлами и сетью; разобраться в роли ядра и системных вызовов; сравнить архитектурные идеи Windows NT и Linux; подготовиться к дальнейшему администрированию серверной ALT Linux.
Когда пользователь включает компьютер, он обычно видит рабочий стол, окно входа, браузер, файловый менеджер или терминал. Из-за этого легко решить, что операционная система — это прежде всего графический интерфейс. Для системного администратора такое представление слишком поверхностное.
Операционная система (ОС, Operating System) — это комплекс программных механизмов, который управляет аппаратными ресурсами компьютера и предоставляет приложениям безопасные и удобные способы работы с этими ресурсами.
Любая работающая программа использует ресурсы компьютера. Текстовому редактору нужна оперативная память, браузеру — процессор и сеть, базе данных — память, диски и файловая система, веб-серверу — сеть и возможность принимать соединения. При этом на одном сервере могут одновременно работать десятки и сотни процессов. Они не должны самостоятельно «делить» процессор, память и устройства. Эту работу выполняет ОС.
Удобно рассматривать операционную систему сразу в двух ролях.
Компьютер имеет ограниченный набор ресурсов:
Если несколько программ хотят одновременно использовать CPU, система должна решить, какая задача получит процессор сейчас, а какая подождёт. Если два процесса хотят изменить один и тот же файл, ОС должна обеспечить правильный механизм доступа. Если программа пытается открыть чужой закрытый файл, система должна проверить права.
` +----------------------+
| Операционная система|
+----------+-----------+
|
+---------------------+---------------------+
| | | | |
v v v v v
CPU RAM Storage NET Devices
ОС не создаёт дополнительные физические ресурсы из воздуха. Она организует их совместное использование и создаёт для программ удобную модель работы.
Аппаратное обеспечение гораздо сложнее, чем кажется пользователю. Чтобы прочитать данные с SSD, на низком уровне нужно взаимодействовать с контроллером, очередями запросов, блоками данных, драйвером и механизмами прерываний. Но обычная программа не должна знать внутреннее устройство каждого накопителя.
Для приложения работа выглядит намного проще:
cat file.txt
Под этой простой командой может скрываться цепочка:
cat
|
v
read()
|
v
VFS
|
v
filesystem
|
v
block layer
|
v
driver
|
v
controller
|
v
SSD
Такой подход называется абстракцией: сложный механизм представляется через более простой и универсальный интерфейс.
Файл — хороший пример абстракции. Пользователь видит объект с именем lecture.txt, а не набор физических блоков на SSD. Сетевое соединение тоже является абстракцией: приложению достаточно открыть socket, а дальнейшую обработку TCP/IP выполняет сетевой стек ОС.
| Ресурс | Что это | Что делает ОС |
|---|---|---|
| CPU | Центральный процессор | Распределяет процессорное время между задачами |
| RAM | Оперативная память | Выделяет память процессам и защищает их адресные пространства |
| Storage | HDD, SSD, NVMe и другие накопители | Организует работу с блоками, файлами и файловыми системами |
| NIC | Сетевой адаптер | Управляет интерфейсом и передаёт данные сетевому стеку |
| Devices | GPU, USB, контроллеры и др. | Работает через драйверы |
| I/O | Ввод-вывод | Организует обмен данными между программами и устройствами |
CPU (Central Processing Unit) выполняет инструкции программ.
RAM (Random Access Memory) хранит данные, которые используются во время работы.
I/O (Input/Output) — операции ввода-вывода: чтение файла, запись на диск, получение сетевого пакета и т. д.
Важно понимать разницу между ресурсами. Если программа тормозит из-за медленного диска, добавление CPU может практически ничего не изменить. Если процессу не хватает RAM, увеличение размера SSD также не решает основную проблему.
На этой схеме важно увидеть слои. Пользователь работает с приложением. Приложение обращается к системным интерфейсам. Ядро управляет процессами, памятью, файлами, сетью и устройствами. Только нижний слой непосредственно связан с физическим оборудованием.
Смысл схемы не в том, чтобы запомнить каждую подпись, а в том, чтобы понимать направление взаимодействия:
Пользователь
↓
Приложение
↓
Системные интерфейсы
↓
Ядро
↓
Оборудование
- ОС — не рабочий стол, а система управления ресурсами компьютера.
- ОС одновременно распределяет ресурсы и скрывает сложность оборудования за удобными абстракциями.
- CPU, RAM, накопитель и сеть — разные ресурсы, поэтому диагностировать их нужно отдельно.
- Программа обычно не взаимодействует с физическим устройством напрямую: между ней и оборудованием находятся механизмы ОС.
Центральная часть операционной системы называется ядром (kernel). Ядро работает с наиболее важными механизмами системы и имеет значительно больше привилегий, чем обычное приложение.
К основным задачам ядра относятся:
Упрощённо систему можно разделить на два пространства:
Представим, что любой браузер, редактор или игра могут напрямую:
Одна ошибка в приложении могла бы повредить всю систему. Поэтому обычная программа выполняется с ограниченными правами и обращается к ядру только через предусмотренные интерфейсы.
+--------------------------------------------------+
| USER SPACE |
| |
| bash | nginx | postgres | ssh | python | editor |
+--------------------+-----------------------------+
|
| системные вызовы
v
+--------------------------------------------------+
| KERNEL SPACE |
| scheduler | memory | VFS | TCP/IP | drivers |
+--------------------+-----------------------------+
|
v
+--------------------------------------------------+
| HARDWARE |
+--------------------------------------------------+
User Mode — режим выполнения обычного пользовательского кода.
Kernel Mode — привилегированный режим, в котором выполняются механизмы ядра.
Важно не путать эти понятия с учётной записью администратора. Запуск программы от root в Linux или от администратора в Windows не превращает код приложения в код ядра. Программа получает больше разрешений, но всё равно взаимодействует с ядром через системные механизмы.
Системный вызов (system call) — контролируемый механизм, через который программа просит ядро выполнить системную операцию.
Например, приложение хочет:
Рассмотрим чтение /etc/hosts.
+--------------------+
| приложение | USER SPACE
+---------+----------+
|
| open(), read()
v
+--------------------+
| библиотека / API |
+---------+----------+
|
==========|=========================================
| system call
v
+--------------------+
| kernel | KERNEL SPACE
| проверка доступа |
| VFS |
| filesystem |
+---------+----------+
|
v
+--------------------+
| storage |
+--------------------+
Приложение не говорит SSD: «прочитай мне сектор». Оно просит ОС открыть файл. Ядро проверяет права, находит объект, обращается к файловой системе и драйверам и затем возвращает результат.
Эти понятия связаны, но не одинаковы.
API (Application Programming Interface) — правила, по которым программы используют возможности другой системы или компонента.
Библиотека — набор готовых функций.
Например:
printf("Hello");
printf() — библиотечная функция. Она может подготовить строку, а затем использовать системный вызов write().
Application
|
printf()
|
v
Library
|
write()
|
v
Kernel
Не каждая библиотечная функция обращается к ядру. Если функция просто выполняет вычисление над уже имеющимися данными, системный вызов может вообще не потребоваться.

Схема показывает главное: приложение находится в пользовательском пространстве, а ядро — в привилегированном. Между ними существует контролируемая граница. Именно системный вызов позволяет безопасно пересечь эту границу и попросить ОС выполнить операцию.
- Kernel — центральная привилегированная часть ОС.
- Обычные приложения работают в User Space.
- Полный прямой доступ приложения к памяти и устройствам был бы опасен.
- System call — контролируемое обращение приложения к ядру.
- API, библиотека и системный вызов — связанные, но разные понятия.
rootи Kernel Mode — не одно и то же.
Когда приложение установлено на диске, оно ещё не выполняется. На накопителе находится набор файлов. После запуска ОС создаёт процесс.
Программа — набор инструкций и данных.
Процесс — выполняющийся экземпляр программы.
Поток (thread) — последовательность выполняемых инструкций внутри процесса.
Например, файл:
/usr/sbin/nginx
может породить несколько процессов:
/usr/sbin/nginx
|
+----> PID 1250
+----> PID 1251
+----> PID 1252
PID (Process Identifier) — числовой идентификатор процесса.
У процесса есть собственное состояние:
Следовательно, фраза «у меня установлен nginx» и фраза «nginx сейчас работает» означают разные вещи.
Один процесс может использовать несколько потоков.
Process
+-----------------------------------+
| общее адресное пространство |
| |
| Thread 1 ---> |
| Thread 2 ------> общие данные |
| Thread 3 ---> |
+-----------------------------------+
Потоки одного процесса могут совместно использовать память. Это удобно для параллельной работы, но требует согласования. Если два потока одновременно меняют одни и те же данные без правильной синхронизации, возникают ошибки типа race condition — состояния гонки.
Для администратора пока важнее понимать не программирование потоков, а то, что одна программа может создавать много потоков и процессов. Поэтому «одно приложение» не всегда означает «одна строка в списке процессов».
В системе может быть сотни готовых к работе процессов и потоков, а физических ядер CPU намного меньше. Ядро должно распределять процессорное время.
Этим занимается scheduler — планировщик.
` +------------------+
Process A ------>| |
Process B ------>| Scheduler |-----> CPU Core 0
Process C ------>| |-----> CPU Core 1
Process D ------>| |-----> CPU Core 2
+------------------+
Планировщик решает:
Современные Windows и Linux используют preemptive multitasking — вытесняющую многозадачность.
TIME ------------------------------------------------------>
CPU:
| Proc A | Proc B | Proc A | Proc C | Proc B | Proc A |
Программа не обязана добровольно отдавать CPU. ОС сама может прервать её выполнение и переключиться на другую задачу.
Чтобы потом продолжить процесс с правильного места, нужно сохранить его состояние: регистры процессора, указатель инструкции и другую информацию. Это называется context switch — контекстное переключение.
Контекстное переключение полезно, но не бесплатно: процессор тратит время на управление состоянием задач.
Очень упрощённо процесс может:
` +---------+
| Running |
+----+----+
|
wait / | \ preempt
v
+---------+
| Waiting |
+----+----+
|
| событие завершилось
v
+---------+
| Ready |
+----+----+
|
| scheduler
+--------------------> Running
В Linux позже встретятся состояния:
| Код | Значение |
|---|---|
R |
running / runnable |
S |
interruptible sleep |
D |
uninterruptible sleep |
T |
stopped |
Z |
zombie |
Состояние S не означает ошибку. Процесс часто просто ждёт сеть, диск, таймер или другое событие.
Устройства тоже должны сообщать системе о событиях.
Interrupt — прерывание — сигнал о событии, требующем реакции CPU и ядра.
Например:
NIC получил пакет
|
v
аппаратное прерывание
|
v
ядро
|
v
драйвер NIC
|
v
сетевой стек
DMA (Direct Memory Access) позволяет устройству передавать данные в RAM без копирования каждого байта через CPU.
Без DMA:
Disk ---> CPU ---> RAM
С DMA:
CPU настраивает операцию
|
v
Disk ==============> RAM
DMA
После завершения устройство уведомляет систему.
Если сервер работает медленно, нельзя смотреть только на CPU.
Процесс может:
Поэтому низкая загрузка CPU не доказывает, что система работает быстро. Иногда главный bottleneck находится в storage или сети.
- Программа лежит на диске, процесс выполняется.
- Один процесс может иметь несколько threads.
- PID идентифицирует конкретный процесс.
- Scheduler распределяет CPU между задачами.
- Вытесняющая многозадачность позволяет ОС самостоятельно переключать задачи.
- Процесс может ждать диск или сеть, поэтому низкий CPU не всегда означает отсутствие проблемы.
- Interrupt и DMA помогают ОС эффективно работать с устройствами.
Оперативная память — один из ключевых ресурсов. Но программа обычно не работает с физической RAM напрямую. Она видит виртуальное адресное пространство, которое предоставляет ОС.
Это важный принцип современной архитектуры: каждый процесс получает собственное логическое представление памяти.
Предположим, что два процесса могли бы напрямую обращаться к физической памяти.
Тогда ошибка одного процесса могла бы:
Поэтому ОС создаёт для каждого процесса собственное виртуальное адресное пространство.
Процесс A Физическая RAM
+--------------+ +--------------------+
| 0x00000000 |-----------> | Frame 14 |
| ... | | |
| 0x7fffffff |-----------> | Frame 221 |
+--------------+ +--------------------+
Процесс B
+--------------+
| 0x00000000 |-----------> другая область RAM
| ... |
+--------------+
У процессов могут быть одинаковые виртуальные адреса, но они будут отображаться на разные физические области.
Память обычно управляется небольшими блоками — pages, страницами. На x86-64 типичный размер страницы — 4 KiB, хотя существуют и большие страницы.
Virtual Pages Physical Frames
+--------+ +--------+
| Page 0 |--------------->| Frame 7|
+--------+ +--------+
| Page 1 |--------------->| Frame 9|
+--------+ +--------+
| Page 2 |--------------->| Frame 3|
+--------+ +--------+
Сведения о том, какая виртуальная страница соответствует какому физическому кадру, хранятся в page tables — таблицах страниц.
MMU (Memory Management Unit) — аппаратный блок процессора, участвующий в переводе виртуальных адресов в физические.
Virtual Address
|
v
+-------------+
| MMU |
+-------------+
|
v
Physical Address
ОС формирует правила отображения, а MMU помогает применять их во время выполнения программ.
Упрощённо адресное пространство можно представить так:
Высокие адреса
+--------------------------+
| Stack |
| ↓ |
| |
| ↑ |
| Heap |
+--------------------------+
| Data / BSS |
+--------------------------+
| Program code |
+--------------------------+
Низкие адреса
Stack используется для вызовов функций, локальных данных и служебного состояния.
Heap — область динамически выделяемой памяти.
Code/Text — машинный код.
Data/BSS — разные категории данных программы.
На этом этапе не нужно запоминать точное размещение адресов. Важно понимать, что процесс имеет структурированное виртуальное адресное пространство.

На картинке видно, что Process A и Process B могут использовать похожие виртуальные адреса, но физически работать с разными областями RAM. Именно эта абстракция обеспечивает изоляцию процессов.
Если системе не хватает оперативной памяти или ОС считает некоторые страницы малоиспользуемыми, часть данных может быть перемещена на накопитель.
В Linux применяется swap.
RAM Swap
+---------+ +---------+
| active | | page X |
| pages | | page Y |
+---------+ +---------+
Но SSD или HDD значительно медленнее RAM. Поэтому большое количество активной подкачки может сильно снизить производительность.
Важно: наличие ненулевого swap не всегда означает аварию. Нужно смотреть, насколько активно система обращается к нему и хватает ли памяти приложениям.
ОС использует свободную RAM не только для процессов, но и как cache.
Например, файл недавно был прочитан с SSD. Система может оставить его данные в RAM. При следующем чтении приложение получит данные из памяти намного быстрее.
Поэтому утверждение:
«Linux использует почти всю память — значит всё плохо»
неверно без дополнительного анализа.
Свободная RAM сама по себе не приносит пользы. Если ОС может временно использовать её как кэш и освободить при необходимости, это нормальное поведение.
- Процесс обычно работает с виртуальной, а не физической памятью напрямую.
- Виртуальная память обеспечивает изоляцию процессов и защиту ядра.
- Память организована страницами; MMU участвует в переводе виртуальных адресов.
- Swap расположен на накопителе и значительно медленнее RAM.
- Использование RAM под cache — нормальное поведение ОС.
- Оценивать память нужно по контексту, а не по одной цифре «занято».
Для пользователя файл выглядит как имя и содержимое. Для операционной системы работа с файлами включает намного больше: права, владельца, метаданные, размещение на накопителе и связь с конкретной файловой системой.
Файл — именованный объект, содержащий данные или предоставляющий интерфейс к определённому объекту системы.
Каталог организует имена файлов и других каталогов.
Файловая система задаёт правила хранения файлов и служебных данных.
Эти понятия часто путают.
Physical Disk
|
+--> Partition
|
+--> Filesystem
|
+--> Mount Point
Например:
/dev/sdb
|
/dev/sdb1
|
ext4
|
/srv/data
Физический накопитель — устройство.
Раздел — выделенная область.
Файловая система — структура хранения.
Точка монтирования — место в дереве каталогов, через которое к этой файловой системе обращаются.
В Windows пользователю чаще показываются буквы томов:
C:
D:
В Linux всё объединено в единое дерево, начинающееся с /.
Разные файловые системы могут использовать разные внутренние структуры. Но приложению удобнее иметь общий интерфейс.
В Linux для этого существует VFS — Virtual File System.
` Application
|
v
+---------------+
| VFS |
+---+---+---+---+
| | |
+---------+ | +-----------+
v v v
ext4 XFS procfs
| | |
v v v
disk disk kernel
Приложение использует привычные операции open, read, write, а VFS связывает их с конкретной реализацией файловой системы.
В UNIX-подобных системах популярна идея «всё есть файл». Её не нужно понимать буквально.
Смысл в том, что множество системных объектов доступны через похожий файловый интерфейс.
Например:
/dev/sda устройство
/dev/null специальное устройство
/proc/cpuinfo информация о CPU
/proc/meminfo информация о памяти
/sys/... объекты ядра
Команды:
cat /proc/cpuinfo
cat /proc/meminfo
читают не обычные документы, лежащие на SSD. Данные формируются ядром.
Когда процесс открывает объект, ядро может вернуть file descriptor — файловый дескриптор.
Типичные значения:
0 -> stdin
1 -> stdout
2 -> stderr
3 -> /etc/hosts
4 -> socket
5 -> log file
Три стандартных потока:
` stdin (0)
|
v
+-----------+
| process |
+-----------+
| |
v v
stdout(1) stderr(2)
На следующих занятиях это превратится в практические конструкции:
command > result.txt
command 2> error.log
command1 | command2
FHS (Filesystem Hierarchy Standard) описывает общую логику размещения каталогов в UNIX-подобных системах.
| Каталог | Назначение |
|---|---|
/ |
корень файлового дерева |
/etc |
системные конфигурации |
/home |
домашние каталоги обычных пользователей |
/root |
домашний каталог пользователя root |
/var |
изменяемые данные, журналы, очереди, кэши |
/tmp |
временные данные |
/usr |
программы, библиотеки и общие ресурсы |
/boot |
файлы, связанные с загрузкой |
/dev |
устройства и специальные объекты |
/proc |
виртуальная файловая система процессов и ядра |
/sys |
представление устройств и объектов ядра |
/run |
временные данные работающей системы |
/srv |
данные, связанные с сервисами |

Картинка помогает увидеть главное: Linux не делит пространство пользователя на привычные C: и D:. Все файловые системы подключаются к единому дереву.
Особенно важно различать:
/ корень всего дерева
/root домашний каталог root
/home домашние каталоги обычных пользователей
| Особенность | Linux | Windows |
|---|---|---|
| Пример полного пути | /home/student/file.txt |
C:\Users\Student\file.txt |
| Разделитель | / |
\ |
| Начальная точка | / |
том, например C: |
| Регистр имён | обычно учитывается | обычно не учитывается |
| Подключение дисков | монтирование в дерево | буквы томов или точки подключения |
Практический пример:
Logo.png
logo.png
В типичной Linux-файловой системе это два разных имени. Приложение, перенесённое с Windows, может перестать находить файл, если разработчик не учитывал регистр.
- Диск, раздел, файловая система и точка монтирования — разные уровни.
- Linux использует единое дерево, начинающееся с
/.- VFS предоставляет общий интерфейс к разным файловым системам.
/proc,/sysи/devпоказывают, насколько широко Linux использует файловую модель.stdin,stdout,stderrсвязаны с файловыми дескрипторами 0, 1 и 2.- В Linux регистр имён файлов обычно имеет значение.
Windows и Linux решают одни и те же фундаментальные задачи:
Но внутреннее устройство и традиции администрирования заметно отличаются.
Linux обычно относят к монолитным ядрам.
Это означает, что ключевые подсистемы работают в пространстве ядра и могут напрямую взаимодействовать друг с другом.
Упрощённо:
+--------------------------------------------------+
| LINUX KERNEL |
| |
| Scheduler | Memory | VFS | Network | Security |
| Drivers | IPC | Filesystems | Modules |
+--------------------------------------------------+
При этом Linux поддерживает loadable kernel modules — загружаемые модули ядра.
Например, поддержка устройства или файловой системы может быть реализована модулем.
Посмотреть ядро:
uname -r
Посмотреть загруженные модули:
lsmod
Получить сведения о модуле:
modinfo <module>
Следовательно, слово «монолитное» не означает «абсолютно всё навсегда собрано в одном неразделимом файле».
Для сравнения полезно знать противоположную идею.
В microkernel часть функций стараются вынести из ядра в отдельные компоненты пользовательского пространства.
` USER SPACE
+------------+ +------------+ +------------+
| File srv | | Net srv | | Drivers |
+------+-----+ +------+-----+ +------+-----+
\ | /
\ | /
+-----------+------------+
|
message passing
|
+-----------------------------------------+
| Microkernel |
| scheduler | IPC | minimal memory mgmt |
+-----------------------------------------+
Потенциальное преимущество — лучшая изоляция компонентов. Потенциальная цена — дополнительное межпроцессное взаимодействие и переходы.
Нам не нужно сейчас изучать все микроядерные ОС. Важно понять сам архитектурный принцип.
Современная Windows относится к семейству Windows NT и обычно описывается как система с гибридной архитектурой.
Упрощённая модель:
+--------------------------------------------------+
| USER MODE |
| Applications | Services | APIs |
+--------------------------------------------------+
| KERNEL MODE |
| Executive | Kernel | Drivers | HAL |
+--------------------------------------------------+
| HARDWARE |
+--------------------------------------------------+
Executive включает важные менеджеры:
HAL (Hardware Abstraction Layer) — слой абстракции оборудования.
Смысл HAL — скрывать часть аппаратных различий от более высоких компонентов системы.

На схеме не нужно пытаться найти «победителя». Она показывает разные архитектурные подходы.
Linux делает сильный акцент на монолитном модульном ядре и UNIX-подобной модели. Windows NT использует собственную гибридную архитектуру с Executive, Kernel, драйверами и HAL.
Для администратора различия особенно заметны при настройке.
Большое количество системных параметров хранится в Registry.
Registry
|
+-- HKEY_LOCAL_MACHINE
| +-- SYSTEM
| +-- SOFTWARE
|
+-- HKEY_CURRENT_USER
+-- ...
Плюсы:
Многие службы используют обычные текстовые конфигурационные файлы:
/etc/hosts
/etc/fstab
/etc/ssh/sshd_config
/etc/nginx/nginx.conf
/etc/systemd/system/
Плюсы:
Важно избегать чрезмерного упрощения. В Windows тоже существуют конфигурационные файлы, а в Linux не все параметры хранятся простым текстом. Речь идёт о характерной традиции и инструментах.
Студенту Windows часто кажется легче не потому, что её архитектура примитивнее, а потому, что он много лет использовал GUI.
Если убрать привычный рабочий стол и оставить:
система быстро перестаёт выглядеть «простой».
Linux кажется сложнее на первых этапах потому, что администратор быстрее сталкивается с техническим устройством ОС напрямую.
- Linux и Windows решают одинаковые базовые задачи, но организованы по-разному.
- Linux обычно описывают как монолитное модульное ядро.
- Windows NT — гибридная архитектура.
- Микроядерная архитектура полезна как противоположная концепция для сравнения.
- Windows активно использует Registry, Linux-серверы часто используют текстовые конфиги.
- «Windows проще» чаще означает «Windows привычнее».
Архитектура ОС становится особенно понятной, когда мы рассматриваем не настольный компьютер, а сервер.
Серверу не обязательно нужен человек перед монитором. Основная его задача — предоставлять функции другим системам и пользователям.
На сервере постоянно работают фоновые процессы.
В Linux часто используется термин daemon.
Примеры:
sshd
nginx
chronyd
docker
zabbix_agentd
Служба может:
Обычно служба должна продолжать работать независимо от того, вошёл ли администратор в терминал.
Концептуальное сравнение:
Windows Service <----> Linux Daemon
SCM <----> systemd
Event Log <----> journal / logs
В современных Linux-системах часто используется systemd.
Он управляет:
Один из его инструментов — systemctl.
Позже мы отдельно разберём:
systemctl start
systemctl stop
systemctl restart
systemctl status
systemctl enable
Важно уже сейчас понимать различие:
service is running now
≠
service will start automatically after reboot
Работающая сейчас служба может не иметь автозапуска, а служба с включённым автозапуском может падать при старте.
После включения питания Linux не появляется мгновенно. Система проходит несколько этапов.
UEFI / BIOS
|
v
Bootloader
|
v
Linux Kernel
|
v
initramfs
|
v
systemd (PID 1)
|
+--> networking
+--> logging
+--> ssh
+--> other services
Прошивка платформы начинает выполнение первой.
Загрузчик находит ядро и передаёт ему управление. В Linux часто используется GRUB.
Ядро инициализирует память, CPU, драйверы и основные механизмы.
Ранняя файловая система в RAM может содержать компоненты, необходимые для доступа к основной корневой файловой системе.
В системе с systemd основной пользовательский процесс обычно получает:
PID = 1
После этого запускаются службы и система переходит в рабочее состояние.
Упрощённо:
UEFI / BIOS
|
v
Windows Boot Manager
|
v
Windows Loader
|
v
NT Kernel
|
v
system processes / services
|
v
user session
Механизмы различаются, но логика похожа: прошивка → загрузчик → ядро → системные процессы → службы.
GUI — пользовательская оболочка, а не ядро ОС.
+---------------------------+
| GUI / Desktop | <- может отсутствовать
+---------------------------+
| CLI / Services / Apps |
+---------------------------+
| Kernel |
+---------------------------+
| Hardware |
+---------------------------+
Отсутствие GUI:
Поэтому ALT Linux Server в нашем курсе будет использоваться без графического рабочего стола.
CLI удобен системному администратору не потому, что «так сложнее и профессиональнее», а потому что команды:
Например:
ip addr show
Эта команда является точной записью действия. Её можно отправить другому администратору или выполнить удалённо.
В Windows похожую роль выполняют PowerShell и другие средства удалённого администрирования.
- Серверные функции обычно выполняют фоновые службы.
- В Linux фоновые системные программы часто называют daemons.
- systemd участвует в запуске и управлении службами.
- Загрузка ОС идёт по этапам; при диагностике важно понять, на каком этапе произошёл сбой.
- GUI не является обязательной частью сервера.
- CLI ценен повторяемостью и возможностью удалённой автоматизации.
Операционная система должна не только распределять CPU и RAM, но и понимать, кто выполняет действие и имеет ли он право его выполнять.
В Linux существуют:
root.В Linux используются:
Для root:
UID = 0
Это важнее самого имени root.
В Windows для идентификации субъектов безопасности активно используются SID (Security Identifier).
Это разные понятия.
Authentication — проверка, кто вы.
Authorization — проверка, что вам разрешено.
Пример:
пользователь ввёл правильный пароль
|
v
аутентификация успешна
|
v
пытается открыть закрытый файл
|
v
авторизация может запретить доступ
Правильный пароль не даёт автоматического доступа ко всему компьютеру.
Один из базовых принципов безопасности:
Пользователь или процесс должен иметь только те права, которые действительно нужны для его задачи.
Если nginx должен читать файлы сайта, это не означает, что ему нужны полномочия root над всей системой.
Если обычный пользователь должен изменять свои документы, ему не нужен доступ к /etc/shadow.
Это важно не только для Linux. Тот же принцип используется в Windows и других ОС.
Допустим, служба не может открыть каталог.
Можно:
выдать ей максимальные права
и добиться запуска.
Но проблема не решена правильно. Администратор не понял:
Хороший администратор исправляет конкретное ограничение, а не отключает защиту целиком.
- Пользователь и процесс имеют контекст безопасности.
- Аутентификация отвечает на вопрос «кто?», авторизация — «что разрешено?».
rootимеет UID 0, но root-приложение не становится кодом ядра.- Принцип Least Privilege уменьшает последствия ошибок и атак.
- Максимальные права — не универсальное средство исправления проблем.
Архитектура операционной системы нужна не для красивой теории. Она помогает понимать, где искать неисправность.
Рассмотрим три типичных ситуации.
Возможные уровни:
Executable exists?
|
Permissions?
|
Dependencies?
|
Memory/resources?
|
Configuration?
|
Kernel / device?
Нужно идти от наблюдаемого симптома к конкретному слою.
Сам факт работающего процесса не доказывает исправность всей цепочки.
Client
|
DNS?
|
Routing?
|
Firewall?
|
Port listening?
|
Nginx process?
|
Configuration?
|
Backend?
Это очень важная привычка администратора: разбирать проблему слоями, а не случайно менять настройки.
Возможные причины:
Одинаковый симптом может возникать по совершенно разным причинам.
Log / журнал — один из главных источников информации.
В Linux часто используются:
/var/log/
journal
и инструмент:
journalctl
В Windows:
Windows Event Log
Логи помогают ответить на вопросы:
Главная идея:
наблюдение
↓
гипотеза
↓
проверка
↓
изменение
↓
повторная проверка
Не нужно одновременно менять десять параметров. Иначе даже после успеха будет непонятно, что именно исправило проблему.
- Архитектура ОС нужна прежде всего для диагностики по слоям.
- Процесс «запущен» не означает, что сервис полностью работает.
- Один симптом может иметь причины на разных уровнях.
- Логи помогают восстановить последовательность событий.
- Хорошая диагностика: наблюдение → гипотеза → проверка → изменение → повторная проверка.
Теперь можно свести основные архитектурные идеи в одну таблицу.
| Характеристика | Linux | Windows |
|---|---|---|
| Архитектура ядра | монолитное модульное ядро | гибридная архитектура Windows NT |
| Пользовательский режим | User Space | User Mode |
| Привилегированный режим | Kernel Space | Kernel Mode |
| Основной серверный стиль | CLI, SSH, автоматизация | PowerShell, GUI, remote management |
| Конфигурация | часто текстовые файлы | Registry + файлы + API |
| Файловое пространство | единое дерево / |
тома, буквы дисков, NT namespace |
| Пользователи | UID/GID, группы | SID, группы |
| Службы | systemd и др. | Service Control Manager |
| Логи | journal, /var/log, логи приложений |
Windows Event Log и логи приложений |
| Сервер без GUI | типичный сценарий | Server Core и другие варианты |
| Скриптинг | shell, Python и др. | PowerShell и др. |
Главное — не сводить сравнение к:
Windows = GUI
Linux = Terminal
Это неверно.
Windows имеет развитые средства CLI и автоматизации. Linux может иметь полноценный GUI. Различие глубже: в архитектурных традициях, инструментах управления, файловой модели, конфигурации и экосистеме.
После всей первой пары студент должен видеть систему примерно так:
ПОЛЬЗОВАТЕЛЬ
|
v
ПРИЛОЖЕНИЕ
|
v
API / БИБЛИОТЕКИ
|
v
SYSTEM CALL
|
v
ЯДРО
+-----------------------------+
| Processes / Scheduler |
| Virtual Memory |
| VFS / Filesystems |
| Network Stack |
| Drivers |
| Security |
+-----------------------------+
|
v
HARDWARE
CPU | RAM | SSD | NIC | Devices
А системный администратор должен уметь мысленно двигаться по этой схеме в обе стороны:
«почему приложение не работает?»
↓
процесс?
↓
права?
↓
файл?
↓
сеть?
↓
ядро?
↓
устройство?
1. Операционная система — менеджер ресурсов и уровень абстракции.
2. Ядро — центральная привилегированная часть ОС.
3. Обычные программы работают в User Space и обращаются к ядру через системные вызовы.
4. Программа, процесс и поток — разные понятия.
5. Планировщик распределяет процессорное время между задачами.
6. Процессы работают с виртуальной памятью, а не произвольными физическими адресами RAM.
7. Linux использует единое файловое дерево и активно применяет файловую модель для системных объектов.
8. Linux обычно описывают как монолитное модульное ядро, Windows NT — как гибридную архитектуру.
9. Серверу не нужен графический интерфейс, чтобы выполнять серверные функции.
10. Для администратора архитектура ОС — основа правильной диагностики, а не просто теория.
| Термин | Краткое значение |
|---|---|
| OS / ОС | Операционная система |
| Kernel | Ядро ОС |
| User Space | Пользовательское пространство |
| Kernel Space | Пространство ядра |
| System Call | Системный вызов |
| API | Программный интерфейс |
| CPU | Центральный процессор |
| RAM | Оперативная память |
| I/O | Ввод-вывод |
| Process | Процесс |
| Thread | Поток выполнения |
| PID | Идентификатор процесса |
| Scheduler | Планировщик |
| Context Switch | Контекстное переключение |
| Interrupt | Прерывание |
| DMA | Прямой доступ к памяти |
| Virtual Memory | Виртуальная память |
| MMU | Блок управления памятью |
| Page | Виртуальная страница памяти |
| Frame | Физический кадр памяти |
| Swap | Подкачка |
| Cache | Кэш |
| VFS | Виртуальная файловая система |
| FHS | Стандарт файловой иерархии |
| File Descriptor | Файловый дескриптор |
| stdin / stdout / stderr | Стандартные ввод, вывод и ошибки |
| IPC | Межпроцессное взаимодействие |
| UID / GID | Идентификатор пользователя / группы |
| SID | Идентификатор безопасности Windows |
| Daemon | Фоновая обслуживающая программа Linux |
| Service | Служба |
| Registry | Реестр Windows |
| systemd | Система управления службами и загрузкой во многих Linux |
| BIOS / UEFI | Прошивка и интерфейс начальной загрузки |
| Bootloader | Загрузчик ОС |
| GUI | Графический интерфейс |
| CLI | Командный интерфейс |
| Shell | Командная оболочка |
/, /root и /home отличаются друг от друга?Этот блок не обязателен для основной лекции. Его можно использовать, если основную часть группа усвоила быстрее, чем ожидалось.
Архитектура x86 исторически поддерживает несколько уровней привилегий, называемых rings.
Упрощённо:
Ring 3 -> обычные приложения
Ring 2
Ring 1
Ring 0 -> ядро ОС
Современные Windows и Linux в основном используют модель:
User Mode -> Ring 3
Kernel Mode -> Ring 0
Важно понимать, что это аппаратная поддержка разделения полномочий.
На Linux-системе можно выполнить:
uname -r
Версия ядра.
cat /proc/cpuinfo
Информация о процессоре.
cat /proc/meminfo
Информация о памяти.
ls /sys/class/net/
Сетевые интерфейсы с точки зрения ядра.
lsmod
Загруженные модули ядра.
Здесь хорошо видно, что /proc и /sys — не просто теория из учебника.
Есть сервер. Пользователь говорит:
«Сайт очень медленный. CPU загружен всего на 10 %, значит сервер мощный и проблема точно в программе».
Вопросы:
Правильный подход:
не угадывать
↓
разделить систему на слои
↓
собрать метрики
↓
посмотреть логи
↓
проверить гипотезу
Служба запускается только от root, а от отдельного пользователя выдаёт Permission denied.
Плохое решение:
оставить сервис работать от root
Правильные вопросы:
Это и есть практическое применение принципа Least Privilege.
Теперь мы понимаем базовую архитектуру ОС:
Hardware
↓
Kernel
↓
System Calls
↓
Applications
Следующий вопрос:
Можно ли заставить один физический компьютер выглядеть как несколько независимых компьютеров, каждый со своей операционной системой?
Да.
Именно эту задачу решает виртуализация.
Во второй части занятия мы разберём:
ЛИТАНИЯ ЗАВЕРШЕНИЯ ПРОТОКОЛА
«Команда, исполненная без понимания, есть лишь повторение.
Команда, исполненная с пониманием, есть знание.»
|| PROTOCOL COMPLETE :: KNOWLEDGE PRESERVED :: AVE OMNISSIAH ||