1. Эволюция операционных систем и основные идеи



Скачать 0.94 Mb.
страница 1/6
Дата 05.10.2016
Размер 0.94 Mb.
  1   2   3   4   5   6
1. Эволюция операционных систем.
Эволюция операционных систем и основные идеи

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


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

Пакетный режим

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



Разделение времени и многозадачность

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


Необходимость в разделении времени (многозадачности, мультипрограммировании) проявилась ещё сильнее при распространении в качестве устройств ввода-вывода телетайпов (а позднее, терминалов с электронно-лучевыми дисплеями) (1960-е годы). Поскольку скорость клавиатурного ввода (и даже чтения с экрана) данных оператором много ниже, чем скорость обработки этих данных компьютером, использование компьютера в «монопольном» режиме (с одним оператором) могло привести к простою дорогостоящих вычислительных ресурсов.
Разделение времени позволило создать «многопользовательские» системы, в которых один (как правило) центральный процессор и блок оперативной памяти соединялся с многочисленными терминалами. При этом часть задач (таких, как ввод или редактирование данных оператором) могла исполняться в режиме диалога, а другие задачи (такие, как массивные вычисления) — в пакетном режиме.

Разделение полномочий

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


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

Реальный масштаб времени

Применение универсальных компьютеров для управления производственными процессами потребовало реализации «реального масштаба времени» («реального времени») — синхронизации исполнения программ с внешними физическими процессами.


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

Файловые системы и структуры

Постепенная замена носителей с последовательным доступом (перфолент, перфокарт и магнитных лент) накопителями произвольного доступа (на магнитных дисках) поставило задачу организации данных на таких носителях, с тем, чтобы данные, введённые оператором или сформированные одной программой могли использоваться другой.


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

2. Определение операционной системы.
Операцио́нная систе́ма, ОС (англ. operating system) — базовый комплекс компьютерных программ, обеспечивающий управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, а также выполнение прикладных программ и утилит.
При включении компьютера операционная система загружается в память раньше остальных программ и затем служит платформой и средой для их работы. Помимо вышеуказанных функций ОС может осуществлять и другие, например, предоставление пользовательского интерфейса, сетевое взаимодействие и т. п.
С 1990-х наиболее распространёнными операционными системами для персональных компьютеров и серверов являются ОС семейства Microsoft Windows и Windows NT, Mac OS и Mac OS X, системы класса UNIX, и Unix‐подобные (особенно GNU/Linux).
Подразделяются:

- использующие файловые системы (с универсальным механизмом доступа к данным),

- многопользовательские (с разделением полномочий),

- многозадачные (с разделением времени).


В составе ОС различают три группы компонентов:

- ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевую подсистему, файловую систему;

- системные библиотеки и

- оболочку с утилитами.


Большинство программ, как системных (входящих в ОС), так и прикладных, исполняются в непривилегированном («пользовательском») режиме работы процессора и получают доступ к оборудованию (и, при необходимости, к другим ядерным ресурсам, а также ресурсам иных программ) только посредством системных вызовов. Ядро исполняется в привилегированном режиме: именно в этом смысле говорят, что ОС (точнее, её ядро) управляет оборудованием.

3. История развития операционных систем режимов работы ЭВМ.
Операционные системы, подобно аппаратуре компьютеров, на пути своего развития прошли через ряд радикальных изменений, так называемых поколений.
1 Нулевое поколение (40-е годы)
В первых вычислительных машинах операционных систем не было. Пользователи имели полный доступ к машинному языку, и все программы писали непосредственно в машинных командах.
2 Первое поколение (50-е годы)
Операционные системы 50-х годов были разработаны с целью ускорения и упрощения перехода с задачи на задачу. До создания этих операционных систем много машинного времени терялось в промежутках между завершением выполнения одной задачи и вводом в решение следующей. Это было начало систем пакетной обработки, которые предусматривали объединение отдельных задач в группы, или пакеты. Запущенная в решение задача получала в свое полное распоряжение все ресурсы машины. После завершения каждой задачи (либо нормального, либо аварийного) управление ресурсами возвращалось операционной системе, которая «прочищала машину после данной задачи» и обеспечивала ввод и запуск в решение следующей задачи.
3 Второе поколение (начало 60-х годов)
Характерной особенностью операционных систем второго поколения было то, что они создавались как системы коллективного пользования с мультипрограммным режимом работы (см. гл. 7) и как первые системы мультипроцессорного типа (см. гл. 11). В мультипрограммных системах несколько пользовательских программ одновременно находятся в основной памяти компьютера, а центральный процессор быстро переключается с задачи на задачу. В случае мультипроцессорных систем единый вычислительный комплекс содержит несколько процессоров, что повышает вычислительную мощность этого комплекса.

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


4 Третье поколение (середина 60-х — середина 70-х годов)
Третье поколение операционных систем фактически появилось с представлением фирмой IBM в 1964 г. семейства компьютеров System/360. Эти компьютеры третьего поколения были разработаны как машины общего назначения. Это были громоздкие, как правило, неэффективные компьютеры, которые предназначались для решения любых задач из любых областей приложения. Подобный подход позволил продать множество компьютеров, однако имел серьезные негативные стороны. Пользователям, которые решали конкретные прикладные задачи, не требующие всех функциональных возможностей подобных компьютеров, приходилось нести большие дополнительные расходы, поскольку они по сути оплачивали увеличенные затраты машинного времени, времени обучения, времени отладки, технического обслуживания и т. д.
Операционные системы третьего поколения были многорежимными системами. Некоторые из них обеспечивали работу сразу во всех известных режимах: пакетную обработку, разделение времени, режим реального времени и мультипроцессорный режим. Они были громоздкими и дорогостоящими. Поскольку ранее подобные системы не создавались, многие из разработок заканчивались со значительным превышением выделенных ассигнований и значительно позже первоначально запланированных сроков.

5 Четвертое поколение (от середины 70-х годов до настоящего времени)
Начала широко распространяться концепция виртуальных машин (см. гл. 22). Пользователь получил возможность более не задумываться о физических деталях построения вычислительных машин (или сетей), с которыми он работает. Вместо этого пользователь имеет дело с функциональным эквивалентом компьютера, создаваемым для него операционной системой и называемым виртуальной машиной. Современный пользователь хочет, чтобы машина помогала ему эффективно выполнять его работу, и, как правило, не интересуется внутренними деталями устройства этой машины и ее функционированием.
Исключительно важную роль начали играть системы баз данных. Наше общество зиждется на информации, так что задача систем баз данных — обеспечивать возможность удобного и управляемого доступа к информации для тех, кто имеет на это право. За последнее время появились тысячи баз данных, предусматривающих оперативный доступ при помощи терминалов через сети связи.
Широкое внедрение получила концепция распределенной обработки данных (см. гл. 16). Сейчас мы считаем, что гораздо целесообразнее иметь вычислительные мощности непосредственно там, где они необходимы, вместо того чтобы передавать данные для обработки в какие-либо вычислительные центры.


4. Нулевое поколение операционных систем, машинный язык. Непосредственное программирование.
Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code) — система команд (язык) конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.
Каждая модель процессора имеет свой собственный машинный язык, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A.
«Слова» машинного языка называются машинными инструкциями. Каждая из них описывает элементарное действие, выполняемое процессором, такое как «переслать байт из памяти в регистр». Программа — это просто длинный список инструкций, выполняемых процессором. Раньше процессоры просто выполняли инструкции одну за другой, но новые суперскалярные процессоры способны выполнять несколько инструкций за раз. Прямой поток выполнения команд может быть изменён инструкцией перехода, которая переносит выполнение на инструкцию с заданным адресом. Инструкция перехода может быть условной, выполняющей переход только при соблюдении некоторого условия.
Также инструкции бывают постоянной длины (у RISC, MISC-архитектур) и диапазонной (у CISC-архитектур; например, для архитектуры x86 команда имеет длину от 8 до 120 битов).
Программирование на М. я. ведётся в системе команд ЦВМ, поэтому М. я. рекомендуется использовать для создания программ (операционные системы, трансляторы алгоритмических языков, библиотеки стандартных программ), расширяющих логические возможности ЦВМ, и для создания программ, на которые наложены ограничения по времени выполнения и объёму памяти ЦВМ. Недостатки программирования на М. я.: программы, написанные для ЦВМ одного типа, не пригодны для ЦВМ другого типа; продолжительные сроки обучения программистов; программист, научившийся программировать на одной машине, должен фактически переучиваться при переходе к программированию на другой машине. Один из путей развития М. я. — приближение М. я. к языкам высшего уровня (тем самым упрощаются трансляторы с алгоритмических языков).

5. Система программирования ассемблера.
Язык ассемблера — тип языка программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком. Часто для краткости его называют просто ассемблером, что не верно.
Содержание языка

Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данныx через метки с символьными именами (при ассемблировании[1] для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес) и директивы[2].


Директивы ассемблера позволяют включать в программу блоки данных (описанные явно или считанные из файла); повторить определённый фрагмент указанное число раз; компилировать фрагмент по условию; задавать адрес исполнения фрагмента, отличный от адреса расположения в памяти[уточнить!]; менять значения меток в процессе компиляции; использовать макроопределения с параметрами и др.
Каждая модель процессора, в принципе, имеет свой набор команд и соответствующий ему язык (или диалект) ассемблера.
Имеются процессоры, реализующие базис своих высокоуровневых языков (Forth, Lisp), где ассемблер имеет минимальные отличия от базового языка. В отличие, например, от существующих, ассемблер процессора Java не совместим синтаксически с своим высокоуровневым языком.
Достоинства и недостатки
Достоинства языка ассемблера

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

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

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

- Последние технологии безопасности, внедряемые в операционные системы, не позволяют делать самомодифицирующегося кода, так как исключают одновременную возможность исполнения инструкций и запись в одном и том же участке памяти (технология W^X в BSD-системах, DEP в Windows).
Недостатки языка ассемблера

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

- Меньшее количество доступных библиотек, их малая совместимость между собой.

- Непереносимость на другие платформы (кроме двоично совместимых).


Применение

Напрямую вытекает из достоинств и недостатков.


Поскольку большие программы на ассемблере писать крайне неудобно, их пишут на языках высокого уровня. На ассемблере же пишут небольшие фрагменты или модули, для которых критически важны:
быстродействие (драйверы);

размер кода (загрузочные сектора, программное обеспечение для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, программные защиты);

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

Общепринятого стандарта для синтаксиса языков ассемблера не существует. Однако, существуют стандарты, которых придерживается большинство разработчиков языков ассемблера. Основными такими стандартами являются Intel-синтаксис и AT&T-синтаксис.




6. Режим пакетной обработки. Задание. Управление заданиями.
В зависимости от того, в каком порядке при мультипрограммном режиме выполняются программы пользователей, различают режимы пакетной обработки задач и коллективного доступа.
В режиме пакетной обработки задачи выстраиваются в одну или несколько очередей и последовательно выбираются для их выполнения.
Язык управления Заданиями УС
Если исходить не из целей, а из связности в процессе работы, то становится очевидной тесная связь ППО с ОС. Почти любая большая ВС имеет свое подмножество базовых универсальных языков программирования, а, следовательно, это наложит отпечаток на исходные модули программ. Имеются также различия в составе и функциях обрабатывающих программ ОС: в языках управления заданиями, в системах управления данными, в используемых СУБД. Все это приводит к тому, что пакеты и библиотеки прикладных программ оказываются машинно-ориентированными в большей или меньшей степени (в меньшей — для ВС с последовательным выполнением команд, в большей — для ВС параллельной архитектуры, векторно-конвейерных, потоковых и т. п.).
помимо написанной на языке высокого уровня программы пользователь снабжает ее и управляющей информацией, необходимой ОС для выполнения своих функций. Средством написания такой информации служит язык управления заданиями.


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

8. Мультипрограммирование и мультизадачность.
Мультипрограммирование или мультизадачность – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера. Мультипрограммирование призвано повысить эффективность использования вычислительной системы. Наиболее часто используемыми критериями эффективности являются:

•Пропускная способность – количество задач, выполняемых системой в единицу времени;

•Удобство работы пользователей – возможность интерактивной работы одновременно с несколькими приложениями на одном компьютере;

•Реактивность системы – способность системы выдерживать заранее заданные интервалы времени между запуском программы и получением результата.

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


9. Независимость программирования от внешних устройств.
Принцип независимости программ от внешних устройств
Этот принцип реализуется сейчас в подавляющем большинстве ОС общего применения. Мы уже говорили о нем, рассматривая принципы организации ввода/ вывода. Пожалуй, впервые наиболее последовательно данный принцип был реализован в ОС UNIX. Реализован он и в большинстве современных ОС для ПК. Напомним, этот принцип заключается в том, что связь программ с конкретными устройствами производится не на уровне трансляции программы, а в период планирования ее исполнения. В результате перекомпиляция при работе программы с новым устройством, на котором располагаются данные, не требуется.
Принцип позволяет одинаково осуществлять операции управления внешними устройствами независимо от их конкретных физических характеристик. Например, программе, содержащей операции обработки последовательного набора данных, безразлично, на каком носителе эти данные будут располагаться. Смена носителя и данных, размещаемых на них (при неизменности структурных характеристик данных), не принесет каких-либо изменений в программу, если в системе реализован принцип независимости.


10. Интерактивный режим. Сеанс. Диалоговый режим.
Диалоговый режим - способ взаимодействия пользователя или оператора с ЭВМ, при котором происходит непосредственный и двухсторонний обмен информацией, командами или инструкциями между человеком и ЭВМ. Диалоговый режим подразумевает такую скорость обработки данных, которая не сказывается на технологии действий пользователя. Различают активные и пассивные диалоговые режимы.
Активный диалог

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

Пассивный диалог

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




11. Интерпретаторы.
Интерпрета́тор (языка программирования) — программа для интерпрета́ции, т.е. непосредственного исполнения программ (производства вычислений, предписываемых этими программами) из исходного кода на определённом языке.
Типы интерпретаторов

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


Достоинства

Бо́льшая независимость от платформы исполнения по сравнению с компилируемыми средами (при наличии совместимых или переносимых интерпретаторов на каждой из платформ), так как интерпретатор не создает машинного кода;

Упрощается построчная отладка программы;

Более совершенные и наглядные средства диагностики ошибок в программе.


Недостатки

Программы выполняются более медленно: декодирование элементов программы занимает больше времени, чем выполнение машинного кода;

Программа занимает больше места в памяти: кроме самой программы и ее данных память также отводится под частично декодированную форму, таблицу символов и сам интерпретатор;

Программа не может выполняться отдельно без интерпретатора;

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

  1   2   3   4   5   6


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница