Что такое операционная система?
Грузим

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

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

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

Доминирующей операционной системой для настольных ПК является Microsoft Windows с долей рынка около 76,45%. mac OS от Apple Inc. занимает второе место (17,72%), а разновидности Linux в совокупности занимают третье место (1,73%). В мобильном секторе (включая смартфоны и планшеты) доля Android вырастет до 72% в 2020 году. Согласно данным за третий квартал 2016 года, доля Android на смартфонах преобладает - 87,5 процента с также темпом роста 10,3 процента в год, за которым следует iOS от Apple с 12,1 процента с ежегодным уменьшением доли рынка на 5,2 процента, в то время как доля других операционных систем до всего 0,3 процента. Дистрибутивы Linux доминируют в серверном и суперкомпьютерном секторах. Для многих приложений существуют другие специализированные классы операционных систем, такие как встроенные системы и системы реального времени.

Содержание

  1. История
  2. Функции операционных систем
    1. Пакетный режим
    2. Разделение времени и многозадачность
    3. Разделение полномочий
    4. Масштаб реального времени
  3. Понятие
  4. Ядро
История

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

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

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

Основные функции:
  1. Исполнение запросов программ (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.)
  2. Загрузка программ в оперативную память и их выполнение
  3. Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода)
  4. Управление оперативной памятью (распределение между процессами, организация виртуальной памяти)
  5. Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе
  6. Обеспечение пользовательского интерфейса
  7. Сохранение информации об ошибках системы
Дополнительные функции:
  1. Параллельное или псевдопараллельное выполнение задач (многозадачность)
  2. Эффективное распределение ресурсов вычислительной системы между процессами
  3. Разграничение доступа различных процессов к ресурсам
  4. Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам
  5. Взаимодействие между процессами: обмен данными, взаимная синхронизация.
  6. Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений
  7. Многопользовательский режим работы и разграничение прав доступа
Пакетный режим

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

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

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

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

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

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

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

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

Масштаб реального времени

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

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

Понятие
Грузим

Экран первой операционной системы

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

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

Операционные системы нужны:
  1. Если нужен универсальный механизм сохранения данных
  2. Для предоставления системным библиотекам часто используемых подпрограмм.
  3. Для распределения полномочий
  4. Необходима возможность имитации «одновременного» исполнения нескольких программ на одном компьютере
  5. Для управления процессами выполнения отдельных программ

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

  1. Использующие файловые системы (с универсальным механизмом доступа к данным)
  2. Многопользовательские (с разделением полномочий)
  3. Многозадачные (с разделением времени)

Многозадачность и распределение полномочий требуют определённой иерархии привилегий компонентов в самой операционной системе. В составе операционной системы различают три группы компонентов:

  1. Ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевая подсистема, файловая система
  2. Системные библиотеки
  3. Оболочка с утилитами

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

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

Ядро

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

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

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

Объекты ядра ОС:
  1. Процессы
  2. Файлы
  3. События
  4. Потоки
  5. Семафоры
  6. Мьютексы
  7. Каналы
  8. Файлы, проецируемые в память