- •1.Архитектура операционных систем
- •1.1Общие вопросы архитектуры операционных систем
- •1.2Архитектура Windows
- •1.2.1История возникновения Windows
- •1.2.2Архитектура ос Windows
- •1.2.3История возникновения ос Linux
- •1.2.4Архитектура Linux
- •1.2.5Интерфейсы системы unix
- •1.2.6Файловая система unix
- •1.2.7Аутентификация в unix
- •1.2.8Сценарии командной оболочки unix
- •1.3Операционная система qnx
- •1.3.1 Архитектура qnx
- •1.4Выводы
- •1.5Вопросы для самоконтроля
- •2.Типы и алгоритмы работы с оперативной памятью
- •2.1Общие принципы функционирования подсистемы памяти в ос
- •2.1.1Обобщённые принципы управления памятью
- •2.1.2Однозадачная система без подкачки на диск
- •2.1.3Многозадачность с фиксированными разделами
- •2.1.4Подкачка
- •2.1.5Управление памятью с помощью битовых массивов
- •2.1.6Управление памятью с помощью связанных списков
- •2.1.7Виртуальная память
- •2.1.8Многоуровневые таблицы страниц
- •2.1.9Алгоритмы замещения страниц
- •2.2Виртуальная память ос Windows
- •2.2.1Архитектура памяти в ос Windows
- •2.2.2Работа с виртуальной памятью в ос Windows
- •2.2.3Использование виртуальной памяти в приложениях
- •2.3Пример организации страничной памяти на примере linux
- •2.3.1Страничная организация памяти в Linux
- •2.3.2Права доступа к области памяти
- •2.3.3Работа с областями памяти в Linux
- •3.Процессы и потоки
- •3.1Процессы
- •3.1.1Модель процесса
- •3.1.2Создание процесса
- •3.1.3Завершение процесса
- •3.1.4Состояния процессов
- •3.1.5Реализация процессов
- •3.2Потоки
- •3.2.1Реализация потоков
- •3.2.2Реализация потоков на уровне ядра
- •3.2.3Смешанная реализация
- •3.2.4 Метод управления «Активация планировщика»
- •3.2.5Всплывающие потоки
- •3.3Межпроцессное взаимодействие
- •3.3.1Состояние состязания
- •3.3.2Критические секции (Критические области)
- •3.3.3Взаимное исключение с активным ожиданием
- •3.3.4Примитивы межпроцессного взаимодействия
- •3.4Семафоры
- •3.5Мьютексы
- •3.6Организация многопоточной обработки в среде Windows
- •3.6.1Объекты ядра Windows
- •3.6.2Потоки Windows
- •3.6.3Синхронизация потоков в Windows
- •3.6.4Синхронизация потоков с помощью объектов ядра
- •3.6.5Сравнение объектов, используемых для синхронизации потоков
- •3.7Организация процессов и потоков в Linux
- •3.7.1Среда окружения в Linux
- •3.7.2Создание нового процесса. Системный вызов exec.
- •3.7.3Потоки unix. Функции потоков стандарта posix.
- •3.8Синхронизация потоков в unix
- •3.8.1Мьютексы
- •3.8.2Семафоры
- •0,0,0, //Ожидать обнуления семафора
- •0,1,0 // Затем увеличить значение семафора на 1};
- •0,1, 0 // Увеличитьзначение семафора на 1};
1.2.3История возникновения ос Linux
Операционная система Unix создавалась в несколько этапов. Все начиналось в 1965-69 гг. в Bell Labs концерна AT&T в рамках проекта MULTICS (Multi-user Timesharing Interactive Computing System) для большой машины General Electric GE-645. В то время AT&T могла разрабатывать, но не продавать компьютерные продукты, в результате действующих в США антимонопольных законов. От Bell Labs в проекте принимали участие два сотрудника - Кен Томпсон и Деннис Ритчи. В этот период Кен Темпсон на PDP-7 пишет на ассемблере однопользовательскую ОС, которую в шутку назвали UNICS – примитивная информационная и вычислительная служба (Uniplexed Information and Computing Service).
Проект оказался настолько удачным, что в 1969 г. Bell Labs решает выйти из проекта MULTICS, чтобы сосредоточить усилия на создание мобильной операционной среды под названием UNIX, прототипом которой стала среда UNICS. К работе по этому проекту был привлечен Денис Ритчи, который в то время уже разработал язык B. В 1973 г. он предложил переписать основную часть UNIX на B. В процессе осуществления этой идеи, язык B настолько усовершенствовался, что преобразился в C. Таким образом, было достигнуто невиданное тогда качество - мобильность. В отличии от всех предыдущих ОС, на 100 процентов написанных на ассемблере для определенной машины, UNIX имела только 10 процентов (1000 строк) кода на ассемблере. Для того чтобы работать на произвольной машине, новая ОС нуждалась в написании нескольких страничек ассемблере и компиляторе языка C. Уже в 1976 г. в первый раз UNIX была перенесена на другую машину - Interdata 8/32.
В 1971 г. торговая марка UNIX была запатентована Bell Labs для серии машин DEC PDP -11/20, наиболее распространенных в университетах. За несколько лет UNIX претерпела в Bell несколько изданий, из которых наиболее популярны были шестое (1976 г.) и седьмое (1979 г.).
Нарастающая популярность UNIX заставила Калифорнийский университет в Беркли предложить свой вариант UNIX - BSD (Berkeley Software Distribution). Это была версия, рассчитанная на 32 –разрядные машины VAX. Содержала большое количество усовершенствований, таких как: использование виртуальной памяти и страничная подкачка. Последнее новшество позволяло создавать программы большие по размеру, чем физическая память. Эта ОС поддерживала имена файлов длиной более 14 символов. На базе этой ОС по заказу DARPA ( Агентство перспективных проектов военного ведомства США) компания BBN реализовала в системе BSD 4.1 протоколы TCP/IP. Так возникла сеть Интернет.
Необходимо вспомнить и разработанную в Массачусетском технологическом институте систему X-Window (1984 г.). Основанная на TCP/IP, она обеспечивает мобильный графический интерфейс, к которому прилагается концепция "клиент - сервер", наиболее революционная для своего времени. Сегодня UNIX и X-Window неразделимы. В это же время начались попытки стандартизации. Известный американский институт инженеров по электротехнике и электронике (IEEE), создал рабочую группу 1003, которая разработала стандарт переносимой системы (Portable Operating System). Имя этого стандарта - POSIX, который прежде всего относится к ОС UNIX.
В 1990 г. документ POSIX 1003.1 c редакционными изменениями был принят в качестве стандарта ISO. Другими наиболее значительными стандартами POSIX, относящимися к UNIX, являются : POSIX 1003.2 - 1992 г. , POSIX 1003.1b - 1993 г., POSIX 1003.1c - 1995 г.
Другим опытом стандартизации UNIX является документ X/Open Portability Guide. Популярно третье издание - XPG3 (1989 г.), которое основано на POSIX 1003.1, но содержит и ряд новых элементов, рассматривающих не только ОС, но и потребительский интерфейс, базы данных, коммуникаций.
Шагом к стандартизации UNIX является появление в 1989 г. ANSI - стандарта для языка C (16 лет спустя после его рождения).
Долгим и тернистым был UNIX на рынок программных средств. Считается , что только с 1 января 1984 г. дочерняя компания AT&T Bell Labs (позднее переименованная в USL - UNIX System Laboratories ) вышла на рынок с UNIX в качестве торгового продукта.
Под благовидным предлогом стандартизации UNIX AT&T ввел SVID (System V Interface Definition) и этим ходом вновь отождествил UNIX со своей System V (1983 г.).
Другим важным событием стало соглашение AT&T с ведущими UNIX - производителями Sun и Microsoft в 1987 г. о так называемой унификации UNIX. Проект предусматривал создание четвертого издания System V (SVR4), которая объединяла характеристики Xenix Microsoft (другое название UNIX для микрокомпьютеров, основанной на седьмом издании и испытавшей сильное влияние System V), sunOS (система UNIX фирмы Sun Microsystems, основанной на BSD) и System V 3.2. В 1987 г. AT&T в первый раз лицензировала имя UNIX.
В мае следующего года несколько ведущих компаний, среди которых были Apollo, Bull, HP, IBM и Siemens, учредили Фонд открытых систем OSF (Open Software Foundation) - организацию с целью разработки и распространения открытых программных систем. Она финансировала разработки программного обеспечения в соответствии с наиболее современными требованиями к открытым системам, специфицированными в соответствующих стандартах для разработки : системный интерфейс OSF/AES, графический потребительский интерфейс OSF/Motif, распределенные системы OSF/DCE и т.д.
Основой проекта является выбор UNIX - технологии. После внимательного изучения выбрали ядро Match, разработанное в университете Карнеги-Меллон (100000 строк исходного кода; код первой UNIX был на порядок скромнее), а все остальное (OSF -1 имеет в общем около 800000 строк кода) предлагалось взять из IBM AIX третьей версии.
Выбор AIX не понравился AT&T. Концерну было предлoжено принять членство OSF, но он поставил неприемлемое условие заменить AIX на SVR4. В результате AT&T, Sun, UNISYS, XEROX и др. создали в марте 1989 г. организацию UNIX International (UI), которая дала широкую дорогу USL. Разработка и лецензирование програм оставались привилегией USL, но общий контроль был сохранен за AT&T. Взаимные столкновения и несовместимость продуктов OSF и UI явилась кульминационным пунктом в так называемых UNIX-войнах .
В 1993 г компания AT&T продала свою долю прав на UNIX фирме Novell. За это время фирма Novell выпустила собственные версии UNIX на базе System V версии 4, получившие название UNIXWare. UNIXWare предназначена для взаимодействия с системой NetWare разработки Novell.
В декабре 1995 г. компания Santa Crouze Operation купила у Novell патенты на все ее UNIX - продукты, включая OC UNIXWare и исходный код UNIX System V.
В последнее время все большую популярность приобретает свободно распостраняемая версия UNIX под названием Linux, разработанная исследователем университета Хельсинки Линусом Торвальдсом. Разработанная в 1991 г. для процессора Intel i386, сегодня она перенесена на ряд других аппаратных платформ.