3.3 Элементы конструкционных блоков

Как уже говорилось ранее, концепция разработки системы UNIX заключалась

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

процессором shell, является возможность переназначения ввода-вывода. Говоря

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

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

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

ls

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

ls > output

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

образом, команда

mail mjb < letter

открывает (с помощью системного вызова open) файл "letter" в качестве файла

стандартного ввода и пересылает его содержимое пользователю с именем "mjb".

Процессы могут переназначать одновременно и ввод, и вывод, как, например, в

командной строке:

nroff -mm < doc1 > doc1.out 2> errors

где программа форматирования nroff читает вводной файл doc1, в качестве файла стандартного вывода задает файл doc1.out и выводит сообщения об ошибках в

файл errors ("2>" означает переназначение вывода, предназначавшегося для файла с дескриптором 2, который соответствует стандартному файлу ошибок).Програм-мы ls, mail и nroff не знают, какие файлы выбраны в качестве файлов стандартного ввода, стандартного вывода и записи сообщений об ошибках; командный процессор shell сам распознает символы "<", ">" и "2>" и назначает в соответствии с их указанием файлы для стандартного ввода, стандартного вывода и записи сообщений об ошибках непосредственно перед запуском процессов.

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

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

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

процессами, являются входными для вторых процессов. Вторые процессы так же

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

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

больших и сложных программ из конструкционных элементов меньшего размера

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

Например, программа grep производит поиск контекста в наборе файлов (являющихся параметрами программы) по следующему образцу:

grep main a.c b.c c.c

где "main" - подстрока, поиск которой производится в файлах a.c, b.c и c.c с

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

a.c: main(argc,argv)

c.c: /* here is the main loop in the program */

c.c: main()

Программа wc с необязательным параметром -l подсчитывает число строк в файле

стандартного ввода. Командная строка

grep main a.c b.c c.c | wc -l

вызовет подсчет числа строк в указанных файлах, где будет обнаружена подстрока "main"; выводной поток команды grep поступит непосредственно на вход

команды wc. Для предыдущего примера результат будет такой: 3

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

4. ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ

На Рисунке 1.1 уровень ядра операционной системы изображен непосредственно под уровнем прикладных программ пользователя. Выполняя различные элементар-ные операции по запросам пользовательских процессов, ядро обеспечивает

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

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

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

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

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

Управление доступом процессов к периферийным устройствам, таким как терми- налы, ленточные устройства, дисководы и сетевое оборудование.

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

что данный файл является обычным файлом или устройством, но скрывает это

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

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

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

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


Информация о работе «Особенности операционной системы UNIX»
Раздел: Информатика, программирование
Количество знаков с пробелами: 48139
Количество таблиц: 1
Количество изображений: 3

Похожие работы

Скачать
29699
0
0

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

Скачать
18336
0
1

... , сетевые и другие коммуникационные службы, СУБД и утилиты. 4. Способы управления процессами и ресурсами Файлы и процессы, являются центральными понятиями модели операционной системы UNIX. Рисунок 1.2 представляет блок-схему ядра системы, отражающую состав модулей, из которых состоит ядро, и их взаимосвязи друг с другом. Слева изображена файловая подсистема, а справа подсистема управления ...

Скачать
17225
0
2

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

Скачать
17505
1
2

... программ. Совместимость с DOS-приложениями. Однако, работа с Windows не означает отказа от программ DOS (скорее она означает отказ от DOS в глобальном масштабе). На сегодняшний момент операционная система Windows фирмы Microsoft во всех ее проявлениях бесспорно считается самой распространенной опера­ционной системой на PC: в мире более 150 миллионов IBM PC-совместимых компьютеров, и система ...

0 комментариев


Наверх