реферат скачать
 
Главная | Карта сайта
реферат скачать
РАЗДЕЛЫ

реферат скачать
ПАРТНЕРЫ

реферат скачать
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

реферат скачать
ПОИСК
Введите фамилию автора:


Особенности операционной системы UNIX

файловой

системы.

Для пользователя система UNIX трактует устройства так, как если бы

они

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

устройств,

становятся вершинами в структуре файловой системы. Обращение программ к уст-

ройствам имеет тот же самый синтаксис, что и обращение к обычным файлам; се-

мантика операций чтения и записи по отношению к устройствам в большой степе-

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

Способ

защиты устройств совпадает со способом защиты обычных файлов: путем соответ-

ствующей установки битов разрешения доступа к ним (файлам). Поскольку

имена

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

устройствами и над обычными файлами выполняются одни и те же операции,

большинству программ нет необходимости различать внутри себя типы

обрабатываемых файлов.

Например, рассмотрим программу на языке Си (Рисунок 1.3), в которой соз-

дается новая копия существующего файла. Предположим, что исполняемая

версия

программы имеет наименование copy. Для запуска программы пользователь

вводит

с терминала:

copy oldfile newfile

где oldfile - имя существующего файла, а newfile - имя создаваемого

файла.

Система выполняет процедуру main, присваивая аргументу argc значение

количест-ва параметров в списке argv, а каждому элементу массива argv

значение парамет-ра, сообщенного пользователем. В приведенном примере argc

имеет значение 3, элемент argv[0] содержит строку символов "copy" (имя

программы условно являет-ся нулевым параметром), argv[1] - строку

символов "oldfile", а argv[2] - строку символов "newfile". Затем программа

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

запуске. Если это так, запускается операция open (открыть) для файла

oldfile с параметром "read-only" (только для чтения), в случае успешного

выполнения которой запускается операция creat (открыть) для файла

newfile. Режим доступа к вновь созданному файлу описывается числом 0666 (в

восьмиричном коде), что означает разрешение доступа к файлу для чтения и

записи для всех пользователей. Все обращения к операционной системе в

случае неудачи возвращают код -1; если же неудачно завершаются операции

open и creat, программа выдает сообщение и запускает операцию exit

(выйти) с возвращением кода состояния, равного 1, завершая свою работу и

указывая на возникновение ошибки.

Операции open и creat возвращают целое значение, являющееся

дескриптором

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

этого

программа вызывает подпрограмму copy, выполняющую в цикле операцию read (чи-

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

существующего файла, и операцию write (писать) для записи информации в

новый файл.Операция read каждый раз возвращает количество прочитанных

байтов (0 – если достигнут конец файла). Цикл завершается, если достигнут

конец файла или если произошла ошибка при выполнении операции read

(отсутствует контроль возникновения ошибок при выполнении операции

write). Затем управление из подпрограммы copy возвращается в основную

программу и запускается операция exit с кодом состояния 0 в качестве

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

Программа копирует любые файлы, указанные при ее вызове в качестве

аргумен-тов, при условии, что разрешено открытие существующего файла и

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

быть выведен на печатающее устройство, например, исходный текст программы,

так и символы, не выводимые на печать, даже саму программу. Таким образом,

оба вызова:

copy copy.c newcopy.c

copy copy newcopy

являются допустимыми. Существующий файл также может быть каталогом.

Например, по вызову:

copy . dircontents

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

ный файл "dircontents"; информация в новом файле совпадает, вплоть до каждо-

го байта, с содержимым каталога, только этот файл обычного типа (для созда-

ния нового каталога предназначена операция mknod). Наконец, любой из

файлов

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

зом:

#include

char buffer[2048];

int version = 1;

main(argc,argv)

int argc;

char *argv[];

{

int fdold,fdnew;

if (argc != 3)

{

printf("need 2 arguments for copy program\n);

exit(1);

}

fdold = open(argv[1],O_RDONLY); /* открыть исходный файл только

для чтения */

if (fdold == -1)

{

printf("cannot open file %s\n",argv[1]);

exit(1);

}

fdnew = creat(argv[2],0666); /* создать новый файл с

разрешением чтения и записи для всех

пользователей */

if (fdnew == -1)

{

printf("cannot create file %s\n",argv[2]);

exit(1);

}

copy(fdold,fdnew);

exit(0);

}

copy(old,new)

int old,new;

{

int count;

while ((count = read(old,buffer,sizeof(buffer))) > 0)

write(new,buffer,count);

}

Рисунок 1.3. Программа копирования файла

copy /dev/tty terminalread

читает символы, вводимые с терминала (файл /dev/tty соответствует

терминалу

пользователя), и копирует их в файл terminalread, завершая работу только

в

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

программы:

copy /dev/tty /dev/tty

вызывает чтение символов с терминала и их копирование обратно на терминал.

3.2 Среда выполнения процессов

Программой называется исполняемый файл, а процессом называется последо-

вательность операций программы или часть программы при ее выполнении. В сис-

теме UNIX может одновременно выполняться множество процессов (эту особен-

ность иногда называют мультипрограммированием или многозадачным

режимом),

при чем их число логически не ограничивается, и множество частей

программы

(такой как copy) может одновременно находиться в системе. Различные

системные операции позволяют процессам порождать новые процессы, завершают

процессы, синхронизируют выполнение этапов процесса и управляют реакцией

на наступле-ние различных событий. Благодаря различным обращениям к

операционной

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

Например, процесс, выполняющийся в программе, приведенной на

Рисунке

1.4, запускает операцию fork, чтобы породить новый процесс. Новый

процесс,

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

операции

fork, равное 0, и активизирует операцию execl, которая выполняет

программу

copy (Рисунок 1.3). Операция execl загружает файл "copy", который предполо-

жительно находится в текущем каталоге, в адресное пространство

порожденного

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

В

случае успешного выполнения операции execl управление в вызвавший ее

процесс

не возвращается, поскольку процесс выполняется в новом адресном

пространстве. Тем временем, процесс, запустивший операцию fork

(родительский процесс), получает ненулевое значение кода завершения

операции, вызывает операцию wait, которая приостанавливает его выполнение

до тех пор, пока не закончится выполнение программы copy, и завершается

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

располагаются программы стандартных библиотек Си, подключаемые в

процессе компиляции). Например, если исполняемая программа называется run,

пользователь запускает ее следующим образом:

main(argc,argv)

int argc;

char *argv[];

{

/* предусмотрено 2 аргумента: исходный файл и новый файл */

if (fork() == 0)

execl("copy","copy",argv[1],argv[2],0);

wait((int *)0)

printf("copy done\n");

}

Рисунок 1.4. Программа порождения нового процесса, выполняющего копиро-

вание файлов

run oldfile newfile

Процесс выполняет копирование файла с именем "oldfile" в файл с

именем

"newfile" и выводит сообщение. Хотя данная программа мало что добавила

к

программе "copy", в ней появились четыре основных обращения к

операционной

системе, управляющие выполнением процессов: fork, exec, wait и exit.

Вообще использование обращений к операционной системе дает

возможность

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

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

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

ляторы и редакторы, в системе UNIX являются программами

пользовательского

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

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

после

входа в систему. Shell интерпретирует первое слово командной строки как

имя

команды: во многих командах, в том числе и в командах fork (породить

новый

процесс) и exec (выполнить порожденный процесс), сама команда

ассоциируется

с ее именем, все остальные слова в командной строке трактуются как

параметры

команды.

Shell обрабатывает команды трех типов. Во-первых, в качестве имени

команды может быть указано имя исполняемого файла в объектном коде,

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

программы

на языке Си). Во-вторых, именем команды может быть имя командного файла, со-

держащего набор командных строк, обрабатываемых shell'ом. Наконец,

команда

может быть внутренней командой языка shell (в отличие от исполняемого

файла). Наличие внутренних команд делает shell языком программирования в

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

команды организации циклов (for-in-do-done и while-do-done), команды

выполнения по условиям (if-then-else-fi), оператор выбора, команду

изменения текущего для процесса каталога (cd) и некоторые другие.

Синтаксис shell'а допускает сравнение с образцом и обработку параметров.

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

эти команды.

Командный процессор shell ищет имена команд в указанном наборе катало-

гов, который можно изменить по желанию пользователя, вызвав shell.

Shell

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

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

допускается

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

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

дах, выполняемых асинхронно, говорят, что они выполняются на фоне других ко-

манд. Например, ввод команды

who

вызывает выполнение системой программы, хранящейся в файле /bin/who

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

момент работают с системой. Пока команда who выполняется, командный

процессор shell ожидает завершения ее выполнения и только затем

запрашивает у пользователя следующую команду. Если же ввести команду

who &

система выполнит программу who на фоне и shell готов немедленно принять сле-

дующую команду.

В среду выполнения каждого процесса в системе UNIX включается

текущий

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

торого присоединяется ко всем именам путей поиска, которые не начинаются

с

наклонной черты. Пользователь может запустить внутреннюю команду shell'а

cd

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

смены

текущего каталога. Командная строка

cd /usr/src/uts

делает текущим каталог "/usr/src/uts". Командная строка

cd ../..

делает текущим каталог, который на две вершины "ближе" к корню

(корневому

каталогу): параметр ".." относится к каталогу, являющемуся родительским

для

текущего.

Поскольку shell является пользовательской программой и не входит в

состав ядра операционной системы, его легко модифицировать и помещать в

конкретные условия эксплуатации. Например, вместо командного процессора

Баурна

(называемого так по имени его создателя, Стива Баурна), являющегося

частью

версии V стандартной системы, можно использовать процессор команд Си, обес-

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

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

при

желании можно воспользоваться командным процессором shell с

ограниченными

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

может

работать с несколькими командными процессорами одновременно.

Пользователи

имеют возможность запускать одновременно множество процессов, процессы же

в

свою очередь могут динамически порождать новые процессы и

синхронизировать

их выполнение. Все эти возможности обеспечиваются благодаря наличию

мощных

программных и аппаратных средств, составляющих среду выполнения

процессов.

Хотя привлекательность shell'а в наибольшей степени определяется его

возможнос-тями как языка программирования и его возможностями в обработке

аргументов, в данном разделе основное внимание концентрируется на среде

выполнения процес-сов, управление которой в системе возложено на

командный процессор Shell.

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.

5. ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА

Выполнение пользовательских процессов в системе UNIX осуществляется

на

двух уровнях: уровне пользователя и уровне ядра. Когда процесс

производит

обращение к операционной системе, режим выполнения процесса переключается

с

режима задачи (пользовательского) на режим ядра: операционная система

пытается обслужить запрос пользователя, возвращая код ошибки в случае

неудачного

завершения операции. Даже если пользователь не нуждается в каких-либо

определенных услугах операционной системы и не обращается к ней с

запросами,

система еще выполняет учетные операции, связанные с пользовательским процес-

сом, обрабатывает прерывания, планирует процессы, управляет

распределением

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

соответствующие им операционные системы) поддерживают большее число

уровней, чем указано здесь, однако уже двух режимов, режима задачи и

режима ядра, вполне достаточно для системы UNIX.

Основные различия между этими двумя режимами:

. В режиме задачи процессы имеют доступ только к своим собственным инструк-

циям и данным, но не к инструкциям и данным ядра (либо других

процессов). Однако в режиме ядра процессам уже доступны адресные

пространства ядра и пользователей. Например, виртуальное адресное

пространство процесса может быть поделено на адреса, доступные только в

режиме ядра, и на адреса, доступные в любом режиме.

Некоторые машинные команды являются привилегированными и вызывают

возникновение ошибок при попытке их использования в режиме задачи.

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

состояния

процессора; процессам, выполняющимся в режиме задачи, она недоступна.

Процессы

A B C

D

|Режим ядра |Я | | |Я |

|Режим задачи | |З |З | |

Рисунок 1.5. Процессы и режимы их выполнения

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

режима ядра и режима задачи и протекает одинаково для всех

пользовательских

программ, выполняющихся в этих режимах. Операционная система хранит

внутренние записи о каждом процессе, выполняющемся в системе. На Рисунке

1.5 показано это разделение: ядро делит процессы A, B, C и D,

расположенные вдоль

горизонтальной оси, аппаратные средства вводят различия между режимами вы-

полнения, расположенными по вертикали.

Несмотря на то, что система функционирует в одном из двух режимов,

ядро

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

то

особой совокупностью процессов, выполняющихся параллельно с пользовательски-

ми, оно само выступает составной частью любого пользовательского

процесса.

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

ресурсы,

или к "ядру", производящему различные операции, и это будет означать,

что

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

ветствующие операции. Например, командный процессор shell считывает

вводной

поток с терминала с помощью запроса к операционной системе. Ядро операцион-

ной системы, выступая от имени процессора shell, управляет

функционированием

терминала и передает вводимые символы процессору shell. Shell переходит

в

режим задачи, анализирует поток символов, введенных пользователем и

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

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

5.1 Прерывания и особые ситуации

Система UNIX позволяет таким устройства, как внешние устройства

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

процес-

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

сохраняет

свой текущий контекст (застывший образ выполняемого процесса),

устанавливает

причину прерывания и обрабатывает прерывание. После того, как прерывание бу-

дет обработано ядром, прерванный контекст восстановится и работа

продолжится

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

теты в соответствии с очередностью обработки прерываний. В процессе

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

прерывания с низким приоритетом на время обработки прерывания с более

высоким приорите-том.

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

ванных процессом, таких как недопустимая адресация, задание привилегирован-

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

зываются событиями, внешними по отношению к процессу. Особые ситуации

возникают прямо "посредине" выполнения команды, и система, обработав особую

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

возникают

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

прерывания

продолжает выполнение процесса уже начиная со следующей команды. Для обра-

ботки прерываний и особых ситуаций в системе UNIX используется один и тот

же

механизм.

