Операционная система
Операционные системы |
---|
Общие особенности |
Операционная система ( ОС ) — это системное программное обеспечение , которое управляет аппаратными и программными ресурсами компьютера, а также предоставляет общие службы для компьютерных программ .
с разделением времени Операционные системы планируют задачи для эффективного использования системы, а также могут включать в себя бухгалтерское программное обеспечение для распределения затрат на процессорное время , запоминающее устройство , периферийные устройства и другие ресурсы.
Для аппаратных функций, таких как ввод и вывод , а также распределение памяти , операционная система действует как посредник между программами и компьютерным оборудованием. [1] [2] хотя код приложения обычно выполняется непосредственно аппаратным обеспечением и часто выполняет системные вызовы функции ОС или прерывается ею. Операционные системы встречаются на многих устройствах, содержащих компьютер – от сотовых телефонов и игровых консолей до веб-серверов и суперкомпьютеров .
На рынке персональных компьютеров по состоянию на сентябрь 2023 г. [update]Microsoft Windows занимает доминирующую долю рынка, составляющую около 68%. macOS от Apple Inc. находится на втором месте (20%), а разновидности Linux находятся в совокупности на третьем месте (7%). [3] В мобильном секторе (включая смартфоны и планшеты ) по состоянию на сентябрь 2023 г. [update], доля 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]
- Операционные системы распределяют ресурсы между различными приложениями, решая, когда они получат центрального процессора время или пространство (ЦП) в памяти . [10] На современных персональных компьютерах пользователи часто хотят запускать несколько приложений одновременно. Чтобы гарантировать, что одна программа не сможет монополизировать ограниченные аппаратные ресурсы компьютера, операционная система предоставляет каждому приложению долю ресурса либо во времени (ЦП), либо в пространстве (память). [11] [12] Операционная система также должна изолировать приложения друг от друга, чтобы защитить их от ошибок и уязвимостей безопасности — это код другого приложения, но обеспечить связь между различными приложениями. [13]
- Операционные системы предоставляют интерфейс, который абстрагирует детали доступа к деталям оборудования (например, к физической памяти), чтобы упростить работу программистам. [10] [14] Виртуализация также позволяет операционной системе маскировать ограниченные аппаратные ресурсы; например, виртуальная память может создать программе иллюзию почти неограниченной памяти, превышающей реальную память компьютера. [15]
- Операционные системы предоставляют общие службы, такие как интерфейс для доступа к сетевым и дисковым устройствам. Это позволяет запускать приложение на другом оборудовании без необходимости его переписывания. [16] Какие службы включать в операционную систему, сильно различаются, и эта функциональность составляет большую часть кода для большинства операционных систем. [17]
Типы операционных систем
Мультикомпьютерные операционные системы
В мультипроцессорах несколько процессоров совместно используют память. Мультикомпьютер имеет или кластерный компьютер имеет несколько процессоров, каждый из которых собственную память . Мультикомпьютеры были разработаны потому, что большие мультипроцессоры сложны в разработке и непомерно дороги; [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). [ нужна полная цитата ]
В начале 1950-х годов компьютер мог одновременно выполнять только одну программу. Каждый пользователь имел единоличное пользование компьютером в течение ограниченного периода времени и приходил в назначенное время со своей программой и данными на перфокартах или перфоленте . Программа будет загружена в машину, и машина будет работать до тех пор, пока программа не завершится или не выйдет из строя . Программы обычно можно отлаживать через переднюю панель с помощью тумблеров и индикаторов панели. Говорят, что Алан Тьюринг был мастером в этом на ранней манчестерской машине Mark 1 , и он уже вывел примитивную концепцию операционной системы из принципов универсальной машины Тьюринга . [33]
Более поздние машины поставлялись с библиотеками программ, которые были связаны с программой пользователя для помощи в таких операциях, как ввод и вывод, а также компиляция (генерация машинного кода из удобочитаемого символического кода ). Так возникла современная операционная система. Однако машины по-прежнему выполняли одну работу одновременно. В Кембриджском университете в Англии очередь заданий когда-то представляла собой бельевую веревку, на которой висели ленты с прищепками разного цвета для обозначения приоритета работы. [ нужна ссылка ]
К концу 1950-х годов начали появляться программы, которые можно было бы назвать операционной системой. Самым ранним узнаваемым примером часто называют GM-NAA I/O , выпущенный в 1956 году на IBM 704 . Первым известным примером, который фактически относился сам к себе, была операционная система SHARE , развитие ввода-вывода GM-NAA, выпущенная в 1959 году. В статье от мая 1960 года, описывающей систему, Джордж Рикман отметил:
Развитие компьютерных операционных систем существенно помогло решить проблему эффективного включения и отключения программы или серии программ на компьютере. [34]
Одним из наиболее известных примеров, который часто встречается в обсуждениях ранних систем, является Atlas Supervisor , работавший на Atlas в 1962 году. [35] Это упоминалось как таковое в статье, описывающей систему в декабре 1961 года, но контекст «Операционной системы» больше похож на «система работает модно». Сама команда Атласа использовала термин «супервайзер». [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. [а] (Дисковая операционная система), 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 представлял собой стековую машину, предназначенную исключительно для поддержки языков высокого уровня без ассемблера; [б] действительно, MCP была первой ОС, написанной исключительно на языке высокого уровня ( ESPOL , диалект ALGOL ). MCP также представила множество других новаторских инноваций, таких как первая коммерческая реализация виртуальной памяти . MCP до сих пор используется в Unisys компании MCP/ClearPath линейке компьютеров .
UNIVAC , первый производитель коммерческих компьютеров, выпустил серию операционных систем EXEC. [38] [39] [40] Как и все ранние системы с мэйнфреймами, эта пакетно-ориентированная система управляла магнитными барабанами, дисками, устройствами считывания карт и линейными принтерами. В 1970-х годах UNIVAC разработала базовую систему реального времени (RTB) для поддержки крупномасштабного разделения времени, также созданную по образцу системы Дартмутской Британской Колумбии.
Компания General Electric разработала программу General Electric Comprehensive Operating Supervisor (GECOS), которая в основном поддерживала пакетную обработку. После приобретения компанией Honeywell она была переименована в General Comprehensive Operating System (GCOS).
Лаборатории Белла , [с] 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-х годов, побудили большинство производителей компьютеров продолжать разрабатывать совместимые операционные системы наряду с аппаратным обеспечением. Известные поддерживаемые операционные системы для мэйнфреймов включают:
- Burroughs MCP — B5000 , 1961 — Unisys Clearpath/MCP, настоящее время
- IBM OS/360 — от IBM System/360 , 1966 г. до IBM z/OS , настоящее время
- IBM CP-67 — IBM System/360 , 1967 — IBM z/VM , настоящее время
- UNIVAC EXEC 8 — UNIVAC 1108 , 1967, до OS 2200 Unisys Clearpath Dorado, настоящее время
Микрокомпьютеры
Самым ранним микрокомпьютерам не хватало мощности или требований для сложных операционных систем, используемых в мэйнфреймах и миникомпьютерах . Вместо этого они использовали минималистичные операционные системы, часто загружаемые из ПЗУ и называемые мониторами . Важной ранней дисковой операционной системой была CP/M , широко поддерживаемая многими ранними микрокомпьютерами. Microsoft близко имитировала CP/M со своей MS-DOS , которая получила широкую популярность в качестве операционной системы для IBM PC (версия IBM была известна как IBM DOS или PC DOS ).
В 1984 году Apple Computer представила Macintosh наряду со своими популярными микрокомпьютерами Apple II . Mac имел графический интерфейс пользователя , управляемый с помощью мыши. Он работал под управлением операционной системы, позже известной как (классическая) Mac OS .
Выпуск Intel 80286 процессора в феврале 1982 года с 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 была написана на языке ассемблера . [42] Кен Томпсон написал B , в основном на основе BCPL , основываясь на своем опыте работы в проекте MULTICS . B был заменен на C , а Unix, переписанная на C, превратилась в большое и сложное семейство взаимосвязанных операционных систем, которые оказали влияние на каждую современную операционную систему (см. Историю ).
Семейство Unix-подобных систем представляет собой разнообразную группу операционных систем, состоящую из нескольких основных подкатегорий, включая System V , BSD и Linux . Название « UNIX » является товарным знаком компании Open Group , которая лицензирует его для использования с любой операционной системой, которая соответствует их определениям. Термин «UNIX-подобный» обычно используется для обозначения большого набора операционных систем, напоминающих исходную UNIX.
Unix-подобные системы работают на самых разных компьютерных архитектурах . Они широко используются для серверов в бизнесе, а также для рабочих станций в академических и инженерных средах. бесплатные варианты UNIX, такие как Linux и BSD В этих областях популярны .
Пять операционных систем сертифицированы The Open Group (владелец торговой марки Unix) как Unix. от HP HP-UX от IBM и AIX являются потомками оригинальной System V Unix и предназначены для работы только на оборудовании соответствующего поставщика. Напротив, Sun Microsystems от Solaris может работать на различных типах оборудования, включая серверы x86 и SPARC , а также ПК. от Apple MacOS , замена более ранней (не Unix) классической Mac OS от Apple , представляет собой гибридный вариант BSD на основе ядра , полученный из NeXTSTEP , Mach и FreeBSD . IBM z/OS Системные службы UNIX включают оболочку и утилиты на основе продуктов InterOpen Мортиса Кернса .
Функциональная совместимость Unix была достигнута путем установления стандарта POSIX . Стандарт POSIX можно применять к любой операционной системе, хотя изначально он был создан для различных вариантов Unix.
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 версии 4, выпуска 3, анонсировано. системного продукта [44] Февраль 1993 г. с поддержкой POSIX и других стандартов. [45] [46] [47] z/OS Системные службы UNIX построены на основе служб MVS и не могут работать независимо. Хотя IBM изначально представила OpenEdition для удовлетворения требований FIPS , некоторые компоненты z/OS теперь требуют служб UNIX, например TCP/IP.
Линукс
Ядро 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 и Google от Android , ChromeOS и ChromiumOS .
Microsoft Windows
Microsoft Windows — это семейство проприетарных операционных систем, разработанных корпорацией Microsoft и ориентированных в первую очередь на компьютеры с архитектурой x86 . По состоянию на 2022 год [update], ее доля мирового рынка на всех платформах составила примерно 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] [д] Детали того, как компьютер обрабатывает прерывание, варьируются от архитектуры к архитектуре, а детали того, как ведут себя процедуры обслуживания прерываний, различаются от операционной системы. [68] Однако некоторые функции прерываний являются общими. [68] Архитектура и операционная система должны: [68]
- передать управление подпрограмме обслуживания прерываний.
- сохранить состояние текущего запущенного процесса.
- восстановить состояние после обслуживания прерывания.
Программное прерывание
Программное прерывание — это сообщение процессу о том , что произошло событие. [63] Это контрастирует с аппаратным прерыванием , которое представляет собой сообщение центральному процессору (ЦП) о том, что произошло событие. [69] Программные прерывания аналогичны аппаратным прерываниям — они отличаются от текущего процесса. [70] Аналогично, как аппаратные, так и программные прерывания выполняют процедуру обслуживания прерываний .
Программные прерывания могут быть обычными событиями. Ожидается, что произойдет квантование времени , поэтому ядру придется выполнить переключение контекста . [71] Компьютерная программа может установить таймер, который сработает через несколько секунд, если слишком большой объем данных приведет к тому, что алгоритм будет выполняться слишком долго. [72]
Программные прерывания могут быть вызваны ошибками, такими как неправильная машинная инструкция . [72] Однако наиболее распространенными ошибками являются деление на ноль и доступ к неверному адресу памяти . [72]
Пользователи могут отправлять сообщения ядру, чтобы изменить поведение текущего процесса. [72] Например, в среде командной строки нажатие символа прерывания (обычно Control-C ) может завершить текущий запущенный процесс. [72]
Для генерации программных прерываний для x86 процессоров INT . ассемблера доступна инструкция [73] Синтаксис: INT X
, где X
— номер смещения (в шестнадцатеричном формате) в таблице векторов прерываний .
Сигнал
Для генерации программных прерываний в Unix-подобных операционных системах kill(pid,signum)
системный вызов отправит сигнал другому процессу. [74] pid
— идентификатор процесса -получателя. signum
номер сигнала (в мнемоническом формате) [и] быть отправленным. (абразивное название kill
был выбран, потому что ранние реализации только завершали процесс.) [75]
В Unix-подобных операционных системах сигналы сообщают процессам о возникновении асинхронных событий. [74] Для асинхронного взаимодействия необходимы прерывания. [76] Одна из причин, по которой процессу необходимо асинхронно взаимодействовать с другим процессом, заключается в решении вариации классической проблемы чтения/записи . [77] Модуль записи получает канал от оболочки для отправки его вывода во входной поток устройства чтения. [78] командной строки : Синтаксис alpha | bravo
. alpha
запишет в канал, когда его вычисления будут готовы, а затем перейдет в очередь ожидания. [79] bravo
затем будет перемещен в очередь готовности и вскоре будет прочитан из своего входного потока. [80] Ядро будет генерировать программные прерывания для координации конвейерной обработки. [80]
Сигналы можно разделить на 7 категорий. [74] Категории:
- когда процесс завершается нормально.
- когда процесс имеет исключение ошибки.
- когда процессу не хватает системного ресурса.
- когда процесс выполняет недопустимую инструкцию.
- когда процесс устанавливает тревожное событие.
- когда процесс прерывается с клавиатуры.
- когда процесс имеет предупреждение трассировки для отладки.
Аппаратное прерывание
ввода/вывода (I/O) Устройства работают медленнее, чем ЦП. это замедлит работу компьютера Следовательно, если ЦП придется ждать завершения каждого ввода-вывода, . Вместо этого компьютер может реализовать прерывания для завершения ввода-вывода, избегая необходимости опроса или ожидания занятости. [81]
Некоторым компьютерам требуется прерывание для каждого символа или слова, что требует значительного количества процессорного времени. Прямой доступ к памяти (DMA) — это функция архитектуры, позволяющая устройствам обходить ЦП и напрямую обращаться к основной памяти . [82] (Отдельно от архитектуры устройство может осуществлять прямой доступ к памяти. [ф] в основную память и обратно напрямую или через шину.) [83] [г]
Ввод/вывод
Ввод-вывод, управляемый прерываниями
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( апрель 2022 г. ) |
Когда пользователь компьютера набирает клавишу на клавиатуре, обычно символ сразу появляется на экране. Аналогично, когда пользователь перемещает мышь , курсор немедленно перемещается по экрану. Каждое нажатие клавиши и движение мыши генерирует прерывание, называемое вводом-выводом, управляемым прерываниями . Ввод-вывод, управляемый прерываниями, происходит, когда процесс вызывает прерывание для каждого символа. [83] или слово [84] передано.
Прямой доступ к памяти
Такие устройства, как жесткие диски , твердотельные накопители и накопители на магнитной ленте , могут передавать данные с достаточно высокой скоростью, чтобы прерывать работу ЦП для каждого переданного байта или слова и заставлять ЦП передавать байт или слово между устройством и памятью. потребует слишком много процессорного времени. Вместо этого данные передаются между устройством и памятью независимо от ЦП с помощью аппаратного обеспечения, такого как канал или контроллер прямого доступа к памяти ; прерывание доставляется только тогда, когда все данные передаются. [85]
Если компьютерная программа выполняет системный вызов блока ввода-вывода для выполнения операции записи , то системный вызов может выполнить следующие инструкции:
- ЦП Установите содержимое регистров (включая счетчик программ ) в блок управления процессом . [86]
- Создайте запись в таблице состояний устройств. [87] Операционная система поддерживает эту таблицу, чтобы отслеживать, какие процессы и какие устройства ожидают. Одно поле в таблице представляет собой адрес памяти блока управления процессом.
- Поместите все символы, которые будут отправлены на устройство, в буфер памяти . [76]
- Установите адрес памяти буфера памяти в заранее определенный регистр устройства . [88]
- Установите размер буфера (целое число) в другой заранее определенный регистр. [88]
- Выполните машинную инструкцию, чтобы начать запись.
- Выполните переключение контекста на следующий процесс в очереди готовности .
Пока происходит запись, операционная система переключается на другие процессы в обычном режиме. Когда устройство завершит запись, оно прервет текущий процесс, отправив запрос на прерывание . Устройство также поместит целое число на шину данных. [89] Приняв запрос на прерывание, операционная система:
- Поместите содержимое счетчика программы (регистра), а затем регистра состояния, в стек вызовов . [68]
- Поместите содержимое других регистров в стек вызовов. (В качестве альтернативы содержимое регистров можно поместить в системную таблицу.) [89]
- Считайте целое число с шины данных. Целое число представляет собой смещение таблицы векторов прерываний . Тогда инструкции векторной таблицы будут:
- Доступ к таблице состояний устройств.
- Извлеките блок управления процессом.
- Выполните переключение контекста обратно в процесс записи.
процесса записи Когда время истечет, операционная система: [90]
- Извлеките из стека вызовов регистры, кроме регистра состояния и счетчика программ.
- Извлеките из стека вызовов регистр состояния.
- Извлеките из стека вызовов адрес следующей инструкции и установите его обратно в счетчик программы.
Теперь, когда счетчик программ сброшен, прерванный процесс возобновит свой временной интервал. [68]
Режимы привилегий
Современные компьютеры поддерживают несколько режимов работы. Процессоры с такой возможностью предлагают как минимум два режима: режим пользователя и режим супервизора . В общих чертах, работа в режиме супервизора обеспечивает неограниченный доступ ко всем ресурсам машины, включая все инструкции MPU. Работа в пользовательском режиме устанавливает ограничения на использование инструкций и обычно запрещает прямой доступ к ресурсам машины. Процессоры могут иметь и другие режимы, аналогичные пользовательскому режиму, например виртуальные режимы для эмуляции старых типов процессоров, таких как 16-битные процессоры на 32-битном или 32-битные процессоры на 64-битном .
При включении питания или перезагрузке система переходит в режим супервизора. операционной системы ядра После загрузки и запуска можно установить границу между режимом пользователя и режимом супервизора (также известным как режим ядра).
Режим супервизора используется ядром для задач низкого уровня, требующих неограниченного доступа к оборудованию, таких как контроль доступа к памяти и связь с такими устройствами, как дисководы и устройства отображения видео. Пользовательский режим, напротив, используется практически для всего остального. Прикладные программы, такие как текстовые процессоры и менеджеры баз данных, работают в пользовательском режиме и могут получить доступ к ресурсам машины только путем передачи управления ядру, что приводит к переключению в режим супервизора. Обычно передача управления ядру достигается путем выполнения инструкции программного прерывания , например Motorola 68000. TRAP
инструкция. Программное прерывание заставляет процессор переключаться из режима пользователя в режим супервизора и начинать выполнение кода, который позволяет ядру взять управление на себя.
В пользовательском режиме программы обычно имеют доступ к ограниченному набору инструкций процессора и, как правило, не могут выполнять какие-либо инструкции, которые потенциально могут привести к нарушению работы системы. В режиме супервизора ограничения на выполнение инструкций обычно снимаются, что позволяет ядру неограниченный доступ ко всем ресурсам машины.
Термин «ресурс пользовательского режима» обычно относится к одному или нескольким регистрам ЦП, которые содержат информацию, которую работающей программе не разрешено изменять. Попытки изменить эти ресурсы обычно приводят к переключению в режим супервизора, в котором операционная система может справиться с незаконной операцией, которую пыталась выполнить программа; например, принудительно завершив («уничтожив») программу.
Управление памятью
Помимо прочего, ядро мультипрограммной операционной системы должно отвечать за управление всей системной памятью, которая в данный момент используется программами. Это гарантирует, что программа не вмешивается в память, уже используемую другой программой. Поскольку программы разделяют время, каждая программа должна иметь независимый доступ к памяти.
Совместное управление памятью, использовавшееся во многих ранних операционных системах, предполагало, что все программы добровольно используют диспетчер памяти ядра и не превышают выделенную им память. Эту систему управления памятью почти никто больше не встречается, поскольку программы часто содержат ошибки, которые могут привести к превышению выделенной им памяти. Если программа выходит из строя, это может привести к тому, что память, используемая одной или несколькими другими программами, будет затронута или перезаписана. Вредоносные программы или вирусы могут намеренно изменять память другой программы или влиять на работу самой операционной системы. Благодаря совместному управлению памятью достаточно одной неправильно работающей программы, чтобы привести к сбою системы.
Защита памяти позволяет ядру ограничивать доступ процесса к памяти компьютера. Существуют различные методы защиты памяти, включая сегментацию памяти и подкачку . Все методы требуют определенного уровня аппаратной поддержки (например, MMU 80286 ), которая существует не на всех компьютерах.
Как при сегментации, так и при подкачке определенные регистры защищенного режима указывают ЦП, к какому адресу памяти он должен разрешить доступ работающей программе. Попытки доступа к другим адресам вызывают прерывание, которое заставляет ЦП повторно войти в режим супервизора , передавая управление ядру . Это называется нарушением сегментации или сокращенно Seg-V, и поскольку такой операции сложно присвоить значимый результат, а также поскольку это обычно является признаком неправильного поведения программы, ядро обычно прибегает к завершению программы-нарушителя. и сообщает об ошибке.
Windows версий от 3.1 до ME имел некоторый уровень защиты памяти, но программы могли легко обойти необходимость его использования. сегментации ; Будет выдан общий сбой защиты, указывающий на то, что произошло нарушение однако система все равно часто давала сбой.
Виртуальная память
Использование адресации виртуальной памяти (например, подкачки или сегментации) означает, что ядро может выбирать, какую память каждая программа может использовать в любой момент времени, что позволяет операционной системе использовать одни и те же области памяти для нескольких задач.
Если программа пытается получить доступ к памяти, которая недоступна [час] память, но тем не менее ей выделена, ядро прерывается . Прерывание такого типа обычно является ошибкой страницы .
Когда ядро обнаруживает ошибку страницы, оно обычно корректирует диапазон виртуальной памяти программы, вызвавшей ее, предоставляя ей доступ к запрошенной памяти. Это дает ядру дискреционную власть над тем, где хранится память конкретного приложения, и даже над тем, выделена ли она на самом деле или нет.
В современных операционных системах память, к которой обращаются реже, может быть временно сохранена на диске или другом носителе, чтобы сделать это пространство доступным для использования другими программами. Это называется свопингом , поскольку область памяти может использоваться несколькими программами, и то, что содержится в этой области памяти, может быть заменено или заменено по требованию.
Виртуальная память дает программисту или пользователю ощущение, что в компьютере гораздо больший объем оперативной памяти, чем на самом деле. [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] Безопасность операционных систем основывается на достижении триады CIA : конфиденциальность (неавторизованные пользователи не могут получить доступ к данным), целостность (неавторизованные пользователи не могут изменять данные) и доступность (гарантия того, что система остается доступной для авторизованных пользователей даже в случае отказа в обслуживании). атака ). [123] Как и в случае с другими компьютерными системами, изоляция доменов безопасности (в случае операционных систем, ядра, процессов и виртуальных машин ) является ключом к достижению безопасности. [124] Другие способы повышения безопасности включают простоту минимизации поверхности атаки , блокировку доступа к ресурсам по умолчанию, проверку всех запросов на авторизацию, принцип наименьших полномочий (предоставление минимальных привилегий, необходимых для выполнения задачи), разделение привилегий и сокращение общих данных. [125]
Некоторые конструкции операционных систем более безопасны, чем другие. Те, у которых нет изоляции между ядром и приложениями, наименее безопасны, в то время как системы с монолитным ядром , как и большинство операционных систем общего назначения, по-прежнему уязвимы, если какая-либо часть ядра скомпрометирована. Более безопасная конструкция включает микроядра , которые разделяют привилегии ядра на множество отдельных доменов безопасности и уменьшают последствия единичного взлома ядра. [126] Unikernels — это еще один подход, который повышает безопасность за счет минимизации ядра и разделения функций других операционных систем по приложениям. [126]
Большинство операционных систем написаны на C или C++ , что создает потенциальные уязвимости для использования. Несмотря на попытки защиты от них, уязвимости вызваны атаками переполнения буфера , которые возможны из-за отсутствия проверки границ . [127] Уязвимости оборудования, некоторые из которых вызваны оптимизацией ЦП , также могут быть использованы для компрометации операционной системы. [128] Известны случаи, когда программисты операционных систем намеренно внедряли уязвимости, например бэкдоры . [129]
Безопасность операционных систем снижается из-за их возрастающей сложности и, как следствие, неизбежности ошибок. [130] Поскольку формальная проверка операционных систем может оказаться неосуществимой, разработчики используют усиление операционной системы для уменьшения уязвимостей. [131] например, рандомизация структуры адресного пространства , целостность потока управления , [132] ограничения доступа , [133] и другие техники. [134] Нет никаких ограничений на то, кто может вносить код в операционные системы с открытым исходным кодом; такие операционные системы имеют прозрачную историю изменений и распределенные структуры управления. [135] Разработчики открытого исходного кода стремятся работать сообща над поиском и устранением уязвимостей безопасности, используя проверку кода и проверку типов для удаления вредоносного кода. [136] [137] Эндрю С. Таненбаум советует публиковать исходный код всех операционных систем, утверждая, что это не позволяет разработчикам доверять секретности и, таким образом, полагаться на ненадежную практику обеспечения безопасности посредством неизвестности . [138]
Пользовательский интерфейс
( Пользовательский интерфейс UI) необходим для поддержки взаимодействия человека с компьютером. Два наиболее распространенных типа пользовательского интерфейса для любого компьютера:
- интерфейс командной строки , где компьютерные команды вводятся построчно,
- графический пользовательский интерфейс (GUI), использующий визуальную среду, чаще всего комбинацию элементов окна, значка, меню и указателя, также известную как WIMP .
Для персональных компьютеров, включая смартфоны и планшетные компьютеры , а также для рабочих станций пользовательский ввод обычно осуществляется с помощью клавиатуры , мыши и трекпада или сенсорного экрана , все из которых подключены к операционной системе с помощью специализированного программного обеспечения. [139] Пользователи персональных компьютеров, которые не являются разработчиками программного обеспечения или программистами, часто предпочитают графические интерфейсы как для ввода, так и для вывода; Графические интерфейсы поддерживаются большинством персональных компьютеров. [140] Программное обеспечение для поддержки графических интерфейсов более сложное, чем командная строка для ввода и вывода в виде обычного текста. Программисты часто предпочитают простой текстовый вывод, и его легко поддерживать. [141]
Разработка операционных систем как хобби
Операционную систему для хобби можно классифицировать как систему, код которой не был напрямую получен из существующей операционной системы, и у которой мало пользователей и активных разработчиков. [142]
В некоторых случаях хобби-разработки заключаются в поддержке « доморощенного » вычислительного устройства, например, простого одноплатного компьютера на базе микропроцессора 6502 . Или же разработка может вестись для архитектуры, которая уже широко используется. Разработка операционной системы может исходить из совершенно новых концепций или может начинаться с моделирования существующей операционной системы. В любом случае любитель является собственным разработчиком или может взаимодействовать с небольшой, а иногда и неструктурированной группой людей, имеющих схожие интересы.
Примеры операционных систем для хобби включают Syllable и TempleOS .
Разнообразие операционных систем и портативность
Если приложение написано для использования в определенной операционной системе и перенесено на другую ОС, функциональность, требуемая этим приложением, может быть реализована в этой ОС по-разному (имена функций, значение аргументов и т. д.), что требует от приложения быть адаптированы, изменены или иным образом сохранены .
Этих затрат на поддержку разнообразия операционных систем можно избежать, если вместо этого писать приложения для программных платформ, таких как Java или Qt . Эти абстракции уже понесли затраты на адаптацию к конкретным операционным системам и их системным библиотекам .
Другой подход заключается в том, чтобы поставщики операционных систем приняли стандарты. Например, уровни абстракции POSIX и ОС обеспечивают общность, которая снижает затраты на перенос.
Доля рынка
См. также
- Сравнение операционных систем
- Сбой (вычисления)
- ДБОС
- Гипервизор
- Прерываемая операционная система
- Список операционных систем
- Список пионеров информатики
- Живой компакт-диск
- Глоссарий терминов операционных систем
- Микроконтроллер
- Мобильное устройство
- Мобильная операционная система
- Сетевая операционная система
- Объектно-ориентированная операционная система
- Проекты операционных систем
- Системный командир
- Образ системы
- Хронология операционных систем
Примечания
- ^ Комбинация DOS/360 и программного обеспечения эмуляции была известна как совместимая операционная система (COS).
- ^ Однако ESPOL позволял исходным программам указывать все операции из репертуара инструкций.
- ↑ Bell Labs быстро вышла из состава, оставив GE и MIT.
- ^ Современные процессоры предоставляют инструкции (например, SYSENTER) для вызова выбранных служб ядра без прерываний. Посетите https://wiki.osdev.org/SYSENTER для получения дополнительной информации.
- ^ Примеры: SIGINT , SIGSEGV и SIGBUS .
- ^ часто в виде чипа DMA для небольших систем и каналов ввода-вывода для более крупных систем.
- ^ Современные материнские платы имеют контроллер DMA. Кроме того, устройство также может иметь один. Посетите протокол SCSI RDMA .
- ^ Существует несколько причин, по которым память может быть недоступна.
- Возможно, адрес находится вне диапазона
- Адрес может относиться к странице или сегменту, которые были перемещены в резервное хранилище.
- Адрес может относиться к памяти, доступ к которой ограничен, например, из-за ключа , кольца .
Ссылки
- ^ Столлингс (2005). Операционные системы, внутреннее устройство и принципы проектирования . Пирсон: Прентис Холл. п. 6.
- ^ Дотре, Айова (2009). Операционные системы . Технические публикации. п. 1.
- ^ Перейти обратно: а б «Доля рынка настольных операционных систем в мире» . Глобальная статистика StatCounter . Архивировано из оригинала 2 октября 2023 года . Проверено 3 октября 2023 г.
- ^ «Доля операционных систем для мобильных и планшетов в мире» . Глобальная статистика StatCounter . Проверено 2 октября 2023 г.
- ^ «VII. Системы специального назначения. Концепции операционных систем, седьмое издание [Книга]» . www.oreilly.com . Архивировано из оригинала 13 июня 2021 года . Проверено 8 февраля 2021 г.
- ^ «Операционные системы специального назначения - Институт автоматизации сложных энергосистем RWTH ACHEN UNIVERSITY - английский» . www.acs.eonerc.rwth-aachen.de . Архивировано из оригинала 14 июня 2021 года . Проверено 8 февраля 2021 г.
- ^ Перейти обратно: а б Таненбаум и Бос 2023 , с. 4.
- ^ Андерсон и Далин 2014 , стр. 6.
- ^ Перейти обратно: а б Зильбершац и др. 2018 , с. 6.
- ^ Перейти обратно: а б с Андерсон и Далин 2014 , стр. 7.
- ^ Андерсон и Далин 2014 , стр. 9–10.
- ^ Таненбаум и Бос 2023 , стр. 6–7.
- ^ Андерсон и Далин 2014 , стр. 10.
- ^ Таненбаум и Бос 2023 , с. 5.
- ^ Перейти обратно: а б с д Андерсон и Далин 2014 , стр. 11.
- ^ Андерсон и Далин 2014 , стр. 7, 9, 13.
- ^ Андерсон и Далин 2014 , стр. 12–13.
- ^ Таненбаум и Бос 2023 , с. 557.
- ^ Таненбаум и Бос 2023 , с. 558.
- ^ Перейти обратно: а б Таненбаум и Бос 2023 , с. 565.
- ^ Таненбаум и Бос 2023 , с. 562.
- ^ Таненбаум и Бос 2023 , с. 563.
- ^ Таненбаум и Бос 2023 , с. 569.
- ^ Таненбаум и Бос 2023 , с. 571.
- ^ Таненбаум и Бос 2023 , с. 579.
- ^ Таненбаум и Бос 2023 , с. 581.
- ^ Таненбаум и Бос 2023 , стр. 37–38.
- ^ Таненбаум и Бос 2023 , с. 39.
- ^ Перейти обратно: а б с д Таненбаум и Бос 2023 , с. 38.
- ^ Зильбершац и др. 2018 , стр. 701.
- ^ Зильбершац и др. 2018 , стр. 705.
- ^ Андерсон и Далин 2014 , стр. 12.
- ^ Перейти обратно: а б Хансен, Пер Бринч, изд. (2001). Классические операционные системы . Спрингер. стр. 4–7. ISBN 0-387-95113-Х . Архивировано из оригинала 11 января 2023 года . Проверено 19 декабря 2020 г.
- ^ Рикман, Джордж (1960). «Язык работы компьютера» . IRE-AIEE-ACM '60 (западный) : 341. doi : 10.1145/1460361.1460406 . S2CID 30745551 .
- ^ Лавингтон, Саймон (1998). История компьютеров в Манчестере (2-е изд.). Суиндон: Британское компьютерное общество. стр. 50–52. ISBN 978-1-902505-01-5 .
- ^ Килберн, Т.; Пейн, РБ; Ховарт, ди-джей (декабрь 1961 г.). «Супервайзер Атласа» . Институт инженеров-электриков : 279–294. дои : 10.1145/1460764.1460786 . S2CID 16466990 . Архивировано из оригинала 9 июня 2022 года . Проверено 17 июня 2022 г.
- ^ Бринч Хансен, Пер (2000). Классические операционные системы: от пакетной обработки к распределенным системам . Спрингер-Верлаг.
- ^ Исполнительная система EXEC I UNIVAC 1107 (PDF) (1-е изд.). Сперри Рэнд . УП-2577. Архивировано (PDF) из оригинала 15 июня 2022 года . Проверено 15 мая 2022 г.
- ^ Справочное руководство для программистов многопроцессорной системы UNIVAC Data Processing Division EXEC II (PDF) . Сперри Рэнд . 1966. УП-4058. Архивировано (PDF) из оригинала 15 июня 2022 года . Проверено 15 мая 2022 г.
- ^ Справочник программистов многопроцессорной системы UNIVAC 1108 EXEC 8 (PDF) (первая редакция). Сперри Рэнд . 1968. УП-4144. Архивировано (PDF) из оригинала 25 мая 2022 года . Проверено 15 мая 2022 г.
- ^ «Краткое справочное руководство по микропроцессорам Intel® — год» . Интел . Архивировано из оригинала 25 апреля 2016 года . Проверено 24 апреля 2016 г.
- ^ Ричи, Деннис. «Руководство Unix, первое издание» . Люсент Технологии. Архивировано из оригинала 18 мая 2008 года . Проверено 22 ноября 2012 г.
- ^ «OS X Mountain Lion – продвиньте свой Mac еще дальше» . Яблоко. Архивировано из оригинала 23 мая 2011 года . Проверено 7 августа 2012 г.
- ^ «Объявлены услуги Openedition для MVS/ESA SP версии 4 выпуска 3 и доступность MVS/ESA SP версии 4 выпуска 3 с дополнительными улучшениями» . Информационные письма . ИБМ. 9 февраля 1993 г. 293-060 . Проверено 16 июля 2023 г.
- ^ Представляем OpenEdition MVS . Первое издание. ИБМ. Декабрь 1993 г. GC23-3010-00.
- ^ Документ соответствия OpenEdition MVS POSIX.1 . Первое издание. ИБМ. Февраль 1993 г. GC23-3011-00.
- ^ Документ соответствия OpenEdition MVS POSIX.2 . Первое издание. ИБМ. Декабрь 1993 г. GC23-3012-00.
- ^ «Двадцать лет Linux по мнению Линуса Торвальдса» . ЗДНет. 13 апреля 2011 года. Архивировано из оригинала 19 сентября 2016 года . Проверено 19 сентября 2016 г.
- ^ Линус Бенедикт Торвальдс (5 октября 1991 г.). «Бесплатные миникс-подобные исходники ядра для 386-AT» . Группа новостей : comp.os.minix . Архивировано из оригинала 2 марта 2013 года . Проверено 30 сентября 2011 г.
- ^ «Что такое Linux: обзор операционной системы Linux» . Середина. 11 апреля 2020 г. Проверено 16 июля 2023 г.
- ^ Линукс Онлайн (2008). «Логотипы и талисманы Linux» . Архивировано из оригинала 15 августа 2010 года . Проверено 11 августа 2009 г.
- ^ «Отчет IDC о доле рынка серверов» . Idc.com. Архивировано из оригинала 27 сентября 2012 года . Проверено 7 августа 2012 г.
- ^ Персонал LinuxDevices (23 апреля 2008 г.). «Linux по-прежнему является лучшей встраиваемой ОС» . LinuxGizmos.com . Архивировано из оригинала 19 апреля 2016 года . Проверено 5 апреля 2016 г.
- ^ «Семейство операционных систем/Linux | ТОП500» . www.top500.org . Проверено 30 июля 2023 г.
- ^ «Доля рынка операционных систем в мире, январь – декабрь 2022 г.» . 2022 . Проверено 4 ноября 2023 г.
- ^ «Доля рынка операционных систем для настольных компьютеров в мире, январь – декабрь 2022 г.» . 2022 . Проверено 4 ноября 2023 г.
- ^ «Устранение неполадок режима совместимости MS-DOS на жестких дисках» . Поддержка Майкрософт. Архивировано из оригинала 10 августа 2012 года . Проверено 7 августа 2012 г.
- ^ «Использование драйверов сетевой карты NDIS 2 PCMCIA в Windows 95» . Поддержка Майкрософт. Архивировано из оригинала 17 февраля 2013 года . Проверено 7 августа 2012 г.
- ^ «ИНФОРМАЦИЯ: Драйверы устройств Multimedia Wave для Windows 95 должны быть 16-разрядными» . Поддержка Майкрософт. Архивировано из оригинала 17 февраля 2013 года . Проверено 7 августа 2012 г.
- ^ Артур, Чарльз (5 января 2011 г.). « Windows 8» будет работать на чипах ARM, но сторонние приложения придется переписать» . Хранитель . Архивировано из оригинала 12 октября 2016 года.
- ^ «Распределение операционных систем по группам для сайтов во всех местоположениях, январь 2009 г.» . Архивировано из оригинала 6 июля 2009 года . Проверено 3 мая 2010 г.
- ^ «По данным IDC: Windows по-прежнему №1 среди серверных операционных систем» . ЗДНет . 26 февраля 2010 г. Архивировано из оригинала 1 марта 2010 г.
- ^ Перейти обратно: а б Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3 .
Сигнал — это уведомление процесса о том, что произошло событие. Сигналы иногда называют программными прерываниями.
- ^ Хайд, Рэндалл (1996). «Глава семнадцатая: Прерывания, ловушки и исключения (Часть 1)» . Искусство программирования на языке ассемблера . Нет крахмального пресса. Архивировано из оригинала 22 декабря 2021 года . Проверено 22 декабря 2021 г.
Концепция прерывания с годами расширилась. Семейство 80x86 только усугубило путаницу вокруг прерываний, представив инструкцию int (программное прерывание). Действительно, разные производители использовали такие термины, как исключения, сбои, прерывания, ловушки и прерывания, для описания явлений, обсуждаемых в этой главе. К сожалению, нет четкого консенсуса относительно точного значения этих терминов. Разные авторы используют в своих целях разные термины.
- ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 308 . ISBN 978-0-13-854662-5 .
Как и ловушка, прерывание останавливает работающую программу и передает управление обработчику прерывания, который выполняет соответствующее действие. По завершении обработчик прерывания возвращает управление прерванной программе.
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN 978-0-201-50480-4 .
При возникновении прерывания (или ловушки) оборудование передает управление операционной системе. Во-первых, операционная система сохраняет состояние ЦП, сохраняя регистры и счетчик программ. Затем он определяет, какой тип прерывания произошел. Для каждого типа прерывания отдельные сегменты кода операционной системы определяют, какое действие следует предпринять.
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 105. ИСБН 978-0-201-50480-4 .
Переключение ЦП на другой процесс требует сохранения состояния старого процесса и загрузки сохраненного состояния для нового процесса. Эта задача известна как переключение контекста.
- ^ Перейти обратно: а б с д и Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 31. ISBN 978-0-201-50480-4 .
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 30. ISBN 978-0-201-50480-4 .
Аппаратное обеспечение может вызвать прерывание в любой момент, отправив сигнал в ЦП, обычно через системную шину.
- ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3 .
Сигналы аналогичны аппаратным прерываниям в том смысле, что они прерывают нормальный поток выполнения программы; в большинстве случаев невозможно точно предсказать, когда поступит сигнал.
- ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3 .
Среди типов событий, которые заставляют ядро генерировать сигнал для процесса, можно выделить следующие: Произошло программное событие. Например,... превышен лимит времени ЦП процесса[.]
- ^ Перейти обратно: а б с д и Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН 978-1-59327-220-3 .
- ^ «Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32» (PDF) . Корпорация Интел . Сентябрь 2016. с. 610. Архивировано (PDF) из оригинала 23 марта 2022 года . Проверено 5 мая 2022 г.
- ^ Перейти обратно: а б с Бах, Морис Дж. (1986). Проект операционной системы UNIX . Прентис-Холл. п. 200. ИСБН 0-13-201799-7 .
- ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 400. ИСБН 978-1-59327-220-3 .
- ^ Перейти обратно: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 308 . ISBN 978-0-13-854662-5 .
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 182. ИСБН 978-0-201-50480-4 .
- ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 153. ИСБН 0-201-12919-1 .
- ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 148. ИСБН 0-201-12919-1 .
- ^ Перейти обратно: а б Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 149. ИСБН 0-201-12919-1 .
- ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 292 . ISBN 978-0-13-854662-5 .
- ^ IBM (сентябрь 1968 г.), «Основное хранилище» (PDF) , Принципы работы IBM System / 360 (PDF) , восьмое издание, стр. 7, заархивировано (PDF) из оригинала 19 марта 2022 г. , получено 13 апреля 2022 г.
- ^ Перейти обратно: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 294 . ISBN 978-0-13-854662-5 .
- ^ «Контроллер программных прерываний (PIC)» (PDF) . Руководство пользователя — PDP-7 (PDF) . Корпорация цифрового оборудования . 1965. С. 48 . Ф-75. Архивировано (PDF) из оригинала 10 мая 2022 года . Проверено 20 апреля 2022 г.
- ^ Руководство по системам ввода-вывода PDP-1 (PDF) . Корпорация цифрового оборудования . стр. 19–20. Архивировано (PDF) из оригинала 25 января 2019 года . Проверено 16 августа 2022 г.
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN 978-0-201-50480-4 .
- ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 34. ISBN 978-0-201-50480-4 .
- ^ Перейти обратно: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 295 . ISBN 978-0-13-854662-5 .
- ^ Перейти обратно: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 309 . ISBN 978-0-13-854662-5 .
- ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 310 . ISBN 978-0-13-854662-5 .
- ^ Столлингс, Уильям (2008). Компьютерная организация и архитектура . Нью-Дели: Prentice-Hall of India Private Limited. п. 267. ИСБН 978-81-203-2962-1 .
- ^ Андерсон и Далин 2014 , стр. 129.
- ^ Зильбершац и др. 2018 , с. 159.
- ^ Андерсон и Далин 2014 , стр. 130.
- ^ Андерсон и Далин 2014 , стр. 131.
- ^ Андерсон и Далин 2014 , стр. 157, 159.
- ^ Андерсон и Далин 2014 , стр. 139.
- ^ Зильбершац и др. 2018 , с. 160.
- ^ Андерсон и Далин 2014 , стр. 183.
- ^ Зильбершац и др. 2018 , с. 162.
- ^ Зильбершац и др. 2018 , стр. 162–163.
- ^ Зильбершац и др. 2018 , с. 164.
- ^ Андерсон и Далин 2014 , стр. 492, 517.
- ^ Таненбаум и Бос 2023 , стр. 259–260.
- ^ Андерсон и Далин 2014 , стр. 517, 530.
- ^ Таненбаум и Бос 2023 , с. 260.
- ^ Андерсон и Далин 2014 , стр. 492–493.
- ^ Андерсон и Далин 2014 , стр. 496.
- ^ Андерсон и Далин 2014 , стр. 496–497.
- ^ Таненбаум и Бос 2023 , стр. 274–275.
- ^ Андерсон и Далин 2014 , стр. 502–504.
- ^ Андерсон и Далин 2014 , стр. 507.
- ^ Андерсон и Далин 2014 , стр. 508.
- ^ Таненбаум и Бос 2023 , с. 359.
- ^ Андерсон и Далин 2014 , стр. 545.
- ^ Перейти обратно: а б Андерсон и Далин 2014 , стр. 546.
- ^ Андерсон и Далин 2014 , стр. 547.
- ^ Андерсон и Далин 2014 , стр. 589, 591.
- ^ Андерсон и Далин 2014 , стр. 591–592.
- ^ Таненбаум и Бос 2023 , стр. 385–386.
- ^ Перейти обратно: а б Андерсон и Далин 2014 , стр. 592.
- ^ Таненбаум и Бос 2023 , стр. 605–606.
- ^ Таненбаум и Бос 2023 , с. 608.
- ^ Таненбаум и Бос 2023 , с. 609.
- ^ Таненбаум и Бос 2023 , стр. 609–610.
- ^ Перейти обратно: а б Таненбаум и Бос 2023 , с. 612.
- ^ Таненбаум и Бос 2023 , стр. 648, 657.
- ^ Таненбаум и Бос 2023 , стр. 668–669, 674.
- ^ Таненбаум и Бос 2023 , стр. 679–680.
- ^ Таненбаум и Бос 2023 , стр. 605, 617–618.
- ^ Таненбаум и Бос 2023 , стр. 681–682.
- ^ Таненбаум и Бос 2023 , с. 683.
- ^ Таненбаум и Бос 2023 , с. 685.
- ^ Таненбаум и Бос 2023 , с. 689.
- ^ Рише и Буайная, 2023 , с. 92.
- ^ Рише и Буайная, 2023 , стр. 92–93.
- ^ Бернтссо, Странден и Варг, 2017 , стр. 130–131.
- ^ Таненбаум и Бос 2023 , с. 611.
- ^ Таненбаум и Бос 2023 , стр. 396, 402.
- ^ Таненбаум и Бос 2023 , стр. 395, 408.
- ^ Таненбаум и Бос 2023 , с. 402.
- ^ Холверда, Том (20 декабря 2009 г.). «Моя ОС менее хобби, чем ваша» . Новости ОС . Проверено 4 июня 2024 г.
Дальнейшее чтение
- Андерсон, Томас ; Далин, Майкл (2014). Операционные системы: принципы и практика . Рекурсивные книги. ISBN 978-0-9856735-2-9 .
- Ауслендер, Массачусетс; Ларкин, округ Колумбия; Шерр, Ал. (сентябрь 1981 г.). «Эволюция операционной системы MVS». Журнал исследований и разработок IBM . 25 (5): 471–482. дои : 10.1147/rd.255.0471 . ISSN 0018-8646 .
- Бернтссон, Петтер Сайнио; Странден, Ларс; Варг, Фредрик (2017). Оценка операционных систем с открытым исходным кодом для приложений, критически важных для безопасности . Международное издательство Спрингер. стр. 117–132. ISBN 978-3-319-65948-0 .
- Дейтел, Харви М.; Дейтел, Пол; Чоффнес, Дэвид (25 декабря 2015 г.). Операционные системы . Пирсон/Прентис Холл. ISBN 978-0-13-092641-8 .
- Бик, Любомур Ф.; Шоу, Алан С. (2003). Операционные системы . Пирсон: Прентис Холл .
- Зильбершац, Ави; Гэлвин, Питер; Ганье, Грег (2008). Концепции операционных систем . Джон Уайли и сыновья . ISBN 978-0-470-12872-5 .
- О'Брайен, Дж. А., и Маракас, генеральный директор (2011). Информационные системы управления . 10е. МакГроу-Хилл Ирвин.
- Лева, Альберто; Мэй, Мартина; Пападопулос, Александр Виктор; Терранео, Федерико (2013). Проектирование операционной системы, основанной на управлении . ИЭПП . ISBN 978-1-84919-609-3 .
- Арпачи-Дюссо, Ремзи; Арпаси-Дюссо, Андреа (2015). Операционные системы: три простых элемента . Архивировано из оригинала 25 июля 2016 года . Проверено 25 июля 2016 г.
- Рише, Жан-Лу; Буайная, Вафа (2023). «Понимание и управление сложными уязвимостями программного обеспечения: эмпирический анализ операционных систем с открытым исходным кодом» . Системы информации и управления . 28 (1): 87–114. doi : 10.54695/sim.28.1.0087 (неактивен 13 июня 2024 г.).
{{cite journal}}
: CS1 maint: DOI неактивен по состоянию на июнь 2024 г. ( ссылка ) - Зильбершац, Авраам; Гэлвин, Питер Б.; Ганье, Грег (2018). Концепции операционной системы (10-е изд.). Уайли. ISBN 978-1-119-32091-3 .
- Таненбаум, Эндрю С.; Бос, Герберт (2023). Современные операционные системы, глобальное издание . Пирсон Высшее Эд. ISBN 978-1-292-72789-9 .
Внешние ссылки
- Операционные системы в Curlie
- Multics History и история операционных систем