Операционная система UNIX
Задание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2
Содержание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
Введение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 4
1. Что представляет собой ОС UNIX ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Структура системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
Ядро и процессы ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 6
Система ввода.вывода ... ... ... ... ... ... ... ... ... ... ... ... ... 9
Оболочка системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
Интерпретатор команды shell ... ... ... ... ... ... ... ... ... ... .. 11
Программы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 13
Команды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 16
Пользователь ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 17
Привилегированный пользователь ... ... ... ... ... ... ... ... ... . 17
3. Вход в систему ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 18
4. Командная строка ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
5. Файловая система ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
Работа с файлами и каталогами ... ... ... ... ... ... ... ... ... ... 19
Права доступа к файлам и каталогам ... ... ... ... ... ... ... ... . 22
Защита информации ... ... ... ... ... ... ... ... ... ... ... ... ... .. 22
6. Получение помощи ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 23
7. Работа с графическим интерфейсом ... ... ... ... ... ... ... ... ... ... ... 24
8. Системное администрирование ... ... ... ... ... ... ... ... ... ... ... ... .. 25
9. Утилиты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 26
10. Словарь терминов ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 28
Заключение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 29
Приложение А. Краткое описание распространенных команд ... ... ... 30
Список литературы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 32
Содержание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
Введение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 4
1. Что представляет собой ОС UNIX ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Структура системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
Ядро и процессы ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 6
Система ввода.вывода ... ... ... ... ... ... ... ... ... ... ... ... ... 9
Оболочка системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
Интерпретатор команды shell ... ... ... ... ... ... ... ... ... ... .. 11
Программы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 13
Команды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 16
Пользователь ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 17
Привилегированный пользователь ... ... ... ... ... ... ... ... ... . 17
3. Вход в систему ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 18
4. Командная строка ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
5. Файловая система ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
Работа с файлами и каталогами ... ... ... ... ... ... ... ... ... ... 19
Права доступа к файлам и каталогам ... ... ... ... ... ... ... ... . 22
Защита информации ... ... ... ... ... ... ... ... ... ... ... ... ... .. 22
6. Получение помощи ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 23
7. Работа с графическим интерфейсом ... ... ... ... ... ... ... ... ... ... ... 24
8. Системное администрирование ... ... ... ... ... ... ... ... ... ... ... ... .. 25
9. Утилиты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 26
10. Словарь терминов ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 28
Заключение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 29
Приложение А. Краткое описание распространенных команд ... ... ... 30
Список литературы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 32
В чём преимущество операционной системы UNIX перед другими системами и, что такое вообще операционная система.
Большинство операционных систем разрабатывались фирмами – производителями вычислительных машин в расчёте на повышение спроса на них.
Первые машины вообще выпускались без операционных систем – голыми. Они управлялись с помощью набора переключателей на пульте управления, и на такой машине, естественно, могли работать только инженеры высшей квалификации. Желание уменьшить влияние специалистов и приблизить ЭВМ к простому пользователю и вызвала появления первых операционных систем.
Любая операционная система представляет собой набор программ, управляющая ресурсами ЭВМ. Работа этих программ строго координирована.
Операционная система UNIX создавалась в несколько этапах. Все началось в 1965-69 гг. В концерне AT&T в рамках проекта Miltics для большой машины Genral Electric GE –645. В то время AT&T могла только разрабатывать, но не продавать компьютерные продукты в результате действующих тогда в США антимонопольных законов.
В 1969 г. Bell Labs решает выйти из проекта Multics, чтобы сосредоточить все свои усилия на создания мобильной операционной среды под условным названием UNIX.
Первоначально UNIX была написана на ассемблере для DEC PDP – 7. Затем к этому проекту был превечен Денис Ритчи, который в то время разработал язык В. Основную часть UNIX на В. В процессе работы язык В на столько усовершенствовался, что преобразился в С это было в1973г.
Операционная система UNIX отличалась от других систем тем, что имела только 10%(1000 строк) когда ассемблера. Уже в1976г. в первый раз была перенесена на другие машины- Interdata 8 /32.
В1971г. торговая марка UNIX , была запатентована для серии машин DEC PDP-11/20, наиболее распространенных. За несколько лет UNIX перетерпела несколько изданий, которые оказались наиболее популярными. Это шестое(1976)и седьмое(1979).
Нарастающая популярность UNIX заставила калифорнийский университет в Беркли предложить свой вариант UNIX – BSD (Berkley Software Distribution), на базе которого по заказу DARPA(агентство перспективных проектов военного ведомство США) компания BBN реализовала в систему BSD 4.1. протоколы TCP/IP. Так возникла сеть Internet.
Начинались попытки стандартизации. Шагом UNIX является появление в 1989г. ANSI стандарта для С. ( 16 лет спустя после его рождения ).
Большинство операционных систем разрабатывались фирмами – производителями вычислительных машин в расчёте на повышение спроса на них.
Первые машины вообще выпускались без операционных систем – голыми. Они управлялись с помощью набора переключателей на пульте управления, и на такой машине, естественно, могли работать только инженеры высшей квалификации. Желание уменьшить влияние специалистов и приблизить ЭВМ к простому пользователю и вызвала появления первых операционных систем.
Любая операционная система представляет собой набор программ, управляющая ресурсами ЭВМ. Работа этих программ строго координирована.
Операционная система UNIX создавалась в несколько этапах. Все началось в 1965-69 гг. В концерне AT&T в рамках проекта Miltics для большой машины Genral Electric GE –645. В то время AT&T могла только разрабатывать, но не продавать компьютерные продукты в результате действующих тогда в США антимонопольных законов.
В 1969 г. Bell Labs решает выйти из проекта Multics, чтобы сосредоточить все свои усилия на создания мобильной операционной среды под условным названием UNIX.
Первоначально UNIX была написана на ассемблере для DEC PDP – 7. Затем к этому проекту был превечен Денис Ритчи, который в то время разработал язык В. Основную часть UNIX на В. В процессе работы язык В на столько усовершенствовался, что преобразился в С это было в1973г.
Операционная система UNIX отличалась от других систем тем, что имела только 10%(1000 строк) когда ассемблера. Уже в1976г. в первый раз была перенесена на другие машины- Interdata 8 /32.
В1971г. торговая марка UNIX , была запатентована для серии машин DEC PDP-11/20, наиболее распространенных. За несколько лет UNIX перетерпела несколько изданий, которые оказались наиболее популярными. Это шестое(1976)и седьмое(1979).
Нарастающая популярность UNIX заставила калифорнийский университет в Беркли предложить свой вариант UNIX – BSD (Berkley Software Distribution), на базе которого по заказу DARPA(агентство перспективных проектов военного ведомство США) компания BBN реализовала в систему BSD 4.1. протоколы TCP/IP. Так возникла сеть Internet.
Начинались попытки стандартизации. Шагом UNIX является появление в 1989г. ANSI стандарта для С. ( 16 лет спустя после его рождения ).
Е.К. Дегтярев “Введение в UNIX” - Москва 1991.
Билл Болл “Linux за 24 часа” – Санкт-Петербург 2000г.
С.Б. Дунаев “UNIX System” – Москва 1995г.
Шамер Ларри, Негус Крис “Руководство пользователя без UNIX проблем” - Москва 1996г.
Джон Макмален “UNIX” – Москва 1996г.
Бьерн Страуструп “Язык программирования C++” – Москва 2002г.
Билл Болл “Linux за 24 часа” – Санкт-Петербург 2000г.
С.Б. Дунаев “UNIX System” – Москва 1995г.
Шамер Ларри, Негус Крис “Руководство пользователя без UNIX проблем” - Москва 1996г.
Джон Макмален “UNIX” – Москва 1996г.
Бьерн Страуструп “Язык программирования C++” – Москва 2002г.
Дисциплина: Информатика, Программирование, Базы данных
Тип работы: Курсовая работа
Бесплатно: Антиплагиат
Объем: 31 страниц
В избранное:
Тип работы: Курсовая работа
Бесплатно: Антиплагиат
Объем: 31 страниц
В избранное:
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РЕСПУБЛИКИ КАЗАХСТАН
Казахский национальный технический университет
им. К.И. Сатпаева
Институт информационных технологий
Кафедра вычислительной техники
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
Тема: Операционная система UNIX
Руководитель
Преподаватель
Джанабаев М. А.______________
_____________________2004 г.
Нормоконтролер
Джанабаев М.А_______________
_____________________2004 г.
Алматы 2004г.
ЗАДАНИЕ
на выполнение курсовой работы по дисциплине Информатика
Студенту Морозов Олег Игоревич
Тема работы: Операционная система UNIX.
Дата сдачи законченной работы __________________ 2004 г.
Перечень подлежащих разработке вопросов______________________
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
________________
Руководитель Джанабаев М. А. _______________
(подпись)
Задание принял к исполнению студент Морозов Олег Игоревич
_______________
(подпись)
Дата выдачи ________________________2004 г.
СОДЕРЖАНИЕ
Задание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2
Содержание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 3
Введение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 4
1. Что представляет собой ОС UNIX ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Структура системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
1. Ядро и процессы ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Система ввода-вывода ... ... ... ... ... ... ... ... ... ... ... ... ... 9
3. Оболочка системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
4. Интерпретатор команды shell ... ... ... ... ... ... ... ... ... ... .. 11
5. Программы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 13
6. Команды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 16
7. Пользователь ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 17
8. Привилегированный пользователь ... ... ... ... ... ... ... ... ... . 17
3. Вход в систему ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 18
4. Командная строка ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
5. Файловая система ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
1. Работа с файлами и каталогами ... ... ... ... ... ... ... ... ... ... 19
2. Права доступа к файлам и каталогам ... ... ... ... ... ... ... ... . 22
3. Защита информации ... ... ... ... ... ... ... ... ... ... ... ... ... .. 22
6. Получение помощи ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 23
7. Работа с графическим интерфейсом ... ... ... ... ... ... ... ... ... ... ... 24
8. Системное администрирование ... ... ... ... ... ... ... ... ... ... ... ... .. 25
9. Утилиты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 26
10. Словарь терминов ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 28
Заключение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .. 29
Приложение А. Краткое описание распространенных команд ... ... ... 30
Список литературы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 32
Введение
В чём преимущество операционной системы UNIX перед другими системами и,
что такое вообще операционная система.
Большинство операционных систем разрабатывались фирмами –
производителями вычислительных машин в расчёте на повышение спроса на них.
Первые машины вообще выпускались без операционных систем – голыми. Они
управлялись с помощью набора переключателей на пульте управления, и на
такой машине, естественно, могли работать только инженеры высшей
квалификации. Желание уменьшить влияние специалистов и приблизить ЭВМ к
простому пользователю и вызвала появления первых операционных систем.
Любая операционная система представляет собой набор программ,
управляющая ресурсами ЭВМ. Работа этих программ строго координирована.
Операционная система UNIX создавалась в несколько этапах. Все началось
в 1965-69 гг. В концерне AT&T в рамках проекта Miltics для большой машины
Genral Electric GE –645. В то время AT&T могла только разрабатывать, но не
продавать компьютерные продукты в результате действующих тогда в США
антимонопольных законов.
В 1969 г. Bell Labs решает выйти из проекта Multics, чтобы
сосредоточить все свои усилия на создания мобильной операционной среды под
условным названием UNIX.
Первоначально UNIX была написана на ассемблере для DEC PDP – 7. Затем к
этому проекту был превечен Денис Ритчи, который в то время разработал язык
В. Основную часть UNIX на В. В процессе работы язык В на столько
усовершенствовался, что преобразился в С это было в1973г.
Операционная система UNIX отличалась от других систем тем, что имела
только 10%(1000 строк) когда ассемблера. Уже в1976г. в первый раз была
перенесена на другие машины- Interdata 8 32.
В1971г. торговая марка UNIX , была запатентована для серии машин DEC
PDP-1120, наиболее распространенных. За несколько лет UNIX перетерпела
несколько изданий, которые оказались наиболее популярными. Это
шестое(1976)и седьмое(1979).
Нарастающая популярность UNIX заставила калифорнийский университет в
Беркли предложить свой вариант UNIX – BSD (Berkley Software Distribution),
на базе которого по заказу DARPA(агентство перспективных проектов военного
ведомство США) компания BBN реализовала в систему BSD 4.1. протоколы
TCPIP. Так возникла сеть Internet.
Начинались попытки стандартизации. Шагом UNIX является появление в
1989г. ANSI стандарта для С. ( 16 лет спустя после его рождения ).
Долгим и тернистым был путь UNIX на рынок программных средств. И
официальным считается с 1.01.84г. Тогда дочерняя компания AT&T Bell Labs
была переименована в USL –UNIX System Laboratories.
В мае 1988г. несколько ведущих компаний, между которыми были Apollo ,
Bull, НР, IBM и System, учредили фонд открытых систем OSF- организацию с
целью разработки и распространения открытых программных систем.
С самого начало UNIX разрабатывалась как многопользовательская
операционная система (далее – ОС), нормальный режим системы является режим
при котором пользователи решают различные задачи. Если же набор задач
однородный, то система будет работать менее эффективно.
В целом следует отметить, что UNIX даже в условиях роста числа ОС – не
ординарное явление в вычислительном мире. Система весьма перспективна и
представляет собой теоретический и практический интерес.
1. Что представляет собой ос UNIX
Рассмотрим характеристики операционной системы UNIX, по которым она
отличается от других операционных систем.
• Структурированная многоуровневая файловая система.
• Многопользовательская система.
• Выполняет одновременно более одной программы.
• Механизмы, которые позволяют одной программе передавать ее результаты
непосредственно в другую программу.
• Возможность для любого пользователя переводить выдачу результатов
работы программы с одного переферийного устройства на другое
(например, с дисплея терминала на дисковод.).
• Встроенный командный интерпретатор и язык
• Структурированный язык Си для системного программирования.
• Рассширенные средства для написания и разработки программ на Си и
других языках программирования.
• Рассширенные средства для ввода, внесения изменений и обработки текста
и подготовки его к печати.
2. Структура системы
2.1 Ядро и процессы
Ядро UNIX состоит из двух секций - секции управляющих структур и
программной секции. В секции управляющих структур располагаются таблицы
ядра, которые играют не пассивную, а активную роль управляющего.
Основные функциональные затраты при работе программ ядра приходится
именно на работу с таблицами. К ним относятся таблицы процессов,
программного текста файлов, индексных дескрипторов файлов, связи драйвер и
другие. Программная секция ядра в свою очередь состоит из двух частей:
диспетчера процессов и диспетчера внешних устройств. Диспетчер процессов –
управляет процессами, в его функцию входят: определение последовательности
процессов; обработка системы – вызовов; распределение ресурсов системы. Эта
часть ядра является независимой и практически не изменяется при переносе ОС
с одной вычислительной машины, на другую.
Диспетчер внешних устройств – концентрирует и обеспечивает передачи
информации между основной памятью и внешними устройствами. Он представляет
собой совокупность модулей называемыми драйверами, каждый из которых
отвечает за работу с тем или иным внешним устройством. Эта часть ядра
машинно-зависима т.к. набор периферийных устройств и по числу и по
конструктивным особенностям заметно различаются для разных вычислительных
систем. При переносе системы диспетчер внешних устройств должен
подвергается существенной переделке.
В каждый момент времени процессор ЭВМ может находиться в одной из 3-х
состояний .
1. Работать в состоянии “система” если выполняются команды ядра;
2. Работать в состоянии “процесс” если выполняются команды
пользовательского процесса;
3. Работать в состоянии “ожидания” если в системе нет процессов, готовых
к выполнению.
Механизм перехода процессора из одного состояния в другое отличается
для различных вычислительных машин, в одном случае он обеспечивает
аппаратно через систему прерываний, в другом – поддерживается только на
программном уровне. Переход процессора из состояния “процесс” в состояние
“систем” может быть вызван одной из следующий причин:
• Прерывание по таймеру;
• Обработка системного вызова;
• Прерывание от ввода-вывода.
Таймер системы часы играет большую роль в ОС, но особенно значима она в
системах разделения времени. Таймер регулярно с определенной частотой
формирует прерывание, после чего управление автоматически передается
специальной программе ядра, которая это прерывание обслуживает.
Пользовательский процесс по необходимости может обращаться к ядру для
выполнения некоторых системных функций. Такие обращения выполняются с
помощью системных вызовов. Выполнение ядром системного вызова либо
завершается возвратом управления вызывающему процессу, либо активизацией
нового пользовательского процесса, например, выполнение ядром системного
вызова потребовалось выполнение операций ввода-вывода.
Прерывание от ввода-вывода возникает момент окончание обмена
информацией между основной памятью и периферийным устройством. Таким
образом, устройство сообщает системе о завершении операции ввода-вывода.
Как упоминалось выше, UNIX работает в многопользовательском режиме.
Потому процессы выполняются последовательно, и конкурирует между собой за
время центрального процесса.
Процесс может находиться в одном из трех состояний: активном, готовом
или блокированным (ожидания).
Процесс считается активным, если выполняется в текущий момент.
Считается готовым к выполнению, если он не ожидает завершения каких либо
событий.
Ограниченный объем основной памяти не позволяет разместить в ней все
процессы одновременно. Часть из них располагается во внешней дисковой
памяти в области своппинга. Своппинг осуществляется диспетчером процессов и
состоит в выгрузке процессов на диск и загрузки их в основную память.
Процесс для активизации выбирается диспетчером процессов на основе
вычисления приоритетов. Приоритеты вычисляются динамически и только для
процессов, находящие в состоянии готовности. Таким образом, чем больше
процесс находится в активном состоянии, тем меньше его приоритет. Причем
обычный пользователь может только понижать свой приоритет процесса, а
привилегированный как понижать приоритет, так и повышать его. Диспетчер
процесса старается организовать так работу, чтобы время ожидания
центрального процесса было минимальным.
Помимо управления процессами, диспетчер процессов осуществляет
распределение ресурсов системы через реализацию системных вызовов.
Контекст процесса
Процедурный сегмент
Сегмент данных
Динамический сегмент
Таблица 1.1 Структура пользовательского процесса.
Контекст процесса - эта некоторая таблица, в которой хранится системная
информация о процессе при его нахождении в основной памяти. Контекст
процесса подвергается свопингу совместно с процедурным сегментом и
сегментом данных.
Процедурный сегмент- содержит команды процесса и их константы. В UNIX
все процедурные сегменты являются рентабельными. Процедурный сегмент и
сегмент данных составляет образ процесса. Он формирует трансляцию программ,
как совокупность двух указанных составных частей. Однако, задав при
трансляции специальный параметр, если создадим образ процесса с разделяемым
процедурным сегментом и сегментом данных, тогда процедурный сегмент будем
называть чистым кодом. Чистый код хранит в своей памяти одну копию
процедурного сегмента, она будет разделяться всеми процессами, а сегмент
данных для каждого процесса будет свой. Например, интерпретатор shell.
Создать новый процесс можно с помощью системного вызова fork.
Порожденный процесс наследует все характеристики порождающего процесса.
Приостановить работу можно с помощью системного вызова wait, до наступления
события указанного в вызове, чтобы прейти к выполнению новой программы,
через системный вызов ехес, следовательно, инициализация новой программы
UNIX – это практически всегда пара системных вызовов fork и exec.
Проследим два вида взаимодействий: между ядром и процессами и между
процессами. Следует обратить внимание, что пройденный сегмент для контекста
процесса, сегмента данных и динамического процесса является чистым кодом и
разделяется ими.
Наиболее важная информация хранится в таблице процессов и в контексте.
Т.к. таблица процессов располагается в ядре, то постоянно находится в
основной памяти. Каждый элемент этой таблице отражает текущее состояние
соответствующего процесса, его местоположение (адрес основной памяти и
своппинга ), размер процесса, его идентификатор, и т.д.
Менее важная, но более емкая информация хранится в контексте
процессора, расположено в адресном пространстве ядра. Таблица процессов и
контекст процесса взаимно дополняют друг друга. Их разделение необходимо в
целях минимизации объёма ядра.
Это позволяет “общаться” с процессом, даже если он не активен, или
находится в результате своппинга, и оказался на диске. Именно на этом
построен механизм логического взаимодействия между процессами.
Взаимодействие между процессами UNIX осуществляется на логическом и
информационном уровнях. На логическом уровне взаимодействие процессов
происходит только через ядро системы, с использованием механизма сигналов.
Ядро каждого процесса модулирует систему прерываний.
Информационное взаимодействие между процессами осуществляется 3-мя
способами:
1. Через передачу внешних аргументов (в пределах одного процесса);
2. Через файловую систему;
3. Через программный канал.
После порождения нового процесса часто бывает необходимо в его рамках
выполнить другую программу, которая системным вызовом ехес загружается на
место старой. Чтобы не было потерь внешних аргументов при смене образцов
процессов, и переписывает по системному вызову ехес в ядро системы, а затем
восстанавливаетсяв новом образе процесса.
2.2 Система ввода-вывода
Не одна ОС не обходится без системы ввода-вывода. Вот и ОС UNIX не
оказалось исключением.
Одной из сильных сторон операционной системы UNIX является гибкость ее
системы ввода-вывода. Реализация механизма основывается на следующих
свойствах ОС UNIX. Во-первых, любой вводвывод трактуется как ввод из
некоторого файла и вывод в некоторый файл. Клавиатура и экран терминала
тоже интерпретируются как файлы (первый можно только читать, а во второй
можно только писать). Во-вторых, доступ к любому файлу производится через
его дескриптор (положительное целое число). Фиксируются три значения
дескрипторов файлов. Файл с дескриптором 1 называется файлом стандартного
ввода (stdin), файл с дескриптором 2 - файлом стандартного вывода (stdout),
и файл с дескриптором 3 - файлом стандартного вывода диагностических
сообщений (stderr). В-третьих, программа, запущенная в некотором процессе,
"наследует" от породившего процесса все дескрипторы открытых файлов.
В головном процессе интерпретатора командного языка файлом стандартного
ввода является клавиатура терминала пользователя, а файлами стандартного
вывода и вывода диагностических сообщений - экран терминала. Однако при
запуске любой команды можно сообщить интерпретатору (средствами
соответствующего командного языка), какой файл или вывод какой программы
должен служить файлом стандартного ввода для запускаемой программы и какой
файл или ввод какой программы должен служить файлом стандартного вывода или
вывода диагностических сообщений для запускаемой программы. Тогда
интерпретатор перед выполнением системного вызова exec открывает указанные
файлы, подменяя смысл дескрипторов 1, 2 и 3.
файл – стандартный вывод. Поместить выходную информацию в файл, а не
посылать ее на экран. То, что находилось в файле раньше, будет уничтожено.
Например, если Вы хотите, чтобы список файлов Вашего каталога не выводился
на экран, а был записан в файл, необходимо дать следующую команду:
ls -l filelist
файл – стандартный вывод с добавлением. Дописать выходную информацию
в файл следом за его содержимым.
файл – стандартный ввод. Взять выходную информацию из файла, а не с
клавиатуры. Стандартный ввод и вывод используются в виде “команда другая
команда”
Конвейер. Взять стандартный вывод одной программы и использовать как
стандартный ввод другой. Это одна из самых богатых возможностей ОС UNIX;
комбинируя команды, эту функцию можно использовать для создания собственных
команд.
В UNIX логическая организация ввода-вывода упрощена за счет одинакового
интерфейса ввода-вывода на уровне ядра системы. Все файлы рассматриваются
как последовательный набор байтов, которым возможно как последовательное,
так и прямое обращение. Следует отметить, что на пользовательском уровне
можно создавать только обычные файлы и каталоги, причем каталоги только
системными средствами.
Физическая организация системы управления вводом-выводом базируется на
специальных программных средствах, работающих на уровне ядра и называемые
драйверами ввода-вывода. Драйвер- программа обмена данными, разработанная к
конкретному устройству и учитывая его особенности.
Драйверы ввода-вывода и система буферизации ядра поддерживают 2 вида
интерфейсов – блок-ориентированный и байт-ориентированный.
Блок-ориентированный интерфейс дает возможность значительно повысить
эффективность системы управления ввода-вывода за счет организации кэш-
памяти. Кэш-память- это система буфера ввода-вывода с размером в блок, где
оседают те блоки данных, обращаются к которым чаще. Если возникает запрос
на передачу данных, то сначала просматриваются внутренние буфера, если блок
отсутствует в основной памяти, то обращаются через драйвер к внешнему
устройству. Недостаток этого всего в том, что возможно разрушение файловой
системы при аппаратном сбое.
Байт-ориентированный интерфейс предназначен для медленных периферийных
устройств, обмен осуществляется в этом случае посимвольно, через буфер
символов в ядре системы.
Система ввода-вывода UNIX - это часть ядра, выполняющая функцию
диспетчера устройств ввода-вывода. Программная часть диспетчера включает
управляющую компоненту буферизации и набор драйверов. В качестве
структурных устройств используется: индексные дескрипторы специальных
файлов, таблица связи между драйверами байт-ориентированных устройств,
таблица буферов и блоков и таблица прерываний. Каждый индексный дескриптор
ссылается на соответствующий элемент из таблицы связи. Каждый элемент
связей адресуется к определенному драйверу, обеспечивает обмен информации
между основной памятью и внешним устройством данного типа. Таблица связей
блок-ориентированных устройств, связана с таблицей буферов блоков,
указывающие на буфера ввода-вывода, образующие кэш-память. Программы
драйверов предназначены для открытия и закрытия файлов, чтении и записи
данных, для управления режимами работы устройств. При возникновение
прерываний от ввода-вывода управление передается программе обработке
прерываний драйвера, адрес которой выбирается из таблицы прерываний.
2.3 Оболочка системы
Оболочка помогает нам управлять компьютером.
Оболочка – это программа, которой вы пользуетесь в процессе в входа в
систему. Когда мы вводим команды, они передаются оболочке. Это как
программа, выполняющая другие программы. Она как посредник между вами и
ядром, а также преобразует команды в запросы ОС и следит за служебной
информацией.
2.4 Интерпретатор команды shell
Далее для изучения и работы с операционной системой UNIX нам
понадобится интерпретатор команды shell. Посмотрим, для чего его
используют.
Интерпретатор команды shell - одна из наиболее важных и сложных
программ системы. Она обеспечивает интерфейс пользователь- ядро и выполняет
следующие основные функции:
Интерпретирует команды;
Обрабатывает имена файлов, определенные через метасимволы;
Осуществляет переадресацию ввода-вывода;
Создает среду пользователя;
Поддерживает командный язык.
Команды интерпретатора shell реализуются обычными программами, записные
на языке С для UNIX . Условно все команды можно разбить на группы:
информационные, служебные и работы с файловой системой и файлами.
Информационные команды позволяют получать различного рода справки о
состояние системы и справочную информацию. Наиболее важные команды этой
группы:
Date- вывести и установить дату и время;
Ps – получение информации о процессах;
Who- получение информации о работающих в системе.
Служебные команды дают возможность выполнять ряд специальных функций,
установка среды пользователя, печать параметров, установка прав доступа и
другие. В этой группе отметим команды:
Stty – установить характеристики терминала;
Echo – выдать параметры;
Kill – завершить процесс;
Chmod – сменить права доступа.
Самая многочисленная группа команд обеспечивает работу с файловой
системой и отдельными файлами. Здесь следует отметить следующие команды:
Cd – изменение текущей директории;
Mv – пересылка и переименование файлов;
Cp – копирование файла;
Rm- уничтожение файлов;
Cat - объединение файла.
Всего в UNIX реализовано более 130 команд, оперируя которыми можно
вести активный диалог в системе и выполнить представительный набор функций.
При запуске shell для отдельного пользователя автоматически
определяется стандартный ввод-вывод на соответствующий терминал и файл для
фиксации ошибок. Поэтому большинство команд осуществляют вывод результатов
на терминал, а такие как редакторы исходную информацию для работы получают
с терминала.
Имеется 3 основных shell: Bourne Shell (sh), C-Shell (ch), Korn Shell
(ksh).
• Bourne Shell есть оригинальный UNIX Shell виртуально, присутствующий
во всех UNIX- дистрибуциях.
• C-Shell был проектом Калифорнийского университета в Беркли, чтобы
добавить интерактивную обработку к Shell- окружению.
• Korn Shell написан Дейвидом Корном и также имеет место своего рождения
в Калифорнийском институте в Беркли.
Korn shell (ksh) написан таким образом, что любая программа,
подготовленная для выполнения в sh, будет работать и в ksh. Оболочка Корн
включает в себя все возможности shell, а также многое другое. Например:
• Возможность редактировать командную строку с использованием
команды vi или emacs.
• Возможность повторять ранее введенные команды с внесением в них
поправок и корректировок.
• Встроенные возможности арифметических операций и обработки строк.
• Массивы.
• Возможность автоматически контролировать и наблюдать процесс
фонового исполнения программ.
C-Shell напоминает больше язык программирования Си и не подходит для
выполнения программ sh.
Таким образом, shell, помимо организации связи пользователь – система,
является мощным инструментальным средством, которое допускает почти
неограниченное расширение системы в сторону необходимой проблемной
ориентации.
2.5 Программы
ОС UNIX одновременно является операционной средой использования
существующих прикладных программ и средой разработки новых приложений.
Новые программы могут писаться на разных языках (Фортран, Паскаль, Модула,
Ада и др.). Однако стандартным языком программирования в среде ОС UNIX
является язык Си (который в последнее время все больше заменяется на Си++).
Это объясняется тем, что во-первых, сама система UNIX написана на языке Си,
а, во-вторых, язык Си является одним из наиболее качественно
стандартизованных языков.
Поэтому программы, написанные на языке Си, при использовании
правильного стиля программирования обладают весьма высоким уровнем
мобильности, т.е. их можно достаточно просто переносить на другие
аппаратные платформы, работающие как под управлением ОС UNIX, так и под
управлением ряда других операционных систем (например, DEC Open VMS или MS
Windows NT). Более подробно мы рассмотрим принципы мобильного
программирования в среде ОС UNIX в четвертой части курса.
Приведем краткий обзор процесса разработки программы на языке Си (или
Си++), которую можно выполнить в среде ОС UNIX. Любая выполняемая программа
компонуется из одного или нескольких объектных файлов. Поэтому разработка
программы начинается с создания исходных файлов, содержащих текст на языке
Си. Эти файлы могут содержать определения глобальных имен переменных иили
функций (имен, которые могут быть видимы из других файлов), а также ссылки
на внешние имена (объявленные как глобальные в одном из других файлов,
которые будут составлять программу).
Текстовые файлы производятся с помощью одного из текстовых редакторов,
поддерживаемых в среде UNIX. Традиционным текстовым редактором ОС UNIX
является упоминавшийся в первом разделе редактор vi, исходная версия
которого была разработана Биллом Джоем. Этот редактор достаточно старый, он
может работать практически на всех терминалах и не является в полном смысле
оконным.
В последние годы все большую популярность получает редактор Emacs
(разработанный и непрерывно совершенствуемый президентом Free Software
Foundation Ричардом Столлманом). Это очень мощный многооконный редактор,
который позволяет не только писать программы (и другие тексты), но также и
компилировать, компоновать и отлаживать программы (а также делать многое
другое, например, принимать и отправлять электронную почту). Основным
недостатком редактора Emacs является исключительно большой набор (более
200) функциональных клавиш. Следует, правда, заметить, что при
использовании Emacs в оконной системе X он обеспечивает более удобный
интерфейс.
Заметим также, что многие неудобства интерфейсов традиционных
инструментальных средств ОС UNIX связаны с тем, что они ориентированы на
использование и алфавитно-цифровых, и графических терминалов. Поэтому
обычно эти средства поддерживают старомодный строчный интерфейс даже при
наличии графического терминала. Естественно, в современных вариантах ОС
UNIX все новые инструментальные средства поддерживают оконный графический
интерфейс (и, следовательно, их невозможно использовать при наличии
алфавитно-цифровых терминалов).
После того, как текстовый файл создан, его нужно откомпилировать для
получения объектного файла. Наиболее популярными компиляторами для языка Си
в среде ОС UNIX сейчас являются pcc (Ритчи и Томпсон) и gcc (Ричард
Столлман). Оба эти компилятора являются полностью мобильными и обладают
возможностью генерировать код для разнообразных компьютеров, т.е. эти
компиляторы могут быть установлены практически на любой аппаратной
платформе под управлением ОС UNIX.
Можно отметить следующие преимущества gcc. Во-первых, этот компилятор
свободно, т.е. бесплатно (вместе со своими исходными текстами)
распространяется Free Software Foundation. Во-вторых, gcc тщательно
поддерживается и сопровождается. В-третьих, начиная с версии 2.0, gcc может
компилировать программы, написанные на языках Си, Си++ и Objective C, а
результирующая выполняемая программа может быть скомпонована из объектных
файлов, полученных из текстовых файлов на любом из этих языков. В-
четвертых, открытость исходных текстов gcc и тщательно разработанная
структура компилятора позволяют сравнительно просто добавлять к gcc новые
кодогенераторы. Относительным недостатком gcc является то, что используемый
диалект языка Си включает слишком много расширений по сравнению со
стандартом ANSIISO (однако имеется режим, в котором компилятор указывает
все расширенные конструкции языка, встречающиеся в компилируемой
программе).
Оба компилятора обрабатывают программу в два этапа. На первом этапе
синтаксически правильный текст на языке Си преобразуется в текст на языке
ассемблера. На втором этапе на основе текста на языке ассемблера
генерируются машинные коды и получается объектный файл. Исторически в ОС
UNIX использовались различные форматы объектных модулей. Для обеспечения
совместимости с предыдущими версиями почти все они поддерживаются в
современных версиях компиляторов. Однако в настоящее время преимущественно
используется формат COFF (Common Object File Format). При желании можно
остановить процесс компиляции после первого этапа и получить для изучения
файл с текстом программы на языке ассемблера.
После того, как необходимый для построения выполняемой программы набор
объектных файлов получен, необходимо произвести компоновку выполняемой
программы. В ОС UNIX компоновщик выполняемых программ называется редактором
связей (link editor) и обычно вызывается командой ld. Редактору связей
указывается набор объектных файлов и набор библиотек, из которых нужно
черпать недостающие для компоновки программы.
Процесс компоновки заключается в следующем. Сначала просматривается
набор заданных объектных файлов. Для каждого внешнего имени ищется
объектный файл, содержащий определение такого же глобального имени. Если
поиск заканчивается успешно, то внешняя ссылка заменяется на ссылку на
определение глобального имени. Если в конце этого этапа остаются внешние
имена, для которых не удалось найти соответствующего определения
глобального имени, то начинается поиск объектных файлов с нужными
определениями глобальных имен в указанных библиотеках. Если, в конце
концов, удается найти определения для всех внешних имен, все
соответствующие объектные файлы собираются вместе и образуют выполняемый
файл.
В ОС UNIX имеется несколько стандартных библиотек. В большинстве
случаев наиболее важной является библиотека вводавывода (stdio). Грамотное
использование стандартных библиотек способствует созданию легко переносимых
прикладных программ (мы вернемся к обсуждению стандартных библиотек ОС UNIX
в четвертой части курса).
Выполняемая программа может быть запущена в интерактивном режиме как
команда shell или выполнена в отдельном процессе, образуемом уже запущенной
программой.
2.6 Команды
Любой командный язык семейства shell фактически состоит из трех частей:
служебных конструкций, позволяющих манипулировать с текстовыми строками и
строить сложные команды на основе простых команд; встроенных команд,
выполняемых непосредственно интерпретатором командного языка; команд,
представляемых отдельными выполняемыми файлами (более подробно и точно
командные языки рассматриваются в пятой части курса).
В свою очередь, набор команд последнего вида включает стандартные
команды (системные утилиты, такие как vi, cc и т.д.) и команды, созданные
пользователями системы. Для того, чтобы выполняемый файл, разработанный
пользователем ОС UNIX, можно было запускать как команду shell, достаточно
определить в одном из исходных файлов функцию с именем main (имя main
должно быть глобальным, т.е. перед ним не должно указываться ключевое слово
static). Если употребить в качестве имени команды имя такого выполняемого
файла, командный интерпретатор создаст новый процесс (см. ... продолжение
РЕСПУБЛИКИ КАЗАХСТАН
Казахский национальный технический университет
им. К.И. Сатпаева
Институт информационных технологий
Кафедра вычислительной техники
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
Тема: Операционная система UNIX
Руководитель
Преподаватель
Джанабаев М. А.______________
_____________________2004 г.
Нормоконтролер
Джанабаев М.А_______________
_____________________2004 г.
Алматы 2004г.
ЗАДАНИЕ
на выполнение курсовой работы по дисциплине Информатика
Студенту Морозов Олег Игоревич
Тема работы: Операционная система UNIX.
Дата сдачи законченной работы __________________ 2004 г.
Перечень подлежащих разработке вопросов______________________
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
___________________________________ ___________________________________ ______
________________
Руководитель Джанабаев М. А. _______________
(подпись)
Задание принял к исполнению студент Морозов Олег Игоревич
_______________
(подпись)
Дата выдачи ________________________2004 г.
СОДЕРЖАНИЕ
Задание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2
Содержание ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 3
Введение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 4
1. Что представляет собой ОС UNIX ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Структура системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
1. Ядро и процессы ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 6
2. Система ввода-вывода ... ... ... ... ... ... ... ... ... ... ... ... ... 9
3. Оболочка системы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
4. Интерпретатор команды shell ... ... ... ... ... ... ... ... ... ... .. 11
5. Программы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 13
6. Команды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 16
7. Пользователь ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 17
8. Привилегированный пользователь ... ... ... ... ... ... ... ... ... . 17
3. Вход в систему ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 18
4. Командная строка ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
5. Файловая система ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 19
1. Работа с файлами и каталогами ... ... ... ... ... ... ... ... ... ... 19
2. Права доступа к файлам и каталогам ... ... ... ... ... ... ... ... . 22
3. Защита информации ... ... ... ... ... ... ... ... ... ... ... ... ... .. 22
6. Получение помощи ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 23
7. Работа с графическим интерфейсом ... ... ... ... ... ... ... ... ... ... ... 24
8. Системное администрирование ... ... ... ... ... ... ... ... ... ... ... ... .. 25
9. Утилиты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 26
10. Словарь терминов ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 28
Заключение ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . .. 29
Приложение А. Краткое описание распространенных команд ... ... ... 30
Список литературы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 32
Введение
В чём преимущество операционной системы UNIX перед другими системами и,
что такое вообще операционная система.
Большинство операционных систем разрабатывались фирмами –
производителями вычислительных машин в расчёте на повышение спроса на них.
Первые машины вообще выпускались без операционных систем – голыми. Они
управлялись с помощью набора переключателей на пульте управления, и на
такой машине, естественно, могли работать только инженеры высшей
квалификации. Желание уменьшить влияние специалистов и приблизить ЭВМ к
простому пользователю и вызвала появления первых операционных систем.
Любая операционная система представляет собой набор программ,
управляющая ресурсами ЭВМ. Работа этих программ строго координирована.
Операционная система UNIX создавалась в несколько этапах. Все началось
в 1965-69 гг. В концерне AT&T в рамках проекта Miltics для большой машины
Genral Electric GE –645. В то время AT&T могла только разрабатывать, но не
продавать компьютерные продукты в результате действующих тогда в США
антимонопольных законов.
В 1969 г. Bell Labs решает выйти из проекта Multics, чтобы
сосредоточить все свои усилия на создания мобильной операционной среды под
условным названием UNIX.
Первоначально UNIX была написана на ассемблере для DEC PDP – 7. Затем к
этому проекту был превечен Денис Ритчи, который в то время разработал язык
В. Основную часть UNIX на В. В процессе работы язык В на столько
усовершенствовался, что преобразился в С это было в1973г.
Операционная система UNIX отличалась от других систем тем, что имела
только 10%(1000 строк) когда ассемблера. Уже в1976г. в первый раз была
перенесена на другие машины- Interdata 8 32.
В1971г. торговая марка UNIX , была запатентована для серии машин DEC
PDP-1120, наиболее распространенных. За несколько лет UNIX перетерпела
несколько изданий, которые оказались наиболее популярными. Это
шестое(1976)и седьмое(1979).
Нарастающая популярность UNIX заставила калифорнийский университет в
Беркли предложить свой вариант UNIX – BSD (Berkley Software Distribution),
на базе которого по заказу DARPA(агентство перспективных проектов военного
ведомство США) компания BBN реализовала в систему BSD 4.1. протоколы
TCPIP. Так возникла сеть Internet.
Начинались попытки стандартизации. Шагом UNIX является появление в
1989г. ANSI стандарта для С. ( 16 лет спустя после его рождения ).
Долгим и тернистым был путь UNIX на рынок программных средств. И
официальным считается с 1.01.84г. Тогда дочерняя компания AT&T Bell Labs
была переименована в USL –UNIX System Laboratories.
В мае 1988г. несколько ведущих компаний, между которыми были Apollo ,
Bull, НР, IBM и System, учредили фонд открытых систем OSF- организацию с
целью разработки и распространения открытых программных систем.
С самого начало UNIX разрабатывалась как многопользовательская
операционная система (далее – ОС), нормальный режим системы является режим
при котором пользователи решают различные задачи. Если же набор задач
однородный, то система будет работать менее эффективно.
В целом следует отметить, что UNIX даже в условиях роста числа ОС – не
ординарное явление в вычислительном мире. Система весьма перспективна и
представляет собой теоретический и практический интерес.
1. Что представляет собой ос UNIX
Рассмотрим характеристики операционной системы UNIX, по которым она
отличается от других операционных систем.
• Структурированная многоуровневая файловая система.
• Многопользовательская система.
• Выполняет одновременно более одной программы.
• Механизмы, которые позволяют одной программе передавать ее результаты
непосредственно в другую программу.
• Возможность для любого пользователя переводить выдачу результатов
работы программы с одного переферийного устройства на другое
(например, с дисплея терминала на дисковод.).
• Встроенный командный интерпретатор и язык
• Структурированный язык Си для системного программирования.
• Рассширенные средства для написания и разработки программ на Си и
других языках программирования.
• Рассширенные средства для ввода, внесения изменений и обработки текста
и подготовки его к печати.
2. Структура системы
2.1 Ядро и процессы
Ядро UNIX состоит из двух секций - секции управляющих структур и
программной секции. В секции управляющих структур располагаются таблицы
ядра, которые играют не пассивную, а активную роль управляющего.
Основные функциональные затраты при работе программ ядра приходится
именно на работу с таблицами. К ним относятся таблицы процессов,
программного текста файлов, индексных дескрипторов файлов, связи драйвер и
другие. Программная секция ядра в свою очередь состоит из двух частей:
диспетчера процессов и диспетчера внешних устройств. Диспетчер процессов –
управляет процессами, в его функцию входят: определение последовательности
процессов; обработка системы – вызовов; распределение ресурсов системы. Эта
часть ядра является независимой и практически не изменяется при переносе ОС
с одной вычислительной машины, на другую.
Диспетчер внешних устройств – концентрирует и обеспечивает передачи
информации между основной памятью и внешними устройствами. Он представляет
собой совокупность модулей называемыми драйверами, каждый из которых
отвечает за работу с тем или иным внешним устройством. Эта часть ядра
машинно-зависима т.к. набор периферийных устройств и по числу и по
конструктивным особенностям заметно различаются для разных вычислительных
систем. При переносе системы диспетчер внешних устройств должен
подвергается существенной переделке.
В каждый момент времени процессор ЭВМ может находиться в одной из 3-х
состояний .
1. Работать в состоянии “система” если выполняются команды ядра;
2. Работать в состоянии “процесс” если выполняются команды
пользовательского процесса;
3. Работать в состоянии “ожидания” если в системе нет процессов, готовых
к выполнению.
Механизм перехода процессора из одного состояния в другое отличается
для различных вычислительных машин, в одном случае он обеспечивает
аппаратно через систему прерываний, в другом – поддерживается только на
программном уровне. Переход процессора из состояния “процесс” в состояние
“систем” может быть вызван одной из следующий причин:
• Прерывание по таймеру;
• Обработка системного вызова;
• Прерывание от ввода-вывода.
Таймер системы часы играет большую роль в ОС, но особенно значима она в
системах разделения времени. Таймер регулярно с определенной частотой
формирует прерывание, после чего управление автоматически передается
специальной программе ядра, которая это прерывание обслуживает.
Пользовательский процесс по необходимости может обращаться к ядру для
выполнения некоторых системных функций. Такие обращения выполняются с
помощью системных вызовов. Выполнение ядром системного вызова либо
завершается возвратом управления вызывающему процессу, либо активизацией
нового пользовательского процесса, например, выполнение ядром системного
вызова потребовалось выполнение операций ввода-вывода.
Прерывание от ввода-вывода возникает момент окончание обмена
информацией между основной памятью и периферийным устройством. Таким
образом, устройство сообщает системе о завершении операции ввода-вывода.
Как упоминалось выше, UNIX работает в многопользовательском режиме.
Потому процессы выполняются последовательно, и конкурирует между собой за
время центрального процесса.
Процесс может находиться в одном из трех состояний: активном, готовом
или блокированным (ожидания).
Процесс считается активным, если выполняется в текущий момент.
Считается готовым к выполнению, если он не ожидает завершения каких либо
событий.
Ограниченный объем основной памяти не позволяет разместить в ней все
процессы одновременно. Часть из них располагается во внешней дисковой
памяти в области своппинга. Своппинг осуществляется диспетчером процессов и
состоит в выгрузке процессов на диск и загрузки их в основную память.
Процесс для активизации выбирается диспетчером процессов на основе
вычисления приоритетов. Приоритеты вычисляются динамически и только для
процессов, находящие в состоянии готовности. Таким образом, чем больше
процесс находится в активном состоянии, тем меньше его приоритет. Причем
обычный пользователь может только понижать свой приоритет процесса, а
привилегированный как понижать приоритет, так и повышать его. Диспетчер
процесса старается организовать так работу, чтобы время ожидания
центрального процесса было минимальным.
Помимо управления процессами, диспетчер процессов осуществляет
распределение ресурсов системы через реализацию системных вызовов.
Контекст процесса
Процедурный сегмент
Сегмент данных
Динамический сегмент
Таблица 1.1 Структура пользовательского процесса.
Контекст процесса - эта некоторая таблица, в которой хранится системная
информация о процессе при его нахождении в основной памяти. Контекст
процесса подвергается свопингу совместно с процедурным сегментом и
сегментом данных.
Процедурный сегмент- содержит команды процесса и их константы. В UNIX
все процедурные сегменты являются рентабельными. Процедурный сегмент и
сегмент данных составляет образ процесса. Он формирует трансляцию программ,
как совокупность двух указанных составных частей. Однако, задав при
трансляции специальный параметр, если создадим образ процесса с разделяемым
процедурным сегментом и сегментом данных, тогда процедурный сегмент будем
называть чистым кодом. Чистый код хранит в своей памяти одну копию
процедурного сегмента, она будет разделяться всеми процессами, а сегмент
данных для каждого процесса будет свой. Например, интерпретатор shell.
Создать новый процесс можно с помощью системного вызова fork.
Порожденный процесс наследует все характеристики порождающего процесса.
Приостановить работу можно с помощью системного вызова wait, до наступления
события указанного в вызове, чтобы прейти к выполнению новой программы,
через системный вызов ехес, следовательно, инициализация новой программы
UNIX – это практически всегда пара системных вызовов fork и exec.
Проследим два вида взаимодействий: между ядром и процессами и между
процессами. Следует обратить внимание, что пройденный сегмент для контекста
процесса, сегмента данных и динамического процесса является чистым кодом и
разделяется ими.
Наиболее важная информация хранится в таблице процессов и в контексте.
Т.к. таблица процессов располагается в ядре, то постоянно находится в
основной памяти. Каждый элемент этой таблице отражает текущее состояние
соответствующего процесса, его местоположение (адрес основной памяти и
своппинга ), размер процесса, его идентификатор, и т.д.
Менее важная, но более емкая информация хранится в контексте
процессора, расположено в адресном пространстве ядра. Таблица процессов и
контекст процесса взаимно дополняют друг друга. Их разделение необходимо в
целях минимизации объёма ядра.
Это позволяет “общаться” с процессом, даже если он не активен, или
находится в результате своппинга, и оказался на диске. Именно на этом
построен механизм логического взаимодействия между процессами.
Взаимодействие между процессами UNIX осуществляется на логическом и
информационном уровнях. На логическом уровне взаимодействие процессов
происходит только через ядро системы, с использованием механизма сигналов.
Ядро каждого процесса модулирует систему прерываний.
Информационное взаимодействие между процессами осуществляется 3-мя
способами:
1. Через передачу внешних аргументов (в пределах одного процесса);
2. Через файловую систему;
3. Через программный канал.
После порождения нового процесса часто бывает необходимо в его рамках
выполнить другую программу, которая системным вызовом ехес загружается на
место старой. Чтобы не было потерь внешних аргументов при смене образцов
процессов, и переписывает по системному вызову ехес в ядро системы, а затем
восстанавливаетсяв новом образе процесса.
2.2 Система ввода-вывода
Не одна ОС не обходится без системы ввода-вывода. Вот и ОС UNIX не
оказалось исключением.
Одной из сильных сторон операционной системы UNIX является гибкость ее
системы ввода-вывода. Реализация механизма основывается на следующих
свойствах ОС UNIX. Во-первых, любой вводвывод трактуется как ввод из
некоторого файла и вывод в некоторый файл. Клавиатура и экран терминала
тоже интерпретируются как файлы (первый можно только читать, а во второй
можно только писать). Во-вторых, доступ к любому файлу производится через
его дескриптор (положительное целое число). Фиксируются три значения
дескрипторов файлов. Файл с дескриптором 1 называется файлом стандартного
ввода (stdin), файл с дескриптором 2 - файлом стандартного вывода (stdout),
и файл с дескриптором 3 - файлом стандартного вывода диагностических
сообщений (stderr). В-третьих, программа, запущенная в некотором процессе,
"наследует" от породившего процесса все дескрипторы открытых файлов.
В головном процессе интерпретатора командного языка файлом стандартного
ввода является клавиатура терминала пользователя, а файлами стандартного
вывода и вывода диагностических сообщений - экран терминала. Однако при
запуске любой команды можно сообщить интерпретатору (средствами
соответствующего командного языка), какой файл или вывод какой программы
должен служить файлом стандартного ввода для запускаемой программы и какой
файл или ввод какой программы должен служить файлом стандартного вывода или
вывода диагностических сообщений для запускаемой программы. Тогда
интерпретатор перед выполнением системного вызова exec открывает указанные
файлы, подменяя смысл дескрипторов 1, 2 и 3.
файл – стандартный вывод. Поместить выходную информацию в файл, а не
посылать ее на экран. То, что находилось в файле раньше, будет уничтожено.
Например, если Вы хотите, чтобы список файлов Вашего каталога не выводился
на экран, а был записан в файл, необходимо дать следующую команду:
ls -l filelist
файл – стандартный вывод с добавлением. Дописать выходную информацию
в файл следом за его содержимым.
файл – стандартный ввод. Взять выходную информацию из файла, а не с
клавиатуры. Стандартный ввод и вывод используются в виде “команда другая
команда”
Конвейер. Взять стандартный вывод одной программы и использовать как
стандартный ввод другой. Это одна из самых богатых возможностей ОС UNIX;
комбинируя команды, эту функцию можно использовать для создания собственных
команд.
В UNIX логическая организация ввода-вывода упрощена за счет одинакового
интерфейса ввода-вывода на уровне ядра системы. Все файлы рассматриваются
как последовательный набор байтов, которым возможно как последовательное,
так и прямое обращение. Следует отметить, что на пользовательском уровне
можно создавать только обычные файлы и каталоги, причем каталоги только
системными средствами.
Физическая организация системы управления вводом-выводом базируется на
специальных программных средствах, работающих на уровне ядра и называемые
драйверами ввода-вывода. Драйвер- программа обмена данными, разработанная к
конкретному устройству и учитывая его особенности.
Драйверы ввода-вывода и система буферизации ядра поддерживают 2 вида
интерфейсов – блок-ориентированный и байт-ориентированный.
Блок-ориентированный интерфейс дает возможность значительно повысить
эффективность системы управления ввода-вывода за счет организации кэш-
памяти. Кэш-память- это система буфера ввода-вывода с размером в блок, где
оседают те блоки данных, обращаются к которым чаще. Если возникает запрос
на передачу данных, то сначала просматриваются внутренние буфера, если блок
отсутствует в основной памяти, то обращаются через драйвер к внешнему
устройству. Недостаток этого всего в том, что возможно разрушение файловой
системы при аппаратном сбое.
Байт-ориентированный интерфейс предназначен для медленных периферийных
устройств, обмен осуществляется в этом случае посимвольно, через буфер
символов в ядре системы.
Система ввода-вывода UNIX - это часть ядра, выполняющая функцию
диспетчера устройств ввода-вывода. Программная часть диспетчера включает
управляющую компоненту буферизации и набор драйверов. В качестве
структурных устройств используется: индексные дескрипторы специальных
файлов, таблица связи между драйверами байт-ориентированных устройств,
таблица буферов и блоков и таблица прерываний. Каждый индексный дескриптор
ссылается на соответствующий элемент из таблицы связи. Каждый элемент
связей адресуется к определенному драйверу, обеспечивает обмен информации
между основной памятью и внешним устройством данного типа. Таблица связей
блок-ориентированных устройств, связана с таблицей буферов блоков,
указывающие на буфера ввода-вывода, образующие кэш-память. Программы
драйверов предназначены для открытия и закрытия файлов, чтении и записи
данных, для управления режимами работы устройств. При возникновение
прерываний от ввода-вывода управление передается программе обработке
прерываний драйвера, адрес которой выбирается из таблицы прерываний.
2.3 Оболочка системы
Оболочка помогает нам управлять компьютером.
Оболочка – это программа, которой вы пользуетесь в процессе в входа в
систему. Когда мы вводим команды, они передаются оболочке. Это как
программа, выполняющая другие программы. Она как посредник между вами и
ядром, а также преобразует команды в запросы ОС и следит за служебной
информацией.
2.4 Интерпретатор команды shell
Далее для изучения и работы с операционной системой UNIX нам
понадобится интерпретатор команды shell. Посмотрим, для чего его
используют.
Интерпретатор команды shell - одна из наиболее важных и сложных
программ системы. Она обеспечивает интерфейс пользователь- ядро и выполняет
следующие основные функции:
Интерпретирует команды;
Обрабатывает имена файлов, определенные через метасимволы;
Осуществляет переадресацию ввода-вывода;
Создает среду пользователя;
Поддерживает командный язык.
Команды интерпретатора shell реализуются обычными программами, записные
на языке С для UNIX . Условно все команды можно разбить на группы:
информационные, служебные и работы с файловой системой и файлами.
Информационные команды позволяют получать различного рода справки о
состояние системы и справочную информацию. Наиболее важные команды этой
группы:
Date- вывести и установить дату и время;
Ps – получение информации о процессах;
Who- получение информации о работающих в системе.
Служебные команды дают возможность выполнять ряд специальных функций,
установка среды пользователя, печать параметров, установка прав доступа и
другие. В этой группе отметим команды:
Stty – установить характеристики терминала;
Echo – выдать параметры;
Kill – завершить процесс;
Chmod – сменить права доступа.
Самая многочисленная группа команд обеспечивает работу с файловой
системой и отдельными файлами. Здесь следует отметить следующие команды:
Cd – изменение текущей директории;
Mv – пересылка и переименование файлов;
Cp – копирование файла;
Rm- уничтожение файлов;
Cat - объединение файла.
Всего в UNIX реализовано более 130 команд, оперируя которыми можно
вести активный диалог в системе и выполнить представительный набор функций.
При запуске shell для отдельного пользователя автоматически
определяется стандартный ввод-вывод на соответствующий терминал и файл для
фиксации ошибок. Поэтому большинство команд осуществляют вывод результатов
на терминал, а такие как редакторы исходную информацию для работы получают
с терминала.
Имеется 3 основных shell: Bourne Shell (sh), C-Shell (ch), Korn Shell
(ksh).
• Bourne Shell есть оригинальный UNIX Shell виртуально, присутствующий
во всех UNIX- дистрибуциях.
• C-Shell был проектом Калифорнийского университета в Беркли, чтобы
добавить интерактивную обработку к Shell- окружению.
• Korn Shell написан Дейвидом Корном и также имеет место своего рождения
в Калифорнийском институте в Беркли.
Korn shell (ksh) написан таким образом, что любая программа,
подготовленная для выполнения в sh, будет работать и в ksh. Оболочка Корн
включает в себя все возможности shell, а также многое другое. Например:
• Возможность редактировать командную строку с использованием
команды vi или emacs.
• Возможность повторять ранее введенные команды с внесением в них
поправок и корректировок.
• Встроенные возможности арифметических операций и обработки строк.
• Массивы.
• Возможность автоматически контролировать и наблюдать процесс
фонового исполнения программ.
C-Shell напоминает больше язык программирования Си и не подходит для
выполнения программ sh.
Таким образом, shell, помимо организации связи пользователь – система,
является мощным инструментальным средством, которое допускает почти
неограниченное расширение системы в сторону необходимой проблемной
ориентации.
2.5 Программы
ОС UNIX одновременно является операционной средой использования
существующих прикладных программ и средой разработки новых приложений.
Новые программы могут писаться на разных языках (Фортран, Паскаль, Модула,
Ада и др.). Однако стандартным языком программирования в среде ОС UNIX
является язык Си (который в последнее время все больше заменяется на Си++).
Это объясняется тем, что во-первых, сама система UNIX написана на языке Си,
а, во-вторых, язык Си является одним из наиболее качественно
стандартизованных языков.
Поэтому программы, написанные на языке Си, при использовании
правильного стиля программирования обладают весьма высоким уровнем
мобильности, т.е. их можно достаточно просто переносить на другие
аппаратные платформы, работающие как под управлением ОС UNIX, так и под
управлением ряда других операционных систем (например, DEC Open VMS или MS
Windows NT). Более подробно мы рассмотрим принципы мобильного
программирования в среде ОС UNIX в четвертой части курса.
Приведем краткий обзор процесса разработки программы на языке Си (или
Си++), которую можно выполнить в среде ОС UNIX. Любая выполняемая программа
компонуется из одного или нескольких объектных файлов. Поэтому разработка
программы начинается с создания исходных файлов, содержащих текст на языке
Си. Эти файлы могут содержать определения глобальных имен переменных иили
функций (имен, которые могут быть видимы из других файлов), а также ссылки
на внешние имена (объявленные как глобальные в одном из других файлов,
которые будут составлять программу).
Текстовые файлы производятся с помощью одного из текстовых редакторов,
поддерживаемых в среде UNIX. Традиционным текстовым редактором ОС UNIX
является упоминавшийся в первом разделе редактор vi, исходная версия
которого была разработана Биллом Джоем. Этот редактор достаточно старый, он
может работать практически на всех терминалах и не является в полном смысле
оконным.
В последние годы все большую популярность получает редактор Emacs
(разработанный и непрерывно совершенствуемый президентом Free Software
Foundation Ричардом Столлманом). Это очень мощный многооконный редактор,
который позволяет не только писать программы (и другие тексты), но также и
компилировать, компоновать и отлаживать программы (а также делать многое
другое, например, принимать и отправлять электронную почту). Основным
недостатком редактора Emacs является исключительно большой набор (более
200) функциональных клавиш. Следует, правда, заметить, что при
использовании Emacs в оконной системе X он обеспечивает более удобный
интерфейс.
Заметим также, что многие неудобства интерфейсов традиционных
инструментальных средств ОС UNIX связаны с тем, что они ориентированы на
использование и алфавитно-цифровых, и графических терминалов. Поэтому
обычно эти средства поддерживают старомодный строчный интерфейс даже при
наличии графического терминала. Естественно, в современных вариантах ОС
UNIX все новые инструментальные средства поддерживают оконный графический
интерфейс (и, следовательно, их невозможно использовать при наличии
алфавитно-цифровых терминалов).
После того, как текстовый файл создан, его нужно откомпилировать для
получения объектного файла. Наиболее популярными компиляторами для языка Си
в среде ОС UNIX сейчас являются pcc (Ритчи и Томпсон) и gcc (Ричард
Столлман). Оба эти компилятора являются полностью мобильными и обладают
возможностью генерировать код для разнообразных компьютеров, т.е. эти
компиляторы могут быть установлены практически на любой аппаратной
платформе под управлением ОС UNIX.
Можно отметить следующие преимущества gcc. Во-первых, этот компилятор
свободно, т.е. бесплатно (вместе со своими исходными текстами)
распространяется Free Software Foundation. Во-вторых, gcc тщательно
поддерживается и сопровождается. В-третьих, начиная с версии 2.0, gcc может
компилировать программы, написанные на языках Си, Си++ и Objective C, а
результирующая выполняемая программа может быть скомпонована из объектных
файлов, полученных из текстовых файлов на любом из этих языков. В-
четвертых, открытость исходных текстов gcc и тщательно разработанная
структура компилятора позволяют сравнительно просто добавлять к gcc новые
кодогенераторы. Относительным недостатком gcc является то, что используемый
диалект языка Си включает слишком много расширений по сравнению со
стандартом ANSIISO (однако имеется режим, в котором компилятор указывает
все расширенные конструкции языка, встречающиеся в компилируемой
программе).
Оба компилятора обрабатывают программу в два этапа. На первом этапе
синтаксически правильный текст на языке Си преобразуется в текст на языке
ассемблера. На втором этапе на основе текста на языке ассемблера
генерируются машинные коды и получается объектный файл. Исторически в ОС
UNIX использовались различные форматы объектных модулей. Для обеспечения
совместимости с предыдущими версиями почти все они поддерживаются в
современных версиях компиляторов. Однако в настоящее время преимущественно
используется формат COFF (Common Object File Format). При желании можно
остановить процесс компиляции после первого этапа и получить для изучения
файл с текстом программы на языке ассемблера.
После того, как необходимый для построения выполняемой программы набор
объектных файлов получен, необходимо произвести компоновку выполняемой
программы. В ОС UNIX компоновщик выполняемых программ называется редактором
связей (link editor) и обычно вызывается командой ld. Редактору связей
указывается набор объектных файлов и набор библиотек, из которых нужно
черпать недостающие для компоновки программы.
Процесс компоновки заключается в следующем. Сначала просматривается
набор заданных объектных файлов. Для каждого внешнего имени ищется
объектный файл, содержащий определение такого же глобального имени. Если
поиск заканчивается успешно, то внешняя ссылка заменяется на ссылку на
определение глобального имени. Если в конце этого этапа остаются внешние
имена, для которых не удалось найти соответствующего определения
глобального имени, то начинается поиск объектных файлов с нужными
определениями глобальных имен в указанных библиотеках. Если, в конце
концов, удается найти определения для всех внешних имен, все
соответствующие объектные файлы собираются вместе и образуют выполняемый
файл.
В ОС UNIX имеется несколько стандартных библиотек. В большинстве
случаев наиболее важной является библиотека вводавывода (stdio). Грамотное
использование стандартных библиотек способствует созданию легко переносимых
прикладных программ (мы вернемся к обсуждению стандартных библиотек ОС UNIX
в четвертой части курса).
Выполняемая программа может быть запущена в интерактивном режиме как
команда shell или выполнена в отдельном процессе, образуемом уже запущенной
программой.
2.6 Команды
Любой командный язык семейства shell фактически состоит из трех частей:
служебных конструкций, позволяющих манипулировать с текстовыми строками и
строить сложные команды на основе простых команд; встроенных команд,
выполняемых непосредственно интерпретатором командного языка; команд,
представляемых отдельными выполняемыми файлами (более подробно и точно
командные языки рассматриваются в пятой части курса).
В свою очередь, набор команд последнего вида включает стандартные
команды (системные утилиты, такие как vi, cc и т.д.) и команды, созданные
пользователями системы. Для того, чтобы выполняемый файл, разработанный
пользователем ОС UNIX, можно было запускать как команду shell, достаточно
определить в одном из исходных файлов функцию с именем main (имя main
должно быть глобальным, т.е. перед ним не должно указываться ключевое слово
static). Если употребить в качестве имени команды имя такого выполняемого
файла, командный интерпретатор создаст новый процесс (см. ... продолжение
Похожие работы
Дисциплины
- Информатика
- Банковское дело
- Оценка бизнеса
- Бухгалтерское дело
- Валеология
- География
- Геология, Геофизика, Геодезия
- Религия
- Общая история
- Журналистика
- Таможенное дело
- История Казахстана
- Финансы
- Законодательство и Право, Криминалистика
- Маркетинг
- Культурология
- Медицина
- Менеджмент
- Нефть, Газ
- Искуство, музыка
- Педагогика
- Психология
- Страхование
- Налоги
- Политология
- Сертификация, стандартизация
- Социология, Демография
- Статистика
- Туризм
- Физика
- Философия
- Химия
- Делопроизводсто
- Экология, Охрана природы, Природопользование
- Экономика
- Литература
- Биология
- Мясо, молочно, вино-водочные продукты
- Земельный кадастр, Недвижимость
- Математика, Геометрия
- Государственное управление
- Архивное дело
- Полиграфия
- Горное дело
- Языковедение, Филология
- Исторические личности
- Автоматизация, Техника
- Экономическая география
- Международные отношения
- ОБЖ (Основы безопасности жизнедеятельности), Защита труда