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

Обновлено: 06.07.2024

С увеличением объёма вычислений появился первый счётный переносной инструмент - “Счёты”.
В начале 17 века возникла необходимость в сложных вычислениях. потребовались счётные устройства, способные выполнять большой объём вычислений с высокой точностью. В 1642 г. французский математик Паскаль сконструировал первую механическую счётную машину - “Паскалину”.
В 1830 г. английский учёный Бэбидж предложил идею первой программируемой вычислительной машины (“аналитическая машина”). Она должна была приводиться в действие силой пара, а программы кодировались на перфокарты. Реализовать эту идею не удалось, так как было не возможно сделать некоторые детали машины.
Первый реализовал идею перфокарт Холлерит. Он изобрёл машину для обработки результатов переписи населения. В своей машине он впервые применил электричество для расчётов.
В 1930 г. американский учёный Буш изобрел дифференциальный анализатор - первый в мире компьютер.
Большой толчок в развитии вычислительной техники дала вторая мировая война. Военным понадобился компьютер, которым стал “Марк-1” - первый в мире цифровой компьютер, изобретённый в 1944 г. профессором Айкнем. В нём использовалось сочетание электрических сигналов и механических приводов. Размеры: 15 X 2,5 м., 750000 деталей. Могла перемножить два 23-х разрядных числа за 4 с.
В 1946 г. группой инженеров по заказу военного ведомства США был создан первый электронный компьютер - “Эниак”. Быстродействие: 5000 операций сложения и 300 операций умножения в секунду. Размеры: 30 м. в длину, объём - 85 м3., вес - 30 тонн. Использовалось 18000 эл. ламп.
Первая машина с хранимой программой - ”Эдсак” - была создана в 1949 г., а в 1951 г. создали машину “Юнивак” - первый серийный компьютер с хранимой программой. В этой машине впервые была использована магнитная лента для записи и хранения информации.

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

ОПЕРАЦИОННАЯ СИСТЕМА (ОС) ЭВМ, - программа или комплекс программ, постоянно находящихся в памяти ЭВМ; организует общее управление устройствами машины и ее взаимодействие с пользователем. Обеспечивает запуск и работу всех остальных программ.
В частности, ОС выполняет: управление памятью, вводом-выводом, файловой системой, взаимодействием процессов; диспетчеризацию процессов; защиту и учет использования ресурсов. Часто она включает в себя значительную часть специализированных сервисных или вспомогательных программ.
Операционная система загружается непосредственно при включении компьютера, перестает работать только после его выключения. Она осуществляет диалог с оператором или пользователем и организует эффективное взаимодействие (интерфейс) других (в том числе прикладных) программ со всеми узлами ЭВМ. Операционные системы могут создаваться как для конкретных ЭВМ, так и для ЭВМ определенных типов или классов. В последнем случае соответствующие ОС называются стандартными. Например, MS DOS (Microsoft System Disk Operating System) корпорации Microsoft и PTS DOS компании Физтех-софт ориентированы на IBM-совместимые ПК; Mac OS фирмы Apple — на ПК Macintosh; ОС Unix фирмы Bell Labs — является стандартной для ЭВМ разных классов, выполняющих функции серверов и рабочих станций, но используется также на портативных ПК и больших стационарных ЭВМ.
Одним из свойств операционной системы и ЭВМ является многозадачность (multitasking, multiprogramming), при которой один процессор может обрабатывать несколько разных программ или разных частей одной программы одновременно. При этом все программы вместе удерживаются в оперативной памяти и каждая выполняется за определенный период времени. Например, одна программа может работать, пока другие ожидают включения периферийного устройства или сигнала (команды) оператора. Способность к многозадачности зависит в большей степени от операционной системы, чем от типа ЭВМ.
Многопользовательская система (система с коллективным доступом, система коллективного доступа; multiuser system, multiaccess system) позволяет нескольким пользователям одновременно иметь доступ к одной ЭВМ со своего терминала (локального или удаленного). Многопользовательский характер работы достигается благодаря режиму разделения времени, который заключается в быстром переключении ЭВМ между разными терминалами и программами и соответственно быстрой отработке команд каждого пользователя. При этом пользователи не замечают задержек исполнения команд. Примерами многопользовательских систем могут служить операционные системы Windows, Netware (созданная американской фирмой Novell для локальных информационных вычислительных систем), Unix.
REAL/32 — многопользовательская многозадачная операционная система реального времени. В этой системе каждый терминал, состоящий из монитора и клавиатуры, предоставляет пользователю возможности максимально простого ПК. Эта система выступает альтернативой локальным сетям, состоящим из множества персональных компьютеров.
Однопользовательская система (one user system) — вычислительная система или ее часть (например, операционная система), не обладающая свойствами многопользовательской. Примерами однопользовательских ОС являются MS DOS американской фирмы Microsoft и ОС/2, созданная совместно Microsoft и IBM.
Сетевая операционная система (Network Operating System, NOS) — операционная система, предназначенная для обеспечения работы вычислительной сети. Примерами сетевых операционных систем являются Windows NT, Windows 2000, Netware, Unix, Linux.

Сейчас используются 4 типа ОС:
• ОС-10 - для моделей ЕС-1010;
• МОС (малая) - для моделей ЕС-1021;
• ДОС ЕС (дисковая) - для всех других моделей ЕС ЭВМ в малой конфигурации;
• ОС ЕС - для тех же моделей, что и для ДОС ЕС, но в средней и расширенной конфигурации;
Структуру ОС можно разделить на несколько групп:
Программы начального запуска машины, первоначальный ввод информации в оперативную память, настройка ЭВМ.
Программы управления данными.
Программы управления задачами.
Обслуживающие и обрабатывающие программы.
Так же в состав ОС входят средства, которые снижают трудоёмкость подготовительного процесса при решении задач. Это система автоматизации программирования (САП). Она включает в себя такие компоненты, как:
1. Алгоритмические языки программирования (Ассемблер, Фортран и др.);
2. трансляторы;
3. интерпретирующие и компилирующие системы;
4. пакеты стандартных программ;
5. программы сервиса.
Значительной частью СПО является пакет прикладных программ (ППП). ППП - это комплекс программ, необходимых для решения определённой задачи. Они обязаны удовлетворять требования ОС, под управлением которых они работают.

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

3. Ядро операционной системы

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

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

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


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

  • Загрузка программ в оперативную память и их выполнение.

  • Стандартизованный доступ к периферийным устройствам ( устройства ввода-вывода ).

  • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти ).

  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск , оптические диски и др.), организованным в той или иной файловой системе .

  • Обеспечение пользовательского интерфейса .

  • Сохранение информации об ошибках системы.

  • Параллельное или псевдопараллельное выполнение задач ( многозадачность ).

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

  • Разграничение доступа различных процессов к ресурсам.

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

  • Взаимодействие между процессами : обмен данными, взаимная синхронизация.

  • Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.

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

  • Загрузчик

  • Ядро

  • Командный процессор (интерпретатор)

  • Драйверы устройств

  • Интерфейс

  • Встроенное программное обеспечение

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

6. UNIX, стандартизация операционных систем и POSIX

К концу 1960-х годов отраслью и научно-образовательным сообществом был создан целый ряд операционных систем, реализующих все или часть очерченных выше функций. К ним относятся Atlas (Манчестерский университет), CTTS и ITSS (Массачусетский технологический институт, MIT), THE (Эйндховенский технологический университет), RS4000 (Университет Орхуса) и др. (всего эксплуатировалось более сотни различных ОС).

Наиболее развитые операционные системы, такие как OS/360 (IBM), SCOPE (CDC (англ.)) и завершённый уже в 1970-х годах Multics (MIT и Bell Labs), предусматривали возможность исполнения на многопроцессорных компьютерах.

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

В конце 1970-х годов сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами TCP/IP. Их разработка стала известна под именем BSD (Berkeley Software Distribution).

Задачу разработать независимую (от авторских прав Bell Labs) реализацию той же архитектуры поставил и Ричард Столлман, основатель проекта GNU.

Благодаря конкурентности реализаций архитектура UNIX стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического — ISO/IEC 9945 [1] (POSIX).

Только системы, отвечающие спецификации Single UNIX Specification, имеют право носить имя UNIX. К таким системам относятся AIX, HP-UX, IRIX, Mac OS X, SCO OpenServer, Solaris, Tru64 и z/OS.

К UNIX-подобным относятся операционные системы, основанные на последней версии UNIX, выпущенной Bell Labs (System V), на разработках университета Беркли (FreeBSD, OpenBSD, NetBSD), на основе Solaris (OpenSolaris, BeleniX, Nexenta), а также Linux, разработанная в части утилит и библиотек проектом GNU и в части ядра — сообществом, возглавляемым Линусом Торвальдсом.

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

Самым заметным эффектом существования этого стандарта стало эффективное разворачивание Интернета в 1990-х годах.

7. Пост-UNIX-архитектуры

Операционные системы, созданные на базе или идеях UNIX, такие как всё семейство BSD и системы GNU/Linux, постепенно перенимают новые идеи из Bell Labs. Возможно, эти новые идеи ждёт большое будущее и признание ИТ-разработчиков.

Новые концепции были использованы Робом Пайком в Inferno .

На основе Plan 9 в Испании разрабатываются системы Off++ и Plan B , носящие экспериментальный характер.

К попыткам создать пост-UNIX-архитектуру можно также отнести разработку системы программирования и операционной среды Оберон в Швейцарской высшей технической школе (ETH Zurich) под руководством профессора Никлауса Вирта .

8. Поколения ЭВМ

8.1. Первое поколение

8.2. Второе поколение

8.3. Третье поколение

8.4. Четвертое поколение

9. Список литературы


    А.П.Пятибратов, А.С.Касаткин, Р.В.Можаров. “ЭВМ, МИНИ-ЭВМ и микропроцессорная техника в учебном процессе.2000г.”

Аннотация: Функции операционной системы. Структура операционной системы. Классификация операционных систем. Требования к операционным системам.

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

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

Для более полного понимания роли операционной системы рассмотрим составные компоненты любой вычислительной системы (рис.1.1).

Компоненты вычислительной системы

Все компоненты можно разделить на два больших класса – программы или программное обеспечение ( ПО , software ) и оборудование или аппаратное обеспечение ( hardware ). Программное обеспечение делится на прикладное, инструментальное и системное. Рассмотрим кратко каждый вид ПО .

Цель создания вычислительной системы – решение задач пользователя. Для решения определенного круга задач создается прикладная программа ( приложение , application ). Примерами прикладных программ являются текстовые редакторы и процессоры (Блокнот, Microsoft Word ), графические редакторы ( Paint , Microsoft Visio), электронные таблицы (Microsoft Excel ), системы управления базами данных (Microsoft Access, Microsoft SQL Server ), браузеры ( Internet Explorer) и т. п. Все множество прикладных программ называется прикладным программным обеспечением ( application software ).

Создается программное обеспечение при помощи разнообразных средств программирования (среды разработки, компиляторы, отладчики и т. д.), совокупность которых называется инструментальным программным обеспечением. Представителем инструментального ПО является среда разработки Microsoft Visual Studio .

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

Взаимодействие всех программ с операционной системой осуществляется при помощи системных вызовов ( system calls) – запросов программ на выполнение операционной системой необходимых действий. Набор системных вызовов образует API – Application Programming Interface ( интерфейс прикладного программирования).

Далее рассмотрим, какие функции должны выполнять современные операционные системы.

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

К основным функциям, выполняемым операционными системами, можно отнести:

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

Структура операционной системы

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

Современные процессоры имеют минимум два режима работы – привилегированный (supervisor mode) и пользовательский (user mode).

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

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

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

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

Термин "ядро" также используется в разных смыслах. Например, в Windows термин "ядро" (NTOS kernel) обозначает совокупность двух компонентов – исполнительной системы (executive layer) и собственно ядра (kernel layer) [12].

Существует два основных вида ядер – монолитные ядра (monolithic kernel) и микроядра (microkernel). В монолитном ядре реализуются все основные функции операционной системы, и оно является, по сути, единой программой, представляющей собой совокупность процедур [6]. В микроядре остается лишь минимум функций, который должен быть реализован в привилегированном режиме: планирование потоков, обработка прерываний, межпроцессное взаимодействие. Остальные функции операционной системы по управлению приложениями, памятью, безопасностью и пр. реализуются в виде отдельных модулей в пользовательском режиме.

Ядра, которые занимают промежуточные положение между монолитными и микроядрами, называют гибридными (hybrid kernel).

Примеры различных типов ядер:

  • монолитное ядро – MS-DOS, Linux, FreeBSD;
  • микроядро – Mach, Symbian, MINIX 3;
  • гибридное ядро – NetWare, BeOS, Syllable.

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

В состав операционной системы также входят:

  • системные библиотеки (system DLL – Dynamic Link Library, динамически подключаемая библиотека), преобразующие системные вызовы приложений в системные вызовы ядра;
  • пользовательские оболочки (shell), предоставляющие пользователю интерфейс – удобный способ работы с операционной системой.

Пользовательские оболочки реализуют один из двух основных видов пользовательского интерфейса:

  • текстовый интерфейс (Text User Interface, TUI), другие названия – консольный интерфейс (Console User Interface, CUI), интерфейс командной строки (Command Line Interface, CLI);
  • графический интерфейс (Graphic User Interface, GUI).

