Инициализация ядра операционной системы

СОДЕРЖАНИЕ

 

Задачі адміністрування комп'ютерних систем і мереж. 2

1) Процес завантаження ОС сімейства UNIX. 3

2) Керування (інсталяція, відновлення та вилучення) пакетами прикладних програм в ОС UNIX і Linux. 5

3) Керування бюджетами користувачів у UNIX-системах. 6

4) Реєстрація подій у системах сімейства UNIX. 7

5) Механізми і команди керування процесами користувачів в ОС UNIX. 8

6) Керування періодичними процесами (утиліта cron) в UNIX-системах. 9

7) Мережні файлові системи (NFS) в ОС UNIX. 10

8) Базові команди керування мережами в ОС UNIX. 11

9) Протокол керування мережами SNMP. 12

10) Архітектура графічної підсистеми X Window. 13

11) Організація захисту програм і даних в ОС UNIX. 15

12) Конфігурація, складання й інсталяція ядра ОС GNU/Linux. 16

13) Архітектура ядра ОС UNIX (Linux). 18

14) Модифікація вихідного коду ядра ОС GNU/Linux і засоби його відлагодження. 20

15) Концепція віртуальної файлової системи в ОС UNIX. 21

16) Програмний інтерфейс ядра ОС GNU/Linux для керування периферійними пристроями. 22

17) Компіляція, встановлення і видалення модулів в ОС GNU/Linux. 23

18) Програмний інтерфейс модулів із ядром в ОС GNU/Linux. 24

19) Використання спеціальних файлів в ОС UNIX для доступу до пристроїв. 25

20) Керування потоком обміну та шириною полоси пропускання в ОС GNU/Linux. 26

21) Структура драйверу символьного пристрою в ОС Linux. 28

23) Архітектура OS Windows Server 2003. 29

1)
Задачі адміністрування комп'ютерних систем і мереж.

Задачи, которые решает администрирование систем и сетей:

− установка и удаление пакетов прикладных программ;

− установка ОС на ПК;

− поддержка целостности файловой системы;

− поддержка дисковых квот;

− установка прав на каталоги и файлы;

− обновление системы и прикладных программ;

− настройка защиты от несанкционированного доступа.


2) Процес завантаження ОС сімейства UNIX.


Досистемный загрузчик

Как правило, сразу после включения питания программа ПЗУ BIOS проводит тестирование оборудования, затем запускается досистемный загрузчик.

Задача этого этапа – определить (возможно, с помощью пользователя), с какого устройства будет идти загрузка, загрузить оттуда специальную программу-загрузчик и запустить её. Например, выяснить, что устройство для загрузки – жесткий диск, считать самый первый сектор этого диска и передать управление программе, которая находится в считанной области.

Загрузчик первого уровня

Загрузчик первого уровня занимает обычно не более одного сектора в самом начале диска – в его загрузочном секторе (Master Boot Record).

Задача первичного загрузчика определить, где на диске находится загрузчик второго уровня, загрузить его в память и передать ему управление.

Загрузчик второго уровня

Вторичный загрузчик читает образ ядра в определённый адрес памяти и передаёт туда управление. Большинство операционных систем имеют собственные загрузчики первого и второго уровней. Однако, существуют универсальные загрузчики, например GRUB.

Инициализация ядра операционной системы

Первым делом ядро занимается определением параметров вычислительной подсистемы компьютера: выясняет тип и быстродействие центрального процессора, объем оперативной памяти,

На следующем шаге ядро определяет состав и архитектуру всего аппаратного наполнения компьютера: тип и параметры шин передачи данных и устройств управления ими (контроллеров), список внешних устройств, доступных по шинам, настройки этих устройств – диапазон портов ввода-вывода, адрес ПЗУ, занимаемое аппаратное прерывание, номер канала прямого доступа к памяти и т.п..

Ядро на основании переданного ему параметра выбирает корневой раздел – файловую систему, содержащую будущий каталог / и его подкаталоги (для системной начальной загрузки важны каталоги /etc, /bin, и /sbin). Корневой раздел монтируется в качестве /. После этого ядро запускает свой первый процесс – init (по умолчанию,/sbin/init).

Процесс init

С этого момента операционная система обеспечивает полноценную функциональность всем исполняющимся процессам. В UNIX первым запускаемым процессом является init, о котором сказано в следующем разделе.


