Найти тему
H IT

Как устроены операционные системы?

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

упрощенная иерархия компьютерной абстракции
упрощенная иерархия компьютерной абстракции

Таким образом ОС дает некую абстракцию программистам чтобы не мучаться, аля "здесь  нам нужно сдедать прерывание".
Изначально ОС - просто давали возможность запускать свои программы, потом появились файловые системы, многопоточность и т.д., но обо всем этом попозже.
Для понимания разберем процесс включения компьютера.
Вы нажимаете на кнопку включения и... опустим все тонкости и просто скажем, что BIOS [базовая система ввода-вывода] загружает ОС в память, как обычную программу (чем она, кстати и является).
Наша ОС начинает работать.
Что должна делать операционная система в первую очередь? Загружать в память наши программы. Тут ничего сложно, просто читать файлик исполняемой программы и просто загружать ее содержимое в память. Но тут мы натыкаемся на "читать файлик". Чтение файла - часть файловой структуры, которая в свою очередь - одна из важнейших частей операционной системы.

древовидное представление файловой системы
древовидное представление файловой системы

Представим что диск (не важно какой) - просто массив ячеек.

представление области диска в виде массива чисел
представление области диска в виде массива чисел

Ну, например,мы записали какие-то файлики, в какие-то места диска. И мы перезагрузили систему. Откуда ОС должна знать где и какие файлы находятся. Допустим вы запомнили на какой "ячейке" находится тот файл. Но вряд ли вы сможете помнить местоположение хотя бы 100 файлов, а ведь современные ПК оперируют куда более большим количеством файлов. Для того чтобы ОС знала, что, где и когда в начале записаны все данные о хранящихся файлах на диске. Современные (да и не старые) файловые структуры устроены в виде кластеров. Кластер - участок/сегмент запоминающего устройства. Все кластеры имеют одинаковый размер.

Ну, например,мы записали какие-то файлики, в какие-то места диска. И мы перезагрузили систему. Откуда ОС должна знать где и какие файлы находятся. Допустим вы запомнили на какой "ячейке" находится тот файл. Но вряд ли вы сможете помнить местоположение хотя бы 100 файлов, а ведь современные ПК оперируют куда более большим количеством файлов. Для того чтобы ОС знала, что, где и когда в начале записаны все данные о хранящихся файлах на диске. Современные (да и не старые) файловые структуры устроены в виде кластеров. Кластер - участок/сегмент запоминающего устройства. Все кластеры имеют одинаковый размер.Ну, например,мы записали какие-то файлики, в какие-то места диска. И мы перезагрузили систему. Откуда ОС должна знать где и какие файлы находятся. Допустим вы запомнили на какой "ячейке" находится тот файл. Но вряд ли вы сможете помнить местоположение хотя бы 100 файлов, а ведь современные ПК оперируют куда более большим количеством файлов. Для того чтобы ОС знала, что, где и когда в начале записаны все данные о хранящихся файлах на диске. Современные (да и не старые) файловые структуры устроены в виде кластеров. Кластер - участок/сегмент запоминающего устройства. Все кластеры имеют одинаковый размер.

пример расположения файлов в кластерной файловой системе
пример расположения файлов в кластерной файловой системе

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

примерная схема работы драйверов с устройствами
примерная схема работы драйверов с устройствами

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

