Файл: «ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ».pdf
Добавлен: 23.04.2023
Просмотров: 262
Скачиваний: 1
СОДЕРЖАНИЕ
1 Функции операционной системы
2 Интерфейс между пользователем и аппаратным обеспечением
3 Интерфейс между пользователем и программным обеспечением
4 Интерфейс между программами и аппаратным обеспечением
4.1 Абстракция файловой системы
4.2 Абстракция виртуальной памяти
Введение
Когда более полувека назад появились первые компьютеры, они вполне обходились без операционных систем. Однако это продолжалось недолго, и вскоре данные системы прочно обосновались на каждом используемом компьютере.
В настоящее время представить себе компьютер без операционной системы (ОС) практически невозможно. Сложность современных компьютеров с тех пор возросла во многие миллионы раз, и без помощи специальной программы, ОС, работать с ними было бы нереально.
Каждая ОС выполняет множество функций, критичных для работы компьютера. Эти программы обеспечивают правильную работу с файлами, обнаружение и работу с внешними устройствами, возможность установки, запуска и удаления программ, и работу с виртуальной памятью. Возможности, предоставляемые ими постоянно увеличиваются.
В связи с таким повсеместным распространением операционных систем на первый план выходит проблема понимания принципов их работы. Для эффективного взаимодействия с ОС необходимо понимать ее структуру, строение, и предоставляемые ею функции.
В данной работе делается обзор функций, предоставляемых современными операционными системами, и приводятся примеры реализации данных функций применительно к двум распространенным в настоящее время ОС – Microsoft Windows и Linux. Так как каждая из данных операционных систем имеет множество версий, то возьмем в качестве эталона сравнения версии Microsoft Windows 10 и Gentoo Linux на июнь 2019 года.
1 Функции операционной системы
Если рассматривать операционную систему как целое, то она представляет собой программу (комплекс программ) для компьютера, которая запускается одной из первых при каждом его включении.
Когда включается современный (IBM PC-совместимый) компьютер, то, как правило, первым начинает исполняться программа, записанная в специальной микросхеме на его материнской плате. Ранее, данная программа называлась BIOS, а сейчас все чаще используется более новая версия данной программы под названием UEFI. Самая важная задача BIOS или UEFI состоит в инициализации оборудования материнской платы. Так как ни одна программа не может работать с абсолютно любым оборудованием, которое только существует на свете, то для конкретной материнской платы применяется конкретный код UEFI. Он знает, что нужно делать с тем оборудованием, которое установлено именно на данной плате.
Как правило, UEFI имеет довольно небольшой объем (в современных версиях – несколько мегабайт или десятков мегабайт), следовательно, он не может (сам) предоставить пользователю весь тот богатый набор функций, который для него необходим. Именно поэтому, в конце своей работы UEFI загружает из определенного пользователем места специальную программу, которая и называется операционной системой.
Таким образом, операционная система начинает работу в некоей «инициализированной» системе, то есть, системе, в которой еще нет ни одной программы, однако все имеющееся на материнской плате оборудование уже готово к работе. Важно понимать, что это не относится к оборудованию, которое к компьютеру добавил пользователь. Например, если пользователь вставил в слот расширения материнской платы видеокарту Radeon, то UEFI не сможет ее инициализировать, так как не знает, что это за видеокарта (хотя он может вызвать программу инициализации данной видеокарты, если она находится внутри еще одной микросхемы, уже на самой видеокарте).
Таким образом, задача инициализации и работы с оборудованием частично (а на самом деле, практически целиком) ложится на плечи ОС. При старте операционная система сканирует компьютер, находя все устройства, к нему подключенные, и пытается с ними «договориться», научиться работать. Для этого используются специальные программы, «драйвера», которые, как правило, поставляются вместе с оборудованием, либо (для часто встречающегося оборудования) идут в комплекте с операционной системой.
Следовательно, мы видим, что первая задача ОС заключается в обеспечении интерфейса между пользователем, и аппаратным обеспечением компьютера.
После того, как оборудование будет проинициализировано, и корректно заработает, пользователь может приступать к работе. Как правило, действия пользователя сводятся к запуску различных программ (возможно, одновременному), и работе в них. Следовательно, любая операционная система должна давать возможность запускать программы, и обеспечивать их стабильную работу. Это можно считать второй задачей любой ОС – обеспечение интерфейса между пользователем и программным обеспечением.
Любая программа, после того, как она запущена, должна как-то взаимодействовать с аппаратным обеспечением компьютера (хотя бы для того, чтобы получать от пользователя информацию, или выводить ее на экран). Хотя оборудование нашего компьютера уже инициализировано, если просто дать возможность каждой программе пользоваться чем угодно, то могут возникать конфликты. Например, если программа А и программа Б одновременно захотят записать данные на жесткий диск, то данные одной из них (или обоих сразу) будут безнадежно испорчены. Любая операционная система (если она поддерживает выполнение более одной программы одновременно) должна обеспечивать некоторый интерфейс между программами, и аппаратными ресурсами компьютера. Это является третьей задачей любой ОС.
Наконец, еще одной задачей операционной системы является обеспечение взаимодействия между различными программами. Например, пользователь может с помощью программы FineReader отсканировать фотографию, потом обработать ее в программе Adobe Photoshop, вставить картинку в свой реферат, написанный в Microsoft Word, а затем отправить его по почте преподавателю в программе Mozilla Thunderbird. Все эти программы должны понимать друг друга. Например, программа FineReader должна уметь сохранять отсканированный файл так, чтобы программа Adobe Photoshop смогла его найти, и открыть. Программа Mozilla Thunderbird должна отправлять письмо в таком формате, чтобы его смогла открыть другая почтовая программа на сервере университета.
Для обеспечения этой задачи (обеспечение взаимодействия между программами), в любой многозадачной информационной системе есть некие соглашения (интерфейсы), которыми каждая из программ должна пользоваться. Например, программа Finereader не может напрямую обратиться к секторам жесткого диска, и записать туда файл с отсканированным изображением. Она должна попросить ОС записать ей файл, и, скорее всего, потом этот запрос будет передан драйверу файловой системы и (далее) жесткого диска. Таким образом, файлы на жестком диске оказываются записанными в определенном формате, который затем могут прочитать любые другие программы. Программа Mozilla Thunderbird не может сама формировать сетевые пакеты, и отдавать их для передачи сетевой карте. Она должна попросить операционную систему, чтобы та передала данные на конкретный компьютер в Интернете, предоставив на них ссылку. Сами данные будут переданы единообразным, принятым в данной ОС способом, причем так, чтобы это не помешало в этот же момент передавать данные другим программам.
Исходя из вышеизложенного, можно выделить четыре основных функции, которые должна обеспечивать каждая многозадачная операционная система (как правило, все современные ОС являются многозадачными).
- Обеспечение интерфейса между пользователем, и аппаратным обеспечением компьютера;
- Обеспечение интерфейса между пользователем и программным обеспечением;
- Обеспечение интерфейса между программами, и аппаратными ресурсами компьютера;
- Обеспечение взаимодействия между различными программами.
В дальнейших разделах курсовой работы мы рассмотрим каждую из данных функций более подробно.
2 Интерфейс между пользователем и аппаратным обеспечением
Как уже говорилось выше, первой задачей любой операционной системы, является инициализация и обеспечение безошибочной работы с оборудованием (аппаратным обеспечением), установленным на компьютере. Хотя базовая инициализация оборудования материнской платы выполняется UEFI, именно ОС ответственна за полную инициализацию оборудования, и предоставление пользователю возможности работы с ним.
Так как в мире существуют миллиарды единиц различного оборудования, то естественно, что ни один разработчик программного обеспечения не смог бы поддерживать их все. Например, программист, разрабатывающий программу, позволяющую обмениваться сообщениями электронной почты, вряд ли смог бы обеспечить поддержку всего многообразия сетевых карт, как существующих на рынке, так и давно устаревших. Кроме того, ему пришлось бы постоянно модернизировать свою программу для поддержки все новых и новых появляющихся сетевых карт. Кроме этого, всю эту титаническую работу пришлось бы делать всем разработчикам таких программ, что привело бы к огромному дублированию кода.
Именно поэтому операционная система после начальной инициализации оборудования проводит его «унификацию» - предоставляет всем программам единый интерфейс для взаимодействия с аппаратурой. Например, в случае программы обмена электронной почтой, операционная система предоставляет всем программам, работающим с сетью, механизм «сокетов», то есть, набор подпрограмм, с помощью которых любая программа может получить или отправить данные по сети. Какая-либо другая отправка данных по сети (способом, не санкционированным операционной системой) полностью запрещена, чтобы ни одна программа не могла нарушить отлаженный механизм.
Однако понятно, что работу со всем доступным на рынке оборудованием невозможно встроить внутрь кода операционной системы, ведь тогда она получилась бы огромного размера, и ее пришлось бы постоянно обновлять при появлении на рынке новых моделей. Поэтому в части поддержки оборудования ОС полагается на помощь специальных программ, которые называются драйверы.
Драйвер – это некая программа, которая помогает операционной системе общаться с каким-то конкретным устройством (или набором похожих устройств). После того, как в ОС установлен соответствующий драйвер, она может распознать данное устройство, и обеспечить для работы с ним единый, унифицирующий интерфейс.
Как правило, драйвера распространяются вместе с оборудованием. Если вы покупаете какое-то устройство, например, принтер фирмы HP, то с ним должен идти диск, на котором будут располагаться драйвера для вашей операционной системы (либо вы можете зайти на сайт разработчика вашего оборудования, и скачать драйвер оттуда). Кое-какие драйвера входят в состав операционной системы изначально. Как правило, это либо критичные драйвера (без которых пользователь просто не сможет работать, например, драйвер клавиатуры или мыши), либо самые распространенные драйвера, которые получили наибольшее распространение на рынке (например, драйвер для старого принтера HP 1100).
Так как каждая операционная система предъявляет свои требования к формату драйверов, и предоставляет свой унифицированный интерфейс для работы с оборудованием, то драйвера, как правило, выпускаются в нескольких вариантах, в зависимости от используемой ОС. Чаще всего, драйвера на сайте производителя выпускаются под три самых популярных ОС – Windows, Linux и Mac OS. Например, на рисунке ниже представлен сайт производителя материнских плат Gigabyte, где можно скачать драйвера на модуль Wi-Fi, расположенный на материнской плате модели X570 AORUS MASTER.
Рис. 1 – Драйвера для модуля Wi-Fi для материнской платы X570 AORUS MASTER с сайта производителя, фирмы Gigabyte
Как можно видеть из рисунка, данная фирма предлагает драйвера для своего модуля Wi-Fi лишь для операционных систем семейства Microsoft Windows. Однако это не означает, что в ОС Linux нельзя пользоваться данным модулем. Как указано на рисунке, данный модуль выпущен фирмой Intel, и, скорее всего, на сайте фирмы Intel можно найти драйвер под ОС Linux (либо он просто встроен в систему изначально).
После того, как мы загрузим и установим данный драйвер в операционную систему, она (и все программы в ней) смогут работать с нашим модулем Wi-Fi и передавать данные по сети.
3 Интерфейс между пользователем и программным обеспечением
Любая операционная система должна позволять пользователю взаимодействовать с собой (а иначе компьютер превращается в никому не нужный черный ящик).
Более старые операционные системы для обеспечения данной цели имели специальную оболочку, позволявшую пользователю на специальном языке писать команды, которые ОС могла исполнять. Ниже представлен пример такого «диалога» между пользователем и операционной системой: