ЗНАЕТЕ ЛИ ВЫ?

Основные этапы развития Unix



ОС как расширенная машина.

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

2. ОС как система управления ресурсами.

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

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

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

Эволюция ОС.

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

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

Unix - мощная и гибкая система. Она стала одной из самых популярных операционных сред. Эта интересная разработка без сомнения составляет определенный этап в развитии системного программирования.

История Unix началась в конце 60-х годов в AT&T Bell Laboratories с операционной системы под названием Multics. В 1969г. Bell Labs отошла от проекта Multics и вплотную занялась разработкой того, что впоследствии превратилось в операционную систему Unix.

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

В начале своего развития Unix в основном использовался в двух "несовместимых" областях деятельности - подготовке документов и программировании.

В 1973г. сотрудник Bell Labs Деннис Ритчи переписал систему на созданном им языке программирования Си. В результате использования языка Си система стала легко переносимой, и в настоящее время её можно сравнительно небольшими усилиями адаптировать для машины новой архитектуры.

Основные этапы развития Unix

1969г. Начало. История Unix началась в 1969г. с работы Кена Топсона и Денниса Ритчи на позабытом всеми компьютере PDP-7.
1973г. Четвертая редакция. Система переписана на языке Си, в результате чего появилась возможность переносить её на компьютеры с различными архитектурами.
1975г. Шестая редакция. Unix (версия 6) начинает распространяться за пределами Bell Labs. Появляется первая версия BSD Unix, разработанная в Калифорнийском Университете, и основанная на версии 6.
1982г. System III. Unix System Group (USG) в составе AT&T разработала System III, один из стандартов Unix
1983г. System V. Ряд исследовательских групп объединились в Unix System Development Lab. В результате появилась первая сопровождаемая версия Unix.
1984г. В Калифорнийском Университете создана система BSD 4.2 (одна из опорных версий ветви BSD).
1989г. Началось распространение Unix Sytem V Release 4 (SRV4), Объединившей в себе System V, BSD и XENIX (версия Unix фирм Microsoft и Intel).
1992г. Unix System Laboratory (USL - организована в 1991г.) выпустила последнюю опорную версию Unix System V Release 4.2.
1993г. Выпущена последняя версия BSD Unix 4.4.

Классификация ОС.

По числу одновременно выполняемых процессов ОС делятся на два вида:

- однозадачные (MS DOS) – допускают только последовательное выполнение задач;

- многозадачные (UNIX, WINDOWS) – допускают параллельное выполнение задач.

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

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

- однопользовательские (MS DOS) – обеспечивают работу на компьютере только одного пользователя;

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

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

Концептуальная модель ОС Unix. Основные свойства ОС Unix.

Основные свойства Unix

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

Простота была, по-видимому, одним из важнейших критериев при выборе того или иного решения.

Основные свойства Unix определяются тремя главными составляющими:

· Языком Си, обусловливающим мобильность системы;

· Файловой системой, унифицирующей все средства передачи информации в Unix;

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

2.2.1. Мобильность операционных систем

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

Требования к мобильным системам:

· Система должна быть написана на машинно-независимом языке программирования (неизбежные машинно-зависимые части системы должны быть четко выделены);

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

Наличие этих возможностей, как правило, обеспечивает качество трансляции, сравнимое с качеством программирования на языке Ассемблера. (Таким языком программирования является, например, язык Си.)

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

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

Но такой системой может быть только инструментальная система разделения времени, т.к.:

· Разработка программ;

· Обработка текстов;

· Высокий уровень сервисных возможностей, …

… всё это нужно всем пользователям на определенных этапах их деятельности.

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

Отсюда: снижение надежности и снижение реактивности ОС.

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

2.2.2. Особенности файловой системы Unix

Традиционно в операционных системах существуют 3 различных механизма управления потоками информации:

· Обмен с внешними устройствами;

· Обмен с дисковыми файлами;

· Обмен информацией между процессами.

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

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

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

2.2.3. Командный язык

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

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

Подробнее с командным языком Unix можно познакомиться в Модуле 4.

Концептуальная модель Unix

Основные реализации Unix - это многопользовательская многозадачная операционная система разделения времени.

Ниже приведены основные особенности Unix.

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

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

2). Аналогичным способом именуются файлы:

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

· при открытии файл получает номер дескриптора.

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

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

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

· обмен с магнитными носителями подвергается тотальной системной буферизации. Часто используемые блоки оседают в буфере (КЭШе), что уменьшает число обращений к дискам и позволяет повысить реактивность операционной системы.

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

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

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

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

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

Ветви Unix
ATT BSD
Solaris 2.0 (Sun) UnixWare (Novell) IRIX (Silicon Graphics) SCO (Santa Cruz Operations) HP-UX (Hewlett Packard) SunOS или Solaris 1.x BSD/OS OSF/1 Ultrix Linux

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

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

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

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

· ввод/вывод;

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

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

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

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

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

· Файловая подсистема;

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

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

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

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

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

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

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

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

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

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

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

· Синхронизация процессов;

· Межпроцессные взаимодействия.

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

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

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

 

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

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

 

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

 

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

Типы файлов

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

· Обычный файл

· Каталог

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

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

· Связь (link)

· Сокет (socket)

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

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

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

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

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

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

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

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

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

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

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

Выход из системы

Для выхода из системы применяются (в зависимости от реализации Unix) команды logout, logoff. Часто (например в реализации FreeBSD) достаточно выполнить встроенную команду интерпретатора команд - exit для выхода из интерпретатора, что ведет к выходу из системы.

 

 

Конвейеры

Интерпретатор командного языка Unix позволяет перенаправлять выход одной команды на вход другой. Для этого служит операция ‘|’ – вертикальная черта.

Примечания. 1). Команды или программы, которые вводят данные со стандартного ввода, а выводят на стандартный вывод – называются фильтрами. 2). Синхронизация работы фильтров в конвейере производится ядром ОС Unix.

вариант с конвейером:

%ls –l | wc

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

Фоновые команды

При работе с операционной системой в режиме командной строки пользователь после подсказки операционной системы (% или $) вводит очередную команду и дожидается завершения работы команды. Затем после подсказки операционной системы вводится следующая команда.

В ОС Unix можно указать выполнение команды в «фоновом» режиме. Для этого необходимо после команды через пробел набрать символ ‘&’.

«Попросим» компилятор языка Си изготовить исполняемый файл (см. раздел 3.7) в фоновом режиме.

%cc prog.c & запуск программы cc в фоновом режиме
№ процесса, который выполняет процесс cc (выводится для контроля за его работой)
% подсказка операционной системы

Теперь можно вводить новую команду (в то время как программа выполняется в фоновом режиме).

Группирование команд

Если последовательность команд, которую вы собираетесь ввести, вам хорошо известна, можно ввести их в одной строке, разделяя точкой с запятой:

%ls –l > file; wc < file; rm file

Для группирования команд используются и другие способы. Один из них – применение круглых скобок:

%(cd /usr/a; cat a.c)

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

 

Условный оператор (if)

Формат простого оператора if:

if условие

then

команда

команда

. . . . . . .

fi

Если условие истинно (True), команды, которые находятся между служебными словами then и fi будут исполнены, в противном случае они будут пропущены.

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

[условное_выражение]

Кроме того, в выражении могут применяться операторы –a (AND) и –o (OR).

Формат расширенного оператора if:

if условие

then

команда

команда

. . . . . . .

else

команда

команда

. . . . . . .

fi

Оператор цикла for

Формат оператора цикла for:

for переменная in список

do

команда

команда

. . . . . . .

done

Список команд, заключенный между ключевыми словами do . . . done выполняется один раз для каждого значения из списка. При этом очередное выбираемое значение из списка присваивается переменной, имя которой указано слева от ключевого слова in.

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

Оператор цикла while

Формат оператора цикла while:

while условие

do

команда

команда

. . . . . . .

done

Оператор while повторяет заданную группу команд, если условие выполнения соответствует Истине.Поскольку условие проверяется передвыполнением списка команд, возможна ситуация, когда список не будет выполнен ни разу.

Оператор break используется в циклах для досрочного выхода из цикла.

Оператор continue используется для пропуска команд до конца цикла. При этом осуществляется переход на начало цикла.

Оператор выбора case

Оператор выбора case удобен для организации ветвления программы на основе совпадения шаблонов (образцов).

Можно выполнить подобную операцию с помощью цепочки if-else if, но оператор case короче, удобнее и нагляднее:

Формат оператора case:

case переменная

in

шаблон 1) команда

команда

. . . . . . .

команда ;;

. . . . . . . . . . . . . . . . . . . .

шаблон N. команда

команда

. . . . . . .

команда ;;

esac

Если значение переменной совпало со значением шаблона, то выполняются команды до ';;' , затем те что после esac.

Права доступа

0400 разрешение чтения для владельца

0200 разрешение записи для владельца

0100 разрешение выполнения для владельца

070 то же самое для группы

07 то же самое для прочих пользователей

Указатели на блоки диска

В канонической файловой системе (длина блока 512 байтов) для адресации данных файла на диске используется поле из 13 элементов по 24 бита (3 байта).

 

 

 

Первые 10 элементов непосредственно указывают на десять блоков обычного файла.

Если файл имеет длину б'ольшую, чем 10 блоков, то 11-й элемент указывает на косвенный блок, содержащий до 128 адресов дополнительных блоков файла.

Ещё б'ольшие файлы используют 12-й элемент, который указывает на блок, содержащий 128 указателей на блоки, каждый из которых содержит по 128 адресов блоков файла.

В очень больших файлах может быть использован 13-й элемент массива адресов. В этом случае трёхкратная косвенная адресация позволяет создавать файлы длиной

[(10+128+128^2+128^3)*512] байтов.

Таким образом:

· если длина файла меньше 5120 байтов, требуется одно обращение к диску;

· если длина от 5120 до 70656 байтов, то - два обращения;

· и, наконец, для файлов длиной от 8.459.264 байта до 1.082.201.088 байтов - требуется 4 обращения к диску.

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

Для повышения эффективности файловой системы в Unix применяются:

· кэширование диска - в буфере основной памяти хранятся некоторые наиболее часто используемые блоки;

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

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

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

Новая файловая система получила название Fast File System (ffs).

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

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

Однако в суперблоке не хранятся данные о свободном пространстве файловой системы, такие как массив свободных блоков и inode.

Поэтому данные суперблока остаются неизменными на протяжении существования файловой системы.

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

 

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

Каждая группа цилиндров содержит управляющую информацию, включающую:

· резервную копию суперблока;

· массив индексных дескрипторов;

· данные о свободных блоках;

· итоговую информацию об использовании дисковых блоков в группе.

Права доступа к файлам

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

Под файловым доступом подразумевается:

· чтение и изменение файлов;

· создание и удаление файлов и каталогов;

· запуск файлов;

· изменение названия и атрибутов файлов.

Правильнее говорить не о “правах пользователя” по отношению к какому-либо файлу, а о правах процесса:

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

· не все программы запускаются пользователем (демоны запускаются при старте системы);

· другие программы могут быть запущены с помощью программы cron в определенные моменты времени;

· некоторые программы могут вызываться с помощью демона inetd для обслуживания запросов из сети.

· существуют программы, которые для выполнения вспомогательных действий запускают другие программы (с помощью fork()).

Категории пользователей

Существуют 3 категории пользователей:

· Владелец (хозяин) файла.

· Группа, из которой пользователи имеют доступ к файлу.

· Все остальные (прочие) пользователи.

Интересные сочетания битов

Для файлов:

а) -w- в файл (например, это некоторый почтовый ящик) можно записывать, но пользователи не могут посмотреть, что туда записали другие.

б) -x- – запустить задачу можно; нельзя скопировать, и залезть в нее отладчиком.

Для каталогов:

Обычно устанавливают:

--- - никаких прав;

r-x -посещение, но нельзя изменять файлы;

rwx -полный доступ.

а) r-- - можно смотреть содержимое командой ls (но только в сокращенном варианте), но нельзя войти командой cd.

б) -x- можно сделать «полусекретный» каталог (посмотреть, что там нельзя, но если знать имя файла – можно его взять).

в) rwx---r-x - все, кто входит в группу, лишены доступа: своего рода “черный список”.

Права доступа по умолчанию

Владелецфайла определяется “эффективным ID” программы, которая его создает.

Группа – наследуется от каталога.

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

Изменение атрибутов файла

1) Владелец и группа:

Владелец и группа изменяются соответственно командами chown и chgrp.

Можно использовать шаблон ‘*’ и ключ –R (рекурсивно).

Права доступа

Права доступа к файлу изменяются командой chmod. Для задания дополнительных битов используются соответственно следующие конструкции, указываемые в команде chmod:

· suid бит: u+s;

· sgid бит: g+s;

· sticky бит: a+t.

Флаги доступа к файлу

Кроме рассмотренных атрибутов доступа к файлам существует еще один атрибут, который ограничивает возможные действия с файлом – “набор флагов”.

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

Флаги являются более «сильнодействующим» средством, чем права доступа. Более того, их действие не может игнорировать и владелец файла и даже суперпользователь (root). Единственное отличие владельца и суперпользователя (root'а) от прочих пользователей в том, что они могут убрать флаги с файла.

Назначение и типы флагов

Флаги делятся на две группы:

· "пользовательские" флаги;

· "суперпользовательские".

Разница между ними состоит в том, что " пользовательские" флаги может поставить и убрать как суперпользователь (root), так и владелец файла, а ставить/убирать "суперпользовательские" может только суперпользователь (root).

По своему назначению флаги делятся на следующие 3 группы:

· append - При установленном флаге append, любой пользователь (даже root) сможет только добавить что-нибудь в конец файла, но не сможет ничего изменить в уже имеющемся содержимом. Если этот флаг поставить на каталог, то в каталоге можно создавать файлы, но нельзя удалять или менять их названия. На сами файлы действие флага не распространяется.

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

· immutable или change - "ничего нельзя" (файл или каталог нельзя ни удалить, ни переименовать, ни изменить содержимое). Если это флаг стоит на каталоге, то на файлы внутри каталога его действие не распространяется. То есть, нельзя ни добавить, ни убрать файл в каталоге, но менять содержимое самих файлов это флаг не запретит.

Для каждой из этих трёх групп флагов существуют два вида флагов – пользовательские (перед названием флага добавляется буква u) и суперпользовательские (перед названием флага добавляется буква s):

· пользовательские флаги - uappend, uunlink и uimmutable

· суперпользовательские флаги - sappend, sunlinkи simmutable.

Существуют еще два "непарных" флага:

· archived (архивный файл) - это флаг суперпользовательский и аналогичного пользовательского флага не существует;

· nodump (файл нельзя скопировать утилитой dump). Это пользовательский флаг.

Оба эти флага проверяются некоторыми конкретными программами (программами архивации и утилитой dump).

Установка флагов

Установка флагов производится по команде:

%chflags"флаги" "имя файла"

Посмотреть установленные флаги можно по команде:

%ls -lo

Аргумент "флаги" - это название флага или нескольких флагов через запятую. Можно задавать и сокращённые названия флагов:

Название флага Сокращённое название флага
sappend sappnd
uappend uappnd
sunlink sunlnk
uunlink uunlnk
simmutable schange или schg
uimmutable uchange или uchg
arcived arch
флаг nodump не сокращается  

Для того чтобы убрать флаг, надо указать его название с префиксом no: nosappnd, nosunlnk, noschg и т.п. Исключение составляет флаг nodump. Чтобы его убрать, нужно указать не nonodump, а просто dump.

Для того чтобы рекурсивно обойти подкаталоги, можно применить ключ – R.

Ядро Unix и процессы

Резидентная в оперативной памяти часть системы называется ядром.

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

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

Распределение памяти внутри ядра статично. Число управляющих структур (дескрипторов процессов, блоков КЭШ-памяти и т.п.) определяется при генерации и задает тем самым предельные количественные характеристики системы.

Все работы, выполняемые вне ядра, оформлены в виде процессов, работающих в режиме «пользователь». Процессы, выполняющиеся в ядре, работают в режиме «система».

В функции ядра входит распределение между процессами системных ресурсов:

· времени центрального процессора;

· оперативной памяти;

· дисковой памяти;

· файлов;

· разделяемых процедурных сегментов.

Ядро также выполняет системные вызовы – программные запросы от процессов к операционной системе.

Единицей управления и потребления ресурсов в системе служит процесс.

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

Порождение процессов

Образ процесса – это совокупность составляющих его сегментов.





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.213.192.104 (0.069 с.)