Файлы находятся в таких кластерах, если они не помещаются в одном - разбиваются на несколько. Следующией состовляющей идёт ввод-вывод. Первые ОС имели терминальный интерфейс, гораздо позже начали появляться операционные системы с графическим интерфейсом. Но с того времени почти ничего не изменилось. Ввод-вывод обеспечивается драйверами устройств. Драйверы "общаются" с устройствами хоть и на почти самым низком языке, все равно общение происходит через ОС.Важной частью является система управления программами. Современные компьютеры - многопоточны, т.е. одновременно могут работать сразу несколько программ. Основной задачей ОС тут является правильное распределение сколько и когда может работать какая-то программа. На первый взгляд это простая задача, но на самом деле все гораздо сложнее.Это всё. Точнее почти все - это основные структуры, но есть много более мелких.Теперь рассмотрим случаи из жизни. Windows, а также различные Unix-подобные системы попадают под наши определения. Давайте рассмотрим Android. Android - ОС компании Google, основанная на ядре Linux. Основное отличие от обычного Linux'а - это ВМ. Виртуальная машина Dalvik исполняет свой байт-код во время запуска. Правда сейчас байт-код компилируется под пооцессор, на котором стоит данный Android. Данная технология называется ART (Android RunTime). Это примечательная особенность Android - исполнение не машинного кода, а байт-кода (хоть и скомпилированного) дает защиту от вредоносных программ, и вообще от различных ошибок. Современные ОС прошли доволбную большую эволюцию - от простых загрузчиков, до мощных систем, которые сильно упрощают жизнь его пользователям. Файлы находятся в таких кластерах, если они не помещаются в одном - разбиваются на несколько. Следующией состовляющей идёт ввод-вывод. Первые ОС имели терминальный интерфейс, гораздо позже начали появляться операционные системы с графическим интерфейсом. Но с того времени почти ничего не изменилось. Ввод-вывод обеспечивается драйверами устройств. Драйверы "общаются" с устройствами хоть и на почти самым низком языке, все равно общение происходит через ОС.Важной частью является система управления программами. Современные компьютеры - многопоточны, т.е. одновременно могут работать сразу несколько программ. Основной задачей ОС тут является правильное распределение сколько и когда может работать какая-то программа. На первый взгляд это простая задача, но на самом деле все гораздо сложнее.Это всё. Точнее почти все - это основные структуры, но есть много более мелких.Теперь рассмотрим случаи из жизни. Windows, а также различные Unix-подобные системы попадают под наши определения. Давайте рассмотрим Android. Android - ОС компании Google, основанная на ядре Linux. Основное отличие от обычного Linux'а - это ВМ. Виртуальная машина Dalvik исполняет свой байт-код во время запуска. Правда сейчас байт-код компилируется под пооцессор, на котором стоит данный Android. Данная технология называется ART (Android RunTime). Это примечательная особенность Android - исполнение не машинного кода, а байт-кода (хоть и скомпилированного) дает защиту от вредоносных программ, и вообще от различных ошибок. Современные ОС прошли доволбную большую эволюцию - от простых загрузчиков, до мощных систем, которые сильно упрощают жизнь его пользователям.

и какие файлы находятся. Допустим вы запомнили на какой "ячейке" находится тот файл. Но вряд ли вы сможете помнить местоположениехотя бы 100 файлов, а ведь современные ПК оперируют куда более большим количеством файлов. Для того чтобы ОС знала, что, где и когда в начале записаны все данные о хранящихся файлах на диске. Современные (Да и не очень) файловые структуры устроены в виде кластеров. Кластер - участок/сегмент запоминающего устройства. Все кластеры имеют одинаковый размер. Файлы находятся в таких кластерах, если они не помещаются в одном - разбиваются на несколько.

.

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

Это всё. Точнее почти все - это основные структуры, но есть много более мелких. Теперь рассмотрим случаи из жизни. Windows, а также различные Unix-подобные системы попадают под наши определения.

Давайте рассмотрим Android. Android - ОС компании Google, основанная на ядре Linux. Основное отличие от обычного Linux'а - это ВМ. Виртуальная машина Dalvik исполняет свой байт-код во время запуска. Правда сейчас байт-код компилируется под пооцессор, на котором стоит данный Android. Данная технология называется ART (Android RunTime).

Это примечательная особенность Android - исполнение не машинного кода, а байт-кода (хоть и скомпилированного) дает защиту от вредоносных программ, и вообще от различных ошибок.

принцип работы исполнения байт-кода и скомпилированного байт-кода. Понятно, что второй вариант выполняется быстрее
принцип работы исполнения байт-кода и скомпилированного байт-кода. Понятно, что второй вариант выполняется быстрее

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