Особенности архитектуры современных компьютеров, используемых в современных ОС. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Особенности архитектуры современных компьютеров, используемых в современных ОС.



Особенности архитектуры современных компьютеров, используемых в современных ОС.

Intel 80386 – 1й 32разрядный процессор.

Сегмент обязательно должен был располагаться в памяти с адреса, кратного 16 (выравнивает на границу параграф). Каждый адрес внутри программы представлялся в виде 2х компонент: адреса начала сегмента и смещения относительно начала сегмента. Адрес начала сегмента хранился в регистре сегмента, при этом он хранился без их младших (4х нулей). Смещение могло хранится в регистре (внутри сегмента). Смещение относительного адреса байта внутри сегмента 220=1М.

386 м/п имел в своем составе и 32разрядные РОНы, которые назывались EAX, EBX, ECX, EDX; 6 16 разрядных регистров сегментов CS, DS, SS, ES, GS, FS; расширенный регистр флагов EFLAGS; 32разрядный счетчик команд EFP; управляющие регистры CR3, CCR2, CR1, CR0. (рис)

MSW определяет флаги, управляющие работой м/п. Младший разряд (Е) CR0 определяет в каком режиме работает процессор: если Е=0, то м/п работает в реальном режиме. В этом режиме он полностью идентичен м/п 8086 и 8088 – не поддерживает виртуальную память, не обеспечивает защиту памяти и не поддерживает многозадачность. Единственное, чем отличается – поддерживает возможность использования 32разрядных регистров.

Если Е=1, то м/п работает в защищенном режиме – 252=4Гб памяти, поддерживает виртуальную память и аппаратные средства, многозадачен.

Старший бит Р определяет какой режим адресации используется в защищенном режиме: Р=0 – сегментная адресация, Р=1 – сегментно-страничная адресация. Регистры CR2 и CR3 используются при сегментно-страничной организации памяти.

 

Адресация памяти в защищенном режиме.

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

G=0 – байты, =1 – в страницах по 4Кб каждая

БА – задает физический адрес сегмента. БА и размер разбиты. Сделано для совместимости с предыдущей версией м/п. В дескрипторе сегмента старшие 2 байта не использовались.

Бит Р – бит присутствия. Он определяет находится ли в данный момент сегмент в памяти или он выгружен на диск. Р=1 – сегмент находится в памяти, можно работать, Р=0 – сегмента в памяти нет, процессор вырабатывает прерывание по отсутствию сегмента в памяти.

 

Вызов процедур и задач

При вызове подпрограмм из сегментов адресного пространства процесса смена LDT не происходит, и такой вызов принято называть вызовом процедур. Если подпрограмма находится вне адресного пространства текущего процесса, для ее выполнения создается новый процесс со своим адресным пространством. Такой вызов называется вызовом задач. Этот вызов осуществляется со сменой LDT. И вызов процедур и вызов задач в свою очередь могут быть прямыми или косвенными.

 

Прямой вызов подпроцедур

Вызов процедур осуществляется с помощью оператора JMP(формат: кор??? Указатель) Call(селектор, смещение) (рис)

БА + смещение = физический адрес точки входа

Доступ разрешается: C=0, CPL=DPL; C=1, CPL>=DPL

Для вызова привилегированных процедур ОС из пользовательских задач используется косвенный вызов процедур. При косвенном вызове процедур также используются операторы JMP или Call, но селектор в том операторе ссылается уже не на дескриптор кодового сегмента, а на специальный дескриптор кодового сегмента – шлюз(вентиль). (рис)

Шлюз имеет следующий формат: (рис)

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

Выполняются следующие операции: CPL<=DPL

Доступ определяется DPL шлюза.

 

Кэширование в м/п Intel

Для слаженной работы в скоростях между процессором и памятью используют быстродействующую память – кэш-память. В Intel используется 4 уровня кэширования:

1. скрытые регистры

2. буфер ассоциативной памяти

3. внутренний кэш м/п

4. внешний кэш м/п

(рис)

1. С каждым сегментным регистром связан 64р регистр, в котором хранится дескриптор сегментов, селектор которого расположен в сегментном регистре??? Они называются скрытыми, т к их видит только м/п.

При 1м обращении к сегментному регистру???, селектор которого находится в сегментном регистре, выполняется полный алгоритм трансляции виртуального адреса. Т е осуществляется просмотр всех таблиц до нахождения нужного дескриптора, потом он копируется в соответствующий скрытый регистр и сохраняется там до тех пор, пока содержимое сегментного регистра не будет изменено, т е пока не изменится селектор. Все последующие обращения к селектору уже не используют весь алгоритм трансляции, а непосредственно работают с дескриптором – в скрытом режиме. Это увеличивает скорость трансляции виртуального адреса.

2. Следующий уровень кэширования работает при страничной организации памяти и используется для хранения физических адресов нескольких наиболее часто используемых страниц. Этот 2й уровень называется буфером ассоциативной памяти TLB и в этом буфере хранятся следующие пары: (рис)

Под логическим номером страницы понимается 20 бит старшего разряда линейного адреса (рис)

  1. внутренний кэш м/п L1. Этот называется внутренним потому, что он расположен внутри м/п и в зависимости от модели м/п имеет размер от 10-в до 100-н Кб. В этом кэше (буфере) м/п временно хранит команды и данные перед их использованием в качестве операнда или команд.
  2. внешний кэш м/п L2. Этот кэш расположен на системной плате и его объем в зависимости от модели от нескольких 100-н Кб до нескольких Мб. Этот кэш также используется для промежуточного хранения команд и данных.

Взаимодействие кэшей различных уровней осуществляется по следующей схеме: (рис)

История ОС

1е ЭВМ появились в начале 40х гг, и в качестве элементной базы они использовали электромагнитное реле, поэтому скорость их работы была ничтожна. Начиная с 1945 в качестве элементной базы стали использовать электровакуумные лампы. ЭВМ на этих лампах занимали целые этажи зданий, но могли осуществлять реальные вычисления. Вычислительные машины на базе электровакуумных ламп принято считать 1м поколением ЭВМ(1945-1955). ЭВМ 1го поколения были штучны, для них не было никаких языков программирования. Команды и данные вводились с помощью переключателей, а результаты считались по лампочкам. К концу 40х – началу 50х появились 1е переферийные устройства чтения: перфоленты, перфокарты, печатное устройство в виде электр пищущей машинки.

С 1955г в качестве элемент базы ЭВМ стали использоваться транзисторы – 2е поколение (1955-1965). Использование транзисторов позволило сократить размеры ЭВМ. В 1956 был создан 1й язык Fortran, использующийся для научно-технических расчетов. Появилось разделение труда, и процесс работы с вычислительной машиной состоял из следующих шагов: программист, составив программу, записывал ее на специальные бланки, затем относил в группу подготовки данных, затем колоду перфокарт вводили в, она транслировала шаги, производила расчеты и выводила результаты на печать. Распечатку оператор отдавал программисту и цикл повторялся.

В конце 50х появились магнитные ленты, скорость записи и считывание записи с которых было во много раз больше, чем в перфокарте, поэтому для более эффективного использования времени ЦП были созданы пакетные обработки заданий. Эти системы имели следующий вид:

(рис)

На 1й маломощной машине оператор переписывал … с перфокарты, затем оператор переносил магнитную ленту 1 на ЭВМ, она выполняла их и результат записывала на магнитную ленту 2 и т д. Затем осуществлялась распечатка. Поскольку на магнитной ленте одновременно находились несколько заданий пользователя, их необходимо было разделять друг от друга и указывать какие же действия необходимо выполнить в том или другом задании. Для этого был разработан язык JCL. Он управлял заданиями, содержал несколько операторов. (JOB, {EXEC, LOAD, DATA}, END)

Для того, чтобы распознавать операторы языка управления заданиями на ЭВМ2 должна была работать специальная программа, которая бы последовательно считывала данные с магнитной ленты, распознавала операторы JCL и выполняла заданные действия. 1я такая программа называлась FMS (Fortran Monitor System), с помощью которой осуществлялось выполнение заданий, созданных на языке Fortran. (FMS – 1я ОС)

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

Следующим этапом развития ЭВМ стало появление интегральных микросхем. Машины, созданные на базе интегральных микросхем принято относить к машинам 3го поколения (1965-1980). В 1965г фирма IBM создала серию вычислительных машин S/360, в которую был внесен ряд новшеств:

1) все машины этой серии были универсальными, т е могли одинаково эффектно использоваться как для научно-технических расчетов, так и для коммерческих вычислений. До 65г вычислительные машины подразделялись на научно-технические и коммерческие.

2) В S/360 впервые появилась двоично-десятичная система счисления.

3) Впервые на этих системах было осуществлено мультипрограммирование

Для этого семейства машин была создана ОС, называемая OS/360. вся память в OS/360 делилась на фиксированное количество фиксированных разделов. Но размер разных разделов мог быть разным.

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

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

Одновременное размещение нескольких программ в памяти потребовало решения нескольких задач:

1) защита программ друг от друга

2) настройка адреса загрузки

1я задача в OS/360 решалась следующим образом: все блоки в памяти, выделяемые в программе, содержали специальный 4битный ключ кода защиты. Все блоки одного раздела имели одинаковый код защиты. Количество разделов ограничивалось 16ю.

В системе имелся специальный регистр PSW, в который ОС записывала текущий код защиты, те код защиты раздела с выполняющейся в данный момент программой. (рис)

Каждый раз при обращении к памяти процессор сравнивал текущий код защиты SPSW с блоком защиты в блоке памяти. Если код защиты не совпадал, то это значило, что делается попытка обращения в другой раздел и доступ запрещается.

Задача настройки адреса загрузки состояла в следующем: (рис)

В OS/360 для этого строились специальные таблицы относительно адресов программы, и в момент загрузки к этим относительным адресам добавлялся адрес начала раздела. (рис)

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

В отдельном разделе работала программа WTR, которая считывала результаты для печати из очереди с диска и выводила их на печатающее устройство. Поскольку и RDR и WTR выполняли печать, они практически не создавали нагрузки на центральный процессор – он использовался для выполнения других программ.

Использование фиксированных разделов??? приводило к неэффективности использования памяти. В каждом разделе??? могла выполняться только одна программа. Делать размеры раздела наименьшими тоже не решение, туда нельзя было бы загружать большие программы. Эксплуатация MFI фирмой IBM, разрабатывается новый режим ОС. OS/360 получил название MVT – мультипрограммная с переменным числом задач. В этом режиме разделы создавались динамически при загрузке программы в память, причем размер раздела выбирался в зависимости от размера загруженной программы. Но в MVT используется тот же механизм защиты памяти, поэтому количество разделов не могло превышать 16. В конце 60х гг появились алфавитно-цифровые дисплеи, и пользователям не хотелось бегать с перфокартами. Но система пакетной обработки, в которой запущенная программа выполнялась процессором до тех пор, пока она не завершается или сама не перейдет в ожидание, не подходила для организации интерактивных дисплеев. Фирма IBM предприняла попытки модернизировать систему работы??? над интерактивным дисплеем.??? TSO – с помощью этой надстройки программа, запускается с терминала по очереди на небольшой квант времени. TSO не получила должного внимания по следующим причинам:

1) надстройка над системой пакетной обработки – она сама требовала много ресурсов и замедляла работу

2) система не была многопользовательской и не могла защитить системы??? друг от друга

Параллельно с работой IBM в конце 60х 3 фирмы GE, MIT, Bell Laboratories ввели в разработку многопользовательскую систему разделений MULTIES GE 645. Но в 1969 Bell Laboratories вышла из этого проекта, и ее сотрудник Томпсон на базе уже сделанных наработок решил создать свою ОС для??? по системному программированию и назвал ее Unix на языке Ассемблер Ass PDP 7. В 1972г один из разработчиков языка Си заинтересовался Unix и переписал ее на язык Си. В 1973 правительство США стало оснащать ведущие??? США мощными машинами PDP-11. Для этих машин нужно было многопользовательское разделение во времени. Начиная с 73г большинство выпускников имели работу???, Unix приобрел огромную популярность в мире. Для того, чтобы все направления Unix сделать совместимыми, был разработан специальный стандарт PDSIX???

В начале 70х гг фирма IBM выпустила новую серию машин S/370. Эти машины поддерживали виртуальную память, и для них была разработана система OS/370. Главным событием разработчиков 370 стало создание ОС VM/370. Эта система была разработана фирмой IBM совместно с MIT для организации эффективного режима разделения времени.

???

Система имела следующую архитектуру: (рис)

На аппарате VM работала управляющая программа (Control Program)???, которая выполняла следующие действия:

1) выполнение операций ввода-вывода

2) обработка прерываний от устройств

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

4) периодические выделения виртуальным машинам квантов времени виртуальных процессов

Управляющая программа работала в привилегированном режиме. На каждой виртуальной машине в пользовательском режиме запускалась простая единопользовательская, однозадачная ОС – CMS. Поскольку CMS работала в пользовательском режиме, то всякий раз, когда она пыталась выработать ввод-вывод, возникало прерывание по защите, выполнялись необходимые действия ввода-вывода и возвращался результат в CMS.

Моделирование реального оборудования оказалось настолько удачным, что на виртуальной машине смогла работать даже реальная OS/370 и VM/370. В дальнейшем эту ОС фирма IBM использовала для своих внутренних целей для разработки и отладки различных ОС.

Появлению ЭВМ 4го поколения способствовало 2 события:

1) разработка больших интегральных схем

2) создание фирмой IBM своего ПК

4е поколение (1980-наши дни)

Когда в конце 70х гг фирма Intel сделала свой 1й м/п 8080, фирма DR присоединила к нему флопик и создала 1ю ОС для м/п, которая называлась CP/M – это была простая однозадачная однопользовательская ОС, которая могла работать с файлами на дискете, считывать программу из файла, загружать в память и передавать ей управление. Фирма DR продавала свою ОС отдельно от м/п.

Когда фирма IBM создала свой 1й ПК PC, у нее возникла проблема???

Билл Гейтс выкупил CP/M и создал MS-DOS, встроил туда Basic и решил продавать.

В начале 80х гг появился 386 процессор. В это время решение этой проблемы пошло по 2м направлениям:

1) IBM&MS стали разрабатывать свою ОС OS/2. Эта система должна была полностью использовать возможности 386-го процессора. Они создали???

2) ряд фирм пытались внедрить на ПК Unix-Xenix

Но вскоре после 1й версии OS/2 MS и IBM поссорились. MS занялась Windows, а IBM продвигала OS/2. К этому времени уже появился Mac.

Билл Гейтс выпустил:

Win 3.0 – надстройка над MS-DOS

Win 3.11 – введены сетевые функции, разделение каталогов, устройства, принтеры

Win 95 – который был заявлен, как многозадачная ОС, хотя таким не являлся. Некоторые модули Win 95 (GD и User) не обеспечивали повторную входимость. Для разделения доступа использовался WinLock, но вскоре его переименовали на WinMux. MS разработал Windows NT – уже точно многозадачную ОС.

Помимо??? в конце 80-90х фирма IBM предложила ряд интереснейших решений по развитию вычислительных систем. К концу 80х гг вычислительные машины IBM серии S/370 физически и морально уже устарели, но за эти годы на них было сделано так много наработок, что перевести их на другую платформу было невозможно. Поэтому IBM на базе новых технологий разработала новую систему S/390 – OS/390, которые не только могли в многозадачном режиме выполнять все приложения для старых ЭВМ, но и работать со старыми устройствами.

AS/400 – OS/400. OS/400 появились в середине 90х и представляют из себя целое семейство вычислительных машин разных производителей и стоимости, которые позволяют на базе одной вычислительной машины моделировать несколько виртуальных машин и выполнять на них различные ОС, при том не только фирмы IBM.

Сама ОС очень устойчивая, имеет возможность восстановления после сбоев, все свои параметры и данные для восстановления хранит в реляционной базе данных DB/2.

 

Функции ОС

1) загрузка в память и запуск на выполнение программ

2) управление памятью: в простейшем случае – это определение адреса загрузки программы в память, в более сложных случаях – учет свободной и занятой памяти, выделение и освобождение блоков памяти по запросам выполняющихся программ.

3) Управление дисковыми устройствами, если они имеются в системе.

ОС должна:

1) структурировать пользовательские данные на диске в виде файлов и каталогов, те поддерживать файловую систему

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

3) предоставлять унифицированный интерфейс работы с другими переферийными устройствами

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

Это минимальный набор функций. В более сложных системах ОС обеспечивает и дополнительные функции.

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

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

Вследствие работы сети ОС должна включать в себя средства управления сетевыми ресурсами, т е предоставление ресурсов различных компьютеров для использования в сети и управления доступом к этим ресурсам.

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

 

Классификация ОС

1. по количеству пользователей

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

а) однозадачные (MS-DOS)

б) многозадачные – в памяти одновременно размещается несколько программ (OS/370, Unix)

в) многопоточные – Linux, Windows NT – распараллеливание выполняемых внутри программ отдельных функций (потоки)

3. в зависимости от методов планирования времени ЦП:

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

б) системы разделения времени предназначены для одновременной работы нескольких пользователей на терминалах, подключенных к одной вычислительной машине. Основным критерием работы таких систем является время ответа, т е интервал времени между вводом команды и получением на нее ответа. В системах разделения времени время ЦП периодически выделяется всем задачам пользователей небольшими квантами времени.

в) системы реального времени – системы, управляющие реальными объектами или процессами. Основным критерием работы системы реального времени является система??? реакции, под которой понимается время, прошедшее с момента поступления сигнала об изменении состояния управляемого объекта или процесса до выработки системой соответствующего ответного воздействия.

4. По своему назначению:

а) системы общего назначения (Windows)

б) серверные ОС – системы, которые могут управлять работой серверов (Windows, OS/2)

в) системы реального времени – системы специфические, уникальные

г) встроенные системы – системы, управляющие работой м/п встроенных различных приборов

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

д) для отладки и разработки встроенных систем создают специальные системы – крос-системы. Он моделируют работу устройств и имеют средства отладки и разработки.

5. Системы смарт-карт

 

Структуры ОС

За 10летия развития ОС наибольшую популярность получили следующие структуры:

1. Монолитные системы

Монолитная система представляет из себя набор модулей, которые в процессе функционирования могут вызывать друг друга. Интерфейс всех модулей строго определен. Монолитные системы строятся путем компоновки входящих в них модулей в 1 или несколько исполняемых файлов. Например MS-DOS представляет собой 2 выполняемых монолитных файла: IO.com, DOS.com. 1й определяет в себе модули физических операций ввода-вывода, а 2й объединяет логические функции ввода-вывода, те функции работы на уровне файлов. Несмотря на то, что монолитные системы представляют из себя просто набор модулей, эти модули все же несколько структурированы. Например, все модули MS-DOS структурированы в следующую структуру: (рис)

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

Вызов функции в MS-DOS выполняется следующим образом:

- в регистр AL записывается код (номер) вызываемой функции

- в другие регистры заносятся параметры передаваемые этой функцией

- после этого вызывается программа прерывания Int 21h

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

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

Достоинства монолитной системы: простота реализации

Недостатки: сложность модификации (все модули связаны – придется заново производить перекомпоновку системы), очень сложная реализация контроля доступа (защиты)

2. Многоуровневая система

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

1я многоуровневая система была разработана в 1968г и называлась THE. В этой системе было реализовано 6 уровней:

5) системный оператор

4) прикладные процессы

3) управление вводом-выводом

2) консоль

1) управление памятью

0) управление процессами

На самом низком привилегированном уровне выполнялось управление процессами и обработка прерываний. На 1м более высоком уровне для процессов выделялась память, на 2м уровне обеспечивался доступ к терминалу, 3й уровень управлял операциями ввода-вывода, 4й – выполнением прикладных программ, 5й обеспечивал управление системой. Все эти 6 уровней ОС были реализованы программно, поэтому не обеспечивали полную защиту уровней друг от друга. А в MULTICS и Unix уровни реализованы программно-аппаратно, поэтому там защита и управление доступом хорошо развиты.

3. Системы виртуальных машин

1я машина была разработана IBM VM/370 (рис)

На аппаратуре работает управляющая программа СР, выполняющая действия:

1) выполнение операций ввода-вывода на устройства

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

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

4) периодическое выделение виртуальным машинам квантов времени ЦП, при этом сама СР работает в привилегированном режиме (может выполнять все операции), а виртуальные машины работают в пользовательском режиме. На каждой виртуальной машине работает либо пользовательская (однозадачная)???, либо более мощная.

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

Несколько другой подход будет применен Intel в своих м/п. м/п Intel начиная с 80386 поддерживают режим так называемого 8086. Это означает, что они могут создавать в защищенном режиме несколько параллельно работающих виртуальных машин, моделирующих м/п 8086.

4. Системы с экзоядром

Эти системы являются частным случаем виртуальных машин, в которых все физические ресурсы вычислительной системы частями закрепляются за разными виртуальными машинами. (рис)

Это позволяет еще больше функций перевести из привилегированного режима в пользовательский. Реализация становится намного сложнее, следовательно системы с экзоядром особого распространения не получили.

5. Система «клиент-сервер»

В системах «клиент-сервер» большинство выполняемых процессов как пользовательских, так и системных подразделяется на 2 группы – клиенты и серверы. Серверы – процессы, которые предоставляют в использование некоторые ресурсы или выполняют запрашиваемые клиентами функции, а клиенты – процессы, которые либо потребляют ресурсы, либо посылают запросы к серверу. И клиенты, и серверы выполняются в пользовательском режиме в соответствующих адресных пространствах, и поэтому защищены друг от друга. (рис)

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

 

Процессы и потоки

Любая операционная система должна учитывать используемые ресурсы и проделанную работу. Особенно это касается мультипрограммных вычислительных систем. В качестве единицы работы практически во всех ОС используется процесс. Процесс- это загруженная в память и выполняющаяся программа. Одна и та же программа может одновременно выполняться в рамках нескольких процессов. Каждый процесс при создании получает своё собственное адресное пространство. Ему выделяются такие ресурсы как файлы, устройства, различные системные объекты. Каждому процессу присваивается уникальный идентификатор, называемый process ID. С помощью этого идентификатора система различает процессы. С каждым процессом связываются различные управляющие структуры, с помощью которых ОС учитывает состояние самого процесса и связанные с ним устройства. Совокупность всех управляющих структур, связанных с процессом, называют контекстом процесса. Когда ОС переходит с выполнения одного процесса на другой, она сохраняет контекст текущего процесса и восстанавливает контекст следующего нового процесса. Поэтому очень часто переключение процессора с выполнения одного процесса на другой называют переключением контекста. Переключение контекста может быть 2х типов:

1) Принудительное переключение контекста, при котором ОС сама прекращает выполнение процесса

2) Добровольное переключение контекста. Происходит когда выполняющийся процесс сам перешёл в ожидание.

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

 

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

После того как процесс выбран для выполнения (на ЦП), его контекст восстанавливается, и он переводится в состояние АКТИВЕН. В активном состоянии процесс находится до тех пор, пока не произойдёт оно из следующих событий:

1) Истёк квант времени, выделенный процессу для выполнения. ОС приостанавливает выполнение процесса, его контекст сохраняется и он переводится назад в очередь, а на его место запускается следующий процесс.

2) За время работы процесса в очереди готовых появился процесс с более высоким приоритетом. ОС приостановит активный процесс, сохранит его контекст и опять по переходу 2 переведёт его в состояние ГОТОВ, а на место него запустит более приоритетный процесс.

3) За время своего выполнения, активный процесс перешел в ожидание какого-либо ресурса или события. В этом случае его контекст также сохраняется и он по переходу 3 переводится в состояние БЛОКИРОВАН, а на место него запускается следующий процесс. Переход 3- добровольное переключение контекста (процесса).

4) Во время своего выполнения процесс завершился (5й переход). После этого процесс уничтожается. В состоянии БЛОКИРОВАН процесс находится до тех пор, пока не освободится ожидаемый ресурс или не произойдёт ожидаемое им событие. В этом случае процесс из состояния БЛОКИРОВАН переводится в состояние ГОТОВ и снова может конкурировать с другими процессами за время ЦП.

Мы рассмотрели выполнение процессов в многозадачной системе, когда время центрального процессора выделяется процессом. Многие современные ОС являются многопоточными. То есть позволяют распараллеливать вычисления внутри одного процесса путём параллельного выполнения различных функций процесса. Каждая такая параллельно-выполняемая функция процесса называется потоком. Таким образом в многопоточных системах каждый процесс может содержать несколько потоков и время центрального процессора в многопоточных системах уже выделяется не процессом, а потоком, независимо от того, к какому процессу они принадлежат. Все потоки одного процесса работают в едином адресном пространстве процессора, и им доступны все ресурсы процесса, независимо от того, какой поток эти ресурсы создал. В многопоточной системе схема для состояния процесса полностью соответствует состоянию потока. В многопоточных системах как правило с потоками связывают уровень их приоритета и в соответствии с этим приоритетом помещают в очередь готовых. ОС выбирает на выполнение самый высокоприоритетный готовый поток. В многопоточных системах есть 2 способа реализации параллельных вычислений:

Либо организовать b и с как отдельные процессы, в каждом из которых будет по одному потоку, либо организовать их в один процесс, но каждой ветке b и c организовать свой поток.

С точки зрения времени выполнения и минимизации используемых ресурсов лучше 2й вариант- реализация параллельных ветвей алгоритма, потому что потоки работают в едином адресном пространстве и переключение между ними не вызывает переключение контекста процесса. Но параллельные ветки алгоритма никак не защищены друг от друга. Если параллельные ветки необходимо защищать друг от друга, то их лучше организовывать в вид отдельных процессов, тогда каждая ветка будет работать в своём адресом пространстве.

 

Каналы

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

И на эту область есть 2 указателя: указатель чтения и указатель записи.

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

Существует 2 случая, когда УЧ=УЗ:

1) канал пустой

2) канал переполнен. При попытке записи фиксируется ошибка.

FIFO

Каналы могут быть именованные и не именованные. Именованному каналу при создании присваивается уникальное имя, по которому к нему могут получить доступ потоки других процессов. Неименованным каналам имя не присваивается, поэтому доступ к ним могут получить только дочерние процессы, унаследовавшие описатель от своего родителя.

Именованный канал создается с помощью функции p=CreateNPipe(имя, размер области отводимой под канал). Получить доступ к именованному каналу из других процессов можно с помощью функции p=OpenMPipe(имя), в которой указывается имя существующего канала. Функция также возвращает описатель канала - пару р=(УЧ, УЗ).

Неименованный канал создается с помощью функции p=MakePipe(e), в котором указывается размер области, выделяемый под неименованный канал. Функция также возвращает описатель канала.

Операции чтения и записи в каналах осуществляются с помощью операторов функций ввода-вывода для последовательности файлов Read (УЧ), Write(УЗ).

При записи по УЗ осуществляется запись, после чего УЗ передвигается на начало свободного пространства.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 163; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.253.170 (0.158 с.)