Реферат: Операционная система UNIX - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

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

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 788 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Операционная система UNIX Содержание 1. Основание и история Проект операционной системы Multics: неудача с положительными последствиями Возникновение и первая редакция ОС UNIX Исследовательский UNIX Первый перенос ОС UNIX Седьмая редакция Возникновение группы университета г . Берк ли (BSD) UNIX System III и первые ко ммерческие версии системы AT&T System V Release 2 и Release 3 2. Основные понятия ОС UNIX и базовые системные вызовы Основные понятия Пользователь Интерфейс пользователя Привилегированный п ользователь Программы Команды Процессы Перенаправление в вода /вывода Основание и история История ОС UNIX на чалась в недрах Bell Telephone Laboratories (теперь AT&T Bell Laboratories) и связан а с известными теперь всем именами Кена Томпсона , Денниса Ритчи и Брайана Кернигана (два последних имени знакомы читател я м и как имена авторов популярнейшей книги по языку программирования Си , издававшейся в нашей стране на русском языке ). Проект операци онной системы Multics: неудача с положительными пос ледствиями С 1965 по 1969 год компания Bell Labs совместно с компанией General Electric и группой исследователей из Масачусетского тех нологического института участвовала в проекте ОС Multics. Целью проекта было создание многополь зовательской интерактивной операционной системы , обеспечивающей большое число пользователей удоб н ыми и мощными средствами доступа к вычислительным ресурсам . В этом курсе мы не ставим задачу познакомить слушател ей с ОС Multics. Это могло бы быть темой отдельного большого курса . Однако отметим х отя бы некоторые идеи , которые содержались в проекте MAC ( т ак назывался проект ОС Multics). Во-первых , эта система основывалась на принципах многоуровневой защиты . Виртуальная памя ть имела сегментно-страничную организацию , разделя лись сегменты данных и сегменты программного кода , и с каждым сегментом связывался у ровень доступа (по выполнению для сегментов команд и уровень чтения и запис и для сегментов данных ). Для того , чтобы какая-либо программа могла вызвать программу или обратиться к данным , располагающимся в некотором сегменте , требовалось , чтобы уровен ь выпо л нения этой программы (точне е , сегмента , в котором эта программа содер жалась , был не ниже уровня доступа соответ ствующего сегмента ). Такая организация позволяла практически полностью и с полной защитой содержать операционную систему в системных сегментах л ю бого пользовательского виртуального адресного пространства . Во-вторых , в ОС Multics была спроектирована и реализована полностью централизованная файлова я система . В централизованной файловой систем е файлы , физически располагающиеся на разных физических ус тройствах внешней памяти , логически объединяются в один централизованный архив или древовидную иерархическую структур у , промежуточными узлами которой являются име нованные каталоги , а в листьях содержатся ссылки на файлы . В том случае , когда пр и поиске фай л а в архиве по его имени оказывалось , что соответствующий накопитель (магнитный диск или магнитная лент а ) не был установлен на устройство внешней памяти , ОС обращалась к оператору с т ребованием установить нужный том внешней памя ти . Естественно , такая дисци п лина существенно облегчала операторскую работу и а дминистрирование файловой системы , хотя и зат рудняла выполнение таких рутинных действий ка к перенос части файловой системы с одного компьютера на другой . Позже мы увидим , какой изящный компромисс был выбра н при реализации ОС UNIX. Далее , наличие большой сегментно-страничной виртуальной памяти позволило использовать отоб ражение файлов в сегменты виртуальной памяти . Другими словами , при открытии файла в виртуальной памяти соответствующего процесса о бразовывал ся сегмент , в который полностью отображался файл , располагающийся во внешней памяти . (Следует отметить , что в файловой системе ОС Multics на базовом уровне поддержив ались файлы со страничной структурой . Более сложные организации являлись надстройкой ). Дал ь нейшая работа с файлом происходи ла на основе общего механизма управления виртуальной памятью . Операционная система Multics, хотя и не была полностью доведена до стадии коммерческого продукта , обогатила мировое сообщество систе мных программистов массой цен ных идей , многие из которых сохраняют свою актуально сть по сей день и используются применител ьно не только к операционным системам . Осн овным недостатком ОС Multics, который , по всей в идимости , и помешал довести систему до уро вня программного продукта , был а ее чрезмерная сложность . Среди участников проекта Multics находились Кен Томпсон и Деннис Ритчи . Решение о прекращении участия в проек те Multics было принято на самом верхнем уровне руководства Bell Labs, и сотрудники , по существу , были поставлены перед свершившимся фактом . Более того , руководство компании , разочарованно е результатами весьма дорогостоящего проекта , вообще не желало больше вести какие-либо работы , связанные с операционными системами . Возникновение и первая редакция ОС UNIX Принято считать , что исходным толчком к появлению О С UNIX явилась работа Кена Томпсона по создан ию компьютерной игры "Space Travel". Он делал это в 1969 году на компьютере Honeywell 635, который до этого использовался для разработки проекта MAC. В эт о же время Кен Томпс о н , Деннис Ритчи и другие сотрудники Bell Labs предложили идею усовершенствованной файловой системы , протот ип которой был реализован на компьютере General Electric 645. Однако компьютер GE-645, который был рассчитан на работу в режиме разделения времени и н е обладал достаточной эффективно стью , не годился для переноса Space Travel. Томпсон стал искать замену и обнаружил , что появив шийся к этому времени 18-разрядный компьютер PDP-7 с 4 килословами оперативной памяти и качес твенным графическим дисплеем вполне д ля этого подходит . После того , как игра была успешно перенесена на PDP-7, Томпсон решил реализовать на PDP-7 разработанную ранее файловую систему . Допол нительным основанием для этого решения было то , что компания Bell Labs испытывала потребность в удобных и дешевых средствах подгото вки и ведения документации . В скором време ни на PDP-7 работала файловая система , в котор ой поддерживались : понятие inodes, подсистема управлени я процессами и памятью , обеспечивающая исполь зование системы двумя пользователями в р ежиме разделения времени , простой команд ный интерпретатор и несколько утилит . Все это еще не называлось операционной системой UNIX, но уже содержало родовые черты этой ОС . Название придумал Брайан Керниган . Он предложил назвать эту двухпользовательскую си стему UNICS (Uniplexed Information and Computing System). Название понравилось , поск ольку , помимо прочего , оно напоминало об у частии сотрудников Bell Labs в проекте Multics. В скором времени UNICS превратилось в UNIX (произносится так же , но на одну букву короче ). Первыми реальными пользователями UNIX стали сотрудники патентного отдела Bell Labs. Однако существова ли некоторые проблемы , связанные с PDP-7. Во-первых , эта машина не принадлежала компьютерной группе (была только во временном пользовании ). Во-вт орых , возможности этого компьютера не удовлетворяли потребности исследователей . Поэтому в 1971 году был приобретен новый 16-ра зрядный компьютер фирмы Digital Equipment PDP-11/20, и на него была перенесена UNIX. Существовавший к этому врем ени вариант систе м ы был написан на языке ассемблера , так что можно пред ставить , что перенос был совсем не простым делом . На PDP-11 система поддерживала большее число пользователей . Кроме того , была реализов ана утилита форматирования текстовых документов roff (тоже на языке ассемблера ). В ноябре 1971 года был опубликован первый выпуск документации по ОС UNIX ("Первая редак ция "). В соответствии с этой "Первой редакци ей " назвали и соответствующий документации ва риант системы . Впоследствии это стало традици ей : новая редакция ОС UNIX объявлялась при выходе в свет новой редакции документаци и . Вторая редакция появилась в 1972 году . На иболее существенным качеством "Второй редакции " было то , что система была переписана на языке Би ("B"). Язык и интерпретирующая систе ма программирова ния были разработаны Кено м Томпсоном под влиянием существовавшего язык а BCPL. Во второй редакции появились программные каналы ("pipes"). Появление варианта системы , написанного н е на языке ассемблера , было заметным продв ижением . Однако сам язык Би во мног ом не удовлетворял разработчиков . Подобно языку BCPL язык Би был бестиповым , в нем поддерживался только один тип данных , соо тветствующий машинному слову . Другие типы дан ных эмулировались библиотекой функций . Деннис Ритчи , который всегда увлекался языками п рограммирования , решил устранить ограничения языка Би , добавив в язык систему типо в . Так возник язык Си ("C"). В 1973 году Томпсо н и Ритчи переписали систему на языке Си . К этому времени существовало около 25 установок ОС UNIX, и это была "Четвертая реда к ц ия ". В июле 1974 года Томпсон и Ритчи опуб ликовали в журнале Communications of the ACM историческую статью "UNIX Timesharing Operating System", которая положила начало новому этапу в истории системы . ОС UNIX заинтересовались в университетах . Этому способс твовала пол итика компании Bell Labs, которая объявила о возможно сти бесплатного получения исходных текстов UNIX для использования в целях образования (нужно было платить только за носитель и до кументацию ). Появившуюся к этому времени "Пятую ред акцию " ОС U NIX одними из первых получили Калифорнийский университет г . Беркли и ун иверситет Нового Южного Уэльса г . Сидней ( Австралия ). Исследовательский UNIX В 1975 году компан ия Bell Labs выпустила "Шестую редакцию " ОС UNIX, известну ю как V6 или Исследовательский UNIX. Эта вер сия системы была первой коммерчески доступной вне Bell Labs. К этому времени большая часть системы была написана на языке Си . Неболь шие размеры языка и наличие сравнительно легко переносимого компилятора придавали ОС UNIX V6 новое качество ре а льно переносимой операционной системы . Кроме того , потенциальн ое наличие на разных аппаратных платформах компилятора языка Си делало возможным разр аботку мобильного прикладного программного обесп ечения . Важный шаг в этом направлении был предпринят Деннисо м Ритчи , который в 1976 году создал библиотеку ввода /вывода (stdio), ста вшую фактическим стандартом различных систем программирования на языке Си . С использование м stdio стало возможно создавать мобильные прикла дные программы , действительно независящие от особенностей аппаратуры процессора и внешних устройств . Примерно в это же время Кен Томпс он во время своего академического отпуска посетил университет г . Беркли и установил там UNIX V6 на компьютере PDP-11/70. Билл Джой (основател ь BSD - Berkeley Software Distribution, а впоследствии основатель и вице-президент компании Sun Microsystems) был тогда дипломни ком этого университета. Первый перенос ОС UNIX По-видимому , первый перенос ОС UNIX на компьютер с архитектурой , принципиально отличающейся от PDP-11, был пр оизведен в 1977 году в Австралии . Это произош ло вскоре после того , как в университете Воллонгонга была образована компьютерная каф едра . Джюрис Рейндфельдс , ставший заведующим н овой кафедры , решил использовать ОС UNIX как основу обучения студентов . Он с п ец иально посетил университет г . Беркли и был вдохновлен возможностями , имеющимися в этом университете (PDP-11/40 с ОС UNIX V6). Однако выяснилось , что в университете г.Воллонгонг отсутствовали средства , достаточные для приобретения PDP-11. Профессор Рейнд фельдс был вынужден купить 32-разрядный компьютер Interdata 7/32, который был существенно дешевле , хотя и слабее по п роизводительности . После нескольких попыток здрав ым образом дополнить "родную " операционную сис тему Interdata 7/32 OSMT/32 более развитыми средствами многопользовательского режима использования было принято решение попробовать перенести на эту 32-разрядную машину ОС UNIX V6. Очень замысловатым образом (напомним , что в австралийском университете не было дос тупного компьютера PDP-11) путем обм ена магнитн ыми лентами с университетом г . Беркли Рича рд Миллер (канадец , работавший в Австралии ) смог к январю 1977 года получить компилятор языка Си , который мог успешно компилировать собственный исходный текст на Interdata 7/32. Это позв олило уже через м есяц получить некоторый вариант ОС UNIX, работающий на этой же машине . Система Миллера представляла собой некий гибрид , основанный на ОС UNIX V6 и выполняемый "поверх " OSMT/32. Версия системы не включала соб ственных средств управления терминалами и обр або тки прерываний и поддерживала около восьми команд примитивного командного интерпре татора . Тем не менее , это была первая у спешная (и быстро выполненная ) попытка перенос а ОС UNIX на компьютер с 32-разрядной архитекту рой. Седьмая редакц ия После завершения сво ей работы Ричард Миллер отправилс я в Bell Labs с целью обсудить полученные резуль таты с Томпсоном и Ритчи . Незадолго до этого в Bell Labs был закуплен компьютер Interdata 8/32 (модел ь , следующая за Interdata 7/32). В принципе , компания Bell Labs была удов л етворена возможностями и ценой компьютеров семейства PDP-11. Однако 16-разряд ная организация этих компьютеров ограничивала возможности ОС UNIX (слишком малый размер вирту альной памяти для разработки больших и сл ожных программ ). Переход на 32-разрядные арх и тектуры позволял преодолеть эти ограничения . Наличие 32-разрядного компьютера Interdata 8/32 и имею щийся положительный опыт Ричарда Миллера по переносу (хотя и не полному ) ОС UNIX на Interdata привели к тому , что Томпсон и Ритчи решили произвести полный п еренос UNIX на свою новую машину . Для начала требовалось развить язык Си , чтобы программисты могли использовать особенности 32-разрядных архитектур . Для этого Деннис Ритчи расширил систему типов языка Си типами union, short integer, long integer и unsigne d integer. В дополнение к этому , в языке появились развитые средства инициализации пере менных , битовые поля , макросы и средства у словной компиляции , регистровые и глобальные переменные и т.д . Одним словом , язык Си стал таким , каким он описан в известнейше й книге Кернигана и Ритчи "Язык программирования Си " (сокращенно принято называ ть этот диалект языка K&R). Однако одного расширенного языка Си б ыло недостаточно для переноса UNIX, поскольку сам а организация UNIX V6 была слишком ориентирована на особенности PDP-11. Пришлось полностью перепис ать подсистему управления оперативной и вирту альной памятью и изменить интерфейс драйверов внешних устройств , чтобы сделать систему более легко переносимой на другие архитектуры . Результатом работы стала "Седьмая редакция " UNIX (чаще ее называют UNIX Version 7). В соста в новой версии системы входил компилятор нового диалекта языка Си PCC (Portable C-Compiler), новый командн ый интерпретатор sh, называемый также в честь своего создателя Bourne-shell, набор новых драйверов ус т ройств и многое другое . После выпуска UNIX Version 7 Деннис Ритчи поехал на конференцию в Австралию и взял с собой магнитную ленту с исходными текстами системы . В Мельбурнском университете был осуществлен полный перенос системы на Interdata 8/32. Поз днее в Воллонгонге система была повторн о перенесена на Interdata 7/32. Таким образом , в резул ьтате совместной плодотворной работы исследовате лей из США и Австралии было продемонстрир овано одно из наиболее ярких качеств ОС UNIX - мобильность . Кроме того , стало я сно , что полезно привлекать к работе над ОС UNIX сотрудников и студентов университетов . Возникновение группы университета г . Беркли (BSD) Как мы упомина ли выше , в 1976 году Кен Томпсон провел св ой академический отпуск в университете г . Беркли и принял уча стие в проводивших ся там исследованиях . Это привело к возник новению серьезного интереса к ОС UNIX среди п рофессоров и студентов . Появились местные зна токи системы , среди которых одним из наибо лее сильных был Билл Джой . Билл Джой собрал вместе с целью д аль нейшего распространения большой объем программного обеспечения , включавший полный набор текстов UNIX V6, компилятор языка Паскаль , свой собственный редактор ex (потом его стали называть vi ) и другие программы . Вс е это было названо Berkeley Software Distrib ution (BSD 1.0). Вокруг BSD сложилась небольшая , но очень сильная группа молодых программистов . Бытует мнение , что именно группа BSD смогла добиться практически п олного устранения ошибок в UNIX V6. Не будучи уд овлетворенной структурой и функциями ядра UNI X V6, группа BSD в своем втором выпуск е (BSD 2.x) предприняла серьезную попытку переписать ядро системы . В компьютерном отделении университета Бер кли имелось несколько компьютеров семейства VAX компании Digital. Группа BSD при участии сотрудников Bell Labs Джона Рейзера и Тома Лондона произ вела перенос UNIX Version 7 на 32-разрядную архитектуру VAX. Э тот вариант UNIX назывался 32/V. В ядре системы п оявились новые свойства страничного замещения оперативной памяти и управления виртуальной памятью . Система ст а ла основой третьего выпуска - BSD 3.x. В группе BSD был разработан и впервые реализован стек транспортных протоколов TCP/IP (Transport Control Protocol/Internet Protocol). Эта работа финансировалась министерств ом безопасности США . Bell Labs и университет Беркли заключили соглашение , в соответствии с которым группа BSD могла распространять свои версии ОС UNIX сред и любых пользователей , которые располагали ли цензией Bell Labs. Если учесть , что UNIX BSD исторически рас пространялся бесплатно (с исходными тек с тами !), а лицензия Bell Labs к этому времени стоила уже весьма недешево , то можно по нять группу BSD, которая , начиная с первой ве рсии BSD 4.1 (1980 год ), стремилась к тому , чтобы осво бодить пользователей UNIX BSD от необходимости приобрет ать лицензию Bell Labs. Подробности этого процесса и возникшие коллизии мы рассмотри м в разделе , посвященном современному состоян ию ОС UNIX. UNIX System III и первые коммерческие версии системы В 1978 году в Bell Labs специально для поддержки ОС UNIX была организо вана Групп а поддержки ОС UNIX (UNIX Support Group - USG). Эта группа выпустила несколько версий системы , но они не имели хождения за пределами Bell Labs. Однако , к этому времени большой интере с к ОС UNIX стали проявлять коммерческие комп ании-производители компьютер ов и программного обеспечения . Это объясняется тем , что с развитием технологии электронных схем резко упала стоимость производства новых однокристал ьных процессоров . Поэтому наличие по-настоящему мобильной операционной системы , перенос которой на новую ап п аратную платформу не занимал слишком много времени и сре дств , позволяло экономно оснастить новые комп ьютеры качественным базовым программным обеспече нием . Появились компании , специализирующиеся на переносе UNIX на новые платформы . Одной из первых была ком пания UniSoft Corporation, которая производила свою версию UNIX под названием UniPlus+. Microsoft Corporation совместно с Santa Cruz Operation (SCO) произвели ва риант UNIX под названием XENIX. В результате к кон цу 70-х UNIX-подобные операционные системы б ы ли доступны на компьютерах , основ анных на микропроцессорах Zilog, Intel, Motorola и т.д . Появили сь тысячи установок с ОС UNIX. В 1982 году USG выпустила за пределы Bell Labs свой первый вариант UNIX, получивший название UNIX System III. В этой системе соч етались лучшие качеств а UNIX Version 7, V/32 и других вариантов UNIX, имевших хождение в Bell Labs. AT&T System V Release 2 и Release 3 В начале 1983 года компания American Telephone and Telegraph Bell Laboratories (AT&T Bell Labs) объявила о выпуске UNIX System V. Впервые в истории Bell Labs было также объявлено , что AT&T будет поддерживать этот и все будущие выпуски System V. Кроме того , была обещана совместимость выпущенной версии System V со всеми будущими версиями . ОС UNIX System V включала мног о новых возможностей , но почти все они относились к повышению производите льности (хеш-таблицы и кэширование данных ). На самом деле UNIX System V являлась развитым вариантом UNIX System III. К наиболее важным оригинальным особенностя м UNIX System V относитс я появление семафоров , очередей сообщений и разделяемой памяти . В 1984 году USG была преобразована в Лаборат орию по развитию системы UNIX (UNIX System Development Laboratories - USDL). В 1984 год у USDL выпустила UNIX System V Release 2 (SVR2). В этом вариа нте системы появились возможности блокировок файлов и записей , копирования совместно используемы х страниц оперативной памяти при попытке записи (copy-on-write), страничного замещения оперативной пам яти (реализованного не так , как в BSD) и т. д . К этому вре м ени ОС UNIX была установлена на более чем 100000 компьютеров . В 1987 году подразделение USDL объявило о вы пуске UNIX System V Release 3 (SVR3). В этой системе появились полные возможности межпроцессных взаимодействий , раздел ения удаленных файлов (Remote F ile Sharing - RFS), развитые оп ерации обработки сигналов , разделяемые библиотеки и т.д . Кроме того , были обеспечены нов ые возможности по повышению производительности и безопасности системы . К концу 1987 года п оявилось более 750000 установок ОС UNIX, и был о зарегистрировано 4,5 млн . пользователей . На этом мы заканчиваем исторический о бзор ОС UNIX, поскольку вплотную подошли к со временному состоянию системы . Продолжим этот разговор в конце курса , а пока ограничимся таблицей 1.1 и рисунком генеалогического де рева ОС UNIX (заметим , что по поводу г енеалогии существуют разные мнения ). Таблица 1.1. Характерные свойства версий AT&T UNIX начиная с 1982 года 1982 System III Именованные программные ка налы Очереди запуска 1983 System V Хеш-таблицы Кэши буф еров и inodes Семафоры Разделяемая память Очереди сообщений 1984 SVR2 Блокирование запис ей и файлов Подкачка по требованию Копирование по записи 1987 SVR3 Межпроцессные взаи модействия (IPC) Разделение удаленных файло в (RFS) Развитые операции обработк и сигналов Разделяемые библиотеки Переключатель файловых сис тем (FSS) Интерфейс транспортного ур овня (TLI) Возможности коммуникаций н а основе потоков 1989 SVR4 Поддержка обработк и в реальном времени Классы пл анирования процессов Динамически выделяемые стр уктуры данных Развитые возможности откры тия файлов Управление виртуальной пам ятью (VM) Возможности виртуальной фа йловой системы (VFS) Быстрая файловая система (BSD) Развитые возможности потоков Прерываемое ядро Квоты файловых систем Интерфейс драйвера с я дром системы Рис . 1.1. Генеалогическое дерево ОС UNIX Основные понят ия ОС UNIX и базовые системные вызовы Основные понят ия Одним из досто инств ОС UNIX является то , что система базиру ется на небольшом числе интуитивно ясных понятий . Однако , несмотря на простоту эти х понятий , к ним нужно привыкнуть . Без этого невозможно понять существо ОС UNIX. Пользователь С самого начал а ОС UNIX замышлялась как интерактивная система . Другими словами , UNIX предназначен для терминаль ной работы . Чтобы начать работать , челове к должен "войти " в систему , введя со св ободного терминала свое учетное имя (account name) и , возможно , пароль (password). Человек , зарегистрированный в учетных файлах системы , и , следовательно , имеющий учетное имя , называется зареги с трированным пользователем системы . Р егистрацию новых пользователей обычно выполняет администратор системы . Пользователь не может изменить свое учетное имя , но может у становить и /или изменить свой пароль . Паро ли хранятся в отдельном файле в закодиров анном в иде . Не забывайте свой па роль , снова узнать его не поможет даже администратор ! Все пользователи ОС UNIX явно или неявно работают с файлами . Файловая система ОС UNIX имеет древовидную структуру . Промежуточными узлами дерева являются каталоги со ссылкам и на другие каталоги или файлы , а листья дерева соответствуют файлам или пус тым каталогам . Каждому зарегистрированному пользо вателю соответствует некоторый каталог файловой системы , который называется "домашним " (home) катал огом пользователя . При входе в сист е му пользователь получает неограниченный д оступ к своему домашнему каталогу и всем каталогам и файлам , содержащимся в нем . Пользователь может создавать , удалять и мод ифицировать каталоги и файлы , содержащиеся в домашнем каталоге . Потенциально возможен дос т у п и ко всем другим файлам , однако он может быть ограничен , если по льзователь не имеет достаточных привилегий . Интерфейс пользов ателя Традиционный спосо б взаимодействия пользователя с системой UNIX ос новывается на использовании командных языков (правда , в настоящее время все большее распространение получают графические интерфейсы ). После входа пользователя в систему для него запускается один из командных интерпр етаторов (в зависимости от параметров , сохраня емых в файле /etc/passwd ). Обычно в системе поддерж ивается несколько командных интерпретаторов с похожими , но различающимися своими возможностями кома ндными языками . Общее название для любого командного интерпретатора ОС UNIX - shell (оболочка ), поскольку любой интер претатор представляет внешнее окружение ядр а системы . Вызванный командный интерпретатор выдает приглашение на ввод пользователем командной с троки , которая может содержать простую команд у , конвейер команд или последовательность ком анд . После выполнения очередной командной стр оки и выдачи на экра н терминала и ли в файл соответствующих результатов , shell снова выдает приглаш ение на ввод командной строки , и так д о тех пор , пока пользователь не завершит свой сеанс работы путем ввода команды logout или нажатием комбинации клавиш Ctrl-d. Командные язык и , используемые в ОС UNIX, достаточно просты , чтобы новые пользователи могли быстро начать работать , и достаточн о мощны , чтобы можно было использовать их для написания сложных программ . Последняя возможность опирается на механизм командных файлов ( shell sc ripts ), которые могут содержать произвольные последов ательности командных строк . При указании имен и командного файла вместо очередной команды интерпретатор читает файл строка за стро кой и последовательно интерпретирует команды . Привилегированный пользоват ель Ядро ОС UNIX идент ифицирует каждого пользователя по его идентиф икатору (UID - User Identifier), уникальному целому значению , присва иваемому пользователю при регистрации в систе ме . Кроме того , каждый пользователь относится к некоторой группе пользовател ей , кот орая также идентифицируется некоторым целым з начением (GID - Group IDentifier). Значения UID и GID для каждого заре гистрированного пользователя сохраняются в учетн ых файлах системы и приписываются процессу , в котором выполняется командный интерпрет а тор , запущенный при входе пользов ателя в систему . Эти значения наследуются каждым новым процессом , запущенным от имени данного пользователя , и используются ядром системы для контроля правомощности доступа к файлам , выполнения программ и т.д . Понятно , что администратор системы , к оторый , естественно , тоже является зарегистрирован ным пользователем , должен обладать большими в озможностями , чем обычные пользователи . В ОС UNIX эта задача решается путем выделения одног о значения UID (нулевого ). Пользователь с так и м UID называется суперпользователем ( superuser ) или root . Он имеет неограниченные права на доступ к любому файлу и на выполнение любой программы . Кроме того , т акой пользователь имеет возможность полного к онтроля над системой . Он может остановить ее и даже разрушить . В мире UNIX считается , что человек , получи вший статус суперпользователя , должен понимать , что делает . Суперпользователь должен хорошо знать базовые процедуры администрирования ОС UNIX. Он отвечает за безопасность системы , ее правильное конфигур ирование , добавление и исключение пользователей , регулярное копирование файлов и т.д . Еще одним отличием суперпользователя от обычного пользователя ОС UNIX является то , ч то на суперпользователя не распространяются о граничения на используемые ресурсы . Для обычных пользователей устанавливаются такие огра ничения как максимальный размер файла , максим альное число сегментов разделяемой памяти , ма ксимально допустимое пространство на диске и т.д . Суперпользователь может изменять эти ограничения для других пользов а телей , но на него они не действуют . Программы ОС 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 является то , что используемый диалект языка Си включает слишком много расширений по сравн ению со стандартом ANSI/ISO (однако имеется режим , в котором компилятор указы вает все расширенные конструкции языка , встре чающиеся в компилируемой программе ). Оба компилятора обрабатывают программу в два этапа . На первом этапе синтаксически правильный тек ст на языке Си пре образуется в текст на языке ассемблера . На втором этапе на основе текста на язы ке ассемблера генерируются машинные коды и получается объектный файл . Исторически в ОС UNIX использовались различные форматы объектных модулей . Для обеспечени я совместимости с предыдущими версиями почти все они поддерживаются в современных версиях компилято ров . Однако в настоящее время преимущественно используется формат COFF (Common Object File Format). При желании мож но остановить процесс компиляции после пер в ого этапа и получить для изу чения файл с текстом программы на языке ассемблера . После того , как необходимый для постро ения выполняемой программы набор объектных фа йлов получен , необходимо произвести компоновку выполняемой программы . В ОС UNIX компоновщик выполняемых программ называется редактором связей ( link editor ) и о бычно вызывается командой ld . Редактору связей указывается набор объектных файлов и набор библиотек , из которых нужно черпать недостающие для комп оновки программы . Процесс компоновки заклю чается в следующем . Сначала просматривается набор заданных объектных файлов . Для каждого внешнего им ени ищется объектный файл , содержащий определ ение такого же глобального имени . Если пои ск заканчивается успешно , то внешняя ссылка заменяется на ссылку на о пределен ие глобального имени . Если в конце этого этапа остаются внешние имена , для которых не удалось найти соответствующего определени я глобального имени , то начинается поиск о бъектных файлов с нужными определениями глоба льных имен в указанных библиотека х . Если , в конце концов , удается найти определения для всех внешних имен , все соответствующие объектные файлы собираются вме сте и образуют выполняемый файл . В ОС UNIX имеется несколько стандартных б иблиотек . В большинстве случаев наиболее важн ой является б иблиотека ввода /вывода ( stdio ). Грамотное исполь зование стандартных библиотек способствует созда нию легко переносимых прикладных программ (мы вернемся к обсуждению стандартных библиотек ОС UNIX в четвертой части курса ). Выполняемая программа может быть за пущена в интерактивном режиме как ком анда shell или выпол нена в отдельном процессе , образуемом уже запущенной программой . Команды Любой командный язык семейства shell фактически состоит из трех частей : служебных конструкций , позволяющих манипулировать с т екстовыми строками и строить сл ожные команды на основе простых команд ; вс троенных команд , выполняемых непосредственно инте рпретатором командного языка ; команд , представляем ых отдельными выполняемыми файлами (более под робно и точно командные языки рассматр и ваются в пятой части курса ). В свою очередь , набор команд последнег о вида включает стандартные команды (системны е утилиты , такие как vi , cc и т.д .) и команды , созданные пользователями системы . Для того , чтобы выполняемый файл , разрабо танный пользователем ОС UNIX, можно было зап ускать как команду shell , достаточно определить в одном из и сходных файлов функцию с именем main (имя main должно быть глобальным , т.е . пере д ним не должно указываться ключевое слов о static ). Если употре бить в качестве имени команды имя т акого выполняемого файла , командный интерпретатор создаст новый процесс (см . следующий подр аздел ) и запустит в нем указанную выполняе мую программу начиная с вызова функции main . Тело функции main , вообще говоря , может быть произвольным (для интерпрет атора существенно только наличие входной точки в программу с им енем main ), но для того , чтобы создать команду , которой можно задавать параметры , нужно придерживаться нек оторых стандартных правил . В этом случае к аждая функция main должна определяться с двум я параметрами - argc и argv . После вызова команды параметру argc будет соответствовать число символьных строк , указанн ых в качестве аргументов вызова команды , а argv - массив указат елей на переменные , содержащие эти строки . При этом имя самой команды соста вляе т первую строку аргументов (т.е . после вызо ва значение argc вс егда больше или равно 1). Код функции main должен проанализировать допустимость заданного значения argc и соответствующим образом обработать заданные текстовые строки . Например , следующий т екст на языке Си может быть использован для создании команды , которая выводит на экран текстовую строку , заданную в качестве ее аргумента : #include main (argc, argv) int argc; char *argv[]; if (argc != 2) printf("usage: %s your-text\ n", argv[0]); exit; printf("%s\n", argv[1]); Процессы Процесс в ОС UNIX - это программа , выполняемая в собственном виртуальном адресном пространстве . Когда пользова тель входит в систему , автоматически создаетс я процесс , в котором выполняется прогр амма командного интерпретатора . Если командному интерпретатору встречается команда , соответствующа я выполняемому файлу , то он создает новый процесс и запускает в нем соответствующу ю программу , начиная с функции main . Эта запущенная программа , в свою очеред ь , может создать про цесс и запустить в нем другую программу (она тоже должна содержать функцию main ) и т.д . Управление процессами подробно обсуждается в третьей части курса . Тем не менее кратко опишем здесь общий подход . Для обр азования нового процесса и запуска в нем программы используются два системных в ызова (примитива ядра ОС UNIX) - fork() и exec (имя-выполняемого-файла ). Системный вызов fork приводит к создан ию нового адресного пространства , состояние к оторого абсолютно идентично состоянию адресного пространства основного процесса (т.е . в нем содержатся те же программы и дан ные ). Другими словами , сразу после выполнения системного вызова fork основной и порожденный процессы являют ся абсолютными близнецами ; управление и в том , и в другом находится в то чке , непосредственно следующей за вызовом fork . Чтобы программа могл а разобраться , в каком процессе она теперь работает - в основном или порожденном , фун кция fork возвращает разные значения : 0 в порожденном процессе и целое положительное число (идентификат ор порожденного процесса ) в основном процессе . Теперь , если мы хотим запустить новую программу в порожденном процессе , нужно о братиться к системному вызову exec , указав в качестве аргументов вызова имя файла , содержащего новую выпол няемую программу , и , во зможно , одну или несколько текстовых строк , которые будут переданы в качестве аргументов функции main новой программы . Выпо лнение системного вызова exec приводит к тому , что в адресное пространство порожденного процесса загружается новая выполняемая програ мма и запуск ается с адреса , соответствующего входу в ф ункцию main . В следующем примере пользовательская прог рамма , вызываемая как команда shell , выполняет в отдельном процесс е стандартную команду shell ls , которая выдает на экран содержимое текущего ката л ога файлов . main() if(fork()==0) wait(0); /* родительский процесс */ else execl("ls", "ls", 0); /* порожденный процесс */ Перенаправление в вода /вывода Механизм перенапра вления ввода /вывода является одним из наи более элегантных , мощных и одновременн о простых механизмов ОС UNIX. Цель , которая стави лась при разработке этого механизма , состоит в следующем . Поскольку UNIX - это интерактивная система , то обычно программы вводят текстов ые строки с терминала и выводят результир ующие текстовые строки на экр а н терминала . Для того , чтобы обеспечить более гибкое использование таких программ , желател ьно уметь обеспечить им ввод из файла или из вывода других программ и направ ить их вывод в файл или на ввод д ругим программам . Реализация механизма основывается на с ледующих свойствах ОС UNIX. Во-первых , любой ввод /вывод трактуется как ввод из неко торого файла и вывод в некоторый файл . Клавиатура и экран терминала тоже интерпре тируются как файлы (первый можно только чи тать , а во второй можно только писать ). Во-вторых, доступ к любому файлу произво дится через его дескриптор (положительное цел ое число ). Фиксируются три значения дескриптор ов файлов . Файл с дескриптором 1 называется файлом стандартного ввода ( stdin ), файл с дескриптором 2 - файлом с тандартного вывода ( stdo ut ), и файл с дескриптором 3 - файлом стандартного вывода диагностических сообщений ( stderr ). В-третьих , программа , запущенная в некотором процессе , "наследует " от породившего процесса все дескрипторы от крытых файлов . В головном процессе интерпретатора ко мандного языка файлом стандартного ввода является клавиатура терминала пользователя , а файлами стандартного вывода и вывода ди агностических сообщений - экран терминала . Однако при запуске любой команды можно сообщить интерпретатору (средствами соответству ю щего командного языка ), какой файл или вывод какой программы должен служить фай лом стандартного ввода для запускаемой програ ммы и какой файл или ввод какой прогр аммы должен служить файлом стандартного вывод а или вывода диагностических сообщений для запуск а емой программы . Тогда интерп ретатор перед выполнением системного вызова exec открывает указан ные файлы , подменяя смысл дескрипторов 1, 2 и 3. Конечно , то же самое может проделать и любая другая программа , запускающая тре тью программу в специально созданно м процессе . Следовательно , все , что требуется для нормального функционирования механизма перенапр авления ввода /вывода - это придерживаться при программировании соглашения об использовании дескрипторов stdin , stdout и stderr . Это не очень трудно , поск ольку в наиболее распространенных функциях библиотеки ввода /вывода printf , scanf и error вообще не тр ебуется указывать дескриптор файла . Функция printf неявно использует stdout , функция scanf - stdin , а функция error - stderr . Более подробно механизм перенаправ лен ия вывода одной программы на ввод другой программы будет рассмотрен в третьей час ти курса .
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Учительница:
- Дети, поговорим сегодня о гениях! Почти все они могли одновременно делать несколько дел!
- Вот удивили! - говорит Вовочка, - кстати, вы женщины в принципе не гениальны! Вы не можете одновременно стоять на табурете, чистить зубы...
- Можем! - перебивает его Маша.
- …и ссать в раковину! – заканчивает Вовочка.
Anekdot.ru

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

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru