All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 16s
70 lines
9.4 KiB
Markdown
70 lines
9.4 KiB
Markdown
## Дмитрий Кетов - "Внутреннее устройство Linux" (рандомные заметки)
|
||
|
||
### Главы 1, 2
|
||
|
||
В Linux 2 режима работы программных средст - kernel mode (kernel space), user mode (user space). Основное различие в привелегиях доступа к аппартаным средаствам.
|
||
|
||
Совокупность работающих в ядерном режиме программ называют ядром
|
||
|
||
Ф-ии ОС реализуемые ядерными компонентами, доступны внеядерным посредством системных вызовов
|
||
|
||
(стр.23) Кроме всех вышеперечисленных задач, файловая подсистема, подсистема ввода-вывода и подсистема управления процессами в совокупности предоставляют процессам средста межпроцессорного взаимодействия, такие как сигналы, каналы, сокеты и разделяемая память
|
||
|
||
|
||
- `strace` - Системные вызовы (ядро)
|
||
- `ltrace` - Библиотечные функции (например, libc)
|
||
|
||
Сеанс командного интерфейса пользователя продолжается двусторонним попеременным диалогом с командным интерпретатором, где пользователь вводит команды и получает результат их выполнения.
|
||
|
||
- `users, who, w` - списко всех терминальных входов пользователей
|
||
|
||
`^D` - используется для оповещения драйвера о завершении ввода при работе с интерактивными (ведущими с пользователем двусторонний попеременный диалог) программами
|
||
|
||
`^Z` - временно приостанавливает выполняющуюся программу
|
||
|
||
`finger <username>` - свойства учётной записи пользователя
|
||
|
||
### Глава 3 - Подсистема управления файлами и вводом-выводом
|
||
|
||
- В аббревиатуре UNICS, да-да UNICS (UNICS был до UNIX), а не UNIX, центральное место занимает идея решать задачи единым способом
|
||
|
||
- Информация есть файл
|
||
|
||
- Файл является единицей обеспечения доступа к информации, а не единицей ей хранения, как в других ОС
|
||
|
||
- /etc - editable text configuration
|
||
|
||
- sbin - superuser's binaries для программ системного администрирования
|
||
|
||
- Каналы и сокеты используют для передачи данных от процесса к процессу оперативную память ядра ОС, а не память накопителя, как обычные файлы
|
||
|
||
- Канал - однонаправленная передача (симплексная)
|
||
|
||
- Сокет двунаправленная (дуплексная). Сокет используют при взаимодействии по схеме клиент-сервер
|
||
|
||
- `stat <filename>` - метаданные файла
|
||
|
||
- При запросе процесса на отркытие файла системным вызовом open производится его однократный (относительно медленный) поиск имени файла в дереве каталогов и для запросившего процесса создаётся так называемый файловый дескриптор. Файловый дескриптор содержит информацию, описывающую файл (инод, ...). При последующих операциях read write доступ к данным происходит с использованием файлового дескриптора.
|
||
|
||
- Файловая система - структура, решающие задачи хранения информации
|
||
|
||
- Информацию об аппаратных устройствах, обнаруженных ядром операционной системы на шинах PCI, USB, SCSI и прочих, предоставляет псевдофайловая система `sysfs`
|
||
- Информацию о процессах, нитях и прочих сущностях и используемых ими ресурсов предоставляет `proc`
|
||
- 110100100 (в двоичной) - 644 (в восьмеричной)
|
||
- для пользователя root проверик прав не осуществляются
|
||
- за счет SGID-атрибута каталога владельцем всех файлов, помещаемых в этот каталог, автоматически назначается группа-владелец самого каталога, а создатель (владелец) файла может теперь назначать права доступа для всех членов этой группы своему файлу
|
||
- атрибут t ограничевает возможность удалять чужие файлы
|
||
- В отличие от AppArmor, модуль SELinux оперирует не профилями отдельных программ, а общим набором правил, называемым политикой. Сами правила правила - политики описывают возможные отношения между процессами и файлами согласно их меткам безопасности. Каждая метка состоит из четырех компонентов user:role:type:level, которые могут быть использованы лишь частично.
|
||
- флаг s предписывает файловой системе при удалении файла не только высвобождать принадлежащие ему блоки, но и обнулять их, а флаг S заставляет операции записи в файл выполняться синхронно, миния отложенную запись с использованием дискового кэша. флаг i делает файл неприкасаемым - его нельзя удалить изменить никому, даже руту, флаг а даёт возможность добавлять только данные в конец, изменять уже имеющиеся нельзя (установка определенный файлов требует привелегий процесса)
|
||
- файл является универсальной сущностью которая позволяет организовать однородный доступ к информации, вне зависимости от свойств ее источника
|
||
|
||
### Глава 4 - Управление процессами и памятью
|
||
|
||
- процессы ОС являются контейнерами для многозадачного выполнения программ, как последовательных, так и параллельных
|
||
- для запуска новой программы в новом дочернем процессе используются оба системных вызова fork и exec согласно принципу fork-and-exec раздвоиться и запустить, никакого физического копирования памяти не происходит, согласно принципу copy-on-write, кроме копирования небольшого количества служебных структур данных (таблиц страниц) процесса
|
||
- параллельная обработка потоков поступающий событий при помощи нитей производится с минимально возможными накладными расходами, что позволяет достигать колоссальной производительности по количеству обрабатываемых сообщений в единицу времени
|
||
- процессы и нити в ядре Linux сводятся к универсальному понятию "задача". Задача, все ресурсы которой (память, открытые файлы и т.д.) используются совместно с другими такими же задачами, является нитью. И наоборот, процессами являются такие задачи, которые обладают набором своих частных, индивидуальных ресурсов.
|
||
- сискол fork и pthread_create это обёртки на clone
|
||
- возможности процесса выполнять те или иные действия по отношению к другим объектам определяется его специальными свойствами - атрибутами процесса
|
||
- NICE от -20 до 19
|