
- •1. Клиент-серверная организация системного программного обеспечения.
- •2. Система электронной документации.
- •5. Процессы в состоянии zombie.
- •6. Атрибуты процесса. Ключевые слова команды ps.
- •Id,state,time,sl,re,pagein,vsz,rss,lim,tsiz,%cpu,%mem, command.
- •7. Сигналы.
- •9. Встроенные команды управления атрибутом cdir
- •10. Встроенная команда изменение атрибута umask
- •11. Управление заданиями.
1. Клиент-серверная организация системного программного обеспечения.
Системное программное обеспечение организовано по клиент-серверной технологии. Сервером является ядро UNIX, управляющее всеми аппаратными частями и устройствами (Hardware), включая:
- центральный процессор,
- оперативную память,
- периферийные устройства (дисплей, клавиатура, сканер, принтер, и т.д.),
- шины и порты внешних устройств,
- все виды внешней памяти и внешние устройства (Hard-диски, стримера, сменные устройства, подключаемые через порты USB, SOTA, и т.д.).
Клиентами являются приложения (все утилиты, все СУБД, все Shell, сетевые протоколы, X-сервер, все графические интерфейсы, VIDEO и AUDIO системы и т.д.). Любое приложение работает в режиме задачи, всякий раз обращаясь с запросом к ядру, как к серверу, когда нужно какое-то действие любого аппаратного компонента системы. Средством обращения приложения с запросом к ядру является системный вызов (SYSCALL), форма которого идентична вызову подпрограммы из библиотеки С. Различить системный вызов от вызова библиотеки С можно по номеру секции системы электронной документации man, содержащей описания вызова. Системные вызовы описаны в секции (2), функции библиотеки С - в секции (3), стандартные утилиты - в секции (1). По встроенным командам (builtins) описание содержится в документации используемого командного интерпретатора оболочки (в нашем курсе это man bash). Например open и close (открыть файл любого типа и закрыть его) это системные вызовы, поэтому команды man open, man close выдадут описания из FreeBSD System Calls Manual, секция 2. Системные вызовы будем обозначать с номером секции в скобках: open(2), close(2).
Основными функциями ядра являются:
- создание и управление процессами;
- распределение памяти и управление памятью;
- создание и обеспечение доступа к файлам и периферийным устройствам.
Ядро включает в себя аппаратный контроль, интерфейс системных вызовов, с помощью которого процессы запрашивают и получают услуги ядра, и три подсистемы, реализующие функции ядра:
- файловая подсистема, взаимодействующая с обоими нижеследующими;
- подсистема управления процессами;
- подсистема ввода вывода.
Функции файловой подсистемы:
1. Обеспечение унифицированного интерфейса доступа к данным, расположенным на дисковых накопителях и к периферийным устройствам. Одни и те же системные вызовы open(2), read(2), write(2) могут использоваться как при чтении или записи данных на диск, так и при выводе на принтер, терминал, произвольное USB-устройство или любого другого интерфейса.
2. Контролирует права доступа к файлу, выполняет операции размещения и удаления файла, выполняет запись и чтение данных файла. Практически все функции выполняются через интерфейс файловой системы (в том числе и обмен с периферийными устройствами), права доступа к файлам целиком определяют привилегии пользователя в системе.
3. Обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода-вывода.
Функции подсистемы управления процессами:
- создание и удаление процессов;
- выделение системных ресурсов процессам (память, время процессора);
- синхронизация процессов;
- межпроцессное взаимодействие.
Процесс ядра, называемый планировщиком (scheduler) разрешает конфликты между процессами, претендующими на системные ресурсы (время процессора, память, периферийные устройства). Планировщик следит, чтобы ни один процесс не захватил монопольно разделяемые системные ресурсы. Процессор отбирается у процесса, ожидающего длительной операции ввода-вывода или по истечении отведенного процессу кванта времени. В этом случае планировщик выбирает ожидающий процессор процесс с наивысшим приоритетом и передает ему управление.
Модуль управления памятью обеспечивает размещение оперативной памяти для процессов. Если памяти недостаточно, ядро перемещает части процесса или процессов в специальную область диска (SWAP), освобождая память для активного, выполняющегося в данный момент процесса. Это называется страничным обменом (Swapping). Современные системы реализуют виртуальную память, когда каждый процесс выполняется в собственном, независимом от других процессов, логическом адресном пространстве, которое может значительно превышать доступную физическую память.
Модуль межпроцессного взаимодействия отвечает за уведомление процессов с помощью сигналов и обеспечивает возможность обмена данными между различными процессами.
Функции подсистемы ввода-вывода:
- выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (дискам, терминалам, и.т.д.);
- выполняет необходимую буферизацию данных;
- взаимодействует с драйверами устройств – специальными модулями ядра (которые могут быть и загружаемыми модулями), непосредственно обслуживающими внешние устройства.