3) Керування (інсталяція, відновлення та вилучення) пакетами прикладних програм в ОС UNIX і Linux.

Современные системы на базе Linux включают огромное число общих для многих программ ресурсов: разделяемых библиотек, содержащих стандартные функции, исполняемых файлов, скриптов и стандартных утилит, необходимых для корректной работы многих программ и т. д. Удаление или изменение версии одного из составляющих систему компонентов может повлечь неработоспособность других, связанных с ним компонентов, или даже вывести из строя всю систему. В контексте системного администрирования проблемы такого рода называют нарушением целостности системы. Задача администратора — обеспечить наличие в системе согласованных версий всех необходимых программных компонентов (обеспечение целостности системы).

Для установки, удаления и обновления программ и поддержания целостности системы в Linux в первую очередь стали использоваться менеджеры пакетов (такие, как RPM в дистрибутивах RedHat или dpkg в Debian GNU/Linux, yum – Fedora). С точки зрения менеджера пакетов программное обеспечение представляет собой набор компонентов — программных пакетов. Такие компоненты содержат в себе набор исполняемых программ и вспомогательных файлов, необходимых для корректной работы ПО. Менеджеры пакетов дают возможность унифицировать и автоматизировать сборку двоичных пакетов и облегчают установку программ, позволяя проверять наличие необходимых для работы устанавливаемой программы компонент подходящей версии непосредственно в момент установки, а также производя все необходимые процедуры для регистрации программы во всех операционных средах пользователя. Сразу после установки программа оказывается доступна пользователю из командной строки и появляется в меню всех графических оболочек.

Для установки пакетов с помощью yum используется параметр install. Так, для установки tsclient введите:

yum install tsclient

Обновление системы осуществляется с помощью одной команды - update. Таким образом:

yum update

Удаление пакетов осуществляется с помощью команды remove. Так,

yum remove foo

RPM

Чтобы проинсталлировать пакет наберите команду:

bash$ rpm -i "полное имя пакета"

Удаление пакетов из системы осуществляется так же просто.

bash$ rpm -e apache


4) Керування бюджетами користувачів у UNIX-системах.

База данных о пользователях состоит из таких файлов:

/etc/passwd – это список пользователей, которые известны системе. В процессе регистрации пользователя система обращается к данному файлу в поисках идентификатора пользователя, а также с целью проверки входного пароля. Каждая строка файла описывает одного пользователя и содержит семь полей, разделенных двоеточиями:

- регистрационное имя;

- зашифрованный пароль (если не используется файл скрытых паролей);

- идентификатор пользователя;

- идентификатор группы по умолчанию;

- поле GECOS (полное имя, рабочий и домашний телефоны);

- начальный каталог;

- регистрационный интерпретатор команд.

/etc/shadow – доступен для чтения только суперпользователю и предназначен для хранения зашифрованных паролей и учетной информации, которые недоступны в файле passwd. Файл содержит одну строку для каждого пользователя. Каждая строка состоит из 9 полей, разделенных двоеточиями:

- регистрационное имя;

- зашифрованный пароль;

- дата последнего изменения пароля;

- минимальное число дней между изменениями пароля;

- максимальное число дней между изменениями пароля;

- число дней, которое должно остаться до истечения срока действия пароля, чтобы было выдано предупреждение;

- период отсутствия активности, после которого учетная запись будет отменена;

- срок действия учетной записи;

- флаги.

/etc/group – содержит имена UNIX-групп и списки членов каждой группы. Каждая строка представляет одну группу и содержит четыре поля:

- имя группы;

- зашифрованный пароль (устаревшее, редко используемое поле);

- идентификатор группы;

- список членов (разделяются запятыми).

/etc/default/useradd – содержит начальные параметры для утилиты useradd.

/etc/login.defs – содержит параметры пользователя по умолчанию.

/etc/skel – директория содержит файлы домашней директории, создаваемые в ней по умолчанию.

Adduser и addgroup добавляют пользователей и группы в систему, исходя из параметров, заданных в командной строке и информации из файла /etc/adduser.conf.

vipw, vigr- служат для редактирования файлов паролей, групп, теневых паролей пользователей или групп.

Last, lastb - выводит список пользователей, зарегистрировавшихся в системе последними


5) Реєстрація подій у системах сімейства UNIX.

Учет событий в системе или сети является важной задачей и производится обычно для текущего контроля состояния системы (logging), для отладки системных сервисов (debug logging), а также для подсчета потребляемых пользователями ресурсов (accounting). Обычно система учета регистрирует события в виде текстовых сообщений, можно также накапливать учетные данные в переменных-счетчиках, в базах данных и т. п. Стандартным для UNIX подходом к ведению учета событий в системе является использование подсистемы SYSLOG.

Подсистема syslog и одноименный сетевой протокол применяются для регистрации любых событий в системе или сети. Чтобы событие было записано с помощью демона 'syslogd' в журнальном файле, необходимо чтобы программа, зафиксировавшая событие, передала его в syslogd по сети или через UNIX-сокет.

Преимущества syslog по сравнению с индивидуальным учетом в каждой программе - это централизация учета и унификация формата сообщений. Учетная информация разбивается по нескольким каналам (FACILITY) и уровням приоритетности (PRIORITY).

Настройки демона syslogd записаны в файле /etc/syslog.conf (он может находиться в другом каталоге - см. 'man syslogd' и 'man syslog.conf'). Если изменяется файл syslog.conf , нужно послать демону syslogd сигнал SIGHUP, иначе изменения не вступят в силу. По сигналу “отбой” (SIGHUP) демон syslogd закрывает свои файлы регистрации, перечитывает конфигурационный файл и вновь запускает процесс регистрации.

Для записи сообщений в журнальные файлы из командной строки или командного файла существует команда 'logger', а в программах на языке Си можно использовать библиотечные вызовы openlog(), closelog(), syslog() и setlogmask().


6) Механізми і команди керування процесами користувачів в ОС UNIX.

Механизм управления процессами в ядре ОС UNIX реализован на основе подсистемы управления процессами.

Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:

− создание и удаление процессов

− распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами

− синхронизацию процессов

− межпроцессное взаимодействие

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

Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. Оперативная память является дорогостоящим ресурсом, и, как правило, ее редко бывает "слишком много". В случае, если для всех процессов недостаточно памяти, ядро перемещает части процесса или нескольких процессов во вторичную память (как правило, в специальную область жесткого диска), освобождая ресурсы для выполняющегося процесса. Все современные системы реализуют так называемую виртуальную память: процесс выполняется в собственном логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью. Модуль межпроцесного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.

Утилита nice применяется для запуска программы на выполнение с относительным приоритетом (nice number), отличным от принятого по умолчанию.

Утилита ps выводит информацию о существующих процессах.

Утилита kill посылает процессам с идентификаторами и т. д. сигнал signo. Сигнал signo может быть указан как в числовой, так и в символьной форме. Команда kill - I выводит таблицу соответствия между символьными именами сигналов и их числовыми значениями.

Утилита at считывает команды стандартного потока ввода и группирует их в задание at, которое будет выполнено в указанное пользователем время.

Утилита top – аналог ps в реальном времени.


7) Керування періодичними процесами (утиліта cron) в UNIX-системах.

Демон cron запускается автоматически при старте системы (конкретно -сценарием /etc/rc.d/cron), и каждую минуту проверяет файлы расписаний пользователей и системный файл расписаний /etc/crontab на предмет наличия заданий, которые должны быть выполнены в данную минуту. По умолчанию, каждый пользователь может иметь свой файл расписаний. Изменить это можно с помощью файлов /var/cron/allow и /var/cron/ использование cron будет разрешено только пользователям, перечисленным в нем. Файлы расписаний располагаются в /var/cron/tabs с именами, соответствующими имени пользователя. Для управления ими следует использовать утилиту crontab, синтаксис которой представлен ниже: crontab [-u user] (-l | -r | -e) Опция -u позволяет работать с файлом расписаний указанного пользователя user, а не текущего, как это происходит без данной опции. Если Вы работаете через su, лучше всегда использовать этот ключ, чтобы избежать разночтений. Ключ -l позволяет вывести на экран пользовательский файл расписаний, -r - удалить его, -e редактировать. Для редактирования вызывается редактор, указанный в переменной окружения EDITOR или VISUAL. Формат строки задания в пользовательском файле следующий: Min Hour Day Month WDay Command То есть через пробельные символы (пробелы и символы табуляции)указываются минута, час, день, месяц, день недели, когда должна быть выполнена команда, указанная в шестом поле. Звездочка "*" означает все допустимые значения.

8) Мережні файлові системи (NFS) в ОС UNIX.

Network File System (NFS) — протокол сетевого доступа к файловым системам, первоначально разработан Sun Microsystems в 1984 году. Основан на протоколе вызова удалённых процедур (ONC RPC, Open Network Computing Remote Procedure Call, RFC 1057, RFC 1831). Позволяет подключать (монтировать) удалённые файловые системы через сеть, описан в RFC 1094, RFC 1813, RFC 3530 и RFC 5661.

NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от FTP протокол NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS файлом, без каких либо модификаций самой программы.

NFS клиенты получают доступ к файлам на NFS сервере путем отправки RPC запросов на сервер. Это может быть реализовано с использованием обычных пользовательских процессов — а именно, NFS клиент может быть пользовательским процессом, который осуществляет конкретные RPC вызовы на сервер, который так же может быть пользовательским процессом.

Стандартной сетевой файловой системой для UNIX'а является NFS. Любая Unix-машина умеет монтировать по протоколу NFS удаленные файловые системы и использовать их как свои собственные, а так же может выделять свои каталоги для других машин. Выглядит этопримерно так: mount -F nfs udalennaq.mashina:/katalog_tam /katalog Хотя NFS был когда-то разработан для Unix'а, имеется реализация NFS для MSDOS-овских PC. Эти пакеты принято называть сводным именем PC/NFS (Не путать с названием "PC-NFS" - это реализация PC/NFS от фирмы "Sun Select"). Т.е. PC'юк, на котором запущен FS для PC, может монтировать в качестве сетевых дисков каталоги Unix'овской машины, которые она выделяет в NFS. -Фактически, PC/NFS дает для PC те же самые возможности, что и Netware - удаленный сетевой диск и удаленный сетевой принтер. Разница лишь в том, что Unix-host, помимо позволения NFS-ения себя, в состоянии заниматься и своими собственными задачами, а сервер Netware ничем кроме обслуживания своих клиентов, изображая для них диск с ethernet'ом, заниматься не приспособлен, но работает быстрее раза в 1.5-2

9) Базові команди керування мережами в ОС UNIX.

Ifconfig

Команда ifconfig используется для конфигурирования сетевых интерфейсов ядра. Она используется на этапе загрузки операционной системы при необходимости настройки интерфейсов. После этого она обычно используется только при отладке или настройке производительности системы.

Если аргументы не переданы, ifconfig выдает информацию о состоянии активных интерфейсов. Если указан один аргумент интерфейс, выдается информация только о состоянии этого интерфейса; если указан один аргумент -a, выдается информация о состоянии всех интерфейсов, даже отключенных. Иначе команда конфигурирует указанный интерфейс.

В ядре Linux также есть утилита ip, которая позволяет управлять большим числом настроек сетевого интерфейса.

Route

Выводит на экран и изменяет записи в локальной таблице IP-маршрутизации.

Синтаксис

route [-f] [-p] [команда [конечная_точка] [mask маска_сети] [шлюз] [metric метрика]] [if интерфейс]]

Команда Назначение
add Добавление маршрута
change Изменение существующего маршрута
delete Удаление маршрута или маршрутов
print Печать маршрута или маршрутов

Описание

Команда netstat показывает содержимое различных структур данных, связанных с сетью, в различных форматах в зависимости от указанных опций.

Для конфигурации сети:

/etc/hosts - для установки соответствия между именами узлов и IP-адресами в локальной сети.

/etc/sysconfig/network - используется командными файлами загрузки для настройки сетевых интерфейсов и статических маршрутов.

Утилиты:

hostname [имя_компьютера] - задать/просмотреть имя компьютера.

ping [опции] имя_хоста | адрес- служит для проверки работоспособности отдельных компьютеров и сегментов сети. Она посылает ICMP-пакет ECHO_REQUEST конкретному компьютеру и ждет ответа. Сообщение команды ping о потере пакетов говорит лишь о том, что какой-то компонент (протокол или драйвер) сети работает неправильно.

traceroute [опции] имя_хоста | адрес- позволяет установить последовательность шлюзов, через которые проходит IP-пакет на пути к пункту своего назначения. Если эта команда не работает (или работает слишком медленно), это может быть связано с ошибкой при определении имени компьютера через DNS. Можно использовать 'traceroute –n’, она выводит только IP-адреса шлюзов. traceroute использует символ ‘*’ при невозможности определить время прохождения пакета или при тайм-ауте.