Jump to content

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

Страница полузащищенная

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

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

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

На рынке персональных компьютеров по состоянию на сентябрь 2023 г. Microsoft Windows занимает доминирующую долю рынка, составляющую около 68%. macOS от Apple Inc. находится на втором месте (20%), а разновидности Linux , включая ChromeOS , в совокупности находятся на третьем месте (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]

  • Операционные системы распределяют ресурсы между различными приложениями, решая, когда они получат центрального процессора время или пространство (ЦП) в памяти . [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]

История

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

Первые компьютеры в конце 1940-х и 1950-х годах программировались напрямую либо с помощью коммутационных панелей , либо с помощью машинного кода, вводимого на такие носители, как перфокарты , без языков программирования или операционных систем. [33] После появления транзисторов в середине 1950-х годов мейнфреймы начали строить . Им по-прежнему нужны были профессиональные операторы [33] но имел элементарные операционные системы, такие как Fortran Monitor System (FMS) и IBSYS . [34] В 1960-х годах IBM представила первую серию совместимых компьютеров ( System/360 ). Все они использовали одну и ту же операционную систему — OS/360 , состоящую из миллионов строк ассемблера и тысяч ошибок . OS/360 также была первой популярной операционной системой, поддерживавшей мультипрограммирование , то есть процессор мог использоваться для выполнения одного задания, в то время как другой ожидал ввода/вывода (I/O). Хранение нескольких заданий в памяти требовало разделения памяти и защиты от доступа одного задания к памяти, выделенной для другого. [35]

Примерно в то же время были изобретены терминалы , позволяющие нескольким пользователям одновременно получить доступ к компьютеру. Операционная система MULTICS была предназначена для того, чтобы дать возможность сотням пользователей получить доступ к большому компьютеру. Несмотря на ограниченное распространение, его можно считать предшественником облачных вычислений . Операционная система UNIX возникла как развитие MULTICS для одного пользователя. [36] UNIX Поскольку исходный код был доступен, он стал основой других, несовместимых операционных систем, из которых наиболее успешными были AT&T от System V и (BSD) Калифорнийского университета Berkeley Software Distribution . [37] Для повышения совместимости IEEE выпустил стандарт POSIX (API) операционной системы для интерфейсов прикладного программирования , который поддерживается большинством систем UNIX. MINIX — это урезанная версия UNIX, разработанная в 1987 году для образовательных целей и вдохновившая на создание коммерчески доступного бесплатного программного обеспечения Linux . С 2008 года MINIX используется в контроллерах большинства Intel микрочипов , а Linux широко распространен в дата-центрах и Android -смартфонах. [38]

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

Интерфейс командной строки MS -DOS. операционной системы
Графический интерфейс Macintosh пользователя

Изобретение крупномасштабной интеграции позволило производить персональные компьютеры (первоначально называвшиеся микрокомпьютерами ) примерно с 1980 года. [39] В течение примерно пяти лет CP/M (Программа управления для микрокомпьютеров) была самой популярной операционной системой для микрокомпьютеров. [40] Позже IBM купила DOS (Дисковую операционную систему) у Билла Гейтса . После модификаций, запрошенных IBM, получившаяся система получила название MS-DOS (MicroSoft Disk Operating System) и широко использовалась на микрокомпьютерах IBM. Более поздние версии стали более совершенными, отчасти за счет заимствования функций из UNIX. [40]

Стива Джобса , Macintosh который после 1999 года использовал систему UNIX (через FreeBSD ) [41] macOS был первым популярным компьютером, использовавшим графический интерфейс пользователя (GUI). Графический интерфейс оказался гораздо более удобным для пользователя, чем текстовый интерфейс командной строки, который использовался в более ранних операционных системах. После успеха Macintosh в MS-DOS был добавлен графический интерфейс под названием Windows . Позже Windows была переписана как самостоятельная операционная система, позаимствовавшая так много функций у другой системы ( VAX VMS большую юридическую компенсацию . ), что пришлось заплатить [42] В двадцать первом веке Windows по-прежнему популярна на персональных компьютерах, но занимает меньшую долю рынка серверов. Операционные системы UNIX, особенно Linux, наиболее популярны в корпоративных системах и серверах, но также используются на мобильных устройствах и во многих других компьютерных системах. [43]

На мобильных устройствах ОС Symbian поначалу доминировала , уступив место BlackBerry OS (выпущена в 2002 году) и iOS для iPhone (с 2007 года). Позже наибольшую популярность приобрела ОС Android с открытым исходным кодом на базе UNIX (выпущенная в 2008 году). [44]

Компоненты

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

Ядро

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

Ядро — это часть операционной системы, обеспечивающая защиту между различными приложениями и пользователями. Эта защита является ключом к повышению надежности за счет изоляции ошибок в одной программе, а также безопасности за счет ограничения мощности вредоносного программного обеспечения и защиты личных данных, а также обеспечения того, чтобы одна программа не могла монополизировать ресурсы компьютера. [45] Большинство операционных систем имеют два режима работы: [46] в пользовательском режиме аппаратное обеспечение проверяет, что программное обеспечение выполняет только разрешенные инструкции, тогда как ядро ​​имеет неограниченные полномочия и не подлежит этим проверкам. [47] Ядро также управляет памятью для других процессов и контролирует доступ к устройствам ввода/вывода . [48]

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

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

Прерывания

Прерывание сигнал известное как прерывание , исключение , ошибка , ( также , [49] или ловушка ) [50] обеспечивает эффективный способ для большинства операционных систем реагировать на окружающую среду. Прерывания заставляют центральный процессор (ЦП) переключать поток управления с текущей запущенной программы на обработчик прерываний , также известный как процедура обслуживания прерываний (ISR). [51] [52] Процедура обслуживания прерывания может привести к тому, что центральный процессор (ЦП) переключит контекст . [53] [а] Детали того, как компьютер обрабатывает прерывание, варьируются от архитектуры к архитектуре, а детали того, как ведут себя процедуры обслуживания прерываний, различаются от операционной системы. [54] Однако некоторые функции прерываний являются общими. [54] Архитектура и операционная система должны: [54]

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

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

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

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

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

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

Сигнал

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

В Unix-подобных операционных системах сигналы сообщают процессам о возникновении асинхронных событий. [60] Для асинхронного взаимодействия необходимы прерывания. [62] Одна из причин, по которой процессу необходимо асинхронно взаимодействовать с другим процессом, заключается в решении вариации классической проблемы чтения/записи . [63] Модуль записи получает канал от оболочки для отправки его вывода во входной поток устройства чтения. [64] командной строки : Синтаксис alpha | bravo. alpha запишет в канал, когда его вычисления будут готовы, а затем перейдет в очередь ожидания. [65] bravo затем будет перемещен в очередь готовности и вскоре будет прочитан из своего входного потока. [66] Ядро будет генерировать программные прерывания для координации конвейерной обработки. [66]

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

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

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

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

Ввод/вывод

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параллелизм

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

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

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

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

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

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

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

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

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

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

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

Безопасность означает защиту пользователей от других пользователей того же компьютера, а также от тех, кто ищет к нему удаленный доступ по сети. [108] Безопасность операционных систем основывается на достижении триады CIA : конфиденциальность (неавторизованные пользователи не могут получить доступ к данным), целостность (неавторизованные пользователи не могут изменять данные) и доступность (гарантия того, что система остается доступной для авторизованных пользователей даже в случае отказа в обслуживании). атака ). [109] Как и в случае с другими компьютерными системами, изоляция доменов безопасности — в случае операционных систем, ядра, процессов и виртуальных машин — является ключом к достижению безопасности. [110] Другие способы повышения безопасности включают простоту минимизации поверхности атаки , блокировку доступа к ресурсам по умолчанию, проверку всех запросов на авторизацию, принцип наименьших полномочий (предоставление минимальных привилегий, необходимых для выполнения задачи), разделение привилегий и сокращение общих данных. [111]

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

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

Безопасность операционных систем снижается из-за их возрастающей сложности и, как следствие, неизбежности ошибок. [116] Поскольку формальная проверка операционных систем может оказаться неосуществимой, разработчики используют усиление операционной системы для уменьшения уязвимостей. [117] например, рандомизация структуры адресного пространства , целостность потока управления , [118] ограничения доступа , [119] и другие техники. [120] Нет никаких ограничений на то, кто может вносить код в операционные системы с открытым исходным кодом; такие операционные системы имеют прозрачную историю изменений и распределенные структуры управления. [121] Разработчики открытого исходного кода стремятся работать сообща над поиском и устранением уязвимостей безопасности, используя проверку кода и проверку типов для удаления вредоносного кода. [122] [123] Эндрю С. Таненбаум советует публиковать исходный код всех операционных систем, утверждая, что это не позволяет разработчикам доверять секретности и, таким образом, полагаться на ненадежную практику обеспечения безопасности посредством неизвестности . [124]

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

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

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

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

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

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

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

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

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

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

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

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

Линукс

Уровни системы Linux

Linux — это бесплатное программное обеспечение, распространяемое под лицензией GNU General Public License (GPL), что означает, что все его производные по закону обязаны выпускать свой исходный код . [130] Linux был разработан программистами для собственного использования, что подчеркивает простоту и последовательность, с небольшим количеством основных элементов, которые можно комбинировать практически неограниченным образом, и избегая избыточности. [131]

Его конструкция аналогична другим системам UNIX, не использующим микроядро . [132] Это написано на Си [133] и использует синтаксис UNIX System V , но также поддерживает синтаксис BSD . Linux поддерживает стандартные сетевые функции UNIX, а также полный набор инструментов UNIX, поддерживая при этом несколько пользователей и используя вытесняющую многозадачность . Linux изначально имел минималистский дизайн и представлял собой гибкую систему, которая может работать с оперативной памятью менее 16 но МБ , по-прежнему используется в больших многопроцессорных системах. [132] Подобно другим системам UNIX, дистрибутивы Linux состоят из ядра , системных библиотек и системных утилит . [134] Linux имеет графический интерфейс пользователя (GUI) с рабочим столом, значками папок и файлов, а также возможность доступа к операционной системе через командную строку . [135]

Android — это операционная система с частичным открытым исходным кодом, основанная на Linux, которая стала наиболее широко используемой пользователями операционной системой из-за ее популярности на смартфонах и, в меньшей степени, во встроенных системах, требующих графического пользовательского интерфейса, таких как « умные часы» , автомобильные приборные панели , спинки сидений самолетов, медицинские приборы и бытовая техника ». [136] В отличие от Linux, большая часть Android написана на Java и использует объектно-ориентированный дизайн . [137]

Microsoft Windows

Дескриптор безопасности для файла, который по умолчанию доступен только для чтения, не указывает доступа для Элвиса, доступа для чтения/записи для Кэти и полного доступа для Иды, владельца файла. [138]

Windows — это проприетарная операционная система, которая широко используется на настольных компьютерах, ноутбуках, планшетах, телефонах, рабочих станциях , корпоративных серверах и консолях Xbox . [139] Операционная система была разработана с учетом «безопасности, надежности, совместимости, высокой производительности, расширяемости, портативности и международной поддержки» - позже приоритетами также стали энергоэффективность и поддержка динамических устройств . [140]

Windows Executive работает через объекты режима ядра для важных структур данных, таких как процессы, потоки и разделы (объекты памяти, например файлы). [141] Операционная система поддерживает подкачку виртуальной памяти по требованию , что ускоряет ввод-вывод для многих приложений. ввода-вывода Драйверы устройств используют модель драйверов Windows . [141] Файловая система NTFS имеет главную таблицу, и каждый файл представлен в виде записи с метаданными . [142] Планирование включает в себя вытесняющую многозадачность . [143] Windows имеет множество функций безопасности; [144] особенно важным является использование списков контроля доступа и уровней целостности . У каждого процесса есть токен аутентификации, а каждому объекту — дескриптор безопасности. В более поздних версиях было добавлено еще больше функций безопасности. [142]

См. также

Примечания

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

Ссылки

  1. ^ Столлингс (2005). Операционные системы, внутреннее устройство и принципы проектирования . Пирсон: Прентис Холл. п. 6.
  2. ^ Дотре, Айова (2009). Операционные системы . Технические публикации. п. 1.
  3. ^ Jump up to: а б «Доля рынка настольных операционных систем в мире» . Глобальная статистика StatCounter . Архивировано из оригинала 2 октября 2023 года . Проверено 3 октября 2023 г.
  4. ^ «Доля операционных систем для мобильных и планшетов в мире» . Глобальная статистика StatCounter . Проверено 2 октября 2023 г.
  5. ^ «VII. Системы специального назначения — Концепции операционных систем, седьмое издание [Книга]» . www.oreilly.com . Архивировано из оригинала 13 июня 2021 года . Проверено 8 февраля 2021 г.
  6. ^ «Операционные системы специального назначения - Институт автоматизации сложных энергосистем RWTH ACHEN UNIVERSITY - английский» . www.acs.eonerc.rwth-aachen.de . Архивировано из оригинала 14 июня 2021 года . Проверено 8 февраля 2021 г.
  7. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 4.
  8. ^ Андерсон и Далин 2014 , стр. 6.
  9. ^ Jump up to: а б Зильбершац и др. 2018 , с. 6.
  10. ^ Jump up to: а б с Андерсон и Далин 2014 , стр. 7.
  11. ^ Андерсон и Далин 2014 , стр. 9–10.
  12. ^ Таненбаум и Бос 2023 , стр. 6–7.
  13. ^ Андерсон и Далин 2014 , стр. 10.
  14. ^ Таненбаум и Бос 2023 , с. 5.
  15. ^ Jump up to: а б с д Андерсон и Далин 2014 , стр. 11.
  16. ^ Андерсон и Далин 2014 , стр. 7, 9, 13.
  17. ^ Андерсон и Далин 2014 , стр. 12–13.
  18. ^ Таненбаум и Бос 2023 , с. 557.
  19. ^ Таненбаум и Бос 2023 , с. 558.
  20. ^ Jump up to: а б Таненбаум и Бос 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. ^ Jump up to: а б с д Таненбаум и Бос 2023 , с. 38.
  30. ^ Зильбершац и др. 2018 , стр. 701.
  31. ^ Зильбершац и др. 2018 , стр. 705.
  32. ^ Андерсон и Далин 2014 , стр. 12.
  33. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 8.
  34. ^ Таненбаум и Бос 2023 , с. 10.
  35. ^ Таненбаум и Бос 2023 , стр. 11–12.
  36. ^ Таненбаум и Бос 2023 , стр. 13–14.
  37. ^ Таненбаум и Бос 2023 , стр. 14–15.
  38. ^ Таненбаум и Бос 2023 , с. 15.
  39. ^ Таненбаум и Бос 2023 , стр. 15–16.
  40. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 16.
  41. ^ Таненбаум и Бос 2023 , стр. 17–18.
  42. ^ Таненбаум и Бос 2023 , с. 17.
  43. ^ Таненбаум и Бос 2023 , с. 18.
  44. ^ Таненбаум и Бос 2023 , стр. 19–20.
  45. ^ Андерсон и Далин 2014 , стр. 39–40.
  46. ^ Таненбаум и Бос 2023 , с. 2.
  47. ^ Андерсон и Далин 2014 , стр. 41, 45.
  48. ^ Андерсон и Далин 2014 , стр. 52–53.
  49. ^ Jump up to: а б Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН  978-1-59327-220-3 . Сигнал — это уведомление процесса о том, что произошло событие. Сигналы иногда называют программными прерываниями.
  50. ^ Хайд, Рэндалл (1996). «Глава семнадцатая: Прерывания, ловушки и исключения (Часть 1)» . Искусство программирования на языке ассемблера . Нет крахмального пресса. Архивировано из оригинала 22 декабря 2021 года . Проверено 22 декабря 2021 г. Концепция прерывания с годами расширилась. Семейство 80x86 только усугубило путаницу вокруг прерываний, представив инструкцию int (программное прерывание). Действительно, разные производители использовали такие термины, как исключения, сбои, прерывания, ловушки и прерывания, для описания явлений, обсуждаемых в этой главе. К сожалению, нет четкого консенсуса относительно точного значения этих терминов. Разные авторы используют в своих целях разные термины.
  51. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 308 . ISBN  978-0-13-854662-5 . Как и ловушка, прерывание останавливает работающую программу и передает управление обработчику прерывания, который выполняет соответствующее действие. По завершении обработчик прерывания возвращает управление прерванной программе.
  52. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN  978-0-201-50480-4 . При возникновении прерывания (или ловушки) оборудование передает управление операционной системе. Во-первых, операционная система сохраняет состояние ЦП, сохраняя регистры и счетчик программ. Затем он определяет, какой тип прерывания произошел. Для каждого типа прерывания отдельные сегменты кода операционной системы определяют, какое действие следует предпринять.
  53. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 105. ИСБН  978-0-201-50480-4 . Переключение ЦП на другой процесс требует сохранения состояния старого процесса и загрузки сохраненного состояния для нового процесса. Эта задача известна как переключение контекста.
  54. ^ Jump up to: а б с д и Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 31. ISBN  978-0-201-50480-4 .
  55. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 30. ISBN  978-0-201-50480-4 . Аппаратное обеспечение может вызвать прерывание в любой момент, отправив сигнал в ЦП, обычно через системную шину.
  56. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН  978-1-59327-220-3 . Сигналы аналогичны аппаратным прерываниям в том смысле, что они прерывают нормальный поток выполнения программы; в большинстве случаев невозможно точно предсказать, когда поступит сигнал.
  57. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН  978-1-59327-220-3 . Среди типов событий, которые заставляют ядро ​​генерировать сигнал для процесса, можно выделить следующие: Произошло программное событие. Например,... превышен лимит времени ЦП процесса[.]
  58. ^ Jump up to: а б с д и Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 388. ИСБН  978-1-59327-220-3 .
  59. ^ «Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32» (PDF) . Корпорация Интел . Сентябрь 2016. с. 610. Архивировано (PDF) из оригинала 23 марта 2022 года . Проверено 5 мая 2022 г.
  60. ^ Jump up to: а б с Бах, Морис Дж. (1986). Проект операционной системы UNIX . Прентис-Холл. п. 200. ИСБН  0-13-201799-7 .
  61. ^ Керриск, Майкл (2010). Программный интерфейс Linux . Нет крахмального пресса. п. 400. ИСБН  978-1-59327-220-3 .
  62. ^ Jump up to: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 308 . ISBN  978-0-13-854662-5 .
  63. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 182. ИСБН  978-0-201-50480-4 .
  64. ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 153. ИСБН  0-201-12919-1 .
  65. ^ Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 148. ИСБН  0-201-12919-1 .
  66. ^ Jump up to: а б Хэвиленд, Кейт; Салама, Бен (1987). Системное программирование UNIX . Издательство Аддисон-Уэсли. п. 149. ИСБН  0-201-12919-1 .
  67. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 292 . ISBN  978-0-13-854662-5 .
  68. ^ IBM (сентябрь 1968 г.), «Основное хранилище» (PDF) , Принципы работы IBM System / 360 (PDF) , восьмое издание, стр. 7, заархивировано (PDF) из оригинала 19 марта 2022 г. , получено 13 апреля 2022 г.
  69. ^ Jump up to: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 294 . ISBN  978-0-13-854662-5 .
  70. ^ «Контроллер программных прерываний (PIC)» (PDF) . Руководство пользователя — PDP-7 (PDF) . Корпорация цифрового оборудования . 1965. С. 48 . Ф-75. Архивировано (PDF) из оригинала 10 мая 2022 года . Проверено 20 апреля 2022 г.
  71. ^ Руководство по системам ввода-вывода PDP-1 (PDF) . Корпорация цифрового оборудования . стр. 19–20. Архивировано (PDF) из оригинала 25 января 2019 года . Проверено 16 августа 2022 г.
  72. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 32. ISBN  978-0-201-50480-4 .
  73. ^ Зильбершац, Авраам (1994). Концепции операционной системы, четвертое издание . Аддисон-Уэсли. п. 34. ISBN  978-0-201-50480-4 .
  74. ^ Jump up to: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 295 . ISBN  978-0-13-854662-5 .
  75. ^ Jump up to: а б Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 309 . ISBN  978-0-13-854662-5 .
  76. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 310 . ISBN  978-0-13-854662-5 .
  77. ^ Столлингс, Уильям (2008). Компьютерная организация и архитектура . Нью-Дели: Prentice-Hall of India Private Limited. п. 267. ИСБН  978-81-203-2962-1 .
  78. ^ Андерсон и Далин 2014 , стр. 129.
  79. ^ Зильбершац и др. 2018 , с. 159.
  80. ^ Андерсон и Далин 2014 , стр. 130.
  81. ^ Андерсон и Далин 2014 , стр. 131.
  82. ^ Андерсон и Далин 2014 , стр. 157, 159.
  83. ^ Андерсон и Далин 2014 , стр. 139.
  84. ^ Зильбершац и др. 2018 , с. 160.
  85. ^ Андерсон и Далин 2014 , стр. 183.
  86. ^ Зильбершац и др. 2018 , с. 162.
  87. ^ Зильбершац и др. 2018 , стр. 162–163.
  88. ^ Зильбершац и др. 2018 , с. 164.
  89. ^ Андерсон и Далин 2014 , стр. 492, 517.
  90. ^ Таненбаум и Бос 2023 , стр. 259–260.
  91. ^ Андерсон и Далин 2014 , стр. 517, 530.
  92. ^ Таненбаум и Бос 2023 , с. 260.
  93. ^ Андерсон и Далин 2014 , стр. 492–493.
  94. ^ Андерсон и Далин 2014 , стр. 496.
  95. ^ Андерсон и Далин 2014 , стр. 496–497.
  96. ^ Таненбаум и Бос 2023 , стр. 274–275.
  97. ^ Андерсон и Далин 2014 , стр. 502–504.
  98. ^ Андерсон и Далин 2014 , стр. 507.
  99. ^ Андерсон и Далин 2014 , стр. 508.
  100. ^ Таненбаум и Бос 2023 , с. 359.
  101. ^ Андерсон и Далин 2014 , стр. 545.
  102. ^ Jump up to: а б Андерсон и Далин 2014 , стр. 546.
  103. ^ Андерсон и Далин 2014 , стр. 547.
  104. ^ Андерсон и Далин 2014 , стр. 589, 591.
  105. ^ Андерсон и Далин 2014 , стр. 591–592.
  106. ^ Таненбаум и Бос 2023 , стр. 385–386.
  107. ^ Jump up to: а б Андерсон и Далин 2014 , стр. 592.
  108. ^ Таненбаум и Бос 2023 , стр. 605–606.
  109. ^ Таненбаум и Бос 2023 , с. 608.
  110. ^ Таненбаум и Бос 2023 , с. 609.
  111. ^ Таненбаум и Бос 2023 , стр. 609–610.
  112. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 612.
  113. ^ Таненбаум и Бос 2023 , стр. 648, 657.
  114. ^ Таненбаум и Бос 2023 , стр. 668–669, 674.
  115. ^ Таненбаум и Бос 2023 , стр. 679–680.
  116. ^ Таненбаум и Бос 2023 , стр. 605, 617–618.
  117. ^ Таненбаум и Бос 2023 , стр. 681–682.
  118. ^ Таненбаум и Бос 2023 , с. 683.
  119. ^ Таненбаум и Бос 2023 , с. 685.
  120. ^ Таненбаум и Бос 2023 , с. 689.
  121. ^ Рише и Буайная, 2023 , с. 92.
  122. ^ Рише и Буайная, 2023 , стр. 92–93.
  123. ^ Бернтссо, Странден и Варг, 2017 , стр. 130–131.
  124. ^ Таненбаум и Бос 2023 , с. 611.
  125. ^ Таненбаум и Бос 2023 , стр. 396, 402.
  126. ^ Таненбаум и Бос 2023 , стр. 395, 408.
  127. ^ Таненбаум и Бос 2023 , с. 402.
  128. ^ Холверда, Том (20 декабря 2009 г.). «Моя ОС менее хобби, чем ваша» . Новости ОС . Проверено 4 июня 2024 г.
  129. ^ «Доля операционных систем для мобильных и планшетов в мире» . Глобальная статистика StatCounter . Проверено 2 октября 2023 г.
  130. ^ Зильбершац и др. 2018 , стр. 779–780.
  131. ^ Таненбаум и Бос 2023 , стр. 713–714.
  132. ^ Jump up to: а б Зильбершац и др. 2018 , с. 780.
  133. ^ Воган-Николс, Стивен (2022). «Линус Торвальдс готовится перевести ядро ​​Linux на современный C» . ЗДНЕТ . Проверено 7 февраля 2024 г.
  134. ^ Зильбершац и др. 2018 , с. 781.
  135. ^ Таненбаум и Бос 2023 , стр. 715–716.
  136. ^ Таненбаум и Бос 2023 , стр. 793–794.
  137. ^ Таненбаум и Бос 2023 , с. 793.
  138. ^ Таненбаум и Бос 2023 , стр. 1021–1022.
  139. ^ Таненбаум и Бос 2023 , с. 871.
  140. ^ Зильбершац и др. 2018 , с. 826.
  141. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 1035.
  142. ^ Jump up to: а б Таненбаум и Бос 2023 , с. 1036.
  143. ^ Зильбершац и др. 2018 , с. 821.
  144. ^ Зильбершац и др. 2018 , с. 827.

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 925fc744b9f1b2a6f91d920e5d0fb479__1722880620
URL1:https://arc.ask3.ru/arc/aa/92/79/925fc744b9f1b2a6f91d920e5d0fb479.html
Заголовок, (Title) документа по адресу, URL1:
Operating system - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)