Как работают операционные системы

Carder

Professional
Messages
2,619
Reputation
7
Reaction score
1,653
Points
113
operating-system-1.jpg

Стив Баллмер, генеральный директор корпорации Microsoft, наблюдает, как покупатель демонстрирует операционную систему Windows Vista. Смотрите больше компьютерных картинок.

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

Большинство настольных или портативных компьютеров поставляются с предустановленной Microsoft Windows . Компьютеры Macintosh поставляются с предустановленной Mac OS X. Многие корпоративные серверы используют операционные системы Linux или UNIX. Операционная система (ОС) - это первое, что загружается на компьютер - без операционной системы компьютер бесполезен.

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

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

Что такое операционная система?​

Не на всех компьютерах есть операционные системы. Например, компьютеру, который управляет микроволновой печью на кухне, не нужна операционная система. У него есть один набор задач для выполнения, очень простой ожидаемый ввод (пронумерованная клавиатура и несколько предварительно настроенных кнопок) и простое, никогда не меняющееся оборудование для управления. Для такого компьютера, как этот, операционная система была бы ненужным багажом, значительно увеличивая затраты на разработку и производство и добавляя сложности там, где ничего не требуется. Вместо этого компьютер в микроволновой печи просто все время выполняет одну зашитую программу.
Для других устройств операционная система создает возможность:
  • служат различным целям
  • взаимодействовать с пользователями более сложными способами
  • идти в ногу с потребностями, которые меняются со временем
На всех настольных компьютерах установлены операционные системы. Наиболее распространены семейство операционных систем Windows, разработанное Microsoft, операционные системы Macintosh, разработанные Apple, и семейство операционных систем UNIX (которые были разработаны отдельными людьми, корпорациями и сотрудниками). Существуют сотни других операционных систем, доступных для специальных приложений, в том числе для мэйнфреймов, робототехники, производства, систем управления в реальном времени и так далее.
В любом устройстве с операционной системой обычно есть способ внести изменения в работу устройства. Это далеко не счастливая случайность; Одна из причин, по которой операционные системы создаются из переносимого кода, а не из постоянных физических схем, заключается в том, что их можно изменять или модифицировать без необходимости отбрасывать все устройство.
Для пользователя настольного компьютера это означает, что вы можете добавить новое обновление безопасности, системное исправление, новое приложение или даже совершенно новую операционную систему, а не уничтожать свой компьютер и начинать заново с новой, когда вам нужно внести изменения. До тех пор, пока вы понимаете, как работает операционная система и как к ней добраться, во многих случаях вы можете изменить некоторые способы ее поведения. То же самое и с вашим телефоном.
Что именно она может делать независимо от того, на каком устройстве работает операционная система?

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

operating-system-architecture.gif

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

На простейшем уровне операционная система выполняет две функции:
  1. Он управляет аппаратными и программными ресурсами системы. На настольном компьютере эти ресурсы включают в себя такие вещи, как процессор, память, дисковое пространство и многое другое (на сотовом телефоне они включают клавиатуру, экран, адресную книгу, телефонный номеронабиратель, аккумулятор и сетевое соединение).
  2. Он предоставляет приложениям стабильный и последовательный способ работы с оборудованием без необходимости знать все детали оборудования.
Первая задача, управление аппаратными и программными ресурсами, очень важна, поскольку различные программы и методы ввода конкурируют за внимание центрального процессора (ЦП) и требуют для своих нужд памяти, хранилища и пропускной способности ввода-вывода (ввода-вывода). собственные цели. В этом качестве операционная система играет роль хорошего родителя, следя за тем, чтобы каждое приложение получало необходимые ресурсы, при этом хорошо взаимодействуя со всеми другими приложениями, а также поддерживая ограниченные возможности системы к лучшему из всех возможных. пользователи и приложения.
Вторая задача - обеспечение согласованного интерфейса приложения - особенно важна, если операционная система будет использоваться на нескольких компьютерах определенного типа или если оборудование, составляющее компьютер, когда-либо может быть изменено. Согласованный интерфейс прикладных программ (API) позволяет разработчику программного обеспечения написать приложение на одном компьютере и иметь высокий уровень уверенности в том, что оно будет работать на другом компьютере того же типа, даже если объем памяти или объем хранилища разные на двух машинах.
Даже если конкретный компьютер уникален, операционная система может гарантировать, что приложения продолжат работу при обновлении оборудования и обновлении. Это потому, что операционная система, а не приложение, отвечает за управление оборудованием и распределение его ресурсов. Одна из проблем, с которыми сталкиваются разработчики, - поддерживать гибкость своих операционных систем, позволяющую запускать оборудование тысяч производителей компьютерного оборудования. Сегодняшние системы могут вместить тысячи различных принтеров, дисководов и специальных периферийных устройств в любой возможной комбинации.

Типы операционных систем​

operating-system-xscreen.jpg

Снимок экрана Mac OS X Panther.

В широком семействе операционных систем обычно есть четыре типа, разделенных на категории в зависимости от типов компьютеров, которыми они управляют, и типа поддерживаемых ими приложений. Категории:
  • Операционная система реального времени (RTOS) - Операционные системы реального времени используются для управления оборудованием, научными приборами и промышленными системами. RTOS обычно имеет очень мало возможностей пользовательского интерфейса и не имеет служебных программ для конечного пользователя, поскольку при поставке для использования система будет «запечатанным ящиком». Очень важная часть ОСРВ - это управление ресурсами компьютера, чтобы конкретная операция выполнялась в одно и то же время каждый раз, когда она происходит. В сложной машине более быстрое перемещение детали только потому, что доступны системные ресурсы, может быть столь же катастрофическим, как если бы она вообще не двигалась из-за занятости системы.
  • Однопользовательская, единая задача - как следует из названия, эта операционная система предназначена для управления компьютером, чтобы один пользователь мог эффективно выполнять одно задание одновременно. Palm OS для карманных компьютеров Palm - хороший пример современной однопользовательской, однозадачной операционной системы.
  • Однопользовательская, многозадачная - это тип операционной системы, которую сегодня большинство людей используют на своих настольных и портативных компьютерах. Платформы Microsoft Windows и MacOS от Apple являются примерами операционных систем, которые позволяют одному пользователю одновременно работать с несколькими программами. Например, пользователь Windows вполне может написать заметку в текстовом процессоре при загрузке файла из Интернета при печати текста сообщения электронной почты.
  • Многопользовательская - многопользовательская операционная система позволяет множеству разных пользователей одновременно использовать ресурсы компьютера. Операционная система должна гарантировать, что требования различных пользователей сбалансированы, и что каждая из программ, которые они используют, имеет достаточные и отдельные ресурсы, чтобы проблема с одним пользователем не затрагивала все сообщество пользователей. Unix, VMS и операционные системы для мэйнфреймов, такие как MVS, являются примерами многопользовательских операционных систем.
Важно различать многопользовательские операционные системы и однопользовательские операционные системы, поддерживающие работу в сети. Windows 2000 и Novell Netware могут поддерживать сотни или тысячи сетевых пользователей, но сами операционные системы не являются настоящими многопользовательскими операционными системами. Системный администратор является единственным «пользователь» для Windows 2000 или Netware. Сетевая поддержка и все входы удаленных пользователей, которые обеспечивает сеть, в общем плане операционной системы представляют собой программу, запускаемую пользователем с правами администратора.
Имея в виду различные типы операционных систем, пора взглянуть на основные функции, предоставляемые операционной системой.

Компьютерные операционные системы​

operating-system-3.jpg

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

Когда вы включаете питание компьютера, первая запускаемая программа обычно представляет собой набор инструкций, хранящихся в постоянной памяти (ПЗУ) компьютера. Этот код проверяет оборудование системы, чтобы убедиться, что все работает правильно. Этот самотестирование при включении (POST) проверяет ЦП, память и базовую систему ввода-вывода (BIOS) на наличие ошибок и сохраняет результат в специальной области памяти. После успешного завершения POST программное обеспечение, загруженное в ПЗУ (иногда называемое BIOS или микропрограммой ), начнет активировать дисковые накопители компьютера. На большинстве современных компьютеров, когда компьютер активирует жесткий диск, он находит первую часть операционной системы: загрузчик начальной загрузки.
Загрузчик начальной загрузки - это небольшая программа, которая выполняет единственную функцию: загружает операционную систему в память и позволяет ей начать работу. В самой простой форме загрузчик начальной загрузки устанавливает небольшие программы драйверов, которые взаимодействуют с различными аппаратными подсистемами компьютера и управляют ими. Он устанавливает разделы памяти, которые содержат операционную систему, пользовательскую информацию и приложения. Он устанавливает структуры данных, которые будут содержать мириады сигналов, флагов и семафоров, которые используются для взаимодействия внутри и между подсистемами и приложениями компьютера. Затем он передает управление компьютером операционной системе.

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

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

Суть управления процессором сводится к двум связанным проблемам:
  • Обеспечение того, чтобы каждый процесс и приложение получали достаточно времени процессора для правильной работы
  • Использование как можно большего количества циклов процессора для реальной работы
Базовая единица программного обеспечения, с которой работает операционная система при планировании работы, выполняемой процессором, - это либо процесс, либо поток, в зависимости от операционной системы.
Заманчиво думать о процессе как о приложении, но это дает неполное представление о том, как процессы связаны с операционной системой и оборудованием. Приложение, которое вы видите (текстовый процессор, электронная таблица или игра), действительно, является процессом, но это приложение может вызвать запуск нескольких других процессов для таких задач, как связь с другими устройствами или другими компьютерами. Есть также множество процессов, которые выполняются, не давая прямых доказательств того, что они когда-либо существовали. Например, в Windows XP и UNIX могут быть запущены десятки фоновых процессов для обработки сети, управления памятью, управления дисками, проверки на вирусы и так далее.
Таким образом, процесс - это программа, которая выполняет какое-то действие и может управляться пользователем, другими приложениями или операционной системой.
Операционная система контролирует процессы, а не приложения, и планирует их выполнение центральным процессором. В однозадачной системе расписание простое. Операционная система позволяет приложению начать работу, приостанавливая выполнение только на время, достаточное для обработки прерываний и ввода данных пользователем.
Прерывания - это специальные сигналы, отправляемые аппаратным или программным обеспечением ЦП. Как будто какая-то часть компьютера внезапно подняла руку, чтобы попросить внимания процессора на оживленной встрече. Иногда операционная система назначает приоритет процессов таким образом, чтобы прерывания маскировались, то есть операционная система игнорирует прерывания из некоторых источников, чтобы конкретное задание могло быть завершено как можно быстрее. Есть некоторые прерывания (например, из-за ошибок или проблем с памятью), которые настолько важны, что их нельзя игнорировать. Эти немаскированные прерывания (NMI) должны обрабатываться немедленно, независимо от других текущих задач.
В то время как прерывания несколько усложняют выполнение процессов в однозадачной системе, работа операционной системы становится намного сложнее в многозадачной системе. Теперь операционная система должна организовать выполнение приложений так, чтобы вы полагали, что одновременно происходит несколько вещей. Это сложно, потому что ЦП может делать только одну вещь за раз. Сегодняшние многоядерные процессоры и многопроцессорные машины могут выполнять больше работы, но каждое ядро процессора по-прежнему способно управлять одной задачей за раз.
Чтобы создать впечатление, что множество событий происходит одновременно, операционная система должна переключаться между различными процессами тысячи раз в секунду.

Вот как это происходит:
  • Процесс занимает определенный объем оперативной памяти. Он также использует регистры, стеки и очереди в памяти ЦП и операционной системы.
  • Когда два процесса выполняют многозадачность, операционная система выделяет определенное количество циклов выполнения ЦП одной программе.
  • После этого количества циклов операционная система делает копии всех регистров, стеков и очередей, используемых процессами, и отмечает точку, в которой процесс приостановил свое выполнение.
  • Затем он загружает все регистры, стеки и очереди, используемые вторым процессом, и предоставляет ему определенное количество циклов ЦП.
  • Когда они будут завершены, он делает копии всех регистров, стеков и очередей, используемых второй программой, и загружает первую программу.

Блок управления процессом​

Вся информация, необходимая для отслеживания процесса при переключении, хранится в пакете данных, который называется блоком управления процессом. Блок управления процессом обычно содержит:
  • Идентификационный номер, который идентифицирует процесс
  • Указатели на места в программе и ее данные, в которых выполнялась последняя обработка
  • Зарегистрируйте содержимое
  • Состояния различных флагов и переключателей
  • Указатели на верхнюю и нижнюю границы памяти, необходимой для процесса
  • Список файлов, открытых процессом
  • Приоритет процесса
  • Состояние всех устройств ввода-вывода, необходимых процессу.
Каждый процесс имеет связанный с ним статус. Многие процессы не потребляют процессорного времени, пока не получат какой-либо ввод. Например, процесс может ожидать нажатия клавиши от пользователя. Пока он ожидает нажатия клавиши, процессорное время не используется. Пока он ждет, он « приостановлен ». При нажатии клавиши ОС меняет свой статус. Когда статус процесса изменяется, например, с ожидающего на активный или с приостановленного на запущенный, информация в блоке управления процессом должна использоваться, как данные в любой другой программе, для управления выполнением части переключения задач Операционная система.
Эта подкачка процессов происходит без прямого вмешательства пользователя, и каждый процесс получает достаточно циклов ЦП, чтобы выполнить свою задачу за разумный промежуток времени. Проблема может начаться, если пользователь попытается запустить слишком много процессов одновременно. Сама операционная система требует некоторых циклов ЦП для выполнения сохранения и замены всех регистров, очередей и стеков процессов приложения. Если запущено достаточное количество процессов и если операционная система не была тщательно спроектирована, система может начать использовать подавляющее большинство своих доступных циклов ЦП для переключения между процессами, а не для запуска процессов. Когда это происходит, это называется перегрузкой , и обычно требуется какое-то непосредственное вмешательство пользователя, чтобы остановить процессы и навести порядок в системе.

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

Хранение и управление памятью​

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

В качестве примера рассмотрим воображаемую небольшую систему с 1 мегабайтом (1000 килобайт) оперативной памяти. Во время процесса загрузки операционная система нашего воображаемого компьютера предназначена для перехода к максимуму доступной памяти, а затем к «резервному копированию» достаточно далеко, чтобы удовлетворить потребности самой операционной системы. Допустим, для работы операционной системы требуется 300 килобайт. Теперь операционная система переходит в нижнюю часть пула оперативной памяти и начинает наращивать различные программные драйверы, необходимые для управления аппаратными подсистемами компьютера. В нашем воображаемом компьютере драйверы занимают 200 килобайт. Таким образом, после полной загрузки операционной системы для процессов приложений остается 500 килобайт.
Когда приложения начинают загружаться в память, они загружаются в размерах блоков, определяемых операционной системой. Если размер блока составляет 2 килобайта, то каждому загруженному процессу будет предоставлен фрагмент памяти, размер которого кратен 2 килобайтам. Приложения будут загружаться с этими фиксированными размерами блоков, причем блоки начинаются и заканчиваются на границах, установленных словами из 4 или 8 байтов. Эти блоки и границы помогают гарантировать, что приложения не будут загружены поверх пространства друг друга на один или два плохо рассчитанных бита. Когда это обеспечено, главный вопрос заключается в том, что делать, когда 500-килобайтное пространство приложения заполнено.

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

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

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

operating-system-5.jpg

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

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

Интерфейсы прикладных программ​

operating-system-4.jpg

Сотрудник компании ZMP демонстрирует робота-гуманоида наблюдения Nuvo в Токио, Япония.

Точно так же, как драйверы позволяют приложениям использовать аппаратные подсистемы без необходимости знать все детали работы оборудования, программные интерфейсы приложений (API) позволяют прикладным программистам использовать функции компьютера и операционной системы без необходимости напрямую отслеживать все детали в работе процессора. Давайте посмотрим на пример создания файла на жестком диске для хранения данных, чтобы понять, почему это может быть важно.
Программист, пишущий приложение для записи данных с научного инструмента, может захотеть разрешить ученому указать имя созданного файла. Операционная система может предоставлять функцию API с именем MakeFile для создания файлов. При написании программы программист вставлял строку, которая выглядит так:
MakeFile [1,% Name, 2]
В этом примере инструкция говорит операционной системе создать файл, который разрешит произвольный доступ к его данным (обозначенный 1 - другой вариант может быть 0 для последовательного файла), имя которого будет введено пользователем. (% Name) и будет размером, который зависит от того, сколько данных хранится в файле (обозначено цифрой 2 - другие параметры могут быть равны нулю для фиксированного размера и 1 для файла, который увеличивается по мере добавления данных, но не сжимается при удалении данных). Теперь давайте посмотрим, что делает операционная система, чтобы превратить инструкцию в действие.
Операционная система отправляет запрос на диск, чтобы получить местоположение первого доступного свободного места для хранения.
С помощью этой информации операционная система создает запись в файловой системе, показывающую начальное и конечное расположение файла, имя файла, тип файла, был ли файл заархивирован, какие пользователи имеют разрешение просматривать или изменять файл, а также дату и время создания файла.
Операционная система записывает информацию в начале файла, которая идентифицирует файл, устанавливает тип возможного доступа и включает другую информацию, которая связывает файл с приложением. Во всей этой информации запросы к дисководу и адреса начальной и конечной точки файла имеют форматы, сильно зависящие от производителя и модели дисковода.
Поскольку программист написал программу для использования API для хранения на диске, программисту не нужно следить за кодами инструкций, типами данных и кодами ответов для всех возможных жестких дисков и ленточных накопителей. Операционная система, подключенная к драйверам для различных аппаратных подсистем, занимается изменением деталей оборудования. Программист должен просто написать код для API и доверить операционной системе все остальное.
API-интерфейсы стали одной из самых спорных областей компьютерной индустрии в последние годы. Компании понимают, что программисты, использующие их API, в конечном итоге преобразуют это в способность контролировать и получать прибыль в определенной части отрасли. Это одна из причин, по которой так много компаний были готовы бесплатно предоставлять публике такие приложения, как читатели или зрители. Они знают, что потребители будут требовать, чтобы программы использовали преимущества бесплатных считывателей, а компании-разработчики приложений будут готовы платить роялти, чтобы их программное обеспечение могло предоставлять функции, запрошенные потребителями.

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

operating-system-linux.jpg

Снимок экрана операционной системы Linux Red Hat

Подобно тому, как API предоставляет приложениям единообразный способ использования ресурсов компьютерной системы, пользовательский интерфейс (UI) привносит структуру во взаимодействие между пользователем и компьютером. В последнее десятилетие почти все разработки пользовательских интерфейсов были в области графического пользовательского интерфейса (GUI), причем две модели, Macintosh от Apple и Windows от Microsoft, получили наибольшее внимание и завоевали большую часть рынка. Популярная операционная система Linux с открытым исходным кодом также поддерживает графический пользовательский интерфейс.
Существуют и другие пользовательские интерфейсы, некоторые графические, а некоторые нет, для других операционных систем.
Unix, например, имеет пользовательские интерфейсы, называемые оболочками, которые представляют пользовательский интерфейс более гибкий и мощный, чем стандартный текстовый интерфейс операционной системы. Такие программы, как Korn Shell и C Shell, представляют собой текстовые интерфейсы, которые добавляют важные утилиты, но их основная цель - облегчить пользователю управление функциями операционной системы. Существуют также графические пользовательские интерфейсы, такие как X-Windows и Gnome, которые делают Unix и Linux более похожими на компьютеры Windows и Macintosh с точки зрения пользователя.
Важно помнить, что во всех этих примерах пользовательский интерфейс - это программа или набор программ, которые находятся на уровне выше самой операционной системы. То же самое, но с несколько разными механизмами операционных систем Windows и Macintosh. Основные функции операционной системы - управление компьютерной системой - лежат в ядре операционной системы. Менеджер дисплея отдельно, хотя он может быть привязан плотно к ядру под ним. Связи между ядром операционной системы и пользовательским интерфейсом, служебными программами и другим программным обеспечением определяют многие различия в операционных системах сегодня и будут определять их в будущем.

Разработка операционной системы​

Логотип Linux

Логотип Linux

Для настольных систем доступ к локальной сети или Интернету стал такой ожидаемой функцией, что во многих отношениях трудно обсуждать операционную систему без ссылки на ее подключения к другим компьютерам и серверам. Разработчики операционных систем сделали Интернет стандартным методом доставки важных обновлений операционной системы и исправлений ошибок. Хотя эти обновления можно получать на CD или DVD, они становятся все реже. Фактически, некоторые операционные системы целиком доступны только для распространения через Интернет.
Кроме того, процесс под названием NetBooting упростил возможность переноса рабочей операционной системы стандартного настольного компьютера потребителя - ядра, пользовательского интерфейса и всего - с машины, которой он управляет. Ранее это было возможно только для опытных продвинутых пользователей на многопользовательских платформах, таких как UNIX, и с набором специализированных приложений. NetBooting позволяет операционной системе для одного компьютера обслуживаться через сетевое соединение с удаленного компьютера, подключенного к любой точке сети. Один сервер NetBoot может обслуживать операционные системы нескольких десятков клиентских компьютеров одновременно, и для пользователя, сидящего перед каждым клиентским компьютером, работа будет такой же, как при использовании знакомой им настольной операционной системы, такой как Windows или Mac OS.
Один из вопросов, касающихся будущего операционных систем, касается способности определенной философии распространения программного обеспечения создавать операционную систему, которую могут использовать корпорации и потребители вместе.
Linux, операционная система, созданная и распространяемая в соответствии с принципами открытого исходного кода , оказала значительное влияние на операционную систему в целом. Большинство операционных систем, драйверов и служебных программ написаны коммерческими организациями, которые распространяют исполняемые версии своего программного обеспечения - версии, которые нельзя изучить или изменить. Открытый исходный код требует распространения исходных исходных материалов, которые можно изучать, изменять и использовать, а результаты снова будут свободно распространяться. В сфере настольных компьютеров это привело к разработке и распространению бесчисленных полезных и бесплатных приложений, таких как программа для обработки изображений GIMP и популярный веб-сервер Apache. В сфере потребительских устройств использование Linux дало возможность отдельным пользователям лучше контролировать поведение своих устройств.
Многие потребительские устройства, такие как сотовые телефоны и маршрутизаторы, намеренно скрывают доступ к операционной системе от пользователя, в основном для того, чтобы убедиться, что она не сломана или не удалена случайно. Во многих случаях они оставляют «режим разработчика» или «режим программиста» открытым, чтобы можно было внести изменения; однако, это только в том случае, если вы знаете, как его найти. Часто эти системы могут быть запрограммированы таким образом, что есть только ограниченный диапазон изменений, которые можно внести. Некоторые устройства оставляют и режим доступа, и средства внесения значительных изменений открытыми для пользователей, особенно тех, которые используют Linux. Вот пара примеров:
  • TiVo DVR работает на модифицированной версии Linux. Все модификации являются общеизвестными и могут быть загружены здесь вместе с некоторыми специальными инструментами для управления кодом. Многие предприимчивые пользователи TiVo добавили функциональные возможности в свои системы, включая увеличение емкости хранилища для доступа к оболочкам UNIX и смены режима с NTSC на PAL.
  • Многие домашние маршрутизаторы также работают под управлением Linux.
 
Top