Пример реализации текстового интерфейса в Windows – интерпретатор командной строки cmd.exe; пример графического интерфейса – Проводник Windows (explorer.exe).

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

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

  1. По способу организации вычислений:
    • системы пакетной обработки (batch processing operating systems) – целью является выполнение максимального количества вычислительных задач за единицу времени; при этом из нескольких задач формируется пакет, который обрабатывается системой;
    • системы разделения времени (time-sharing operating systems) – целью является возможность одновременного использования одного компьютера несколькими пользователями; реализуется посредством поочередного предоставления каждому пользователю интервала процессорного времени;
    • системы реального времени (real-time operating systems) – целью является выполнение каждой задачи за строго определённый для данной задачи интервал времени.
  • системы с монолитным ядром (monolithic operating systems);
  • системы с микроядром (microkernel operating systems);
  • системы с гибридным ядром (hybrid operating systems).
  • однозадачные (single-tasking operating systems);
  • многозадачные (multitasking operating systems).
  • однопользовательские (single-user operating systems);
  • многопользовательские (multi-user operating systems).
  • однопроцессорные (uniprocessor operating systems);
  • многопроцессорные (multiprocessor operating systems).
  • локальные (local operating systems) – автономные системы, не предназначенные для работы в компьютерной сети;
  • сетевые (network operating systems) – системы, имеющие компоненты, позволяющие работать с компьютерными сетями.
  • серверные (server operating systems) – операционные системы, предоставляющие доступ к ресурсам сети и управляющие сетевой инфраструктурой;
  • клиентские (client operating systems) – операционные системы, которые могут получать доступ к ресурсам сети.
  • открытые (open-source operating systems) – операционные системы с открытым исходным кодом, доступным для изучения и изменения;
  • проприетарные (proprietary operating systems) – операционные системы, которые имеют конкретного правообладателя; обычно поставляются с закрытым исходным кодом.
  • операционные системы мэйнфреймов – больших компьютеров (mainframe operating systems);
  • операционные системы серверов (server operating systems);
  • операционные системы персональных компьютеров (personal computer operating systems);
  • операционные системы мобильных устройств (mobile operating systems);
  • встроенные операционные системы (embedded operating systems);
  • операционные системы маршрутизаторов (router operating systems).

Требования к операционным системам

Основное требование, предъявляемое к современным операционным системам – выполнение функций, перечисленных выше в параграфе "Функции операционных систем". Кроме этого очевидного требования существуют другие, часто не менее важные [3]:

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

Резюме

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

В следующей лекции будет представлен обзор операционных систем Microsoft Windows.

Особое место среди системных программ отведено операционным системам.

Операционная система (ОС)- это программа, запускающаяся сразу.

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

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

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

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

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

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

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

В зависимости от алгоритма управления процессором, ОС делятся на:

— Однозадачные и многозадачные

— Однопользовательские и многопользовательские

— Однопроцессорные и многопроцессорные системы

— Локальные и сетевые.

По числу одновременно выполняемых задач операционные системы делятся на два класса:

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

— Многозадачные (OS/2, Unix, Windows)

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

В зависимости от областей использования многозадачные ОС подразделяются на три типа:

— Системы пакетной обработки (ОС ЕС)

— Системы с разделением времени (Unix, Linux, Windows)

— Системы реального времени (RT11)


Рисунок 1. Скриншот рабочего стола Linux

Среди ОС, хотелось бы остановиться на рассмотрении ОС для решения задач реального времени, для организации работы вычислительных сетей, ОС основанных на графическом интерфейсе.

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

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

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

Операционные системы, основанные на графическом интерфейсе. Операционная системы семейства Windows.

Оболочка Windows включает в себя множество компонентов и обеспечивает пользователям различной квалификации комфортные условия работы.

Работа с персональной ЭВМ мало отличалась от работы, например, на мини-ЭВМ: необходимо было хорошо знать ОС.

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

Windows представляет собой графическую оболочку. От пользователя не требуется ввод директив с клавиатуры в виде текстовых строк. Необходимо только внимательно смотреть на экран и выбирать из предлагаемого набора требуемую операцию с помощью манипулятора мышь. На выбранном объекте необходимо зафиксировать курсор кнопкой мыши — и операция выполняется. С помощью того же манипулятора можно перемещать пиктограммы и окна по экрану, менять их размер, открывать и закрывать их — и все это при минимальном использовании клавиатуры для ввода каких бы то ни было директив. Кроме того, для любителей традиционного интерфейса DOS реализована возможность выхода на этот уровень. В оболочке Windows реализован принцип WYSIWYG (What you see is what you get = То, что вы видите, вы и получаете), до сих пор бывший привилегией небольшого числа программ.

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

У меня была возможность работать с ОС Microsoft от Windows 2000, до версии Windows 8, по-моему мнению наиболее удачной является ОС Windows 7, обладающая более совершенной защитой, чем Windows XP, более продуманный интерфейс и много разных других мелочей, делают эту ОС более привлекательной. Microsoft выпустили обновление для Windows 8, Windows 8.1, в которой решили немного вернуться к привычному пользователям рабочему столу.

Существуют и ОС для смартфонов: Android; iOS; Windows Phone. ОС Android на данный момент является самой популярной и распространенной. Если на рынке десктопных ОС главная тема, как и прежде, – Windows 10, то среди мобильных ОС по статистике 2016 года от компаний StatCounter и Net Applications, таковой могла бы стать iOS. С одной стороны, система получила крупнейшее обновление, с другой – новое поколение i-гаджетов в виде iPhone 7 и 7 Plus.

