1. BIOS. Назначение. Этапы загрузки компьютера при включении.
BIOS (Basic Input/Output System) — базовая система ввода-вывода. Это микропрограмма, «зашитая» в ПЗУ (ROM) на материнской плате.
Назначение: Инициализация оборудования и передача управления загрузчику операционной системы.
Этапы загрузки:
Включение питания (Power On): Подача напряжения, сброс регистров процессора.
POST (Power-On Self-Test): Самотестирование «железа» (ОЗУ, видеокарта, клавиатура).
Поиск загрузочного устройства: BIOS перебирает устройства (HDD, USB, CD) согласно приоритету (Boot Priority).
Загрузка MBR/UEFI: Считывание первого сектора диска (Master Boot Record) или поиск загрузчика в EFI-разделе.
Запуск Bootloader (GRUB/LILO): Загрузчик считывает ядро ОС в память.
Передача управления ядру: BIOS завершает работу, начинает работать ОС.
2. Оперативная память (RAM). Принципы работы. Отличия от файла подкачки (swap).
RAM (Random Access Memory) — энергозависимая память с произвольным доступом. Хранит данные и машинный код, которые процессор обрабатывает в данный момент. Работает на основе конденсаторов (DRAM) или триггеров (SRAM).
Swap (Файл/раздел подкачки): Участок на жестком диске (HDD/SSD), используемый ОС как расширение оперативной памяти.
Отличия:
Скорость: RAM в тысячи раз быстрее Swap (диска).
Назначение: В RAM — активные процессы. В Swap выгружаются (“свопятся”) неактивные страницы памяти, когда RAM не хватает.
Физика: RAM — микросхемы, Swap — магнитная запись или флеш-память.
3. CPU и GPU. Назначение. Основные архитектурные различия.
CPU (Central Processing Unit): Универсальный процессор. Предназначен для выполнения последовательных задач, сложной логики, ветвлений, управления ОС. Имеет мало мощных ядер (2–64), большой кэш, сложный блок предсказания переходов. Архитектура SISD/MIMD.
GPU (Graphics Processing Unit): Графический процессор. Предназначен для параллельной обработки огромных массивов однотипных данных (графика, матрицы, криптография). Имеет тысячи слабых ядер, высокую пропускную способность памяти. Архитектура SIMD (одна команда — много данных).
4. Файловые системы. Принципы устройства. Дефрагментация.
Файловая система (ФС) — порядок, определяющий способ организации, хранения и именования данных на носителях.
Принципы: Разбиение диска на кластеры/блоки. Хранение метаданных (таблицы размещения файлов) отдельно от содержимого.
Примеры: FAT32, NTFS (Windows), ext4, xfs, btrfs (Linux).
Дефрагментация: Процесс перераспределения фрагментов файлов так, чтобы они располагались в непрерывных областях диска.
Зачем: Ускоряет чтение на HDD (головке не надо прыгать).
Нюанс: Не нужна (и вредна) для SSD.
5. UNIX и Linux. Основные отличия.
UNIX: Семейство проприетарных (коммерческих) ОС, разработанных в 1970-х (Bell Labs). Стандартизированы (SUS). Работают на дорогом серверном «железе». Примеры: AIX, HP-UX, Solaris, macOS (сертифицированный Unix).
Linux: Клон Unix, написанный с нуля Линусом Торвальдсом (1991). Это только ядро. Распространяется бесплатно (Open Source, лицензия GPL). Работает на всём: от утюгов до суперкомпьютеров. Linux — это “Unix-like” система.
6. ОС. Назначение, основные функции.
ОС — комплекс программ, управляющих ресурсами компьютера и предоставляющих интерфейс пользователю.
Функции:
Управление процессами и потоками (планирование).
Управление памятью (выделение, освобождение, виртуальная память).
Управление файловой системой.
Управление вводом-выводом (драйверы устройств).
Обеспечение безопасности и разграничение прав доступа.
7. ОС Linux. Краткая история развития. Примеры дистрибутивов.
1991: Линус Торвальдс выкладывает исходный код ядра (версия 0.01).
1983: Ричард Столлман запускает проект GNU (софт для свободной ОС).
Linux = Ядро Linux + Утилиты GNU.
Дистрибутивы: Ubuntu, Debian, Fedora, CentOS, Arch Linux, Kali Linux, Astra Linux (РФ).
8. Основные преимущества ОС Linux над Windows.
Открытый исходный код: Возможность аудита безопасности (важно для ИУ10!) и модификации.
Безопасность: Разграничение прав (root/user), отсутствие вирусов в привычном понимании, репозитории ПО.
Гибкость и модульность: Можно собрать систему под любые нужды, сменить графическое окружение или работать только в консоли.
Бесплатность (большинства дистрибутивов).
Стабильность и производительность (не требует перезагрузок годами).
Пользователи и Файловая система
9. Пользователи и группы. Файлы /etc/passwd, /etc/group, /etc/shadow.
/etc/passwd: База данных пользователей. Читается всеми. Формат: login:x:UID:GID:Comment:Home:Shell. (Вместо пароля стоит x).
/etc/group: База данных групп. Формат: group_name:x:GID:user1,user2.
/etc/shadow: Хранит хеши паролей и параметры устаревания. Доступен только root (права 600 или 640).
Нюанс: Почему пароль хранят в /etc/shadow, а не в /etc/passwd (где раньше хранили)?
Ответ:/etc/passwd должен быть читаем всеми пользователями (например, чтобы команда ls -l могла подставить имя вместо цифры UID). Если там хранить хеши паролей, любой пользователь сможет скопировать их и запустить брутфорс (подбор пароля) у себя дома. /etc/shadow читает только root, поэтому это безопасно.
10. Стандартные пользователи и группы.
root (UID 0): Суперпользователь, администратор. Имеет неограниченные права.
Системные пользователи (UID 1–999): Нужны для запуска служб, чтобы не запускать их от root (безопасность).
daemon, bin, sys — служебные.
www-data — веб-сервер.
nobody — пользователь с минимальными правами.
Обычные пользователи (UID >= 1000).
11. Команды для управления пользователями и группами.
useradd: Создать пользователя (низкоуровневая).
adduser: Создать пользователя (интерактивная, удобнее).
usermod: Изменить параметры (например, добавить в группу: usermod -aG sudo user).
userdel: Удалить пользователя.
passwd: Сменить пароль.
groupadd, groupdel: Создание/удаление групп.
id: Показать UID и GID текущего пользователя.
12. Стандартные переменные окружения.
Переменные хранят настройки среды. Просмотр: env или printenv.
HOME: Путь к домашнему каталогу (/home/user).
PWD: Текущая рабочая директория.
USER: Имя текущего пользователя.
PATH: Список директорий (через двоеточие), в которых оболочка ищет исполняемые файлы команд.
TZ: Часовой пояс.
SHELL: Путь к текущей оболочке (/bin/bash).
13. Концепция «всё есть файл». Права файлов.
Концепция: В Unix/Linux единообразный интерфейс доступа. Документы, директории, жесткие диски, клавиатура, сетевые сокеты и даже процессы представлены в виде файлов в файловой системе.
Права (rwx):
Три группы: User (владелец), Group (группа), Other (остальные).
r (read, 4): Чтение (для папки — просмотр списка ls).
w (write, 2): Запись (для папки — создание/удаление файлов).
x (execute, 1): Исполнение (для папки — вход в неё cd).
Вопрос: Если всё есть файл, то можно ли удалить процесс командой rm?
Ответ: Нет. Процессы представлены файлами в виртуальной ФС /proc. Если попытаться сделать rm /proc/1234, система выдаст ошибку “Operation not permitted”, так как эти файлы создаются ядром “на лету” и не лежат на диске. Удалять процесс нужно сигналом (kill).
14. Файловый объект. Виды файловых объектов.
Файловый объект — это ссылка на иноду (inode). Тип виден первым символом в ls -l.
- Обычный файл: Текст, код, бинарник, картинка.
d Каталог (Directory): Файл, содержащий таблицу «имя файла — номер inode».
l Символьная ссылка (Symlink): Указатель на другой файл по имени.
b Блочное устройство: Диски, флешки.
c Символьное устройство: Терминал, клавиатура, /dev/null.
p Канал (FIFO/Pipe): Для межпроцессного взаимодействия.
s Сокет: Для сетевого взаимодействия процессов.
Нюанс: Чем отличается Блочное устройство (b) от Символьного (c)?
Ответ:
Символьное (Character): Работает с потоком байтов последовательно (как труба). Пример: Клавиатура, Мышь, Звуковая карта. Нельзя прочитать “5-й байт с конца”, пока не прочитаешь всё до него.
Блочное (Block): Работает блоками (обычно 512 байт или 4КБ). Можно произвольно прыгать по данным (Random Access). Пример: Жесткий диск, Флешка.
15. Устройство исполняемого файла. Различия: файл и команда.
Исполняемый файл: Файл, который ОС может запустить на выполнение (имеет право x).
Бинарный (ELF): Машинный код, понятный процессору (скомпилированная программа). Начинается с заголовка ELF.
Скрипт: Текстовый файл с кодом на интерпретируемом языке. Должен начинаться с шебанга (например, #!/bin/bash), указывающего интерпретатор.
Команда: Более широкое понятие. Это то, что мы вводим в терминал. Может быть:
Исполняемым файлом (внешняя команда, например, /bin/ls).
Встроенной командой оболочки (builtin, например, cd, echo, alias).
Функцией shell.
16. Устройство файла в Linux. Жесткие и символические ссылки.
Inode (индексный дескриптор): Структура данных, описывающая файл (права, владелец, размер, адреса блоков на диске), но не содержащая имени.
Жесткая ссылка (Hard Link):
Это просто еще одно имя для того же самого inode.
Файл и жесткая ссылка равноправны.
Нельзя создать для директорий и между разными файловыми системами.
Файл удаляется, когда счетчик жестких ссылок равен 0.
Символическая ссылка (Soft Link):
Отдельный файл (свой inode), содержащий путь к целевому файлу.
Может указывать на директории и несуществующие файлы.
Если удалить цель, ссылка становится «битой».
17. Логическая структура ФС. Корневой каталог. Каталоги первого уровня.
/bin & /sbin: Бинарные файлы (программы) для пользователя и администратора.
/boot: Ядро и загрузчик.
/dev: Файлы устройств.
/etc: Конфигурационные файлы.
/home: Личные папки пользователей.
/lib: Системные библиотеки.
/media & /mnt: Точки монтирования съемных носителей.
/opt: Дополнительное ПО.
/proc & /sys: Виртуальные ФС (информация о ядре и процессах).
/root: Домашняя папка суперпользователя.
/tmp: Временные файлы.
/usr: Вторичная иерархия (программы, библиотеки, доки для пользователей).
/var: Переменные данные (логи, почта, базы данных).
18. Команды LS, CP, MV, PWD, RM, CD, MAN. Назначение, способ применения.
ls (list): Выводит содержимое каталога.
ls -l — подробный список (права, размер, дата).
ls -a — показать скрытые файлы.
cp (copy): Копирует файлы или каталоги.
cp file1 file2 — скопировать файл.
cp -r dir1 dir2 — скопировать папку рекурсивно.
mv (move): Перемещает или переименовывает файлы.
mv old.txt new.txt — переименование.
mv file.txt /tmp/ — перемещение.
pwd (print working directory): Выводит полный путь к текущей директории.
rm (remove): Удаляет файлы или каталоги.
rm file — удалить файл.
rm -r dir — удалить папку.
cd (change directory): Изменяет текущую директорию.
cd /home — переход по пути.
cd .. — на уровень выше.
man (manual): Открывает руководство по команде.
man ls — показать справку по ls.
19. Команды CAT, ECHO. Назначение, способ применения.
cat (concatenate): Выводит содержимое файла на экран (стандартный вывод). Также используется для объединения файлов.
cat file.txt — показать содержимое.
echo: Выводит строку текста или значение переменной.
echo "Hello" — напечатать Hello.
echo $HOME — вывести путь к домашней папке.
20. Команда FIND. Назначение, способ применения.
Назначение: Поиск файлов и директорий в файловой системе по заданным критериям.
Синтаксис:find [путь] [критерии] [действие]
find . -name "*.txt" — найти все txt-файлы в текущей папке и подпапках.
find /var/log -type f -size +10M — найти файлы больше 10 Мб.
21. Команда GREP. Назначение, способ применения.
Назначение: Поиск строк, соответствующих шаблону (регулярному выражению), внутри файлов или в потоке данных.
Примеры:
grep "error" syslog — найти строки со словом “error” в файле.
grep -r "config" /etc/ — рекурсивный поиск по всем файлам в папке.
ps aux | grep firefox — поиск процесса через конвейер.
22, 23. Команды CHMOD, CHOWN. Назначение, способ применения.
chmod (change mode): Изменяет права доступа к файлу (чтение, запись, выполнение).
Числовой способ:chmod 755 script.sh (7=rwx для владельца, 5=rx для остальных).
Символьный способ:chmod u+x script.sh (добавить владельцу право на выполнение).
chown (change owner): Изменяет владельца и группу файла.
chown user:group file.txt — назначить владельца user и группу group.
chown -R user dir/ — применить рекурсивно к папке.
24. Команды TAR, ZIP. Назначение, способ применения.
tar (tape archive): Основной инструмент архивации в Linux (часто используется с сжатием gzip).
tar -cvf archive.tar folder — создать архив (Create).
tar -xvf archive.tar — распаковать архив (eXtract).
tar -czvf archive.tar.gz folder — создать с сжатием gzip.
zip / unzip: Работа с форматом .zip (для совместимости с Windows).
zip -r archive.zip folder — запаковать папку.
unzip archive.zip — распаковать.
25. Процессы в Linux. Порождение. Первый процесс. Copy-on-write.
Порождение: Новые процессы создаются системным вызовом fork(). Он создает полную копию родительского процесса. Затем вызывается exec(), который заменяет код клона на код новой программы.
Первый процесс: При загрузке ядра запускается процесс init (или systemd в современных системах). Его PID всегда равен 1. Он является предком всех остальных процессов.
Copy-on-write (COW): Механизм оптимизации при fork(). Память родителя не копируется физически сразу. Дочерний процесс получает ссылки на те же страницы памяти. Физическое копирование происходит только в момент, когда один из процессов пытается записать (изменить) данные в памяти.
Вопрос: Зачем разделять fork() и exec()? Почему нельзя сразу создать процесс одной командой?
Ответ: Это нужно для настройки процесса перед запуском новой программы.
Когда делается fork(), мы получаем копию.
В этот момент (между fork и exec) мы можем, например, перенаправить ввод-вывод (заменить stdout на файл для реализации >), изменить права или приоритет.
И только потом вызвать exec(), чтобы запустить чистый код. Без разделения было бы очень сложно реализовать перенаправление потоков (|, >).
26. Процессы в Linux. Виды процессов. Управление процессами.
Виды:
Интерактивные: Запущены пользователем в терминале (связаны с сеансом).
Пакетные (Фоновые): Выполняются без участия пользователя, имеют низкий приоритет.
Демоны: Системные процессы, работающие в фоне, запускаются при старте системы.
Управление:
Приостановка (Ctrl+Z), прерывание (Ctrl+C).
Перевод в фон (bg) и возвращение (fg).
Изменение приоритета (nice, renice).
Завершение (сигналы через kill).
27. Процессы в Linux. Мониторинг. Зомби-процессы.
Мониторинг: Осуществляется командами top, htop, ps. Они показывают PID, потребление CPU/MEM, статус.
Зомби (defunct, статус Z): Процесс, который завершил выполнение, но его родительский процесс еще не считал его код возврата (через вызов wait()). Зомби не потребляют память (кроме записи в таблице процессов), но занимают PID.
28. Процессы в Linux. Службы. Управление. Примеры.
Служба (Unit/Service): Описанный конфигурационным файлом процесс (обычно демон), которым управляет система инициализации (systemd).
Управление (systemctl):
36. ОС Linux. Назначение директорий /var, /home, /etc.
/var (Variable): Содержит часто изменяемые файлы.
Логи (/var/log), почтовые ящики, базы данных, кэш, временные файлы блокировок.
/home: Содержит домашние директории пользователей (например, /home/ivan). Здесь хранятся личные документы, настройки пользователя.
/etc (Editable Text Configuration): Основное место хранения общесистемных конфигурационных файлов. Исполняемых файлов тут быть не должно.
37. ОС Linux. Назначение директорий /root, /usr, /dev.
/root: Домашняя директория суперпользователя (root). Она отделена от /home, чтобы админ мог войти, даже если раздел /home не примонтирован.
/usr (Unix System Resources / User System Resources): Вторичная иерархия. Содержит программы, библиотеки, документацию, доступные всем пользователям (аналог Program Files).
/usr/bin: Большинство пользовательских команд.
/dev (Devices): Содержит файлы устройств. В Linux общение с «железом» идет через чтение/запись в эти файлы.