stringtranslate.com

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

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

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

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

По состоянию на сентябрь 2023 года на рынке персональных компьютеров Microsoft Windows занимает доминирующую долю рынка, составляющую около 68 % . macOS от Apple Inc. находится на втором месте (20%), а разновидности Linux в совокупности находятся на третьем месте (7%). [3] В мобильном секторе (включая смартфоны и планшеты ) по состоянию на сентябрь 2023 года доля Android составляет 68,92%, за ней следуют Apple iOS и iPadOS с 30,42% и другие операционные системы с 0,66%. [4] Дистрибутивы Linux доминируют в серверном и суперкомпьютерном секторах. Для многих приложений существуют другие специализированные классы операционных систем (операционные системы специального назначения), [5] [6], такие как встроенные системы и системы реального времени. Также существуют операционные системы, ориентированные на безопасность . Некоторые операционные системы имеют низкие системные требования (например, облегченный дистрибутив Linux ). У других могут быть более высокие системные требования.

Некоторые операционные системы требуют установки или могут быть предварительно установлены на приобретенных компьютерах ( установка OEM ), тогда как другие могут запускаться непосредственно с носителя (например, Live CD ) или флэш-памяти (например, USB- накопителя).

Определение и цель

Операционную систему трудно определить [7] , но ее называют « уровнем программного обеспечения , который управляет ресурсами компьютера для его пользователей и их приложений ». [8] Операционные системы включают в себя постоянно работающее программное обеспечение, называемое ядром , но могут включать и другое программное обеспечение. [7] [9] Два других типа программ, которые могут запускаться на компьютере, — это системные программы , которые связаны с операционной системой, но не могут быть частью ядра, и приложения — все остальное программное обеспечение. [9]

Существует три основные цели, которые выполняет операционная система: [10]

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

Мультикомпьютерные операционные системы

В мультипроцессорах несколько процессоров совместно используют память. Мультикомпьютер или кластерный компьютер имеет несколько процессоров, каждый из которых имеет собственную память . Мультикомпьютеры были разработаны потому, что большие мультипроцессоры сложны в разработке и непомерно дороги; [18] они универсальны в облачных вычислениях из-за размера необходимой машины. [19] Разным процессорам часто необходимо отправлять и получать сообщения друг другу; [20] Чтобы обеспечить хорошую производительность, операционные системы для этих машин должны минимизировать копирование пакетов . [21] Новые системы часто используют несколько очередей — группы пользователей разделяются на отдельные очереди — чтобы уменьшить необходимость копирования пакетов и поддерживать больше одновременных пользователей. [22] Другой метод — удаленный прямой доступ к памяти , который позволяет каждому ЦП получать доступ к памяти, принадлежащей другим ЦП. [20] Мультикомпьютерные операционные системы часто поддерживают удаленные вызовы процедур , когда ЦП может вызвать процедуру на другом ЦП, [23] или распределенную общую память , в которой операционная система использует виртуализацию для создания общей памяти, которая на самом деле не существует. [24]

Распределенные системы

Распределенная система — это группа отдельных компьютеров, объединенных в сеть , каждый из которых может иметь свою собственную операционную систему и файловую систему. В отличие от мультикомпьютеров, они могут быть рассредоточены по всему миру. [25] Промежуточное программное обеспечение , дополнительный программный уровень между операционной системой и приложениями, часто используется для повышения согласованности. Хотя она функционирует аналогично операционной системе, это не настоящая операционная система. [26]

Встроенный

Встроенные операционные системы предназначены для использования во встроенных компьютерных системах , независимо от того, являются ли они объектами Интернета вещей или не подключены к сети. Встраиваемые системы включают в себя множество бытовой техники. Отличительным фактором является то, что они не загружают установленное пользователем программное обеспечение. Следовательно, им не требуется защита между различными приложениями, что позволяет упростить разработку. Очень маленькие операционные системы могут иметь размер менее 10 килобайт [27] , а самые маленькие — для смарт-карт . [28] Примеры включают Embedded Linux , QNX , VxWorks и сверхмалые системы RIOT и TinyOS . [29]

В режиме реального времени

Операционная система реального времени — это операционная система, которая гарантирует обработку событий или данных в определенный момент времени или в определенный момент времени. Системы жесткого реального времени требуют точного времени и широко распространены в производстве , авионике , военной промышленности и других подобных областях. [29] В системах мягкого реального времени случайные пропущенные события допустимы; в эту категорию часто входят аудио- или мультимедийные системы, а также смартфоны. [29] Чтобы системы жесткого реального времени были достаточно точными в синхронизации, часто они представляют собой просто библиотеки без защиты между приложениями, такие как eCos . [29]

Виртуальная машина

Виртуальная машина — это операционная система, которая работает как приложение поверх другой операционной системы. [15] Виртуальная машина не знает, что она является приложением, и работает так, как если бы у нее было собственное оборудование. [15] [30] Виртуальные машины можно приостанавливать, сохранять и возобновлять, что делает их полезными для исследования, разработки, [31] и отладки операционных систем. [32] Они также повышают мобильность, позволяя запускать приложения на компьютере, даже если они несовместимы с базовой операционной системой. [15]

История

Ранние компьютеры были созданы для выполнения ряда отдельных задач, как калькулятор. Основные функции операционной системы были разработаны в 1950-х годах, такие как функции резидентного монитора , которые могли автоматически запускать разные программы последовательно для ускорения обработки. Операционные системы в их современных и более сложных формах не существовали до начала 1960-х годов. [33] Были добавлены аппаратные функции, которые позволили использовать библиотеки времени выполнения , прерывания и параллельную обработку . Когда в 1980-х годах персональные компьютеры стали популярными, для них были созданы операционные системы, аналогичные по концепции тем, которые используются на более крупных компьютерах.

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

Панель оператора IBM System 360/65. OS/360 использовалась на большинстве мейнфреймов IBM, начиная с 1966 года, включая компьютеры, используемые в программе Apollo .

В начале 1950-х годов компьютер мог одновременно выполнять только одну программу. Каждый пользователь имел право единоличного пользования компьютером в течение ограниченного периода времени и приходил в назначенное время со своей программой и данными на перфокартах или перфоленте . Программа будет загружена в машину, и машина будет работать до тех пор, пока программа не завершится или не выйдет из строя . Программы обычно можно отлаживать через переднюю панель с помощью тумблеров и индикаторов панели. Говорят, что Алан Тьюринг был мастером в этом на ранней манчестерской машине Mark 1 , и он уже вывел примитивную концепцию операционной системы из принципов универсальной машины Тьюринга . [33]

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

К концу 1950-х годов начали появляться программы, которые можно было бы назвать операционной системой. Самым ранним узнаваемым примером часто называют GM-NAA I/O , выпущенный в 1956 году на IBM 704 . Первым известным примером, который фактически относился сам к себе, была операционная система SHARE , развитие ввода-вывода GM-NAA, выпущенная в 1959 году. В статье от мая 1960 года, описывающей систему, Джордж Рикман отметил:

Развитие компьютерных операционных систем существенно помогло решить проблему эффективного включения и отключения программы или серии программ на компьютере. [34]

Одним из наиболее известных примеров, который часто встречается при обсуждении ранних систем, является Atlas Supervisor , работавший на Atlas в 1962 году . Операционная система» больше похожа на «система работает модно». Сама команда Атласа использовала термин «супервайзер» [36] , который широко использовался наряду с «монитором». Бринч Хансен назвал это «самым значительным прорывом в истории операционных систем». [37]

Мэйнфреймы

В 1950-е годы в области операционных систем на мэйнфреймах были впервые реализованы многие важные функции , включая пакетную обработку , прерывание ввода/вывода , буферизацию , многозадачность , буферизацию , библиотеки времени выполнения , загрузку ссылок и программы для сортировки записей в файлах. Эти функции включались или не включались в прикладное программное обеспечение по усмотрению программистов приложений, а не в отдельную операционную систему, используемую всеми приложениями. В 1959 году операционная система SHARE была выпущена как интегрированная утилита для мэйнфреймов IBM 704 , а затем и для мэйнфреймов 709 и 7090 , хотя на мейнфреймах 709, 7090 и 7094 она была быстро вытеснена IBSYS /IBJOB, что, в свою очередь, повлияло на более поздние модели. Операционные системы 7040-ПР - 150 ( 7040/7044 ) и 1410-ПР-155 ( 1410/7010 ) .

В 1960-е годы IBM OS/360 представила концепцию единой ОС, охватывающую всю линейку продуктов, что имело решающее значение для успеха машин System/360. Нынешние операционные системы для мэйнфреймов IBM являются дальними потомками этой оригинальной системы, а современные машины обратно совместимы с приложениями, написанными для OS/360. [ нужна цитата ]

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

Альтернативная система CP-67 для S/360-67 положила начало целому ряду операционных систем IBM, ориентированных на концепцию виртуальных машин . Другие операционные системы, используемые на мэйнфреймах серии IBM S/360, включали системы, разработанные IBM: DOS/360 [a] (Дисковая операционная система), TSS/360 (система разделения времени), TOS/360 (ленточная операционная система), BOS/360. (Базовая операционная система) и ACP (Программа управления авиакомпанией), а также несколько систем сторонних производителей: MTS (Мичиганская терминальная система), MUSIC (Многопользовательская система для интерактивных вычислений) и ORVYL (Стэнфордская система разделения времени).

Корпорация Control Data разработала операционную систему SCOPE в 1960-х годах для пакетной обработки . В сотрудничестве с Университетом Миннесоты в 1970-х годах были разработаны операционные системы Kronos , а затем и NOS , которые поддерживали одновременное пакетное использование и использование с разделением времени. Как и многие коммерческие системы с разделением времени, его интерфейс был расширением операционной системы Dartmouth BASIC , одного из новаторских проектов в области разделения времени и языков программирования. В конце 1970-х годов компания Control Data и Университет Иллинойса разработали операционную систему PLATO , в которой использовались плазменные панели и сети с разделением времени на большие расстояния. Платон был удивительно новаторским для своего времени, предлагая чат в реальном времени и многопользовательские графические игры.

В 1961 году корпорация Burroughs представила B5000 с операционной системой MCP (Master Control Program). B5000 представлял собой стековую машину , предназначенную исключительно для поддержки языков высокого уровня без ассемблера; [b] действительно, MCP была первой ОС, написанной исключительно на языке высокого уровня ( ESPOL , диалект ALGOL ). MCP также представила множество других новаторских инноваций, таких как первая коммерческая реализация виртуальной памяти . MCP до сих пор используется в линейке компьютеров MCP/ClearPath компании Unisys .

UNIVAC , первый производитель коммерческих компьютеров, выпустил серию операционных систем EXEC. [38] [39] [40] Как и все ранние системы мейнфреймов, эта пакетно-ориентированная система управляла магнитными барабанами, дисками, устройствами считывания карт и линейными принтерами. В 1970-х годах UNIVAC разработала базовую систему реального времени (RTB) для поддержки крупномасштабного разделения времени, также созданную по образцу системы Дартмутской Британской Колумбии.

Компания General Electric разработала программу General Electric Comprehensive Operating Supervisor (GECOS), которая в основном поддерживала пакетную обработку. После приобретения компанией Honeywell она была переименована в General Comprehensive Operating System (GCOS).

Bell Labs , [c] General Electric и MIT разработали Multiplexed Information and Computing Service ( Multics ), который представил концепцию кольцевых уровней привилегий безопасности.

Корпорация Digital Equipment разработала множество операционных систем для различных линеек компьютеров, включая системы разделения времени TOPS-10 и TOPS-20 для 36-битных систем класса PDP-10. До широкого распространения UNIX система TOPS-10 была особенно популярной в университетах и ​​в раннем сообществе ARPANET . RT-11 представляла собой однопользовательскую ОС реального времени для миникомпьютера класса PDP-11 , а RSX-11 — соответствующую многопользовательскую ОС.

С конца 1960-х по конец 1970-х годов появилось несколько аппаратных возможностей, которые позволили аналогичному или портированному программному обеспечению работать более чем в одной системе. Ранние системы использовали микропрограммирование для реализации функций в своих системах, чтобы различные базовые компьютерные архитектуры выглядели такими же, как другие в серии. Фактически, большинство моделей 360 после 360/40 (за исключением 360/44, 360/75, 360/91, 360/95 и 360/195) представляли собой микропрограммные реализации.

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

Микрокомпьютеры

PC DOS (1981), ребрендинг MS-DOS от IBM, использует интерфейс командной строки.

Самым ранним микрокомпьютерам не хватало мощности или требований для сложных операционных систем, используемых в мейнфреймах и миникомпьютерах . Вместо этого они использовали минималистичные операционные системы, часто загружаемые из ПЗУ и называемые мониторами . Важной ранней дисковой операционной системой была CP/M , широко поддерживаемая многими ранними микрокомпьютерами. Microsoft тесно имитировала CP/M со своей MS-DOS , которая получила широкую популярность в качестве операционной системы для IBM PC (версия IBM была известна как IBM DOS или PC DOS ).

В 1984 году Apple Computer представила Macintosh наряду со своими популярными микрокомпьютерами Apple II . Mac имел графический интерфейс пользователя, управляемый с помощью мыши. Он работал под управлением операционной системы, позже известной как (классическая) Mac OS .

Появление в феврале 1982 года процессора Intel 80286 с 16-битной архитектурой и сегментацией , а также процессора Intel 80386 в октябре 1985 года [41] с 32-битной архитектурой и возможностями подкачки обеспечило персональным компьютерам возможность запуска многозадачные операционные системы, подобные тем, что использовались на более ранних суперминикомпьютерах и мэйнфреймах . Microsoft отреагировала на этот прогресс, наняв Дэйва Катлера , который разработал операционную систему VMS для Digital Equipment Corporation . Он возглавил разработку операционной системы Windows NT , которая продолжает служить основой линейки операционных систем Microsoft. Стив Джобс , соучредитель Apple Inc. , основал компанию NeXT Computer Inc., которая разработала операционную систему NeXTSTEP . Позже NeXTSTEP будет приобретен Apple Inc. и использован вместе с кодом из FreeBSD в качестве ядра Mac OS X ( macOS после последнего изменения названия).

Проект GNU был начат активистом и программистом Ричардом Столлманом с целью создания полной замены свободного программного обеспечения проприетарной операционной системе UNIX . Хотя проект оказался очень успешным в дублировании функциональности различных частей UNIX, разработка ядра GNU Hurd оказалась непродуктивной. В 1991 году финский студент-компьютерщик Линус Торвальдс при сотрудничестве добровольцев, сотрудничающих через Интернет, выпустил первую версию ядра Linux . Вскоре он был объединен с компонентами пользовательского пространства GNU и системным программным обеспечением , чтобы сформировать полноценную операционную систему, обычно называемую Linux .

Распространение программного обеспечения Беркли (BSD) — это производная UNIX, распространяемая Калифорнийским университетом в Беркли, начиная с 1970-х годов. Свободно распространяемая и портированная на множество миникомпьютеров, она в конечном итоге также получила распространение на ПК, в основном как FreeBSD , NetBSD и OpenBSD .

Примеры

Unix и Unix-подобные операционные системы

Эволюция Unix- систем

Первоначально Unix была написана на языке ассемблера . [42] Кен Томпсон написал B , в основном на основе BCPL , основываясь на своем опыте работы в проекте MULTICS . B был заменен на C , а Unix, переписанная на C, превратилась в большое и сложное семейство взаимосвязанных операционных систем, которые оказали влияние на каждую современную операционную систему (см. Историю ).

Семейство Unix-подобных систем представляет собой разнообразную группу операционных систем, состоящую из нескольких основных подкатегорий, включая System V , BSD и Linux . Название « UNIX » является товарным знаком компании The Open Group , которая лицензирует его для использования с любой операционной системой, которая соответствует их определениям. Термин «UNIX-подобный» обычно используется для обозначения большого набора операционных систем, напоминающих исходную UNIX.

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

Пять операционных систем сертифицированы The Open Group (владельцем торговой марки Unix) как Unix. HP-UX от HP и AIX от IBM являются потомками оригинальной System V Unix и предназначены для работы только на оборудовании соответствующего поставщика. Напротив, Solaris от Sun Microsystems может работать на различных типах оборудования, включая серверы x86 и SPARC , а также ПК. MacOS от Apple , замена более ранней (не Unix) классической Mac OS от Apple , представляет собой гибридный вариант BSD на основе ядра, полученный из NeXTSTEP , Mach и FreeBSD . Системные службы IBM z/OS UNIX включают оболочку и утилиты на основе продуктов InterOpen Мортиса Кернса .

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

BSD и его потомки

Первый сервер Всемирной паутины работал на NeXTSTEP, основанном на BSD.

Подгруппой семейства Unix является семейство Berkeley Software Distribution (BSD), которое включает FreeBSD , NetBSD и OpenBSD . Эти операционные системы чаще всего встречаются на веб-серверах , хотя они также могут функционировать как ОС персонального компьютера. Интернет во многом обязан своим существованием BSD, поскольку многие протоколы, которые сейчас обычно используются компьютерами для подключения, отправки и получения данных по сети, были широко реализованы и усовершенствованы в BSD. Всемирная паутина также была впервые продемонстрирована на ряде компьютеров под управлением ОС на базе BSD под названием NeXTSTEP .

В 1974 году Калифорнийский университет в Беркли установил свою первую систему Unix. Со временем студенты и сотрудники факультета информатики начали добавлять новые программы, упрощающие работу, например текстовые редакторы. Когда в 1978 году Беркли получил новые компьютеры VAX с установленной Unix, студенты школы еще больше модифицировали Unix, чтобы воспользоваться преимуществами аппаратных возможностей компьютера. Агентство перспективных исследовательских проектов Министерства обороны США заинтересовалось и решило профинансировать проект. Многие школы, корпорации и правительственные организации обратили на это внимание и начали использовать версию Unix Беркли вместо официальной версии, распространяемой AT&T.

Стив Джобс , покинув Apple Inc. в 1985 году, основал NeXT Inc. , компанию, которая производила высокопроизводительные компьютеры, работающие на разновидности BSD под названием NeXTSTEP . Один из этих компьютеров использовался Тимом Бернерсом-Ли в качестве первого веб-сервера для создания Всемирной паутины.

Такие разработчики, как Кейт Бостик, призвали проект заменить любой несвободный код, созданный Bell Labs. Однако как только это было сделано, AT&T подала в суд. После двух лет юридических споров проект BSD породил ряд свободных производных, таких как NetBSD и FreeBSD (обе в 1993 году) и OpenBSD (от NetBSD в 1995 году).

macOS

macOS (ранее «Mac OS X», а позже «OS X») — это линейка графических операционных систем с открытым ядром , разработанная, продаваемая и продаваемая Apple Inc. , последняя из которых предварительно загружена на все поставляемые в настоящее время компьютеры Macintosh . macOS является преемником оригинальной классической Mac OS , которая была основной операционной системой Apple с 1984 года. В отличие от своей предшественницы, macOS — это операционная система UNIX , построенная на технологии, разработанной в NeXT на протяжении второй половины 1980-х годов и вплоть до Apple приобрела компанию в начале 1997 года. Впервые операционная система была выпущена в 1999 году как Mac OS X Server 1.0 , а в марте 2001 года появилась клиентская версия ( Mac OS X v10.0 «Cheetah» ). С тех пор было выпущено еще шесть отдельных «клиентских» и « серверных » редакций macOS, пока они не были объединены в OS X 10.7 «Lion» .

До слияния с macOS серверная версия — macOS Server  — была архитектурно идентична своей настольной версии и обычно работала на линейке серверного оборудования Apple Macintosh . macOS Server включал в себя программные инструменты управления и администрирования рабочих групп, которые обеспечивают упрощенный доступ к ключевым сетевым службам , включая агент передачи почты , сервер Samba , сервер LDAP , сервер доменных имен и другие. В Mac OS X v10.7 Lion все серверные аспекты Mac OS X Server были интегрированы в клиентскую версию, а продукт был переименован в «OS X» (исключение «Mac» из названия). Серверные инструменты теперь предлагаются в виде приложений. [43]

Системные службы z/OS UNIX

Впервые представлен как обновление OpenEdition до MVS/ESA System Product Version 4 Release 3, анонсированное [44] в феврале 1993 года, с поддержкой POSIX и других стандартов. [45] [46] [47] Системные службы z/OS UNIX построены на основе служб MVS и не могут работать независимо. Хотя IBM изначально представила OpenEdition для удовлетворения требований FIPS , некоторые компоненты z/OS теперь требуют служб UNIX, например TCP/IP.

Линукс

Ubuntu , настольный дистрибутив Linux
Изображение пингвина Тукса , талисмана Linux . Linux — Unix-подобная операционная система, впервые выпущенная 17 сентября 1991 года Линусом Торвальдсом . [48] ​​[49] [50] [51]

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

Linux похож на Unix , но был разработан без какого-либо кода Unix, в отличие от BSD и ее вариантов. Благодаря модели открытой лицензии код ядра Linux доступен для изучения и модификации, что привело к его использованию на широком спектре вычислительной техники — от суперкомпьютеров до умных часов. Хотя оценки показывают, что Linux используется только на 2,81% всех «настольных» (или портативных) ПК, [3] он широко применяется для использования в серверах [52] и встроенных системах [53], таких как сотовые телефоны.

Linux вытеснил Unix на многих платформах и используется на большинстве суперкомпьютеров , включая все 500 самых мощных суперкомпьютеров из списка TOP500 , вытеснив всех конкурентов к 2017 году. [54] Linux также широко используется на других небольших энергоэффективных компьютерах, таких как смартфоны и умные часы . Ядро Linux используется в некоторых популярных дистрибутивах, таких как Red Hat , Debian , Ubuntu , Linux Mint и Android , ChromeOS и ChromiumOS от Google .

Майкрософт Виндоус

Microsoft Windows — это семейство проприетарных операционных систем, разработанных корпорацией Microsoft и ориентированных в первую очередь на компьютеры с архитектурой x86 . По состоянию на 2022 год ее доля на мировом рынке на всех платформах составляла примерно 30%, [55] а на платформах настольных компьютеров и ноутбуков — примерно 75%. [56] Последняя версия — Windows 11 .

Microsoft Windows была впервые выпущена в 1985 году как операционная среда , работающая поверх MS-DOS , которая в то время была стандартной операционной системой, поставляемой на большинство персональных компьютеров с архитектурой Intel. В 1995 году была выпущена Windows 95 , в которой в качестве начальной загрузки использовалась только MS-DOS. Для обратной совместимости Win9x могла запускать драйверы MS-DOS реального режима [57] [58] и 16-битную Windows 3.x [59] . Windows ME , выпущенная в 2000 году, была последней версией семейства Win9x. Все более поздние версии были основаны на ядре Windows NT . Текущие клиентские версии Windows работают на микропроцессорах IA-32 , x86-64 и Arm . [60] Раньше Windows NT поддерживала дополнительные архитектуры.

Серверные версии Windows широко используются, однако использование Windows на серверах не так широко распространено, как на персональных компьютерах, поскольку Windows конкурирует с Linux и BSD за долю рынка серверов. [61] [62]

ReactOS — это альтернативная Windows операционная система, которая разрабатывается на принципах Windows — без использования какого-либо кода Microsoft.

Другой

Было много операционных систем, которые были значимыми в свое время, но уже не таковыми, например AmigaOS ; OS/2 от IBM и Microsoft; классическая Mac OS , не-Unix предшественник macOS от Apple; БеОС ; ХТС-300 ; РИСК ОС ; МорфОС ; Хайку ; BareMetal и FreeMint . Некоторые из них до сих пор используются на нишевых рынках и продолжают разрабатываться как второстепенные платформы для сообществ энтузиастов и специализированных приложений.

Операционная система z/OS для мэйнфреймов IBM z/Architecture все еще используется и разрабатывается, а OpenVMS , ранее принадлежавшая DEC , все еще находится в стадии активной разработки компанией VMS Software Inc. Операционная система IBM i для компьютеров среднего класса IBM AS/400 и IBM Power Systems также все еще используется и разрабатывается.

Однако другие операционные системы используются почти исключительно в научных кругах, для обучения операционным системам или для исследования концепций операционных систем. Типичным примером системы, выполняющей обе роли, является MINIX , тогда как, например, Singularity используется исключительно для исследований. Другим примером является система «Оберон» , разработанная в ETH Zürich Никлаусом Виртом , Юргом Гуткнехтом и группой студентов бывшего Института компьютерных систем в 1980-х годах. Он использовался в основном для исследований, преподавания и повседневной работы в группе Вирта.

Другие операционные системы не смогли завоевать значительную долю рынка, но представили инновации, которые повлияли на основные операционные системы, и не в последнюю очередь Plan 9 от Bell Labs .

Компоненты

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

Ядро

Ядро соединяет прикладное программное обеспечение с аппаратным обеспечением компьютера.

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

Выполнение программы

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

Прерывания

Прерывание (также известное как прерывание , исключение , ошибка , сигнал , [63] или ловушка ) [64] обеспечивает эффективный способ для большинства операционных систем реагировать на окружающую среду. Прерывания заставляют центральный процессор (ЦП) переключать поток управления с текущей запущенной программы на обработчик прерываний , также известный как процедура обслуживания прерываний (ISR). [65] [66] Процедура обслуживания прерываний может привести к тому, что центральный процессор (ЦП) будет иметь переключение контекста . [67] [d] Детали того, как компьютер обрабатывает прерывание, варьируются от архитектуры к архитектуре, а детали того, как ведут себя процедуры обслуживания прерываний, различаются от операционной системы к операционной системе. [68] Однако некоторые функции прерываний являются общими. [68] Архитектура и операционная система должны: [68]

  1. передать управление подпрограмме обслуживания прерываний.
  2. сохранить состояние текущего запущенного процесса.
  3. восстановить состояние после обслуживания прерывания.
Программное прерывание

Программное прерывание — это сообщение процессу о том, что произошло событие. [63] Это контрастирует с аппаратным прерыванием , которое представляет собой сообщение центральному процессору (ЦП) о том, что произошло событие. [69] Программные прерывания аналогичны аппаратным прерываниям — они отличаются от текущего процесса. [70] Аналогично, как аппаратные, так и программные прерывания выполняют процедуру обслуживания прерывания .

Программные прерывания могут быть обычными событиями. Ожидается, что произойдет квантование времени , поэтому ядру придется выполнить переключение контекста . [71] Компьютерная программа может установить таймер, который сработает через несколько секунд на случай, если слишком большой объем данных приведет к слишком длительному выполнению алгоритма. [72]

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

Пользователи могут отправлять сообщения ядру, чтобы изменить поведение текущего процесса. [72] Например, в среде командной строки нажатие символа прерывания (обычно Control-C ) может завершить текущий запущенный процесс. [72]

Для генерации программных прерываний для процессоров x86 доступна инструкция ассемблера INT . [73] Синтаксис : где – номер смещения (в шестнадцатеричном формате) в таблице векторов прерываний .INT XX

Сигнал

Для генерации программных прерываний в Unix-подобных операционных системах kill(pid,signum) системный вызов отправляет сигнал другому процессу. [74] pidидентификатор процесса -получателя. signum— номер сигнала (в мнемоническом формате) [e], который необходимо отправить. (Было выбрано резкое название, killпотому что ранние реализации только завершали процесс.) [75]

В Unix-подобных операционных системах сигналы сообщают процессам о возникновении асинхронных событий. [74] Для асинхронной связи необходимы прерывания. [76] Одна из причин, по которой процессу необходимо асинхронно взаимодействовать с другим процессом, заключается в решении вариации классической проблемы чтения/записи . [77] Устройство записи получает канал от оболочки для отправки вывода во входной поток устройства чтения. [78] Синтаксис командной строки : alpha | bravo. alphaзапишет в канал, когда его вычисления будут готовы, а затем перейдет в очередь ожидания. [79] bravo затем будет перемещен в очередь готовности и вскоре будет прочитан из своего входного потока. [80] Ядро будет генерировать программные прерывания для координации конвейерной обработки. [80]

Сигналы можно разделить на 7 категорий. [74] Категории:

  1. когда процесс завершается нормально.
  2. когда процесс имеет исключение ошибки.
  3. когда процессу не хватает системного ресурса.
  4. когда процесс выполняет недопустимую инструкцию.
  5. когда процесс устанавливает тревожное событие.
  6. когда процесс прерывается с клавиатуры.
  7. когда процесс имеет предупреждение трассировки для отладки.
Аппаратное прерывание

Устройства ввода/вывода (I/O) работают медленнее, чем ЦП. Следовательно, если ЦП придется ждать завершения каждого ввода-вывода, это замедлит работу компьютера . Вместо этого компьютер может реализовать прерывания для завершения ввода-вывода, избегая необходимости опроса или ожидания занятости. [81]

Некоторым компьютерам требуется прерывание для каждого символа или слова, что требует значительного количества процессорного времени. Прямой доступ к памяти (DMA) — это функция архитектуры, позволяющая устройствам обходить ЦП и напрямую обращаться к основной памяти . [82] (Независимо от архитектуры устройство может осуществлять прямой доступ к памяти [f] к основной памяти и обратно либо напрямую, либо через шину.) [83] [g]

Ввод, вывод

Ввод-вывод, управляемый прерываниями

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

Прямой доступ к памяти

Такие устройства, как жесткие диски , твердотельные накопители и накопители на магнитной ленте , могут передавать данные с достаточно высокой скоростью, чтобы прерывать работу ЦП для каждого переданного байта или слова и заставлять ЦП передавать байт или слово между устройством и памятью. потребует слишком много процессорного времени. Вместо этого данные передаются между устройством и памятью независимо от ЦП с помощью аппаратного обеспечения, такого как канал или контроллер прямого доступа к памяти ; прерывание доставляется только тогда, когда все данные передаются. [85]

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

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

  • Доступ к таблице состояний устройств.
  • Извлеките блок управления процессом.
  • Выполните переключение контекста обратно в процесс записи.

Когда время процесса записи истечет, операционная система: [90]

Теперь, когда счетчик программ сброшен, прерванный процесс возобновит свой временной интервал. [68]

Режимы привилегий

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

Современные компьютеры поддерживают несколько режимов работы. Процессоры с такой возможностью предлагают как минимум два режима: режим пользователя и режим супервизора . В общем, работа в режиме супервизора обеспечивает неограниченный доступ ко всем ресурсам машины, включая все инструкции MPU. Работа в пользовательском режиме устанавливает ограничения на использование инструкций и обычно запрещает прямой доступ к ресурсам машины. Процессоры могут иметь и другие режимы, аналогичные пользовательскому режиму, например виртуальные режимы для эмуляции старых типов процессоров, таких как 16-битные процессоры на 32-битном или 32-битные процессоры на 64 -битном .

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

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

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

Термин «ресурс пользовательского режима» обычно относится к одному или нескольким регистрам ЦП, которые содержат информацию, которую работающей программе не разрешено изменять. Попытки изменить эти ресурсы обычно приводят к переключению в режим супервизора, в котором операционная система может справиться с незаконной операцией, которую пыталась выполнить программа; например, принудительно завершив («уничтожив») программу.

Управление памятью

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

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

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

Как при сегментации, так и при подкачке определенные регистры защищенного режима указывают ЦП, к какому адресу памяти он должен разрешить доступ работающей программе. Попытки доступа к другим адресам вызывают прерывание, которое заставляет ЦП повторно войти в режим супервизора , передавая управление ядру . Это называется нарушением сегментации или сокращенно Seg-V, и поскольку такой операции сложно присвоить значимый результат, а также поскольку это обычно является признаком неправильного поведения программы, ядро ​​обычно прибегает к завершению программы-нарушителя. и сообщает об ошибке.

Windows версий от 3.1 до ME имел некоторый уровень защиты памяти, но программы могли легко обойти необходимость его использования. Будет выдан общий сбой защиты, указывающий на то, что произошло нарушение сегментации ; однако система все равно часто давала сбой.

Виртуальная память

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

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

Если программа пытается получить доступ к памяти, которая недоступна [h] память, но тем не менее ей выделена, работа ядра прерывается (см. § Управление памятью) . Прерывание такого типа обычно является ошибкой страницы .

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

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

Виртуальная память дает программисту или пользователю ощущение, что в компьютере гораздо больший объем оперативной памяти, чем на самом деле. [91]

Параллелизм

Параллелизм означает способность операционной системы выполнять несколько задач одновременно. [92] Практически все современные операционные системы поддерживают параллелизм. [93]

Потоки позволяют разделить работу процесса на несколько частей, которые могут выполняться одновременно. [94] Количество потоков не ограничивается количеством доступных процессоров. Если потоков больше, чем процессоров, ядро ​​операционной системы планирует, приостанавливает и возобновляет потоки, контролируя, когда каждый поток запускается и сколько процессорного времени он получает. [95] Во время переключения контекста работающий поток приостанавливается, его состояние сохраняется в блоке и стеке управления потоками , а состояние нового потока загружается. [96] Исторически во многих системах поток мог выполняться до тех пор, пока не отказ от контроля ( кооперативная многозадачность ). Поскольку эта модель позволяет одному потоку монополизировать процессор, большинство операционных систем теперь могут прерывать поток ( вытесняющая многозадачность ). [97]

Потоки имеют собственный идентификатор потока, счетчик программ (ПК), набор регистров и стек , но совместно используют код, данные кучи и другие ресурсы с другими потоками того же процесса. [98] [99] Таким образом, на создание потока требуется меньше накладных расходов, чем на создание нового процесса. [100] В однопроцессорных системах параллелизм — это переключение между процессами. Многие компьютеры имеют несколько процессоров. [101] Параллелизм с несколькими потоками, выполняющимися на разных процессорах, может ускорить работу программы в зависимости от того, какая часть ее может выполняться одновременно. [102]

Файловая система

Файловые системы позволяют пользователям и программам организовывать и сортировать файлы на компьютере, часто с помощью каталогов (или папок).

Постоянные запоминающие устройства, используемые в компьютерах двадцать первого века, в отличие от энергозависимой динамической оперативной памяти (DRAM), по-прежнему доступны после сбоя или сбоя питания . Постоянное ( энергонезависимое ) хранилище обходится намного дешевле в расчете на байт, но для доступа, чтения и записи требуется на несколько порядков больше времени. [103] [104] Две основные технологии — это жесткий диск , состоящий из магнитных дисков , и флэш-память ( твердотельный накопитель , хранящий данные в электрических цепях). Последний дороже, но быстрее и долговечнее. [105] [106]

Файловые системы — это абстракция , используемая операционной системой для упрощения доступа к постоянному хранилищу. Они предоставляют удобочитаемые имена файлов и другие метаданные , повышают производительность за счет амортизации обращений, предотвращают доступ нескольких потоков к одному и тому же разделу памяти и включают контрольные суммы для выявления повреждений . [107] Файловые системы состоят из файлов (названных наборов данных произвольного размера) и каталогов (также называемых папками), в которых перечислены удобочитаемые имена файлов и других каталогов. [108] Абсолютный путь к файлу начинается с корневого каталога и перечисляет подкаталоги, разделенные знаками препинания, тогда как относительный путь определяет местоположение файла в каталоге. [109] [110]

Системные вызовы (которые иногда оборачиваются библиотеками) позволяют приложениям создавать, удалять, открывать и закрывать файлы, а также связывать их, читать и записывать в них. Все эти операции выполняются операционной системой от имени приложения. [111] Усилия операционной системы по сокращению задержки включают сохранение недавно запрошенных блоков памяти в кэше и предварительную выборку данных, которые приложение не запрашивало, но которые могут понадобиться в дальнейшем. [112] Драйверы устройств — это программное обеспечение, специфичное для каждого устройства ввода-вывода (I/O), которое позволяет операционной системе работать без изменений на различном оборудовании. [113] [114]

Другим компонентом файловых систем является словарь , который сопоставляет имя файла и метаданные с блоком данных , в котором хранится его содержимое. [115] Большинство файловых систем используют каталоги для преобразования имен файлов в номера файлов. Чтобы найти номер блока, операционная система использует индекс (часто реализованный в виде дерева ). [116] Отдельно существует карта свободного пространства для отслеживания свободных блоков, обычно реализуемая в виде растрового изображения . [116] Хотя для хранения нового файла можно использовать любой свободный блок, многие операционные системы стараются группировать файлы в одном каталоге, чтобы максимизировать производительность, или периодически реорганизовывать файлы, чтобы уменьшить фрагментацию . [117]

Еще одной проблемой является поддержание надежности данных в случае сбоя компьютера или аппаратного сбоя. [118] Протоколы записи файлов разработаны с использованием атомарных операций, чтобы не оставлять постоянное хранилище в частично записанном, противоречивом состоянии в случае сбоя на любом этапе записи. [119] Повреждение данных устраняется с помощью резервного хранилища (например, RAID — резервного массива недорогих дисков ) [120] [121] и контрольных сумм для обнаружения повреждения данных. Благодаря нескольким уровням контрольных сумм и резервным копиям файлов система может восстановиться после нескольких аппаратных сбоев. Фоновые процессы часто используются для обнаружения и восстановления поврежденных данных. [121]

Безопасность

Безопасность означает защиту пользователей от других пользователей того же компьютера, а также от тех, кто ищет к нему удаленный доступ по сети. [122] Безопасность операционных систем опирается на достижение триады ЦРУ : конфиденциальность (неавторизованные пользователи не могут получить доступ к данным), целостность (неавторизованные пользователи не могут изменять данные) и доступность (гарантия того, что система остается доступной для авторизованных пользователей даже в случае атака типа «отказ в обслуживании» ). [123] Как и в случае с другими компьютерными системами, изоляция доменов безопасности — в случае операционных систем, ядра, процессов и виртуальных машин — является ключом к достижению безопасности. [124] Другие способы повышения безопасности включают простоту минимизации поверхности атаки , блокировку доступа к ресурсам по умолчанию, проверку всех запросов на авторизацию, принцип наименьших полномочий (предоставление минимальных привилегий, необходимых для выполнения задачи), разделение привилегий и сокращение общие данные. [125]

Некоторые конструкции операционных систем более безопасны, чем другие. Те, у которых нет изоляции между ядром и приложениями, наименее безопасны, в то время как системы с монолитным ядром, как и большинство операционных систем общего назначения, по-прежнему уязвимы, если какая-либо часть ядра скомпрометирована. Более безопасная конструкция включает микроядра , которые разделяют привилегии ядра на множество отдельных доменов безопасности и уменьшают последствия единичного взлома ядра. [126] Unikernels — это еще один подход, который повышает безопасность за счет минимизации ядра и разделения функций других операционных систем по приложениям. [126]

Большинство операционных систем написаны на C или C++ , что создает потенциальные уязвимости для использования. Несмотря на попытки защиты от них, уязвимости вызваны атаками переполнения буфера , которые возможны из-за отсутствия проверки границ . [127] Уязвимости оборудования, некоторые из которых вызваны оптимизацией ЦП , также могут быть использованы для компрометации операционной системы. [128] Известны случаи, когда программисты операционных систем намеренно внедряли уязвимости, например бэкдоры . [129]

Безопасность операционных систем снижается из-за их возрастающей сложности и, как следствие, неизбежности ошибок. [130] Поскольку формальная проверка операционных систем может оказаться неосуществимой, разработчики используют усиление операционной системы для уменьшения уязвимостей, [131] например, рандомизацию структуры адресного пространства , целостность потока управления , [132] ограничения доступа , [133] и другие методы. [134] Нет никаких ограничений на то, кто может вносить код в операционные системы с открытым исходным кодом; такие операционные системы имеют прозрачную историю изменений и распределенные структуры управления. [135] Разработчики открытого исходного кода стремятся работать сообща над поиском и устранением уязвимостей безопасности, используя проверку кода и проверку типов для удаления вредоносного кода. [136] [137] Эндрю С. Таненбаум советует публиковать исходный код всех операционных систем, утверждая, что это не позволяет разработчикам доверять секретности и, таким образом, полагаться на ненадежную практику обеспечения безопасности за счет неизвестности . [138]

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

Пользовательский интерфейс (UI) необходим для поддержки взаимодействия человека с компьютером. Два наиболее распространенных типа пользовательского интерфейса для любого компьютера:

Для персональных компьютеров, включая смартфоны и планшетные компьютеры , а также для рабочих станций пользовательский ввод обычно осуществляется с помощью клавиатуры , мыши и трекпада или сенсорного экрана , все из которых подключены к операционной системе с помощью специализированного программного обеспечения. [139] Пользователи персональных компьютеров, которые не являются разработчиками программного обеспечения или программистами, часто предпочитают графические интерфейсы как для ввода, так и для вывода; Графические интерфейсы поддерживаются большинством персональных компьютеров. [140] Программное обеспечение для поддержки графических интерфейсов более сложное, чем командная строка для ввода и вывода обычного текста. Программисты часто предпочитают простой текстовый вывод, и его легко поддерживать. [141]

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

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

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

Примеры операционных систем для хобби включают Syllable и TempleOS .

Разнообразие операционных систем и портативность

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

Этих затрат на поддержку разнообразия операционных систем можно избежать, если вместо этого писать приложения для программных платформ , таких как Java или Qt . Эти абстракции уже понесли затраты на адаптацию к конкретным операционным системам и их системным библиотекам .

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

Доля рынка

Смотрите также

Примечания

  1. ^ Комбинация DOS/360 и программного обеспечения эмуляции была известна как совместимая операционная система (COS).
  2. ^ Однако ESPOL позволял исходным программам указывать все операции из репертуара инструкций.
  3. Bell Labs быстро вышла из состава, оставив GE и MIT.
  4. ^ Современные процессоры предоставляют инструкции (например, SYSENTER) для вызова выбранных служб ядра без прерываний. Посетите https://wiki.osdev.org/SYSENTER для получения дополнительной информации.
  5. ^ Примеры: SIGINT , SIGSEGV и SIGBUS .
  6. ^ часто в виде чипа DMA для небольших систем и каналов ввода-вывода для более крупных систем.
  7. ^ Современные материнские платы имеют контроллер DMA. Кроме того, устройство также может иметь один. Посетите протокол SCSI RDMA .
  8. ^ Существует несколько причин, по которым память может быть недоступна.
    • Возможно, адрес находится вне диапазона
    • Адрес может относиться к странице или сегменту, которые были перемещены в резервное хранилище.
    • Адрес может относиться к памяти, доступ к которой ограничен, например, из-за ключа , кольца .

Рекомендации

  1. ^ Столлингс (2005). Операционные системы, внутреннее устройство и принципы проектирования . Пирсон: Прентис Холл. п. 6.
  2. ^ Дотре, Айова (2009). Операционные системы . Технические публикации. п. 1.
  3. ^ ab «Доля рынка операционных систем для настольных компьютеров в мире» . Глобальная статистика StatCounter . Архивировано из оригинала 2 октября 2023 года . Проверено 3 октября 2023 г.
  4. ^ «Доля рынка операционных систем для мобильных и планшетов в мире» . Глобальная статистика StatCounter . Проверено 2 октября 2023 г.
  5. ^ «VII. Системы специального назначения - Концепции операционных систем, седьмое издание [Книга]» . www.oreilly.com . Архивировано из оригинала 13 июня 2021 года . Проверено 8 февраля 2021 г.
  6. ^ «Операционные системы специального назначения - Институт автоматизации сложных энергетических систем RWTH ААХЕНСКОГО УНИВЕРСИТЕТА - английский» . www.acs.eonerc.rwth-aachen.de . Архивировано из оригинала 14 июня 2021 года . Проверено 8 февраля 2021 г.
  7. ^ ab Tanenbaum & Bos 2023, с. 4.
  8. ^ Андерсон и Далин 2014, с. 6.
  9. ^ аб Зильбершац и др. 2018, с. 6.
  10. ^ abc Anderson & Dahlin 2014, с. 7.
  11. ^ Андерсон и Далин 2014, стр. 9–10.
  12. ^ Таненбаум и Бос 2023, стр. 6–7.
  13. ^ Андерсон и Далин 2014, с. 10.
  14. ^ Таненбаум и Бос 2023, с. 5.
  15. ^ abcd Андерсон и Далин 2014, с. 11.
  16. ^ Андерсон и Далин 2014, стр. 7, 9, 13.
  17. ^ Андерсон и Далин 2014, стр. 12–13.
  18. ^ Таненбаум и Бос 2023, с. 557.
  19. ^ Таненбаум и Бос 2023, с. 558.
  20. ^ ab Tanenbaum & Bos 2023, с. 565.
  21. ^ Таненбаум и Бос 2023, с. 562.
  22. ^ Таненбаум и Бос 2023, с. 563.
  23. ^ Таненбаум и Бос 2023, с. 569.
  24. ^ Таненбаум и Бос 2023, с. 571.
  25. ^ Таненбаум и Бос 2023, с. 579.
  26. ^ Таненбаум и Бос 2023, с. 581.
  27. ^ Таненбаум и Бос 2023, стр. 37–38.
  28. ^ Таненбаум и Бос 2023, с. 39.
  29. ^ abcd Tanenbaum & Bos 2023, с. 38.
  30. ^ Зильбершац и др. 2018, стр. 701.
  31. ^ Зильбершац и др. 2018, стр. 705.
  32. ^ Андерсон и Далин 2014, с. 12.
  33. ^ Аб Хансен, Пер Бринч, изд. (2001). Классические операционные системы. Спрингер. стр. 4–7. ISBN 0-387-95113-Х. Архивировано из оригинала 11 января 2023 года . Проверено 19 декабря 2020 г.
  34. ^ Рикман, Джордж (1960). «Язык работы компьютера». IRE-AIEE-ACM '60 (западный) : 341. doi : 10.1145/1460361.1460406. S2CID  30745551.
  35. ^ Лавингтон, Саймон (1998). История компьютеров в Манчестере (2-е изд.). Суиндон: Британское компьютерное общество. стр. 50–52. ISBN 978-1-902505-01-5.
  36. ^ Килберн, Т.; Пейн, РБ; Ховарт, ди-джей (декабрь 1961 г.). «Супервайзер Атласа». Институт инженеров-электриков : 279–294. дои : 10.1145/1460764.1460786. S2CID  16466990. Архивировано из оригинала 9 июня 2022 года . Проверено 17 июня 2022 г.
  37. ^ Бринч Хансен, Пер (2000). Классические операционные системы: от пакетной обработки к распределенным системам . Спрингер-Верлаг.
  38. ^ Исполнительная система EXEC I UNIVAC 1107 (PDF) (1-е изд.). Сперри Рэнд . УП-2577. Архивировано (PDF) из оригинала 15 июня 2022 года . Проверено 15 мая 2022 г.
  39. ^ Справочное руководство для программистов многопроцессорной системы UNIVAC Data Processing Division EXEC II (PDF) . Сперри Рэнд . 1966. УП-4058. Архивировано (PDF) из оригинала 15 июня 2022 года . Проверено 15 мая 2022 г.
  40. ^ Справочник программистов многопроцессорной операционной системы UNIVAC 1108 EXEC 8 (PDF) (ред. 1-е изд.). Сперри Рэнд . 1968. УП-4144. Архивировано (PDF) из оригинала 25 мая 2022 года . Проверено 15 мая 2022 г.
  41. ^ «Краткое справочное руководство по микропроцессорам Intel® — год» . Интел . Архивировано из оригинала 25 апреля 2016 года . Проверено 24 апреля 2016 г.
  42. ^ Ричи, Деннис. «Руководство Unix, первое издание». Люсент Технологии. Архивировано из оригинала 18 мая 2008 года . Проверено 22 ноября 2012 г.
  43. ^ «OS X Mountain Lion — продвиньте свой Mac еще дальше» . Яблоко. Архивировано из оригинала 23 мая 2011 года . Проверено 7 августа 2012 г.
  44. ^ «Объявлены услуги Openedition Services для MVS/ESA SP версии 4 выпуска 3 и доступности MVS/ESA SP версии 4 выпуска 3 с дополнительными улучшениями» . Информационные письма . ИБМ. 9 февраля 1993 г. 293-060 . Проверено 16 июля 2023 г.
  45. ^ Представляем OpenEdition MVS . Первое издание. ИБМ. Декабрь 1993 г. GC23-3010-00.
  46. ^ Документ соответствия OpenEdition MVS POSIX.1 . Первое издание. ИБМ. Февраль 1993 г. GC23-3011-00.
  47. ^ Документ соответствия OpenEdition MVS POSIX.2 . Первое издание. ИБМ. Декабрь 1993 г. GC23-3012-00.
  48. ^ «Двадцать лет Linux по мнению Линуса Торвальдса». ЗДНет. 13 апреля 2011 года. Архивировано из оригинала 19 сентября 2016 года . Проверено 19 сентября 2016 г.
  49. Линус Бенедикт Торвальдс (5 октября 1991 г.). «Бесплатные миникс-исходники ядра для 386-AT». Группа новостей : comp.os.minix. Архивировано из оригинала 2 марта 2013 года . Проверено 30 сентября 2011 г.
  50. ^ «Что такое Linux: обзор операционной системы Linux». Середина. 11 апреля 2020 г. Проверено 16 июля 2023 г.
  51. ^ Linux Online (2008). «Логотипы и талисманы Linux». Архивировано из оригинала 15 августа 2010 года . Проверено 11 августа 2009 г.
  52. ^ «Отчет IDC о доле рынка серверов» . Idc.com. Архивировано из оригинала 27 сентября 2012 года . Проверено 7 августа 2012 г.
  53. ^ Сотрудники LinuxDevices (23 апреля 2008 г.). «Linux по-прежнему является лучшей встраиваемой ОС». LinuxGizmos.com . Архивировано из оригинала 19 апреля 2016 года . Проверено 5 апреля 2016 г.
  54. ^ «Семейство операционных систем / Linux | TOP500» . www.top500.org . Проверено 30 июля 2023 г.
  55. ^ «Доля рынка операционных систем в мире, январь – декабрь 2022 г.» . 2022 . Проверено 4 ноября 2023 г.
  56. ^ «Доля рынка операционных систем для настольных компьютеров в мире, январь – декабрь 2022 г.» . 2022 . Проверено 4 ноября 2023 г.
  57. ^ «Устранение неполадок режима совместимости MS-DOS на жестких дисках» . Поддержка Майкрософт. Архивировано из оригинала 10 августа 2012 года . Проверено 7 августа 2012 г.
  58. ^ «Использование драйверов сетевой карты NDIS 2 PCMCIA в Windows 95» . Поддержка Майкрософт. Архивировано из оригинала 17 февраля 2013 года . Проверено 7 августа 2012 г.
  59. ^ «ИНФОРМАЦИЯ: Драйверы устройств Multimedia Wave для Windows 95 должны быть 16-разрядными» . Поддержка Майкрософт. Архивировано из оригинала 17 февраля 2013 года . Проверено 7 августа 2012 г.
  60. Артур, Чарльз (5 января 2011 г.). «Windows 8 будет работать на чипах ARM, но сторонние приложения придется переписывать». Хранитель . Архивировано из оригинала 12 октября 2016 года.
  61. ^ «Доля операционной системы по группам для сайтов во всех местах, январь 2009 г.» . Архивировано из оригинала 6 июля 2009 года . Проверено 3 мая 2010 г.
  62. ^ «За данными IDC: Windows по-прежнему № 1 среди серверных операционных систем» . ЗДНет . 26 февраля 2010 г. Архивировано из оригинала 1 марта 2010 г.
  63. ^ Аб Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3. Сигнал — это уведомление процесса о том, что произошло событие. Сигналы иногда называют программными прерываниями.
  64. ^ Хайд, Рэндалл (1996). «Глава семнадцатая: Прерывания, ловушки и исключения (Часть 1)». Искусство программирования на языке ассемблера . Нет крахмального пресса. Архивировано из оригинала 22 декабря 2021 года . Проверено 22 декабря 2021 г. Концепция прерывания с годами расширилась. Семейство 80x86 только усугубило путаницу вокруг прерываний, представив инструкцию int (программное прерывание). Действительно, разные производители использовали такие термины, как исключения, сбои, прерывания, ловушки и прерывания, для описания явлений, обсуждаемых в этой главе. К сожалению, нет четкого консенсуса относительно точного значения этих терминов. Разные авторы используют в своих целях разные термины.
  65. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 308. ИСБН 978-0-13-854662-5. Как и ловушка, прерывание останавливает работающую программу и передает управление обработчику прерывания, который выполняет соответствующее действие. По завершении обработчик прерывания возвращает управление прерванной программе.
  66. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN 978-0-201-50480-4. При возникновении прерывания (или ловушки) оборудование передает управление операционной системе. Во-первых, операционная система сохраняет состояние ЦП, сохраняя регистры и счетчик программ. Затем он определяет, какой тип прерывания произошел. Для каждого типа прерывания отдельные сегменты кода операционной системы определяют, какое действие следует предпринять.
  67. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 105. ИСБН 978-0-201-50480-4. Переключение ЦП на другой процесс требует сохранения состояния старого процесса и загрузки сохраненного состояния для нового процесса. Эта задача известна как переключение контекста.
  68. ^ abcde Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 31. ISBN 978-0-201-50480-4.
  69. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 30. ISBN 978-0-201-50480-4. Аппаратное обеспечение может вызвать прерывание в любой момент, отправив сигнал в ЦП, обычно через системную шину.
  70. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3. Сигналы аналогичны аппаратным прерываниям в том смысле, что они прерывают нормальный поток выполнения программы; в большинстве случаев невозможно точно предсказать, когда поступит сигнал.
  71. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3. Среди типов событий, которые заставляют ядро ​​генерировать сигнал для процесса, можно выделить следующие: Произошло программное событие. Например,... превышен лимит времени ЦП процесса[.]
  72. ^ abcde Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3.
  73. ^ «Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32» (PDF) . Корпорация Интел . Сентябрь 2016. с. 610. Архивировано (PDF) из оригинала 23 марта 2022 года . Проверено 5 мая 2022 г.
  74. ^ abc Бах, Морис Дж. (1986). Проект операционной системы UNIX . Прентис-Холл. п. 200. ИСБН 0-13-201799-7.
  75. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 400. ИСБН 978-1-59327-220-3.
  76. ^ аб Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 308. ИСБН 978-0-13-854662-5.
  77. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 182. ИСБН 978-0-201-50480-4.
  78. ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 153. ИСБН 0-201-12919-1.
  79. ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 148. ИСБН 0-201-12919-1.
  80. ^ аб Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 149. ИСБН 0-201-12919-1.
  81. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 292. ИСБН 978-0-13-854662-5.
  82. ^ IBM (сентябрь 1968 г.), «Основное хранилище» (PDF) , Принципы работы IBM System / 360 (PDF) , восьмое издание, стр. 7, заархивировано (PDF) из оригинала 19 марта 2022 г. , получено 13 апреля 2022 г.
  83. ^ аб Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 294. ИСБН 978-0-13-854662-5.
  84. ^ «Контроллер программных прерываний (PIC)» (PDF) . Руководство пользователя — PDP-7 (PDF) . Корпорация цифрового оборудования . 1965. С. 48. Ф-75. Архивировано (PDF) из оригинала 10 мая 2022 года . Проверено 20 апреля 2022 г.
  85. ^ Руководство по системам ввода-вывода PDP-1 (PDF) . Корпорация цифрового оборудования . стр. 19–20. Архивировано (PDF) из оригинала 25 января 2019 года . Проверено 16 августа 2022 г.
  86. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN 978-0-201-50480-4.
  87. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 34. ISBN 978-0-201-50480-4.
  88. ^ аб Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 295. ИСБН 978-0-13-854662-5.
  89. ^ аб Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 309. ИСБН 978-0-13-854662-5.
  90. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание. Прентис Холл. п. 310. ИСБН 978-0-13-854662-5.
  91. ^ Столлингс, Уильям (2008). Компьютерная организация и архитектура . Нью-Дели: Prentice-Hall of India Private Limited. п. 267. ИСБН 978-81-203-2962-1.
  92. ^ Андерсон и Далин 2014, с. 129.
  93. ^ Зильбершац и др. 2018, с. 159.
  94. ^ Андерсон и Далин 2014, с. 130.
  95. ^ Андерсон и Далин 2014, с. 131.
  96. ^ Андерсон и Далин 2014, стр. 157, 159.
  97. ^ Андерсон и Далин 2014, с. 139.
  98. ^ Зильбершац и др. 2018, с. 160.
  99. ^ Андерсон и Далин 2014, с. 183.
  100. ^ Зильбершац и др. 2018, с. 162.
  101. ^ Зильбершац и др. 2018, стр. 162–163.
  102. ^ Зильбершац и др. 2018, с. 164.
  103. ^ Андерсон и Далин 2014, стр. 492, 517.
  104. ^ Таненбаум и Бос 2023, стр. 259–260.
  105. ^ Андерсон и Далин 2014, стр. 517, 530.
  106. ^ Таненбаум и Бос 2023, с. 260.
  107. ^ Андерсон и Далин 2014, стр. 492–493.
  108. ^ Андерсон и Далин 2014, с. 496.
  109. ^ Андерсон и Далин 2014, стр. 496–497.
  110. ^ Таненбаум и Бос 2023, стр. 274–275.
  111. ^ Андерсон и Далин 2014, стр. 502–504.
  112. ^ Андерсон и Далин 2014, с. 507.
  113. ^ Андерсон и Далин 2014, с. 508.
  114. ^ Таненбаум и Бос 2023, с. 359.
  115. ^ Андерсон и Далин 2014, с. 545.
  116. ^ Аб Андерсон и Далин 2014, стр. 546.
  117. ^ Андерсон и Далин 2014, с. 547.
  118. ^ Андерсон и Далин 2014, стр. 589, 591.
  119. ^ Андерсон и Далин, 2014, стр. 591–592.
  120. ^ Таненбаум и Бос 2023, стр. 385–386.
  121. ^ Аб Андерсон и Далин 2014, стр. 592.
  122. ^ Таненбаум и Бос 2023, стр. 605–606.
  123. ^ Таненбаум и Бос 2023, с. 608.
  124. ^ Таненбаум и Бос 2023, с. 609.
  125. ^ Таненбаум и Бос 2023, стр. 609–610.
  126. ^ ab Tanenbaum & Bos 2023, с. 612.
  127. ^ Таненбаум и Бос 2023, стр. 648, 657.
  128. ^ Таненбаум и Бос 2023, стр. 668–669, 674.
  129. ^ Таненбаум и Бос 2023, стр. 679–680.
  130. ^ Таненбаум и Бос 2023, стр. 605, 617–618.
  131. ^ Таненбаум и Бос 2023, стр. 681–682.
  132. ^ Таненбаум и Бос 2023, с. 683.
  133. ^ Таненбаум и Бос 2023, с. 685.
  134. ^ Таненбаум и Бос 2023, с. 689.
  135. ^ Рише и Буайная, 2023, с. 92.
  136. ^ Richet & Bouaynaya 2023, стр. 92–93.
  137. ^ Бернтссо, Странден и Варг, 2017, стр. 130–131.
  138. ^ Таненбаум и Бос 2023, с. 611.
  139. ^ Таненбаум и Бос 2023, стр. 396, 402.
  140. ^ Таненбаум и Бос 2023, стр. 395, 408.
  141. ^ Таненбаум и Бос 2023, с. 402.
  142. Холверда, Том (20 декабря 2009 г.). «Моя ОС менее хобби, чем ваша». Новости ОС . Проверено 4 июня 2024 г.

дальнейшее чтение

Внешние ссылки