5.2 Уровни прерывания процессора

Ядро иногда обязано предупреждать возникновение прерываний во время кри-

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

мер, во время обработки списка с указателями возникновение прерывания

от

диска для ядра нежелательно, т.к. при обработке прерывания можно

запортить

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

имеется

ряд привилегированных команд, устанавливающих уровень прерывания

процессора

в слове состояния процессора. Установка уровня прерывания на

определенное

значение отсекает прерывания этого и более низких уровней, разрешая

обработку только прерываний с более высоким приоритетом. На Рисунке 1.6

показана

последовательность уровней прерывания. Если ядро игнорирует прерывания

от

диска, в этом случае игнорируются и все остальные прерывания, кроме

прерываний от часов и машинных сбоев.

[pic]

Рисунок 1.6. Стандартные уровни прерываний

5.3 Распределение памяти

Ядро постоянно располагается в оперативной памяти, наряду с

выполняющимся в данный момент процессом (или частью его, по меньшей мере).

В процессе

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

ющихся адресами переменных и информационных структур, а также адресами инст-

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

так,

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

транслируемой

ни одна другая программа.

Когда программа запускается на выполнение, ядро выделяет для нее место

в

оперативной памяти, при этом совпадение виртуальных адресов,

сгенерированных

компилятором, с физическими адресами совсем необязательно. Ядро, взаимодейс-

твуя с аппаратными средствами, транслирует виртуальные адреса в

физические,

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

машинные

адреса. Такое отображение опирается на возможности аппаратных средств,

поэтому компоненты системы UNIX, занимающиеся им, являются машинно-

зависимыми.

Например, отдельные вычислительные машины имеют специальное оборудование

для подкачки выгруженных страниц памяти.

6. ВЫВОДЫ

В работе были описаны полная структура системы UNIX, взаимоотношения

между процессами, выполняющимися в режиме задачи и в режиме ядра, а также

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

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

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

системе. Архитектура системы поддерживает такой стиль программирования, при

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

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

и переназначение ввода-вывода.

Обращения к операционной системе позволяют процессам производить

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

обращений ядро операционной системы осуществляет общие учетные операции,

управляет планированием процессов, распределением памяти и защитой

процессов в оперативной памяти, обслуживает прерывания, управляет

файлами и устройствами и обрабатывает особые ситуации, возникающие в

системе. В функции ядра системы UNIX намеренно не включены многие функции,

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

системе позволяет процессам выполнять все необходимые операции на

пользовательском уровне.

ЛИТЕРАТУРА

1. THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach («Морис Дж.

Бах. Архитектура операционной системы Unix»Перевод с английского к.т.н.

Крюкова А.В.) Copyright c 1986 Корпорация Bell Telephone Laboratories.

Издано корпорацией Prentice-Hall. Отделение Simon & Schuster Энглвуд

Клиффс, Нью-Джерси 07632

2. Кристиан К. Операционная система UNIX. - М., Финансы и статистика,

1985, 320 стр.

3. Баурн С. Операционная система UNIX. - М., Мир, 1986, 464 стр.

4. Aho A.V., Kernighan B.W., Weinberger P.J. Awk - A Pattern Scanning and

Text Processing Language (2d Edition). - Bell Labs, Murray Hill, N.J.

5. Feldman S.I. Make - a program for maintaining computer programs. - Bell

Labs, Murray Hill, N.J. (а также в журнале Software - Practice and

Experience, vol.9).

(() Организации, получившие права на перепродажу с надбавкой к цене за

дополнительные услуги, оснащают вычислительную систему прикладными

программами, касающимися конкретных областей применения, стремясь

удовлетворить требования рынка. Такие организации чаще продают

прикладные программы, нежели операционные системы, под управлением

которых эти программы работают.

((( ) А что же версия IV ? Модификация внутреннего варианта системы

получила название "версия V".

(((() В некоторых реализациях системы UNIX операционная система

взаимодействует с обствен-ной операционной системой, которая, в свою

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

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

операционных систем с загрузкой под их управлением прикладных программ

параллельно с системой UNIX. Классическим примером подобной реализации

явилась система MERT [Lycklama 78a]. Более новым примером могут служить

реализации для компьютеров серии IBM 370 [Felton 84] и UNIVAC 100

[Bodenstab 84].

((((()Каталог "/bin" содержит большинство необходимых команд и обычно

входит в число каталогов, в которых ведет поиск командный процессор

shell.

Страницы: 1, 2


реферат скачать
НОВОСТИ реферат скачать
реферат скачать
ВХОД реферат скачать
Логин:
Пароль:
регистрация
забыли пароль?

реферат скачать    
реферат скачать
ТЕГИ реферат скачать

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


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.