С увеличением объёма вычислений появился первый счётный переносной инструмент - “Счёты”.
В начале 17 века возникла необходимость в сложных вычислениях. потребовались счётные устройства, способные выполнять большой объём вычислений с высокой точностью. В 1642 г. французский математик Паскаль сконструировал первую механическую счётную машину - “Паскалину”.
В 1830 г. английский учёный Бэбидж предложил идею первой программируемой вычислительной машины (“аналитическая машина”). Она должна была приводиться в действие силой пара, а программы кодировались на перфокарты. Реализовать эту идею не удалось, так как было не возможно сделать некоторые детали машины.
Первый реализовал идею перфокарт Холлерит. Он изобрёл машину для обработки результатов переписи населения. В своей машине он впервые применил электричество для расчётов.
В 1930 г. американский учёный Буш изобрел дифференциальный анализатор - первый в мире компьютер.
Большой толчок в развитии вычислительной техники дала вторая мировая война. Военным понадобился компьютер, которым стал “Марк-1” - первый в мире цифровой компьютер, изобретённый в 1944 г. профессором Айкнем. В нём использовалось сочетание электрических сигналов и механических приводов. Размеры: 15 X 2,5 м., 750000 деталей. Могла перемножить два 23-х разрядных числа за 4 с.
В 1946 г. группой инженеров по заказу военного ведомства США был создан первый электронный компьютер - “Эниак”. Быстродействие: 5000 операций сложения и 300 операций умножения в секунду. Размеры: 30 м. в длину, объём - 85 м3., вес - 30 тонн. Использовалось 18000 эл. ламп.
Первая машина с хранимой программой - ”Эдсак” - была создана в 1949 г., а в 1951 г. создали машину “Юнивак” - первый серийный компьютер с хранимой программой. В этой машине впервые была использована магнитная лента для записи и хранения информации.

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

ОПЕРАЦИОННАЯ СИСТЕМА (ОС) ЭВМ, - программа или комплекс программ, постоянно находящихся в памяти ЭВМ; организует общее управление устройствами машины и ее взаимодействие с пользователем. Обеспечивает запуск и работу всех остальных программ.
В частности, ОС выполняет: управление памятью, вводом-выводом, файловой системой, взаимодействием процессов; диспетчеризацию процессов; защиту и учет использования ресурсов. Часто она включает в себя значительную часть специализированных сервисных или вспомогательных программ.
Операционная система загружается непосредственно при включении компьютера, перестает работать только после его выключения. Она осуществляет диалог с оператором или пользователем и организует эффективное взаимодействие (интерфейс) других (в том числе прикладных) программ со всеми узлами ЭВМ. Операционные системы могут создаваться как для конкретных ЭВМ, так и для ЭВМ определенных типов или классов. В последнем случае соответствующие ОС называются стандартными. Например, MS DOS (Microsoft System Disk Operating System) корпорации Microsoft и PTS DOS компании Физтех-софт ориентированы на IBM-совместимые ПК; Mac OS фирмы Apple — на ПК Macintosh; ОС Unix фирмы Bell Labs — является стандартной для ЭВМ разных классов, выполняющих функции серверов и рабочих станций, но используется также на портативных ПК и больших стационарных ЭВМ.
Одним из свойств операционной системы и ЭВМ является многозадачность (multitasking, multiprogramming), при которой один процессор может обрабатывать несколько разных программ или разных частей одной программы одновременно. При этом все программы вместе удерживаются в оперативной памяти и каждая выполняется за определенный период времени. Например, одна программа может работать, пока другие ожидают включения периферийного устройства или сигнала (команды) оператора. Способность к многозадачности зависит в большей степени от операционной системы, чем от типа ЭВМ.
Многопользовательская система (система с коллективным доступом, система коллективного доступа; multiuser system, multiaccess system) позволяет нескольким пользователям одновременно иметь доступ к одной ЭВМ со своего терминала (локального или удаленного). Многопользовательский характер работы достигается благодаря режиму разделения времени, который заключается в быстром переключении ЭВМ между разными терминалами и программами и соответственно быстрой отработке команд каждого пользователя. При этом пользователи не замечают задержек исполнения команд. Примерами многопользовательских систем могут служить операционные системы Windows, Netware (созданная американской фирмой Novell для локальных информационных вычислительных систем), Unix.
REAL/32 — многопользовательская многозадачная операционная система реального времени. В этой системе каждый терминал, состоящий из монитора и клавиатуры, предоставляет пользователю возможности максимально простого ПК. Эта система выступает альтернативой локальным сетям, состоящим из множества персональных компьютеров.
Однопользовательская система (one user system) — вычислительная система или ее часть (например, операционная система), не обладающая свойствами многопользовательской. Примерами однопользовательских ОС являются MS DOS американской фирмы Microsoft и ОС/2, созданная совместно Microsoft и IBM.
Сетевая операционная система (Network Operating System, NOS) — операционная система, предназначенная для обеспечения работы вычислительной сети. Примерами сетевых операционных систем являются Windows NT, Windows 2000, Netware, Unix, Linux.

Сейчас используются 4 типа ОС:
• ОС-10 - для моделей ЕС-1010;
• МОС (малая) - для моделей ЕС-1021;
• ДОС ЕС (дисковая) - для всех других моделей ЕС ЭВМ в малой конфигурации;
• ОС ЕС - для тех же моделей, что и для ДОС ЕС, но в средней и расширенной конфигурации;
Структуру ОС можно разделить на несколько групп:
Программы начального запуска машины, первоначальный ввод информации в оперативную память, настройка ЭВМ.
Программы управления данными.
Программы управления задачами.
Обслуживающие и обрабатывающие программы.
Так же в состав ОС входят средства, которые снижают трудоёмкость подготовительного процесса при решении задач. Это система автоматизации программирования (САП). Она включает в себя такие компоненты, как:
1. Алгоритмические языки программирования (Ассемблер, Фортран и др.);
2. трансляторы;
3. интерпретирующие и компилирующие системы;
4. пакеты стандартных программ;
5. программы сервиса.
Значительной частью СПО является пакет прикладных программ (ППП). ППП - это комплекс программ, необходимых для решения определённой задачи. Они обязаны удовлетворять требования ОС, под управлением которых они работают.

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

3. Ядро операционной системы

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

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

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


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

  • Загрузка программ в оперативную память и их выполнение.

  • Стандартизованный доступ к периферийным устройствам ( устройства ввода-вывода ).

  • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти ).

  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск , оптические диски и др.), организованным в той или иной файловой системе .

  • Обеспечение пользовательского интерфейса .

  • Сохранение информации об ошибках системы.

  • Параллельное или псевдопараллельное выполнение задач ( многозадачность ).

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

  • Разграничение доступа различных процессов к ресурсам.

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

  • Взаимодействие между процессами : обмен данными, взаимная синхронизация.

  • Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.

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

  • Загрузчик

  • Ядро

  • Командный процессор (интерпретатор)

  • Драйверы устройств

  • Интерфейс

  • Встроенное программное обеспечение

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

6. UNIX, стандартизация операционных систем и POSIX

К концу 1960-х годов отраслью и научно-образовательным сообществом был создан целый ряд операционных систем, реализующих все или часть очерченных выше функций. К ним относятся Atlas (Манчестерский университет), CTTS и ITSS (Массачусетский технологический институт, MIT), THE (Эйндховенский технологический университет), RS4000 (Университет Орхуса) и др. (всего эксплуатировалось более сотни различных ОС).

Наиболее развитые операционные системы, такие как OS/360 (IBM), SCOPE (CDC (англ.)) и завершённый уже в 1970-х годах Multics (MIT и Bell Labs), предусматривали возможность исполнения на многопроцессорных компьютерах.

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

В конце 1970-х годов сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами TCP/IP. Их разработка стала известна под именем BSD (Berkeley Software Distribution).

Задачу разработать независимую (от авторских прав Bell Labs) реализацию той же архитектуры поставил и Ричард Столлман, основатель проекта GNU.

Благодаря конкурентности реализаций архитектура UNIX стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического — ISO/IEC 9945 [1] (POSIX).

Только системы, отвечающие спецификации Single UNIX Specification, имеют право носить имя UNIX. К таким системам относятся AIX, HP-UX, IRIX, Mac OS X, SCO OpenServer, Solaris, Tru64 и z/OS.

К UNIX-подобным относятся операционные системы, основанные на последней версии UNIX, выпущенной Bell Labs (System V), на разработках университета Беркли (FreeBSD, OpenBSD, NetBSD), на основе Solaris (OpenSolaris, BeleniX, Nexenta), а также Linux, разработанная в части утилит и библиотек проектом GNU и в части ядра — сообществом, возглавляемым Линусом Торвальдсом.

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

Самым заметным эффектом существования этого стандарта стало эффективное разворачивание Интернета в 1990-х годах.

7. Пост-UNIX-архитектуры

Операционные системы, созданные на базе или идеях UNIX, такие как всё семейство BSD и системы GNU/Linux, постепенно перенимают новые идеи из Bell Labs. Возможно, эти новые идеи ждёт большое будущее и признание ИТ-разработчиков.

Новые концепции были использованы Робом Пайком в Inferno .

На основе Plan 9 в Испании разрабатываются системы Off++ и Plan B , носящие экспериментальный характер.

К попыткам создать пост-UNIX-архитектуру можно также отнести разработку системы программирования и операционной среды Оберон в Швейцарской высшей технической школе (ETH Zurich) под руководством профессора Никлауса Вирта .

8. Поколения ЭВМ

8.1. Первое поколение

8.2. Второе поколение

8.3. Третье поколение

8.4. Четвертое поколение

9. Список литературы


    А.П.Пятибратов, А.С.Касаткин, Р.В.Можаров. “ЭВМ, МИНИ-ЭВМ и микропроцессорная техника в учебном процессе.2000г.”

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

Рассмотрим наиболее фундаментальную абстракцию, которую ОС предоставляет пользователям: процесс. Определение процесса довольно-таки просто — это работающая программа. Программа сама по себе является безжизненной вещью, располагающейся на диске — это набор инструкций и возможно каких-то статических данных, ожидающих момента запуска. Именно ОС берет эти байты и запускает их, преобразую программу во что-то полезное.
Чаще всего пользователи хотят запускать более одной программы одновременно, например вы можете запустить на вашем ноутбуке браузер, игру, медиаплеер, текстовый редактор и тому подобное. Фактически типичная система может запускать десятки и сотни процессов одновременно. Этот факт делает систему более простой в использовании, вам никогда не приходится беспокоиться о том, свободен ли CPU, вы просто запускаете программы.

Отсюда вытекает проблема: как обеспечить иллюзию множества CPU? Как ОС создать иллюзию практически бесконечного количества CPU, даже если у вас всего один физический CPU?

ОС создает эту иллюзию посредством виртуализации CPU. Запуская один процесс, затем останавливая его, запуская другой процесс и так далее, ОС может поддерживать иллюзию того, что существует множество виртуальных CPU, хотя фактически это будет один или несколько физических процессоров. Такая техника называется разделение ресурсов CPU по времени. Эта техника позволяет пользователям запускать столько одновременных процессов, сколько они пожелают. Ценою такого решения является производительность – поскольку если CPU делят несколько процессов, каждый процесс будет обрабатываться медленнее.
Для воплощения виртуализации CPU, а особенно для того чтобы делать это хорошо, ОС нуждается и в низкоуровневой и в высокоуровневой поддержке. Низкоуровневая поддержка называется механизмами — это низкоуровневые методы или протоколы, которые реализуют нужную часть функционала. Пример такого функционала — контекстное переключение, которое дает ОС возможность останавливать одну программу и запускать на процессоре другую программу. Такое разделение по времени реализовано во всех современных ОС.
На вершине этих механизмов располагается некоторая логика, заложенная в ОС, в форме “политик”. Политика — это некоторый алгоритм принятия решения операционной системой. Такие политики, например, решают, какую программу надо запускать (из списка команд) в первую очередь. Так, например, данную задачу решит политика, называющаяся планировщик (scheduling policy) и при выборе решения будет руководствоваться такими данными как: история запуска (какая программа была запущена дольше всех за последнюю минут), какую нагрузку осуществляет данный процесс (какие типы программ были запущены), метрики производительности (оптимизирована ли система для интерактивного взаимодействия или для пропускной способности) и так далее.

Абстракция: процесс

Абстракция работающей программы, выполняемая операционной системой это то, что мы называем процесс. Как уже было сказано ранее процесс – это просто работающая программа, в любой моментальный промежуток времени. Программа с помощью которой мы можем получить суммарную информацию с различных ресурсов системы, и к которым обращается или которые эта программа затрагивает в процессе своего выполнения.
Для понимания составляющих процесса нужно понимать состояния системы: что программа может считывать или изменять во время своей работы. В любой момент времени нужно понимать, какие элементы системы важны для выполнения программы.
Одним из очевидных элементов состояния системы, которые включает в себя процесс — это память. Инструкции располагаются в памяти. Данные, которые программа читает или пишет также, располагаются в памяти. Таким образом, память, которую процесс может адресовать (так называемое адресное пространство) является частью процесса.
Также частью состояния системы являются регистры. Множество инструкций направлено на то, чтобы изменить значение регистров или прочитать их значение и таким образом регистры тоже становятся важной частью работы процесса.
Следует отметить, что состояние машины формируется также из некоторых специальных регистров. Например, IP — instruction pointer — указатель на инструкцию, которую программа исполняет в текущий момент. Еще есть stack pointer и связанный с ним frame pointer, которые используются для управления: параметрами функций, локальными переменными и адресами возврата.
Наконец, программы часто обращаются к ПЗУ (постоянному запоминающему устройству). Такая информация о “I/O” (вводе-выводе) должна включать в себя список файлов, открытых процессом в данный момент.

Process API

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

● Create (создание): В ОС должен входить какой либо метод, позволяющий создавать новый процессы. Когда вы вводите команду в терминал или запускаете приложение через двойной клик по иконке, посылается обращение к ОС для создания нового процесса и последующего запуска указанной программы.
● Удаление: Раз есть интерфейс для создания процесса, ОС также должна предоставлять возможность для принудительного удаления процесса. Большинство программ естественно будут запущены и завершены сами по себе по мере их выполнения. В противном случае пользователь хотел бы иметь возможность убить их и таким образом интерфейс для остановки процесса будет не лишним.
● Wait (ожидание): Иногда полезно дождаться завершения процесса, поэтому обеспечиваются некоторые интерфейсы предоставляющие возможностью ожидания.
● Misc Control (разное управление): Кроме убийства и ожидания процесса еще существуют другие разнообразные контролирующие методы. Например большинство ОС предоставляют возможность заморозки процесса (остановка его выполнения на некоторый период) и последующее возобновление (продолжение исполнения)
● Status (состояние): Существуют различные интерфейсы для получения некоторой информации он статусе процесса, такие как продолжительность его работы или в каком состоянии он сейчас находится.

image

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

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

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

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

Операционная система может также выделять некоторое количество памяти под кучу (heap) программы. Куча используется программами для явно запрашиваемых динамически выделенных данных. Программы запрашивают это пространство, вызывая функцию malloc() и явно очищает, вызывая функцию free(). Куча нужна для таких структур данных как: связанные листы, таблицы хэшей, деревья и другие. По началу под кучу выделяется маленькое количество памяти, но со временем в процессе работы программы куча может запросить большее количество памяти, через библиотечный API вызов malloc(). Операционная система вовлечена в процесс выделения большего количества памяти для того, чтобы помочь в удовлетворении этих вызовов.

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

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

Состояние процесса

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

image

Представить себе эти состояния можно в виде графа. Как мы можем видеть на картинке, состояние процесса может меняться между RUNNING и READY на усмотрение ОС. Когда состояние процесса меняется с READY, на RUNNING это означает, что процесс был запланирован. В обратную сторону — снят с планировки. В момент, когда процесс становится BLOCKED, например, инициализирую операцию IO, ОС будет держать его в этом состоянии до наступления некоторого события, например завершение IO. в этот момент переход в состояние READY и возможно моментально в состояние RUNNING, если так решит ОС.
Давайте взглянем на пример того, как два процесса проходят через эти состояния. Для начала представим, что оба процесса запущены, и каждый использует только CPU. В этом случае, их состояния будут выглядеть следующим образом.

image

В следующем примере первый процесс через некоторое время работы запрашивает IO и переходит в состояние BLOCKED, предоставляя другому процессу возможность запуска (РИС 1.4). ОС видит, что процесс 0 не использует CPU и запускает процесс 1. Во время выполнения процесса 1 — IO завершается и статус процесса 0 меняется на READY. Наконец процесс 1 завершился, а по его окончание процесс 0 запускается, исполняется и заканчивает свою работу.

image

Структура данных

ОС сама является программой, и также как и любая другая программа имеет некоторые ключевые структуры данных, которые отслеживают разнообразные релевантные куски информации. Для отслеживания состояния каждого процесса в ОС будет поддерживаться некоторый process list для всех процессов в состоянии READY и некоторую дополнительную информацию для отслеживания процессов, которые выполняются в текущий момент. Также, ОС должна отслеживать и заблокированные процессы. После завершения IO, ОС обязана пробудить нужный процесс и перевести его в состояние готовности к запуску.

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

Кроме состояний ready, blocked, running существуют еще некоторые другие состояния. Иногда в момент создания процесс может иметь состояние INIT. Наконец процесс может быть помещен состояние FINAL, когда он уже завершился, но информация о нем еще не вычищена. В UNIX системах такое состояние называется процесс-зомби. Это состояние полезно для случаев когда родительский процесс хочет узнать код возврата потомка, например, обычно 0 сигнализирует об успешном завершении, а 1 об ошибочном, однако программисты могут делать дополнительные коды вывода, сигнализируя о разных проблемах. При завершении процесс-родитель делает последний системный вызов, например wait(), чтобы дождаться завершения работы процесса-потомка и просигнализировать ОС о том, что можно очистить любые данные, связанные с завершенным процессом.


Ключевые моменты лекции:


● Процесс — главная абстракция работающей программы в ОС. В любой момент времени процесс может быть описан по его состоянию: содержимое памяти в его адресном пространстве, содержимое регистров процессора, включая instruction pointer и stack pointer также информацией о IO, например открытыми файлами, которые считываются или записываются.
● Process API состоит из вызовов, которые программы могут делать в отношении процессов. Обычно это вызовы создания, удаления или другие.
● Процесс находится в одном из множества состояний, включая running, ready, blocked. Различные события, такие как планировка, исключение из планировки или ожидания могут переводить состояние процесса из одного в другое.
● Process list содержит информацию обо всех процессах в системе. Каждая запись в ней называется process control block, которая в реальности является структурой, которая содержит всю необходимую информацию о конкретном процессе.

Читайте также: