Конспект лекций по предмету "Операционные системы"


Архитектура компьютерной системы

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

Вступительная лекция



Архитектура компьютерной системы



Компоненты компьютерной системы






Классификация компьютерных систем

Для того, чтобы представить себе разнообразие и масштабируемость операционных систем, рассмотрим прежде всего классификацию современных компьютерных систем, для которых разрабатываются и используются ОС – от суперкомпьютеровдо мобильных устройств, - и суммируем требования к ОС для этих классов компьютеров.
Суперкомпьютеры (super-computers) –мощные многопроцессорные компьютеры, наиболее современные из которых имеют производительность до нескольких petaflops(1015 вещественных операций в секунду; аббревиатура flopsрасшифровывается как floating-point operations per second ). Пример – суперкомпьютер "Ломоносов", установленный в МГУ. Суперкомпьютеры используются для вычислений, требующих больших вычислительных мощностей, сверхвысокой производительности и большого объема памяти. В реальной практике это прежде всего задачи моделирования – например, моделирования климата в регионе и прогнозирования на основе построенной модели погоды в данном регионе на ближайшие дни. Особенностью суперкомпьютеров является их параллельная архитектура – как правило, все они являются многопроцессорными. Соответственно, ОС для суперкомпьютеров должны поддерживать распараллеливание решения задач и синхронизацию параллельных процессов, одновременно решающих подзадачи некоторой программы.
Многоцелевые компьютеры, или компьютеры общего назначения (mainframes)– традиционное историческое название для компьютеров, распространенных в 1950-х – 1970-х гг., еще до эпохи всеобщего распространения персональных компьютеров. Именно для mainframe-компьютеров создавались первые ОС. Типичные примеры таких компьютеров: IBM 360/370; из отечественных – М-220, БЭСМ-6. На таких компьютерах решались все необходимые задачи – от расчета зарплаты сотрудников в организации до расчета траекторий космических ракет. Подобный компьютер выглядел достаточно неуклюже и громоздко и мог занимать целый большой зал. Вспомните, например. огромный компьютер HAL на космическом корабле в фантастическом фильме 1960-х гг. Стэнли Кубрика "Космическая одиссея 2001 г." Но никакие фантасты не смогли предвидеть прогресса компьютерной техники XXI века – прежде всего, того, что мощный компьютер будет не занимать целую комнату, а помещаться в небольшом ящике. Параметры ранних mainframe-компьютеров были весьма скромными: быстродействие - несколько тысяч операций в секунду, оперативная память – несколько тысяч ячеек (слов). Недостаточно удобным был пользовательский интерфейс (интерактивное взаимодействие с компьютерами было реализовано гораздо позже, в 1960-х гг.). Тем не менее, на таких компьютерах решались весьма серьезные задачи оборонного и космического назначения. С появлением персональных и портативных компьютеров классические mainframe-компьютеры ушли в прошлое. Однако следует подчеркнуть, что в именно в операционных системах для mainframe-компьютеров были реализованы все основные методы и алгоритмы, рассмотренные в данном курсе, которые впоследствии были использованы в ОС для персональных, карманных компьютеров и мобильных устройств.
Кластеры компьютеров (computer clusters)– группы компьютеров, физически расположенные рядом и соединенные друг с другом высокоскоростными шинами и линиями связи. Кластеры компьютеров используются для высокопроизводительных параллельных вычислений. Наиболее известны в мире компьютерные кластеры, расположенные в исследовательском центре CERN (Швейцария) – том самом, где находится большой адронный коллайдер. Как правило, компьютерные кластеры располагаются в исследовательских институтах и в университетах, в том числе, например, в Петродворцовом учебно-научном комплексе СПбГУ они используются в Петродворцовом телекоммуникационном центре (ПТЦ), на нашем математико-механическом и на физическом факультетах. Операционная система для кластеров должна, помимо общих возможностей, предоставлять средства для конфигурирования кластера, управления компьютерами (процессорами), входящими в него, распараллеливания решения задач между компьютерами кластера и мониторинга кластерной компьютерной системы. Примерами таких ОС являются ОС фирмы Microsoft – Windows 2003 for clusters; Windows 2008 High-Performance Computing (HPC).
Настольные компьютеры (desktops)– это наиболее распространенные в настоящее время компьютеры, которыми пользуются дома или на работе все люди, от школьников и студентов до домашних хозяек. Такой компьютер размещается на рабочем столе и состоит из монитора, системного блока, клавиатуры и мыши. Параметры современного (2010 г.) настольного компьютера, наиболее приемлемые для использования современных ОС: быстродействие процессора 1 – 3 ГГц, оперативная память – 1 – 8 гигабайт и более, объем жесткого диска (hard disk drive – HDD) – 200 Гб – 1 Тб и более (1 терабайт, Тб = 1024 Гб). Все разнообразие современных операционных систем (Windows, Linux и др.) – к услугам пользователей настольных компьютеров. При необходимости на настольном компьютереможно установить две или более операционных системы, разделив его дисковую память на несколько разделов (partitions) и установив на каждый из них свою операционную систему, так что при включении компьютера пользователю предоставляется стартовое меню, из которого он выбирает нужную операционную систему для загрузки.
Портативные компьютеры (laptops, notebooks– дословно "компьютеры, помещающиеся на коленях"; "компьютеры-тетрадки") – это миниатюрные компьютеры, по своим параметрам не уступающие настольным, но по своим размерам свободно помещающиеся в небольшую сумку или рюкзак или, например, на коленях пользователя, летящего в самолете в командировку и не желающего терять времени даром. Ноутбуки стоят обычно в несколько раз дороже, чем настольные компьютеры с аналогичными характеристиками. На ноутбукахиспользуются те же операционные системы, что и для настольных компьютеров (например, Windows или MacOS). Характерными чертами портативных компьютеровявляются всевозможные встроенные порты и адаптеры для беспроводной связи: Wi-Fi (официально IEEE 802.11) – вид радиосвязи, позволяющая работать в беспроводной сети с производительностью 10-100 мегабит в секунду (используется обычно на конференциях, в гостиницах, на вокзалах, аэропортах – т.е. в зоне радиусом в несколько сотен метров от источника приема-передачи); Bluetooth – также радиосвязь на более коротких расстояниях (10 – 100 м для Bluetooth 3.0), используемая для взаимодействия компьютера с мобильным телефоном, наушниками, плейером и др. Внешние устройства(дополнительные жесткие диски, принтеры, иногда даже DVD-ROM) подключаются к ноутбуку через порты USB. Еще лет 10 назад на ноутбуках активно использовались инфракрасные порты( IrDA ), которые, однако, неудобны, так как требуют присутствия "ответного" IrDA – порта другого устройства на расстоянии 20-30 см от порта ноутбука, при отсутствии между ними препятствий. Другая характерная черта ноутбуков – это наличие кард-ридеров – портов для чтения всевозможных карт памяти, используемых в мобильных телефонах или цифровых фотокамерах; обеспечивается также интерфейс FireWire (официально – IEEE 1394) для подключения цифровой видеокамеры; таким образом, ноутбуки хорошо приспособлены для ввода, обработки и воспроизведения обработки мультимедийной информации. Ныне портативный компьютер имеется почти у каждого студента, что они и используют для подготовки к ответу на экзамене, либо для решения задач практикума, иногда прямо в университетском буфете. Один из критических параметров ноутбука – время работы его батарей без подзарядки; очень хорошо, если это время составляет порядка 10 часов, что пока сравнительно редко; на компьютерах, используемых автором, это время составляет не более 5 часов. Популярная разновидность ноутбука ныне – это нетбук- ноутбук, предназначенный для работы в сети, обычно менее мощный и поэтому более дешевый, а также более миниатюрный.
Карманные портативные компьютеры и органайзеры (КПК, handhelds, personal digital assistants – PDA)– это "игрушки для взрослых" в виде миниатюрного компьютера, помещающегося на ладони или в кармане, но по своему быстродействию иногда не уступающего ноутбуку. При всей привлекательности, серьезные недостатки КПК, с точки зрения автора, - это неудобство ввода информации (приходится пользоваться палочкой- стилусом, - ведь не носить же с собой еще и громоздкую клавиатуру, - либо микроскопической выдвижной клавиатурой, на которой фактически тем же стилусом только и можно работать), а также неудобство чтения информации на маленьком экране. Автор уже "наигрался" в подобные КПК, - например, типа PalmPilot, - предпочитает пользоваться ноутбуками, а самым надежным органайзером считает ... небольшой бумажный блокнот. Однако молодежь приглашается к этой увлекательной интересной игре – через все в жизни нужно пройти. Современные КПК имеют фактически те же порты и адаптеры, что и ноутбуки – Wi-Fi, Bluetooth, IrDA, USB. Операционные системы для КПК аналогичны ОС для ноутбуков, но все же учитывают более жесткие ограничения КПК по объему оперативной памяти. В настоящее время для КПК широко используется ОС Windows Mobile – аналог Windows для мобильных устройств. До недавнего времени была также широко распространена PalmOS для органайзеров типа PalmPilot фирмы 3COM. Разумеется, для КПК имеется аппаратура и программное обеспечение для подключения к ноутбуку или настольному компьютеру с целью синхронизации данных, что обеспечивает дополнительную надежность.
Мобильные устройства (mobile intelligent devices – мобильные телефоны, коммуникаторы)– это устройства, которыми каждый из нас пользуется постоянно для голосовой связи, реже – для записи или обработки какой-либо информации или для выхода в Интернет. С точки зрения автора, наиболее важные параметры мобильного устройства – это по-прежнему качество голосовой связи и время автономной работы батареи. Однако все большее значение приобретают встроенные в них цифровые фото- и видеокамеры. Операционные системы для мобильных устройств отличаются большей компактностью, ввиду более жестких ограничений по памяти (например, собственная память, не расширенная SmartMedia-картой, у используемого автором с 2006 г. мобильного телефона Nokia 3230, кстати, с неплохой встроенной фотокамерой – всего 30 мегабайт). Эпоха доминирования на рынке мобильных телефонов операционных систем типа Symbian, видимо, заканчивается, и они уступают место более современным и обеспечивающим лучший пользовательский интерфейс ОС Google Android и Microsoft Windows Mobile. Для мобильных устройств, как и для КПК, весьма важная характеристика ОС – это ее надежность, в частности, сохранность данных после переполнения памяти, возникающего, например, в результате приема большого числа SMS-сообщений, интенсивной фото- или видеосъемки. К сожалению, ОС Symbian, по опыту автора, ведет себя в этом отношении недостаточно надежно: при приеме "лишнего" SMS-сообщения, не помещающегося в память телефона, он ... блокируется с жалобным сообщением "Memory full", после чего приходится вручную отключать и включать телефон и таким образом перезагружать ОС (к сожалению, SMS-ка, переполнившая чашу терпения ОС, при этом пропадает). С этой точки зрения, ОС для мобильных устройств нуждаются в дальнейшем совершенствовании. Что касается прочего программного обеспечения для мобильных телефонов (игр, утилит, прикладных программ и др.), то при их разработке доминирует Java-технология – одна из постоянных областей научных интересов автора. Изучить основы Java Вы можете, например, по книге автора "Введение в Java-технологию" или по его Интернет-курсу, опубликованному на русском сайте Sun / Oracle. В мобильных телефонах используется платформа ("издание") JME – Java Micro Edition, и любой мобильный телефон, выпускаемый вот уже более 10 лет, поддерживает Java. Программы на Java для мобильных телефонов называются мидлетами(от аббревиатуры MID – Mobile Intelligent Device ).
Носимые компьютеры (wearable computers) –для повседневной жизни достаточно экзотические устройства, однако для специальных применений (например, встроенные в скафандр космонавта или в кардиостимулятор) они жизненно важны. Разумеется, их память и быстродействие значительно меньше, чем у настольных компьютеров, но критическим фактором является их сверхвысокая надежность, а для их операционных систем и прочего программного обеспечения – минимальное возможное время ответа (response time)– интервал, в течение которого система обрабатывает информацию от датчиков, от пользователя или из сети, превышение которого грозит катастрофическими последствиями. С этой точки зрения, ОС для носимых компьютеровможно отнести к системам реального времени.
Распределенные системы (distributed systems)– это системы, состоящие из нескольких компьютеров, объединенных в проводную или беспроводную сеть. Фактически, таковы ныне все компьютерные системы (вспомните девиз "Сеть – это компьютер "). Все операционные системы должны, таким образом, поддерживать распределенный режим работы, средства сетевого взаимодействие, высокоскоростную надежную передачу информации через сеть. Все эти вопросы подробно рассмотрены в данном курсе.
Системы реального времени (real-time systems) –вычислительные системы, предназначенные для управления различными техническими, военными и другими объектами в режиме реального времени. Характеризуются основным требованием к аппаратуре и программному обеспечению, в том числе к операционной системе: недопустимость превышения времени ответасистемы, т.е. ожидаемого времени выполнения типичной операции системы. Для ОС требования реального времени накладывают весьма жесткие ограничения – например, в основном цикле работы системы недопустимы прерывания (так как они приводят к недопустимым временным затратам на их обработку). Системы реального времени – особая весьма серьезная и специфическая область, изучение которой выходит за рамки данного курса.
Приведенный обзор дает некоторое представление о разнообразии компьютерных систем в наше время. Для каждой из них должна быть разработана адекватная операционная система.

Классификация компьютерных архитектур

Компьютерные системы отличаются между собой не только по своим параметрам и своему назначению, но и по своим внутренним архитектурным принципам. Наиболее известны следующие подходы к архитектуре компьютерных систем.
CISC (Complicated Instruction Set Computers – компьютеры с усложненной системой команд) –исторически первый подход к компьютерной архитектуре, суть которого в том, что в систему команд компьютера включаются сложные по семантике операции, реализующие типовые действия, часто используемые при программировании и при реализации языков – например, вызов рекурсивных процедур и автоматическое обновление дисплей-регистров, групповые операции пересылки строк и массивов и др. Типичными представителями CISC -компьютеров были: из зарубежных компьютерных систем – машины серии IBM 360/370,из отечественных – многопроцессорные вычислительные комплексы (МВК) "Эльбрус ". В IBM 360, например, была реализована команда MVC (move characters), которая выполняла пересылку массива символов (строки) из одной области памяти в другую, причем адреса источника, получателя и длина пересылаемой строки задавались в регистрах. В "Эльбрусе" был аппаратно реализован в общем виде вход в процедуру с передачей через стек параметров, обновлением дисплей-регистров, указывающих на доступные процедуре области локальных данных. Другой пример – в "Эльбрусе" команда считывания в стек значения по заданному адресу осуществляла автоматический проход "косвенной цепочки" заранее не известной длины – если значение оказывалось также адресом, то происходило считывание в стек значения по нему и т.д., до тех пор, пока считанная в стек величина не окажется значением, а не адресом. С одной стороны, понятно стремление авторов CISC -архитектур сделать аппаратуру как можно более "умной". С другой стороны, жесткое "вшивание" сложных алгоритмов выполнения команд в "железо" приводило к тому, что аппаратура исполняла каждый раз некоторый общий алгоритм команды, требовавший десятков или даже сотен тактов процессора, но как-либо оптимизировать выполнение этих команд с использованием конкретной информации о длине строки, косвенной цепочки и т.д. возможности не было. Другой недостаток CISC -архитектур в том, что подобные групповые операции на время их выполнения фактически останавливали работу конвейера (pipeline)- реализованной в любой компьютерной архитектуре аппаратной оптимизации, параллельного выполнения нескольких соседних команд при условии их независимости друг от друга по данным.
RISC (Reduced Instruction Set Computers – компьютеры с упрощенной системой команд) –упрощенный подход к архитектуре компьютеров, предложенный в начале 1980-х гг. профессором Дэвидом Паттерсоном (университет Беркли, США) и его студентом Дэвидом Дитцелом (впоследствии – крупным ученым, руководителем компании Transmeta). Примеры семейств RISC -компьютеров: SPARC, MIPS, PA-RISC, PowerPC. Принципы данного подхода: упрощение семантики команд, отсутствие сложных групповых операций (которые могут быть реализованы последовательностями команд, содержащими циклы); одинаковая длина команд (32 бита – архитектура была разработана в расчете на 32-битовые процессоры); выполнение арифметических операций только в регистрах и использование специальных команд считывания из памяти в регистр и записи из регистра в память; отсутствие специализированных регистров (например, дисплей-регистров для адресации доступных областей локальных данных в стеке); использование большого набора регистров ( регистрового файла ) общего назначения– 512, 1024, 2048 регистров и т.д., в зависимости от конкретной модели процессора; передача при вызове процедур параметров через регистры. Подобная архитектура дает широкий простор для оптимизаций, выполняемых компиляторами, что и демонстрируют компиляторы Sun Studio разработки фирмы Sun / Oracle для ОС Solaris и Linux. RISC-архитектура до сих пор используется при разработке новых компьютеров.
VLIW (Very Long Instruction Word – компьютеры с широким командным словом) –подход к архитектуре компьютеров, сложившийся в 1980-х – 1990-х гг. Основная идея данного подхода – статическое планирование параллельных вычислений компиляторомна уровне отдельных последовательностей команд и подкоманд. При данной архитектуре каждая команда является " широкой" (long) исодержит несколько подкоманд, выполняемых параллельно за один машинный такт на нескольких однотипных устройствах процессора – например, в таком компьютере может быть два устройства сложения, два логических устройства, два устройства для выполнения переходов и т.д. Задачей компилятора является оптимальное планирование загрузки всех этих устройств в каждом машинном такте и генерация таких (широких) команд, которые позволили бы оптимально загрузить на каждом такте каждое из устройств. Достоинством такой архитектуры является возможность распараллеливания вычислений, недостатком – сложность (по сравнению с RISC -архитектурой). Примеры компьютеров таких архитектур: из зарубежных – компьютеры Cray X/MP, Cray Y/MP и др., разработанные компьютерным гением Сеймуром Креем (Cray) и его фирмой Cray Research; из отечественных – многопроцессорный вычислительный комплекс "Эльбрус-3".
EPIC (Explicit Parallelism Instruction Computers – компьютеры с явным распараллеливанием) –по архитектуре аналогичны VLIW, но с добавлением ряда важных усовершенствований: например, спекулятивныхвычислений – параллельного выполнения обеих веток условной конструкции с вычислением условия. Подход сложился и используется с 1990-х гг. Примеры процессоров данной архитектуры - Intel IA-64, AMD-64.
Multi-core computers (многоядерные компьютеры) –получившая наиболее широкую популярность в настоящее время архитектура компьютеров, при которой каждый процессор имеет несколько ядер (cores),объединенных в одном кристалле и параллельно работающих на одной и той же общей памяти, что дает широкие возможности для параллельных вычислений. В настоящее время известны многоядерныепроцессоры фирмы Intel (Core 2 Duo, Dual Core и др.), а также мощные многоядерныепроцессоры фирмы Sun / Oracle: Ultra SPARC-T1 ("Niagara")- 16-ядерный процессор ; Ultra SPARC-T2 ("Niagara2")– 32-ядерный процессор. Все ведущие фирмы мира заняты разработкой и выпуском все более мощных многоядерныхпроцессоров. Соответственно, создатели операционных систем для таких компьютеров разрабатывают базовые библиотеки программ, позволяющие в полной мере использовать возможности параллельного выполнения на многоядерныхпроцессорах.
Hybrid processor computers (компьютеры с гибридными процессорами)– новый, все шире распространяющийся подход к архитектуре компьютеров, при котором процессор имеет гибриднуюструктуру – состоит из ( многоядерного ) центрального процессора (CPU)и (также многоядерного ) графического процессора (GPU – Graphical Processor Unit ). Такая архитектура была разработана, в связи с необходимостью параллельной обработки графической и мультимедийной информации, что особенно актуально для компьютерных игр, просмотре на компьютере высококачественного цифрового видео и др. Гибридная архитектура является новым "интеллектуальным вызовом" для разработчиков компиляторов, которым необходимо разработать и реализовать адекватный набор оптимизаций как для центральных, так и для графических процессоров. Примерами таких архитектур являются новые процессоры фирмы AMD, а также графические процессоры серии Tesla фирмы NVidia.


Функционирование компьютерной системы



Обработка прерываний

Классификация прерываний
В зависимости от источника, прерывания делятся на аппаратные - возникают как… программные - вызываются искусственно с помощью соответствующей команды из программы (int), предназначены для…

Архитектура ввода-вывода



увеличить изображение


Аппаратная защита памяти и процессора

Для защиты ввода-выводавсе команды ввода-вывода считаются привилегированными. Необходимо гарантировать, чтобы пользовательская программа никогда не…

Лекция



Определение и назначение

Чтобы лучше понять место и роль операционной системы в процессе вычислений, рассмотрим компьютерную систему в целом. Она состоит из следующих…
Операционная система ( ОС, в англоязычном варианте - operating system ) – базовое системное программное обеспечение,…

Состав компонентов и функций ОС

Современные операционные системы содержат сотни и тысячи модулей (например, W2000 содержит 29 млн строк исходного кода на языке С). Наиболее важными подсистемами управления ресурсами являются подсистемы управления процессами, памятью, файлами и внешними устройствами, а подсистемами, общими для всех ресурсов, являются подсистемы пользовательского интерфейса, защиты данных и администрирования.

Управление процессами.

В современных мультипрограммных ОС может существовать одновременно несколько процессов, порожденных по инициативе пользователей и их приложений, а…
Различие программы и процесса в том, что программа – статический набор команд, а процесс- контейнер для набора…

Управление памятью.

Одним из наиболее популярных способов управления памятью в современных ОС является виртуальная память. Реализация механизма виртуальной памяти… Важная функция управления памятью – защита памяти. Нарушения защиты памяти… В 32 разрядном Windows реализована система виртуальной памяти, осн на 32-разрядном адресном пространстве, адресует 4…

Управление файлами.



Управление внешними устройствами.

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

Защита данных и администрирование.

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

Интерфейс прикладного программирования.

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

Пользовательский интерфейс.

Современные ОС поддерживают развитые функции пользовательского интерфейса для интерактивной работы за терминалами двух типов: алфавитно-цифрового и… Программный модуль ОС, ответственный за чтение отдельных команд или же… Вычислительные системы, управляемые из командной строки, например UNIX-системы, имеют командный интерпретатор,…

Лекция 3 История создания

Стремление устранить несоответствие между производительностью процессоров и скоростью работы электромеханических устройств ввода-вывода, с одной… С улучшением характеристик ЭВМ и ростом их производительности стало ясно, что… Началось интенсивное развитие методов управления данными, возникала такая важная функция ОС, как реализация…

Распределение памяти в однозадачной ОС с пакетной обработкой заданий


Рис. 2.1. Распределение памяти в простой системе пакетной обработки
Оно очень простое: операционная система занимает постоянно смежную область памяти (например, по меньшим адресам),…

ОС пакетной обработки с поддержкой мультипрограммирования



Рис. 2.2. Распределение памяти в системе пакетной обработки с поддержкой мультипрограммирования


Режим разделения времени и особенности ОС с режимом разделения времени

Когда в составе компьютерных систем появились терминалы (вначале телетайпы, затем дисплеи), возникла необходимость реализации в ОС режима разделения времени ( time sharing )– возможности одновременной работы пользователей со своими заданиями с терминалов, ввода заданий в систему, их запуска (при наличии свободного процессора), управления заданиями с терминала, их приостановки, отладки, визуализации на терминале их результатов. Рассмотрим особенности ОС с режимом разделения времени.
Хранение заданий в памяти или на диске.Ресурсы процессора в ОС с разделением времени распределены между несколькими заданиями, находящимися в памяти или на диске. Задание загружается в память (при наличии свободной памяти), если оно является пакетным и выбрано операционной системой для выполнения, либо если оно активируется пользователем с терминала. Процессор выделяется только тем заданиям, которые находятся в памяти.
Откачка и подкачка (swapping) -загрузка заданий с диска в память и их выгрузка из памяти на диск. В системе с разделением времени возможна ситуация, когда какое-либо задание, управляемое с терминала, неактивно (например, выполняет ввод-вывод, либо система ожидает ответа от пользователя, у которого в данный момент перерыв в работе). В этом случае ОС может принять решение о временной выгрузке (swap out)образа памяти задания из оперативной памяти на диск, с целью освобождения памяти для других заданий. При повторной активизации задания оно (при возможности) вновь загружается в память ( swapped in ). Подобная стратегия называется откачкой и подкачкой.
Поддержка диалогового взаимодействия между пользователем и системой. Когда ОС завершает исполнение пользовательской команды, она выполняет поиск следующего управляющего оператора (control statement),введенного с пользовательской клавиатуры.
Предоставление диалогового доступа к данным и коду пользовательской программы. В ОС с разделением времени обеспечивается возможность для пользователя ввода, запуска, редактирования, отладки своей программы с терминала, управления своим заданием (приостановки, с последующим возобновлением), просмотра его промежуточных результатов, состояния памяти и регистров, просмотра окончательных результатов на терминале при завершении задания.
Следует учитывать, что в ОС с разделением времени обрабатываются как пакетные, так и интерактивные (диалоговые) задания, поэтому система должна обеспечивать их диспетчеризацию – переключение в нужный момент с диалогового задания на пакетное, либо с одного диалогового (пакетного) задания на другое.
Режим разделения времени, наряду с пакетным режимом, был основным в операционных системах 1960-х – 1970х- гг.

Ключевые термины

Теория построения операционных систем в этот период обогатилась рядом плодотворных идей. Появились различные формы мультипрограммных режимов работы,…
Одной из первых ОС, использующих эти новейшие решения, была операционная система МСР (главная управляющая программа),…

Диалекты UNIX


В начале 1980-х годов появились персональные компьютеры. Операционные системы… В начале 1980-х гг. фирма Apple выпустила персональные компьютеры Lisa и Macintosh с операционной системой MacOS. Ее…

Лекция 4 Архитектура операционных систем

Ядро (kernel) –низкоуровневая основа любой операционной системы, выполняемая аппаратурой в особом привилегированном режиме(подробно о нем речь в… Подсистема управления ресурсами (resource allocator)– часть операционной… Управляющая программа (control program, supervisor) –подсистема ОС, управляющая исполнением других программ и…

Принцип генерируемости ОС

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

Принцип совместимости

Одним из аспектов совместимости является способность ОС выполнять программы, написанные для других ОС или для более ранних версий данной…
Необходимо разделять вопросы двоичной совместимости и совместимости на уровне исходных текстов приложений. Двоичная…

Принцип открытой и наращиваемой ОС

Открытая ОС доступна для анализа как пользователям, так и системным специалистам, обслуживающим вычислительную систему. Наращиваемая… Этот принцип иногда трактуют как расширяемость системы.
К открытым ОС, прежде всего, следует отнести UNIX-системы и, естественно, ОС Linux.


Принцип обеспечения безопасности вычислений

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

Классификация операционных систем

Все многообразие существующих (и ныне не использующихся) ОС можно классифицировать по множеству различных признаков. Остановимся на основных классификационных признаках.
1. По назначению ОС делятся на универсальные и специализированные. Специализированные ОС, как правило, работают с фиксированным набором программ (функциональных задач). Применение таких систем обусловлено невозможностью использования универсальной ОС по соображениям эффективности, надежности, защищенности и т.п., а также вследствие специфики решаемых задач [10].
Универсальные ОС рассчитаны на решение любых задач пользователей, но, как правило, форма эксплуатации вычислительной системы может предъявлять особые требования к ОС, т.е. к элементам ее специализации.
По способу загрузки можно выделить загружаемые ОС (большинство) и системы, постоянно находящиеся в памяти вычислительной системы. Последние, как правило, специализированные и используются для управления работой специализированных устройств (например, в БЦВМ баллистической ракеты или спутника, научных приборах, автоматических устройствах различного назначения и др.). По особенностям алгоритмов управления ресурсами. Главным ресурсом системы является процессор, поэтому дадим классификацию по алгоритмам управления процессором, хотя можно, конечно, классифицировать ОС по алгоритмам управления памятью, устройствами ввода-вывода и.т.д. o Поддержка многозадачности (многопрограммности). По числу одновременно выполняемых задач ОС делятся на 2 класса: однопрограммные (однозадачные) – например, MS-DOS, MSX, и многопрограммные (многозадачные) – например, ОС ЕС ЭВМ, OS/360, OS/2, UNIX, Windows разных версий.
Однопрограммные ОС предоставляют пользователю виртуальную машину, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Они также имеют средства управления файлами, периферийными устройствами и средства общения с пользователем. Многозадачные ОС, кроме того, управляют разделением совместно используемых ресурсов (процессор, память, файлы и т.д.), это позволяет значительно повысить эффективность вычислительной системы.
o Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся: на однопользовательские (MS-DOS, Windows 3х, ранние версии OS/2) и многопользовательские (UNIX, Windows NT/2000/2003/XP/Vista).
Главное отличие многопользовательских систем от однопользовательских – наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что может быть однопользовательская мультипрограммная система.
o Виды многопрограммной работы. Специфику ОС во многом определяет способ распределения времени между несколькими одновременно существующими в системе процессами (или потоками). По этому признаку можно выделить 2 группы алгоритмов: не вытесняющая многопрограммность (Windows3.x, NetWare) и вытесняющая многопрограммность (Windows 2000/2003/XP, OS/2, Unix).
В первом случае активный процесс выполняется до тех пор, пока он сам не отдает управление операционной системе. Во втором случае решение о переключении процессов принимает операционная система. Возможен и такой режим многопрограммности, когда ОС разделяет процессорное время между отдельными ветвями (потоками, волокнами) одного процесса.
o Многопроцессорная обработка. Важное свойство ОС – отсутствие или наличие средств поддержки многопроцессорной обработки. По этому признаку можно выделить ОС без поддержки мультипроцессирования (Windows 3.x, Windows 95) и с поддержкой мультипроцессирования (Solaris, OS/2, UNIX, Windows NT/2000/2003/XP).
Многопроцессорные ОС классифицируются по способу организации вычислительного процесса на асимметричные ОС (выполняются на одном процессоре, распределяя прикладные задачи по остальным процессорам) и симметричные ОС (децентрализованная система).
По области использования и форме эксплуатации. Обычно здесь выделяют три типа в соответствии с использованными при их разработке критериями эффективности: системы пакетной обработки (OS/360, OC EC); системы разделения времени (UNIX, VMS); системы реального времени (QNX, RT/11). Первые предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Критерий создания таких ОС – максимальная пропуская способность при хорошей загрузке всех ресурсов компьютера. В таких системах пользователь отстранен от компьютера.
Системы разделения времени обеспечивают удобство и эффективность работы пользователя, который имеет терминал и может вести диалог со своей программой.
Системы реального времени предназначены для управления техническими объектами (станок, спутник, технологический процесс, например доменный и т.п.), где существует предельное время на выполнение программ, управляющих объектом.
По аппаратной платформе (типу вычислительной техники), для которой они предназначаются, операционные системы делят на следующие группы. Операционные системы для смарт-карт. Некоторые из них могут управлять только одной операцией, например, электронным платежом. Некоторые смарт-карты являются JAVA-ориентированным и содержат интерпретатор виртуальной машины JAVA. Апплеты JAVA загружаются на карту и выполняются JVM-интерпретатором. Некоторые из таких карт могут одновременно управлять несколькими апплетами JAVA, что приводит к многозадачности и необходимости планирования. Встроенные операционные системы. Управляют карманными компьютерами (lialm OS, Windows CE – Consumer Electronics – бытовая техника), мобильными телефонами, телевизорами, микроволновыми печами и т.п. Операционные системы для персональных компьютеров, например, Windows 9.x, Windows ХР, Linux, Mac OSX и др. Операционные системы мини-ЭВМ, например, RT-11 для PDP-11 – OC реального времени, RSX-11 M для PDP-11 – ОС разделения времени, UNIX для PDP-7. Операционные системы мэйнфреймов (больших машин), например, OS/390, происходящая от OS/360 (IBM). Обычно ОС мэйнфреймов предполагает одновременно три вида обслуживания: пакетную обработку, обработку транзакций (например, работа с БД, бронирование авиабилетов, процесс работы в банках) и разделение времени. Серверные операционные системы, например, UNIX, Windows 2000, Linux. Область применения – ЛВС, региональные сети, Intranet, Internet. Кластерные операционные системы. Кластер – слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений и представляющихся пользователю единой системной, например, Windows 2000 Cluster Server, Windows 2008 Server, Sun Cluster (базовая ОС – Solaris).

Unix

Знакомство с архитектурой UNIX начнем с рассмотрения таких неотъемлимых для неё характеристических понятий, как стандартизация и многозадачность:
Стандартизация
Несмотря на многообразие версий UNIX, основой всего семейства являются принципиально одинаковая архитектура и ряд стандартных интерфейсов (в UNIX стандартизовано почти всё – от расположения системных папок и файлов, до интерфейса системных вызовов и списка драйверов базовых устройств). Опытный администратор без особого труда сможет обслуживать другую версию, тогда как для пользователей переход на другую систему и вовсе может оказаться незаметным. Для системных же программистов такого рода стандарты позволяют полностью сосредоточиться на программировании, не тратя время на изучение архитектуры и особенностей конкретной реализации системы.
Многозадачность
В системе UNIX может одновременно выполняться множество процессов (задач), причем их число логически не ограничивается, и множество частей одной программы может одновременно находиться в системе. Благодаря специальному механизму управления памятью, каждый процесс развивается в своем защищенном адресном пространстве, что гарантирует безопасность и независимость от других процессов. Различные системные операции позволяют процессам порождать новые процессы, завершают процессы, синхронизируют выполнение этапов процесса и управляют реакцией на наступление различных событий.

Два кита UNIX: файлы и процессы

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

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

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

Презентация 2-02: беглый взгляд на архитектуру UNIX

Самый общий взляд на архитектуру UNIX позволяет увидеть двухуровневую модель системы, состоящую из пользовательской и системной части (ядра) (см. Рисунок 1.20, «Архитектура операционной системы UNIX»). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы (процессы в пользовательской части операционной системы) от особенностей ее архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам посредством системных вызовов. Таким образом, в системе можно выделить два уровня привилегий: уровень системы (привиегии специального пользователя root) и уровень пользователя (привилегии всех остальных пользователей). Подробнее об управлении доступом рассказывается в следующих главах (Глава 3, Безопасность операционной системы UNIX).


Рисунок 1.20. Архитектура операционной системы UNIX

Важной частью системных программ являются демоны. Демон – это процесс, выполняющий опеределенную функцию в системе, который запускается при старте системы и не связан ни с одним пользовательским терминалом. Демоны предоставляют пользователям определенные сервисы, примерами которых могут служить системный журнал, веб-сервер и т.п.. Аналогом демонов в операционной системе Windows NT и более поздних версиях являются системные службы.
Ядро UNIX

Презентация 2-03: ядро UNIX

Операционная система UNIX обладает классическим монолитным ядром (см. «Архитектура операционной системы»), в котором можно выделить следующие основные части:
Файловая подсистема

Доступ к структурам ядра осуществляется через файловый интерфейс.
Управление процессами

Сюда входит управление параллельным выполнением процессов (планирование и диспетчеризация), виртуальной памятью процесса, и взаимодействием между процессами (сигналы, очереди сообщений и т.п.).
Драйверы устройств

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

Windows



Структура ОС Windows



Общее описание структуры системы

Причина заключается в постепенном преодолении основного недостатка микроядерных архитектур - дополнительных накладных расходов, связанных с… Высокая модульность и гибкость первых версий Windows NT позволила успешно… Упрощенная схема архитектуры, ориентированная на выполнение Win32-приложений, показана на рис. 1.4.


Подсистема Win32

Win32 API (Application Programming Interface) - основной интерфейс программирования в семействе операционных систем Microsoft Windows. Функции Win32… В состав Win32 подсистемы (см. рис. 1.4) входят: cерверный процесс подсистемы… Приложение, ориентированное на использование Win32 API, может работать практически на всех версиях Windows, несмотря…

Реализация прерываний, системных вызовов и исключений в ОС Windows

Рассмотрим реализацию основных механизмов операционной системы в ОС Windows. Следует отметить, что терминология корпорации Microsoft несколько отличается от общепринятой. Например, системные вызовы называются системными сервисами, а под программным прерыванием (см. прерывания DPC и APC) понимается выполнение специфичных функций ядра, требующих прерывания работы текущего процесса.

Ловушки

В типичном случае сохраняются и впоследствии восстанавливаются:
программный счетчик; регистр состояния процессора; содержимое остальных… Эта информация специфицирована в структуре CONTEXT (файл winnt.h), и может… Адрес части ядра ОС, ответственной за обработку данного конкретного события определяется из вектора прерываний,…

Приоритеты. IRQL

Обрабатываемые события обслуживаются в порядке их приоритета, и события с более высоким приоритетом вытесняют обработку событий с меньшим… Значения IRQL для аппаратных прерываний расставляются диспетчером Plug and… Можно сказать, что в ОС Windows действует двухуровневая схема планирования. Приоритеты высшего уровня (в данном случае…

Заключение

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

Понятие процесса и потока

Из курса теории операционных систем известно, что процесс является динамическим объектом, описывающим выполнение программы. Процессу выделяются… Для описания столь сложного динамического объекта ОС поддерживает набор… Блок управления процессом является моделью процесса для операционной системы. Любая операция, производимая…

Потоки

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


Рис. 5.1. Процесс с несколькими потоками
В этом случае процесс можно рассматривать в качестве контейнера ресурсов, а все проблемы, связанные с динамикой исполнения, решаются на уровне потоков. Обычно каждый процесс начинается с одного потока, а остальные (при необходимости) создаются в ходе выполнения. Теперь уже не процесс, а поток характеризуется состоянием, поток является единицей планирования, процессор переключается между потоками, и необходимо сохранять контекст потока (что существенно проще, чем сохранение контекста процесса). Подобно процессам потоки (нити, threads) в системе описываются структурой данных, которую обычно называют блоком управления потоком (thread control block, TCB).

Реализация процессов



Внутреннее устройство процессов в ОС Windows

Блок управления процессом (PCB) реализован в виде набора связанных структур, главная из которых называется блоком процесса EPROCESS. Соответственно,…



Создание процесса

На первом этапе, выполняемом библиотекой kernel32.dll в режиме пользователя, на диске отыскивается нужный файл-образ, после чего создается объект… На втором этапе выполняется обращение к системному сервису NtCreateProcess для… На третьем этапе в уже полностью проинициализированном объекте "процесс" необходимо создать первичный поток.…

Реализация потоков



Состояния потоков



Рис. 5.3. Состояния потоков в ОС Windows (версии Server 2003)


Отдельные характеристики потоков

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

Волокна и задания

Переключение между потоками занимает довольно много времени, поэтому для облегченного псевдопараллелизма в системе поддерживаются волокна (fibers). Наличие волокон позволяет реализовать собственный механизм планирования, не используя встроенный механизм планирования потоков на основе приоритетов. ОС не знает о смене волокон, для управления волокнами нет и настоящих системных вызовов, однако есть вызовы Win32 API ConvertThreadToFiber, CreateFiber, SwitchToFiber и т. д. Подробнее функции, связанные с волокнами, описаны в документации Platform SDK.
В системе есть также задания (job object), которые обеспечивают управление одним или несколькими процессами как группой.

Внутреннее устройство потоков

Подобно процессам, каждый поток имеет свой блок управления, реализованный в виде набора структур, главная из которых - ETHREAD - показана на рис.…



Создание потоков

Вслед за этим создается блок управления потоком вместе с сопутствующими структурами, формируется стек ядра потока и о создании потока уведомляется…

Контекст потока, переключение контекстов

Эта информация сохраняется в текущем стеке ядра потока.
Контекст отражает состояние регистров процессора на момент последнего… Помимо перечисленных в системе имеется много полезных функций, реализующих API для управления потоками. Их полный…

Заключение

Поток представляет собой набор исполняющихся команд для текущего момента исполнения. С одним или несколькими потоками ассоциирован набор ресурсов, которые объединены в рамках процесса. Для описания процесса в системе поддерживается связанная совокупность структур, главной из которых является структура EPROCESS. В свою очередь, структура ETHREAD и связанные с ней структуры необходимы для реализации потоков. В лекции проанализированы функции CreateProcess и CreateThread и этапы создания процессов и потоков. Важными характеристиками потока являются его контекст и состояние. Наблюдение за состоянием потоков предлагается осуществить при помощи инструментальных средств системы.

Межпроцессный обмен

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

Введение

Из курса ОС известно, что для выполнения таких задач, как совместное использование данных, построение интегрированных многофункциональных приложений и т.д., различным процессам (а также различным потокам) необходимо взаимодействовать между собой. Поскольку процессы изначально задумывались как обособленные сущности, для обеспечения корректного взаимодействия процессов требуются специальные средства и действия операционной системы.
Известно также, что в основе межпроцессного (Inter Process Communications, IPC) обмена обычно находится разделяемый ресурс (например, канал или сегмент разделяемой памяти), и, следовательно, ОС должна предоставить средства для генерации, именования, установки режима доступа и атрибутов защиты таких ресурсов. Обычно такой ресурс может быть доступен всем процессам, которые знают его имя и имеют необходимые привилегии.
Кроме того, организация связи между процессами всегда предполагает установления таких ее характеристик, как:
направление связи. Связь бывает однонаправленная (симплексная) и двунаправленная (полудуплексная для поочередной передачи информации и дуплексная с возможностью одновременной передачи данных в разных направлениях); тип адресации. В случае прямой адресации информация посылается непосредственно получателю, например, процессу P-Send (P, message). В случае непрямой или косвенной адресации информация помещается в некоторый промежуточный объект, например, в почтовый ящик; используемая модель передачи данных - потоковая или модель сообщений (см. ниже); объем передаваемой информации и сведения о том, обладает ли канал буфером необходимого размера; синхронность обмена данными. Если отправитель сообщения блокируется до получения этого сообщения адресатом, то обмен считается синхронным, в противном случае - асинхронным. Кроме перечисленных у каждой связи есть еще ряд особенностей.

Способы межпроцессного обмена.



Рис. 7.1. Основные способы межпроцессного обмена


Понятие о разделяемом ресурсе

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


Рис. 7.2. Адресные пространства процессов, взаимодействующих через сегмент разделяемой памяти
В ОС Windows сегмент разделяемой памяти создается с помощью Win32-функции CreateFileMapping (см. рис. 7.3). В случае успешного выполнения данной функции создается ресурс - фрагмент памяти, доступный по имени (параметр lpname ), который базируется на соответствующем объекте ядра - "объекте-файле, отображаемом в память" с присущими любому объекту атрибутами. Процессу-создателю возвращается описатель (handle) ресурса. Другие процессы, желающие иметь доступ к ресурсу, также должны получить его описатель. В данном случае это можно сделать с помощью функции OpenFileMapping, указав имя ресурса в качестве одного из параметров.


Рис. 7.3. Создание сегмента разделяемой памяти базируется на разделяемом ресурсе, которому соответствует объект ядра
Способы создания и характеристики файлов, отображаемых в память, будут рассмотрены в Части III курса "Система управления памятью", а в рамках данной темы ограничимся сведениями об обмене информации по каналам связи. При этом не надо забывать, что при любом способе общения в рамках одной вычислительной системы всегда будет использоваться элемент общей памяти. Другое дело, что в случае каналов эта память может быть выделена не в адресном пространстве процесса, а в адресном пространстве ядра системы, как это показано на рис. 7.4.


Рис. 7.4. Обмен через каналы связи осуществляется через буфер в адресном пространстве ядра системы

Каналы связи

Механизм генерации канала предполагает получение процессом-создателем (процессом-сервером) двух описателей (handles) для пользования этим каналом.… Один из вариантов использования канала - это его использование процессом для…


Введение. Проблема взаимоисключения

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


Рис. 8.1. Два параллельных потока увеличивают значение общей переменной Count
Операция Count++ не является атомарной. Код операции Count++ будет преобразован компилятором в машинный код, который выглядит примерно так:
(1) MOV EAX, [Count] ; значение из Count помещается в регистр
(2) INC EAX ; значение регистра увеличивается на 1
(3) MOV [Count], EAX ; значение из регистра помещается обратно в Count
В мультипрограммной системе с разделением времени может наступить неблагоприятная ситуация перемешивания (interleaving'а), когда поток T1 выполняет шаг (1), затем вытесняется потоком T2 , который выполняет шаги (1)-(3), а уже после этого поток T1 заканчивает операцию, выполняя шаги (2)-(3). В этом случае результирующее приращение переменной Count будет равно 1 вместо правильного приращения - 2.
Сложность проблемы синхронизации состоит в нерегулярности возникающих ситуаций: в предыдущем примере можно представить и другое, более благоприятное развитие событий. В данном случае все определяется взаимными скоростями потоков и моментами их прерывания. Ситуации, подобные той, когда два или более потоков обрабатывают разделяемые данные и конечный результат зависит от соотношения скоростей процессов, называются гонками (условия состязания, race conditions).
Для устранения условий состязания необходимо обеспечить каждому потоку эксклюзивный доступ к разделяемым данным. Такой прием называется взаимоисключением (mutual exclusion). Часть кода потока, выполнение которого может привести к race condition, называется критической секцией (critical section). Например, операции (1)-(3) в примере, приведенном выше, являются критическими секциями обоих потоков. Таким образом, взаимоисключение необходимо обеспечить для критических секций потоков.
В общем случае структура процесса, участвующего во взаимодействии, может быть представлена следующим образом [2]:
while (some condition) {
entry section
critical section
exit section
remainder section
}
Внешний цикл означает, что нас будут интересовать многочисленные попытки входа в критическую секцию (синхронизация единичных попаданий может быть обеспечена и другими средствами). Наиболее важным с точки зрения синхронизации является пролог ( entry section ), где принимается решение о том, может ли поток быть допущенным в критическую секцию. В эпилоге ( exit section ) обычно открывается шлагбаум для других потоков, а операции, не входящие в критическую секцию, сосредоточены в remainder section.

Переменная-замок

shared int lock = 0;
T1 T2
while (some condition) {


TSL команды

Многие вычислительные архитектуры имеют инструкции, которые могут обеспечить атомарность последовательности операций при входе в критическую секцию. Такие команды называются Test and_Set Lock или TSL командами. Если представить себе такую команду как функцию

Синхронизация на основе общих семафоров

wait (S):

while (S <= 0) do no-op;


Лекция 9. Введение. Виртуальное адресное пространство процесса

Система управления памятью является одной из наиболее важных в составе ОС. Традиционная схема предполагает связывание виртуального и физического адресов на стадии исполнения программы. Для управления виртуальным адресным пространством в нем принято организовывать сегменты (регионы), для описания которых используются структуры данных VAD (Virtual Address Descriptors). Для создания региона и передачи ему физической памяти можно использовать функцию VirtualAlloc. Описана техника использования таких регионов, как куча процесса, стек потока и регион файла, отображаемого в память

Введение

В компьютерах фон-неймановской архитектуры выполняемые программы вместе с обрабатываемыми ими данными должны находиться в оперативной памяти. Операционной системе приходится заниматься управлением памятью, то есть решать задачу распределения памяти между пользовательскими процессами и компонентами ОС. Часть ОС, которая отвечает за управление памятью, называется менеджером памяти.
Для описания системы управления памятью активно используются понятия физической и логической (виртуальной) памяти.
Физическая память является аппаратным запоминающим устройством компьютера. Менеджер памяти имеет дело с двумя уровнями физической памяти: оперативной (основной, первичной) и внешней, или вторичной. Оперативная память изготавливается с применением полупроводниковых технологий и теряет свое содержимое при отключении питания. Вторичная память (это, главным образом, диски) характеризуется гораздо более медленным доступом, однако имеет большую емкость и является энергонезависимой. Она используется в качестве расширения основной памяти. Обычно информация, хранимая в оперативной памяти, за исключением самых последних изменений, хранится также во внешней памяти. Если процессор не обнаруживает нужную информацию в оперативной памяти, он начинает искать ее во вторичной. Когда нужная информация найдена во внешней памяти, она переносится в оперативную память. Менеджер памяти старается по возможности снизить частоту обращений к вторичной памяти (свойство локальности или локализации обращений). В результате эффективное время доступа к памяти оказывается близким к времени доступа к оперативной памяти и составляет несколько десятков наносекунд.
Оперативная память представляет собой упорядоченный массив однобайтовых ячеек, каждая из которых имеет свой уникальный адрес (номер). Типовые операции - чтение и запись байта в ячейку с нужным номером. Обмен с внешней памятью обычно осуществляется блоками фиксированного размера. Совокупность адресов в физической памяти называется физическим адресным пространством.
К сожалению, многие термины, относящиеся к системе управления памятью, как и в информатике вообще, перегружены. Поэтому в дальнейшем термин "физическая память" будет относиться именно к оперативной памяти, а использование внешней памяти (дисковой, файлов выгрузки) будет оговариваться отдельно.
Логическая память - абстракция, отражающая взгляд пользователя на то, как организованы его программы и хранятся данные. С точки зрения пользователя его выполняемая программа (процесс) представляет собой совокупность блоков переменного размера, содержащих однородную информацию (данные, код, стек и т.д.). Обычно такие модули называют сегментами (см. рис. 9.1). Адрес при этом перестает быть линейным и состоит из нескольких компонентов, например, номера сегмента и смещения внутри сегмента. Кроме того, с сегментами принято связывать атрибуты: права доступа или типы операций, которые разрешается производить с данными, хранящимися в сегменте.


Рис. 9.1. Расположение сегментов процессов в памяти компьютера
Логические адреса внутри сегментов могут быть сформированы на этапе компиляции. При этом символические имена связываются с перемещаемыми адресами (такими, как n байт от начала модуля). Другим примером логического адреса может быть адрес, полученный программой в результате операции выделения области памяти (allocation). Иногда говорят, что логический адрес - это адрес, который генерирует процессор. Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.

Связывание адресов



Рис. 9.2. Формирование логического адреса и связывание логического адреса с физическим


Общее описание виртуальной сегментно-страничной памяти ОС Windows

Для определения схемы виртуальной памяти, реализованной в ОС Windows, лучше всего подходит термин "сегментно-страничная виртуальная… Сегментно-страничная модель памяти, реализованная в ОС Windows, также имеет… Одна из задач, которая решается при этом, - избежать появления в системе большого количества таблиц страниц за счет…


Не сдавайте скачаную работу преподавателю!
Данный конспект лекций Вы можете использовать для создания шпаргалок и подготовки к экзаменам.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем конспект самостоятельно:
! Как написать конспект Как правильно подойти к написанию чтобы быстро и информативно все зафиксировать.