Invest-currency.ru

Как обезопасить себя в кризис?
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Архитектура ос unix

Занятие 5. Особенности архитектуры Unix и Linux

· Структура ядра Unix

· Файловая система Unix

· Файловая система Linux

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

В системе UNIX может одновременно выполняться множество процессов (задач), причем их число логически не ограничивается, и множество частей одной программы может одновременно находиться в системе. Благодаря специальному механизму управления памятью, каждый процесс развивается в своем защищенном адресном пространстве, что гарантирует безопасность и независимость от других процессов. Различные системные операции позволяют процессам порождать новые процессы, завершают процессы, синхронизируют выполнение этапов процесса и управляют реакцией на наступление различных событий.

Существует два основных объекта операционной системы UNIX, с которыми приходиться работать пользователю – файлы и процессы. Эти объекты сильно связаны друг с другом, и в целом организация работы с ними как раз и определяет архитектуру операционной системы.

Все данные пользователя хранятся в файлах; доступ к периферийным устройствам осуществляется посредством чтения и записи специальных файлов; во время выполнения программы, операционная система считывает исполняемый код из файла в память и передает ему управление.

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

Структура ядра Unix

Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы (процессы в пользовательской части операционной системы) от особенностей ее архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам посредством системных вызовов. Таким образом, в системе можно выделить два уровня привилегий: уровень системы (привиегии специального пользователя root) и уровень пользователя (привилегии всех остальных пользователей).

Важной частью системных программ являются демоны. Демон – это процесс, выполняющий опеределенную функцию в системе, который запускается при старте системы и не связан ни с одним пользовательским терминалом. Демоны предоставляют пользователям определенные сервисы, примерами которых могут служить системный журнал, веб-сервер и т.п.. Аналогом демонов в операционной системе Windows NT и более поздних версиях являются системные службы.

Рисунок 5.1 Архитектура операционной системы UNIX.

Операционная система UNIX обладает классическим монолитным ядром, в котором можно выделить следующие основные части:

  • Файловая подсистема
  • Доступ к структурам ядра осуществляется через файловый интерфейс.
  • Управление процессами

Сюда входит управление параллельным выполнением процессов (планирование и диспетчеризация), виртуальной памятью процесса, и взаимодействием между процессами (сигналы, очереди сообщений и т.п.).

Файловая система Unix

Термин файловая система по историческим причинам обозначает одновременно и иерархию каталогов и файлов, и часть ядра, управляющую доступом к каталогам и файлам.

Каджый файл в древовидной структуре расположен в определенном хранилище файлов – каталоге, каждый каталог, в свою очередь, также расположен в некотором каталоге. Таким образом, по принципу вложения элементов файловой системы (файлов и каталогов) друг в друга строится дерево, вершинами которого являются непустые каталоги, а листьями – файлы или пустые каталоги. Корень такого дерева имеет название корневой каталог и обозначается каким-либо специальным символом или группой символов (например, «C:» в операционной системе Windows). Каждому файлу соответствует некоторое имя, отпределяющее его расположение в дереве файловой системы. Полное имя файла состоит из имен всех вершин дерева файловой системы, через которые можно пройти от корня до данного файла (каталога), записывая их слева-направо и разделяя специальными символами-разделителями.

Файлы и каталоги идентифицируются не по именам, а по индексным узлам (i-node) – индексам в общем массиве файлов для данной файловой системе. В этом массиве хранится информация об используемых блоках данных на носителе, а также – длина файла, владелец файла, права доступа и другая служебная информация под общим названием «метаданные о файле». Логические же связки типа «имя–i-node» – есть ни что иное как содержимое каталогов.

Таким образом, каждый файл характеризуется одним i-node, но может быть связан с несколькими именами – в UNIX это называют жёсткими ссылками. При этом, удаление файла происходит тогда, когда удаляется последняя жёсткая ссылка на этот файл. Важной особенностью таких файловых систем является то, что имена файлов зависят от регистра, другими словами файлы test.txt и TEST.txt отличаются (т.е. являются разными строками в файле директории).

Являясь операционной системой семейства Unix, Linux следует установленным стандартам и объединяет в себе три основных части.

Ядро (kernel) — основной компонент ОС, отвечающий за управление процессами, виртуальной памятью и драйверами устройств. Ядро Linux представляет собой единый блок бинарного кода. Все коды ядра и структуры данных, в том числе драйверы устройств, коды распределения ресурсов и виртуальной памяти, сетевой поддержки, а так же файловая система — хранятся в едином адресном пространстве. Преимуществом такой структуры является то, что не требуется никаких переключений при запросах процессами системных ресурсов или прерываниях от различных устройств. Общее адресное пространство, однако, не препятствует модульности системы. По мере необходимости Linux подгружает в память либо выгружает из нее указанные модули. В Linux все ядро работает в привилегированном режиме — режиме ядра. Никакая часть кода не работает в режиме пользователя. Фрагменты поддержки ОС, не требующие запуска в режиме ядра, помещаются в раздел системных библиотек.

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

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

Файловая система Linux

Linux является операционной системой семейства Unix и ее файловая система полностью соответствует стандартам данного класса. В Unix под файлом понимается не только объект, хранящийся на диске, но и любое устройство, поддерживающее ввод/вывод потока данных. Например, драйверы устройств рассматриваются как файлы.

В Unix различают несколько типов файлов. Каждый тип файлов имеет свои особенности реализации. Эти особенности, однако, скрыты от пользователя программным уровнем ядра Linux, получившим название виртуальной файловой системы (Virtual File System — VFS).

Виртуальная файловая система VFS поддерживает следующие типы файлов:

  • Обычные файлы
  • Каталоги
  • Специальные файлы
  • Именованные конвейеры

Символьные связи VFS не ориентируется на какую-либо конкретную файловую систему, механизмы реализации файловой системы полностью скрыты как от пользователя, так и от приложений. В ОС нет системных вызовов, предназначенных для работы со специфическими типами файловой системы, а имеются абстрактные вызовы типа open, read, write и другие, которые имеют содержательное описание, обобщающее некоторым образом содержание этих операций в наиболее популярных типах файловых систем. VFS также предоставляет ядру возможность оперирования файловой системой, как с единым целым: операции монтирования и демонтирования, а также операции получения общих характеристик конкретной файловой системы (размера блока, количества свободных и занятых блоков и т.п.) в единой форме. Если конкретный тип файловой системы не поддерживает какую-то абстрактную операцию VFS, то файловая система должна вернуть ядру код возврата, извещающий об этом факте.

В состав VFS Linux входят два основных компонента:

  • Набор определений, характеризующих объект типа файл;
  • Программный уровень, обеспечивающий работу с подобными объектами;

Основные типы объектов, выделяемых VFS:

  • Индексы (inode, vnode) — представляют каждый элемент файловой системы
  • Файловые структуры (структура file) — представляют отдельные файлы
  • Файловая система (file system) — представляет файловую систему в целом
Читать еще:  Unix система с разделением времени

Для каждого типа объектов VFS поддерживает свой набор разрешенных операций, ссылки на которые хранятся в таблице функций. По указателю конкретного объекта происходит обращение к требуемой области таблицы, хранящей фактические адреса функций, реализующих требуемые операции.

Linux: архитектура ядра Linux — общая архитектура системы

Очень старый перевод, долгое время пролежавший в черновиках. Продолжение — частично уже есть, надеюсь — будет время и настроение продолжить.

Оригинал — на странице Conceptual Architecture of the Linux Kernel.

Более полное описание архитектуры — есть на странице Concrete Architecture of the Linux Kernel.

Обзор системы

Ядро Linux бесполезно само по себе — оно является частью одной большой системы, которая целиком является работоспособной. Поэтому, имеет смысле обсудить ядро в контексте всей системы. На изображении ниже отображена схема работы и связи всей системы, в которой участвует ядро:

Операционная система Linux (или — GNU/Linux ) состоит из четырёх основных частей:

    1. User applications (пользовательские приложения) — набор пользовательских приложений может быть разным в различных дистрибутивах Linux, но типичные примеры — это приложения обработки текста и веб-браузер;
    2. O/S services (службы операционной системы) — службы, которые обычно считаются частью операционной системы, такие как оконный менеджер, командная строка и т.д. Так же, сюда входит программный интерфейс ядра (компилятор/ы и библиотеки);
    3. Ядро Linux — основная интересующая нас часть; ядро создаёт абстрактный слой и является «посредником» между первыми двумя частями и hardware-частью компьютера;
    4. Hardware controllers (контроллеры оборудования) — подсистема, охватывающая все возможные физические устройства, такие как CPU, устройства памяти, жёсткие диски, сетевые карты — все они являются частью этой подсистемы.

Каждая подсистема может взаимодействовать только с двумя соседними, расположенными непосредственно «выше» и «ниже» её уровня. Кроме того, зависимости между этими подсистемами направлены сверху — вниз: слои расположенные выше — зависят от частей ниже, но части, расположенные ниже — не зависят от частей выше их.

Так как нас интересует само ядро Linux — мы не будем тут рассматривать слой уровня пользовательских приложений, а коснёмся только уровней Оборудования и Служб операционной системы, в тех границах, в которых они связаны с ядром.

Роль ядра

Ядро Linux представляет собой своего рода виртуальную машину для процессов. Процессы работают без всякой информации про оборудование компьютера — ядро абстрагирует весь уровень оборудования в единый совместимый виртуальный интерфейс. Кроме того, ядро реализует многозадачность прозрачно для всех процессов — каждый процесс «думает», что он является единственным процессом в системе, и имеет полные и эксклюзивные права на память и другие ресурсы оборудования компьютера. Фактически же — ядро выполняет несколько процессов одновременно, и оно ответственно за распределение ресурсов оборудования таким образом, что бы каждый процесс получил достаточный доступ к этим ресурсам.

Обзор структуры и зависимостей подсистем ядра

Ядро Linux состоит из пяти основных подсистем:

  1. Process Scheduler ( SCHED ) — планировщик процессов, отвечает за контроль над доступом процессов к CPU. Планировщик обеспечивает такое поведения ядра, при котором все процессы имеют справедливый доступ к центральному процессору.
  2. Memory Manager ( MM ) — менеджер памяти, обеспечивает различным процессам безопасный доступ к основной памяти системы. Кроме того, MM обеспечивает работу виртуальной памяти, которая позволяет процессам использовать больше памяти, чем реально доступно в системе. Выделенная, но неиспользуемая память вытесняется на файловую систему, и при необходимости — возвращается из неё обратно в память ( swapping ).
  3. Virtual File System( VFS ) — виртуальная файловая система, создаёт абстрактный слой, скрывая детали оборудования, предоставляя общий файловый интерфейс для всех устройств. Кроме того, VFS поддерживает несколько форматов файловых систем, которые совместимы с другими операционными системами.
  4. Network Interface ( NET ) — сетевые интерфейсы, обеспечивает работу с различными сетевыми стандартами и сетевым оборудованием.
  5. Inter-Process Communication ( IPC ) — межпроцессная подсистема, поддерживающая несколько механизмов для process-to-process связей в единой Linux-системе.

На рисунке ниже изображены связи всех этих подсистем, где линии исходят от зависимых подсистем к подсистемам, от которых они зависят:

Общая структура и связи подсистем ядра Linux

Тут явно видно, что основной подсистемой является планировщик процессов: все остальные системы зависят от него, так как всем им необходимо приостанавливать и возобновлять выполнение процессов. Как правило, процесс приостанавливается в ожидании каких-либо операций с оборудованием, и возобновляет выполнение, когда операция завершена. Например — когда процесс пытается отправить некое сообщение по сети, сетевой интерфейс может приостановить выполнение процесса, пока сетевое оборудование выполняет отправку сообщения. После того как сообщение отправлено (или — получено сообщение об ошибке) — сетевой интерфейс возобновляет работу процесса, передавая ему код возврата, который указывает на успешное завершение операции, или ошибку её при выполнении. Все остальные подсистемы (memory manager, virtual file system и inter-process communication) так же зависят от планировщика процессов по схожим причинам.

Другие зависимости не так явны, но не менее важны:

  • Планировщик процессов использует менеджер памяти, что бы согласовывать карту памяти для каждого процесса, когда он возобновляет своё выполнение;
  • Подсистема IPC зависит от менеджера памяти для поддержания механизма использования общей памяти; этот механизм позволяет двум процессам получить доступ к области общей памяти, в дополнение к их приватной памяти;
  • Виртуальная файловая система использует сетевые интерфейсы для обеспечения работы NFS (Nework File System), и использует менеджер памяти для обеспечения работы устройства RAM drive ;
  • Менеджер памяти использует подсистему виртуальной файловой системы для поддержки swapping -а, и это единственная причина, по которой менеджер памяти зависит от файловой системы; когда процесс запрашивает доступ к участку памяти, который уже был вытеснен на диск (swapped out) — менеджер памяти выполняет запрос к файловой системе, что бы получить обратно данные из хранилища ( swap -раздела или swap -файла), а выполнение процесса на это время приостанавливается.

Кроме зависимостей, которые видны явно, все подсистемы ядра зависят от некоторых общих ресурсов, которые не показаны тут. Сюда входят процедуры, которые используют все подсистемы ядра для выделения (allocate) им и/или высвобождения ими памяти для использования ядром, процедуры для сообщений об ошибках и проблемах, и прочее.

Архитектура ос unix

Операционная система UNIX

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

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

Второй целью была общность. Одни и те же методы и механизмы должны были использоваться во многих случаях. Поэтому общность в UNIX-системах проявляется во многих аспектах, и в частности:

  • обращения к файлам, устройствам ввода/вывода и буферам межпроцессных сообщений выполняются с помощью одних и тех же примитивов;
  • одни и те же механизмы именования, присвоения альтернативных имен и защиты от несанкционированного доступа применяются к файлам с данными и директориями и устройствам;
  • одни и те же механизмы работают в отношении программно и аппаратно инициируемых прерываний.

Наконец, третья цель заключалась в создании операционной среды, в которой большие задачи можно было бы решать, комбинируя существующие небольшие программы, а не разрабатывая программы заново.
Важным, хотя и простым с позиций его реализации, является тот факт, что система UNIX предоставляет пользователям возможность направить выход одной программы непосредственно на вход другой (речь идет о программных каналах (pipe). См. об этом ниже и в разделе «Конвейеры и очереди сообщений», глава 6). В результате большие программные системы можно создавать путем композиции имеющихся небольших программ, а не путем написания новых, что в большинстве случаев упрощает задачу.

Блок-схема системного ядра ОС UNIX

Резедентная в ОП часть системы называется ядром. На диске ядро оформлено как выполняемый файл, считываемый начальным загрузчиком в ОП, начиная с нулевого адреса. После загрузки ядро получает управление и в дальнейшем постоянно присутствует в ОП, работая в режиме «Система».
На рисунке 17.1 показана блок-схема ядра операционной системы UNIX.

Читать еще:  Код ошибки b2


Рис.17.1. Блок-схема ядра операционной системы UNIX.

На рисунке 17.1 показана блок-схема ядра операционной системы UNIX. Ядро содержит системные программы, которые выполняют диспетчерские функции, и управляющие структуры данных, используемые этими программами. Все работы, выполняемые вне ядра, оформлены в виде процессов, работающих режиме «Пользователь»

Отличия ОС UNIX от других систем

ОС UNIXсостоит из ядра с включенными в него драйверами и из утилит. Если надо изменить конфигурацию ОС UNIX, то ядро пересобирают (перелинковывают) из объектных кодов или из исходных текстов. В Windows и OS/2 при загрузке прилинковывают драйверы, при этом компактность собранного ядра и повторное использование общего кода на порядок ниже, чем у UNIX. Компактность кода особенно важна, т.к. ядро и драйверы никогда не свопируются на диск. UNIX — это ОС, которая на данный момент поддерживает наибольшее число платформ.
ОС UNIX предназначена для квалифицированного администратора, т.к. требует знаний принципов функционирования происходящих в ней процессов. ОС UNIX отличается высокой надежностью функционирования, это обеспеченно за счет жесткого разделения памяти и реальной многозадачности.
Практически все протоколы, на которых основан Internet, ориентированы под ОС UNIX (TCP/IP).

Функции ОС UNIX, особенности её построения — принцип иерархии.

К основным функциям операционной системы UNIX можно отнести следующее:

  1. Обработка прерываний.
  2. Создание и уничтожение процессов.
  3. Переключение процессов из одного состояния в другое.
  4. Диспетчеризация.
  5. Приостановка и активизация процессов.
  6. Синхронизация процессов.
  7. Организация взаимодействия между процессами.
  8. Манипулирование блоками управления процессами.
  9. Поддержка операции ввода-вывода.
  10. Поддержка операции распределения и перераспределения памяти.
  11. Поддержка работы файловых систем.
  12. Поддержка механизма вызова-возврата по обращению к процедурам.

В структуре можно выделить три основные части:

  1. Самая низкоуровневая часть ОС — специальные средства для управления конкретными аппаратными и программными ресурсами, специфичными для данной конкретной платформы.
  2. Более высокий уровень — уровень конкретных служебных программ и языков программирования. На этом уровне система получает ресурсы через обращение к ядру ОС (т.е. по прерываниям).
  3. Уровень вспомогательных процедур, интерпретаторов, компиляторов. На данной основе строятся пользовательские приложения (текстовые редакторы, графические интерфейсы и собственно приложения).

На рисунке 17.2 представлена структура ОС UNIX.

Рис.17.2. Структура ОС UNIX.

cpp — компилятор языка Си;

sh — уровень интерпретатора языка Shell;

vi — текстовый редактор;

who — команда для просмотра списка зарегистрированных в системе пользователей и исполнения их программ;

grep — команда, позволяющая искать файлы по их содержимому и другие.

Жизненый цикл процесса в ос UNIX.

На рисунке 12.1 представленна блок-схема жизненного цикла процесса в ОС UNIX.


Рис.12.1.Блок схема жизненного цикла процесса в ОС UNIX.

Пояснения к схеме :

1 — процесс выполняет инструкции программы (USER RUNNING);
2 — процесс выполняет системный вызов (KERNEL RUNNING);
3 — процесс готов к выполнению (READY_TO_RUN);
4 — процесс «спит» и ждет события (ASLEEP_IN_MEMORY);
5 — процесс готов к выполнению, но он находится на внешнем носителе (т.е. выгружен) (READY_TO_ RUN, SWAPPED);
6 — процесс «спит» и находится на внешнем носителе (SLEEP, SWOPPED);
7 — процесс только что создан (процесс родился) (CREATED);
8 — процесс уничтожен, завершен (ZOMBIE);
9 — процесс прерван по приоритету (PREEMPTED).

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

УПРАВЛЕНИЕ ПРОЦЕССАМИ В ОС UNIX

Схемы взаимодействия между процессами соответствуют механизму сопрограмм. Использование сопрограмм упрощает логику ядра системы и требует одного выделенного процесса, который создается нестандартным образом. С него начинается работа системы после запуска. В ОС UNIX этот процесс называется «диспетчерским» («swapper»), он не имеет пользовательской фазы.
Все процессы в ОС UNIX, кроме диспетчерского, создаются операцией «Порождение». В этой операции участвуют два процесса: порождающий и порожденный. Порождающий выполняет системный вызов (fork), в результате появляется порожденный процесс.

Адресное пространство процесса состоит из 3 сегментов:

  • текстового сегмента (инструкции);
  • cегмент данных;
  • сегмент стека.

Управление процессами осуществляется в ОС UNIX с помощью двух структур.

1. PROC-STRUCTRE (блок управления процессом). Составляющие блока:

  • состояние процесса;
  • размер и адрес процесса;
  • кому принадлежит процесс;
  • идентификация процесса;
  • канал ожидания;
  • поле сигналов;
  • таймер и счетчик используемого времени.

2. USER-STRUCTRE (структура использования)- содержит информацию о процессе, которая должна быть доступна только на уровне исполнения. Содержание структуры:

  • параметры ввода-вывода (I/O), т.е. адреса буферов и т.д.;
  • окружение в файловой системе (текущий каталог, коренной каталог);
  • таблица открытых файлов;
  • код возврата, номера ошибок;
  • поле сигналов (информация, как надо реагировать на сигнал).

В ОС UNIX нет разницы между задачами и заданиями. Работы в системе представлены множеством конкурирующих процессов. Процесс строго последователен, нельзя выполнять асинхронные действия внутри процесса. Даже операция I/O не может быть выполнена асинхронно.
Распределением ресурсов между процессами занимается ядро ОС. Программы ядра выполняются от имени процесса. Процесс может находится: в режиме пользователя или в режиме системы.
На рисунке 12.2 приведена таблица связи между структурами.

Рис.12.2. Таблица связи между структурами.

Особенности архитектуры: UNIX, Linux и Windows

Базовая архитектура UNIX

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

Рисунок 2.5 – Базовая архитектура UNIX

Система состоит из трех основных компонентов: подсистемы управления процессами, файловой подсистемы и подсистемы ввода-вывода.

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

Файловая подсистема обеспечивает единый интерфейс доступа к данным, размещенных на дисковых накопителях и к периферийным устройствам. Такой интерфейс является одной из важнейших особенностей UNIX. Одни и те же системные вызовы используют как для обмена данными с диском, так и для вывода на терминал или принтер (программа работает с принтером так же, как и с файлом). При этом файловая система переадресовывает вызовы соответствующим модулям подсистемы ввода-вывода, и те – непосредственно периферийным устройствам. Кроме того, файловая подсистема контролирует права доступа к файлам, которые в значительной степени определяет привилегии пользователя в системе.

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

Современные UNIX-системы несколько отличаются по своей архитектуре.

Ø В них выделен отдельный менеджер памяти, отвечающий за поддержку виртуальной памяти.

Ø Стандартом для реализации интерфейса файловой подсистемы является виртуальная файловая система, которая абстрагирует этот интерфейс и дает возможность организовать поддержку разных типов файловых систем.

Ø В этих системах поддерживается многопроцессорная обработка, а так же многопотоковость.

Базовые архитектурные решения, такие как доступ ко всем устройств ввода-вывода через интерфейс файловой системы или организация системных вызовов, остаются неизменными во всех реализациях UNIX.

Архитектура Linux

В ОС Linux можно выделить три основные части:

Ø ядро, которое реализует основные функции ОС (управление процессами, памятью, вводом-выводом и т.д.);

Ø системные библиотеки, которые определяют стандартный набор функций для использования в применениях ( выполнение таких функций не требует перехода в привилегированный режим);

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

Назначение ядра Linux и его особенности

Linux реализует технологию монолитного ядра. Весь код и структуры данных ядра находятся в одном адресном пространстве. В ядре можно выделить несколько функциональных компонентов:

Ø Планировщик процессов – отвечает за реализацию многозадачности в системе (обработка прерываний, работа с таймером, создание и завершение процессов, переключение контекста).

Ø Менеджер памяти – выделяет отделбное адресное пространство для каждого процесса и реализует поддержку виртуальной памяти.

Читать еще:  Unix time to date

Ø Виртуальная файловая система – предоставляет универсальный интерфейс взаимодействия с разными файловыми системами и устройствами ввода-вывода.

Ø Драйверы устройств – обеспечивают непосредственную работу с периферийными устройствами. Доступ к ним реализуется через интерфейс виртуальной файловой системы.

Ø Сетевой интерфейс – обеспечивает доступ к раелизации сетевых протоколов и драйверов сетевых устройств.

Ø Подсистема межпроцессового взаимодействия – предлагает механизмы, которые дают возможность разным процессам в системе обмениваться данными между собой.

Некоторые из этих подсистем являются логическими компонентами системы, они загружаются в память вместе с ядром и остаются там постоянно. Компоненты других подсистем (например, драйверы устройств) выгодно реализовать так, что бы их код мог загружаться в память по требованию. Для решения данной задачи Linux поддерживает концепцию модулей ядра.

Модули ядра

Ядро Linux дает возможность по требованию загружать в память и выгружать из нее отдельные секции кода. Такие секции называются модулями ядра и выполняются в привилегированном режиме.

Модули ядра дают ряд преимуществ:

1. Код модулей может загружаться в память в процессе работы системы, что упрощает настройку компонентов ядра, прежде всего драйверов.

2. Есть возможность изменять набор компонентов ядра во время выполнения: те из них, которые в этот момент не используются, можно не загружать в память.

3. Модули являются исключением из правила, по которому код, который расширяет функции ядра, в соответствии лицензии Linux должен быть открытым. Это дает возможность производителям аппаратного обеспечения разрабатывать драйверы под Linux, даже если не запланировано давать доступ к их коду.

Поддержка драйверов в Linux состоит из трех компонентов:

1. Средства управления модулями дают возможность загружать модули в память и реализовывать обмен данными между модулями и остальной частью ядра.

2. Средства реализации драйверов позволяют модулям сообщать остальной части ядра о том, что новый драйвер стал доступным.

3. Средства разрешения конфликтов дают возможность драйверам устройств резервировать аппаратные ресурсы и защищать их от случайного использования другими драйверами.

Один модуль может зарегистрировать несколько драйверов, если это необходимо (например, для двух разных механизмов доступа устройства).

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

Современные версии ОС Unix. Архитектура ОС Unix. Архитектура ядра ОС Unix.

Современные версии Unix

Почти сразу после рождения Unix раскололся на две ветви:

· прародительская ветвь, которой владела Unix System Laboratory (фактически коммерческая ветвь);

· проект исследовательского института Беркли — ветвь в основном свободных (беcплатных) Unix’ов.

Особенности и различия этих ветвей прослеживаются и в современных реализациях Unix. Ниже в таблице приведены основные современные реализации Unix и указана принадлежность той или иной реализации к определенной ветви.

Основное отличие различных реализаций Unix состоит в том, как проводится начальная загрузка системы (этот вопрос рассматривается во второй части курса). В остальном различия реализаций Unix можно считать несущественными.

Архитектура ОС Unix

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

Ядро имеет набор услуг, предоставляемых прикладным программам:

· создание и управление процессами, их синхронизация и межпроцессное взаимодействие.

Все приложения запрашивают услуги ядра посредством «системных вызовов».

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

Архитектура ядра Unix

Ядро состоит из трёх основных подсистем:

· Подсистема управления процессами и памятью;

1) Файловая подсистема:

· Обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисках и к периферийным устройствам;

· Контролирует права доступа к файлу;

· Обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.

2) Подсистема управления процессами

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

Подсистема управления процессами контролирует:

· Создание и удаление процессов;

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

3) Подсистема ввода/вывода.

Выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам.

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

Структура файловой системы, типы файлов, состав стандартных каталогов.

Файлы в Unix играют ключевую роль, что не всегда справедливо для других операционных систем.

· Хранят данные пользователей;

· Определяют привилегии пользователей, т.к. права пользователей в большинстве случаев контролируются с помощью прав доступа к файлам;

· Файлы обеспечивают доступ к периферийным устройствам компьютера;

Для приложений Unix доступ к дисковому файлу не отличим от доступа, например, к принтеру.

· Все программы, которые выполняются в системе (включая ядро) являются исполняемыми файлами.

Структура файловой системы

Как и во многих современных ОС, в Unix файлы организованы в виде дерева (рис. 2.3). Полное имя файла содержит путь (список каталогов (ветвей)), которые необходимо пройти, чтобы достичь файла.

Рис. 2.3. Типичная файловая система Unix

Так как в Unix все доступное пользователем файловое пространство объединено в единое дерево каталогов, то полное имя любого файла начинается с символа ‘/’ и НЕ содержит идентификатора устройства.

Типы файлов

В Unix существуют 6 типов файлов, различающихся по функциональному назначению и действиям ОС при выполнении тех или иных операций над файлами:

· Специальный файл устройства

· FIFO или именованный программный канал

Обычный файл. Обычный файл в ОС Unix является бесструктурным массивом байтов с прямым доступом. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К файлам этого типа относятся текстовые файлы, бинарные данные, исполняемые программы.

Каталог.С помощью каталогов формируется логическое дерево файловой системы. Каталог — это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию (метаданные), позволяющие операционной системе производить операции над этими файлами. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро операционной системы имеет право на запись в каталог.

Специальный файл устройства.Внешние устройства в Unix тоже считаются файлами, чтобы с ними можно было работать посредством обычных файловых операций. Файлы, представляющие внешние устройства, бывают двух типов: блок-ориентированные и байт ориентированные.

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

Одно и то же внешнее устройство может одновременно быть представлено как блок-ориентированным, так и байт-ориентированным специальным файлом.

Синтаксис имен, защита, способы доступа и операции для специального файла те же, что и для обычного файла. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.

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

Связь (link).В файловой системе ОС Unix каталог содержит имена файлов и указатели на их метаданные (тип файла, права доступа к нему, длина, дата создания). Такой подход позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе.

Такая связь имени файла с его данными называется жесткой связью.

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

Сокет (socket-гнездо).Гнёзда предназначены для взаимодействия между процессами. Интерфейс гнёзд часто используется для доступа к сети TCP/IP. В системах ветви BSD Unix на базе гнёзд реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати.

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector