2. Эволюция ОС: от монолитов к сети. Мультипрограммность, виртуализация и рождение логина

среда, февр. 11, 2026 | 6 минут чтения

2. Эволюция ОС: от монолитов к сети. Мультипрограммность, виртуализация и рождение логина

Раньше считалось что программы это монолиты. Начали появляться структурные программы. Теперь можно было дробить работу для разных программистов. Кто-то пишет один метод, кто-то другой. Люди начали создавать различные модули. Модули могли быть не просто методом, но и те ме же данными (какая-то предрасчитанная табличка) Появились пакеты

Появилось оверлейное программирование. В рамках ограниченности памяти исполняем код, который гарантировано весит больше, чем доступно памяти. Мы выгружаем ненужный и подгружаем нужный код

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

Мы хотим минимизировать время простоя. Появляется планировщик

Вуаля, мы создали программу диспетчер, надстройку над фон-неймовской архитектурой, которая позволяет эффективнее пользоваться процессором: программировать и исполнять код

Но мы оптимизировали только для одной программы. Хочется сделать чтобы пока одна программа которая долго вычисляется, но не кушает память

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

Этап 2. Мультипрограммные операционные системы

Разделили память на несколько программ. Процессор будет выполнять строку то одной программы, то другой. Звучало прекрасно, но это было очень трудно реализовать. Нужно разделить процессорное время (Processor sharing)

Псведопараллельность

Марковский процесс - каждый шаг зависит только от предыдущего

Давайте я в коде поставлю точки и диспетчер будет решать то-ли мне обратно вернуть то-ли на другой процесс переключиться. Но люди не хотели вставлять эти кусочки кода, чтобы выполнялась другая программа. Появляется идея делать ветвление таким образом, чтобы эти точки обходить. Есть только вероятность, что процессорное время будет делиться равномерно. В 60ые от кооперативной многозадачности отменились. Но потом к ней вернулись в 20ые, тот же Kotlin… Появилась State-машина, корутины

До середины 90ых не верили в программистом и код, только железо. ПО воспринималось как что-то вспомогательное.

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

RISC архитектура сменяется CISC архитектурой. Появляется такая архитектура процессора, которой мы пользуемся сейчас

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

Научились делать processor sharing. Таймер прерываний + регистровый контекст

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

  • ! Виртуальная память - абстракция, позволяющая при разработке или компиляции программного кода использовать адресацию от нуля, а в момент загрузки или исполнения заменять абстрактные(виртуальные) адреса на физические

Мы пытаемся делать мультипрограммность, чтобы эффективнее пользоваться ресурсами. Но выходит так, что на нужно тратить ресурсы чтобы переключаться между программами. Вопрос – сделали ли мы правильно? Мы тратим ресурсы, чтобы их экономить.

Но с мультипрограммностью появилась возможность с одной программы перейти в код другой программы.

Вот есть сервер в Берклине там запущена программа студента, а рядом запущен расчёт балистической ракеты. Программа студентика случайно записала что-то в память программы балистической ракеты. Её запустили и она сбилась с курса. Осталось принести дипломатические изменения

Появилась задача защиты памяти – нужно сделать так, чтобы программа могла пользоваться только своей памятью. Появляется понятие привилегированного режима. Код может работать в привилегированном режиме, значит он может использовать любой кусок памяти. “Мы раздали людям в форме автоматы”. Это было единственным решением. Не давать автоматы нельзя, иначе не сможем защититься. Но с другой стороны у кого-то может “полететь кукуха”

Мы научились делать Programm Isolation

Изолировали ОЗУ, но ведь есть ПЗУ. Зачем вообще в памяти лежит функция которой я неделю не буду пользоваться. Она ведь место занимает ценное. Пускай лежит в хранилке на ПЗУ и оверлеем подтянем…

Появляется концепция файла. Некоторой области памяти даём имя, которое нужно только для программиста.

Появляется необходимость коммуницировать между этими программами. Программисты захотели объединить несколько программ в пакеты. Чтобы они могли взаимодействовать между собой нужно было снова просить привелигирванный процесс дать разрешение.

Вот в 1 лабе есть Pipe. stdout левой команды закрывается stdin правой команды

Появляется ситуация, что планировщик должен планировать не одну очередь, а сразу несколько с учётом связей между ними. Например вот есть Лента, в ней очередь огромная на салаты(память), но кассы(процессор) пустые. Это уже не марковские процессы…

Появилась концепция называемая Virtual Machine (это еще далеко до современного понятия виртуализации)

Миф о вечном возвращение. Жизнь человека - последовательные процессы. Но если мы возьмём бесконечную ось времени, то на ней будут бесконечно повторяться такие последовательные процессы - наши жизни. И это же будем мы. В течение бесконечной оси времени будет бесконечное количество одинаковых наших жизней. Но выходит что наша жизнь что-то там…

Каждая программа живёт внутри виртуальной памяти, а операционная система распределяет ресурсы между разными виртуальными процессами. Именно в этот момент появился термион операционной системы

Компания Burroughs создали компьютер B5000 его диспетчер был назвал MCP (Main Control Program)

Этап 3. Сетевые операционные системы

Узкое место – ввод/вывод. Все эти суперкомпьютеры имели один ввод и вывод. Был Teletype. Рулон бумаги, где замыкаются магнитики. Если ввод то ты замыкаешь их, а если программа пишет, то она замыкает магнитики и бьёт молотчками по бумаге. В те времена это было прорывом… Какой-то предмет обихода печатает. Возникало ощущение чудености и искуственного интеллекта

Оператор вводил программы, запускал, записывал на другом месте вывод программы и отдавал заказчику.

Создали вы логистическую компанию. Хотите расчитать путь какой-то. Нанимаете программиста, он пишет код для расчёта. Но запустить код негде. Вы в командировку отправляете из пуссона в бостон программиста. Он отдаёт компании занимающейся компьютингом код. Машинист вводит код и запускает его. Ловит ошибку деление на 0, отдаёт отчёт. Программист едет обратно и говорит, что всё плохо… Дорого всё это ручками передавать и перевозить

Компания AT&T взяла кредиты и протянула медные провода по всей сша. Это была телефонная связь.

Появился модем. Но теперь нет умного программиста, оператора, который проверяет правильность кода. Мы потеряли единую точку контроля. Еще этот оператор мог выставлять счёт (bill). Теперь нам нужно придумать на что это заменить. Появляются аккаунты, биллинг. Но как теперь понять кто именно звонит? Вот звонят и говорят что тот-то. Как идентифицировать. Появляется логический вход (logical income или login). Появляется 3 этапа:

  1. идентификация (присваиваем лицу какое-то логическое имя, пин код, биометрия, номер, хэш от этого храним в системе. Идентификация это процесс сохранения данных о человеке)
  2. аутентификация (процесс проверки, сопоставление хэшей)
  3. авторизация (сопоставили и идёт предоставление ресурсов)

Потом появится многофакторная аутентификация

Суперкомпьютинг становится бизнесом. Но отдельный бизнес грустная история, нужно масштабировать. Но вот США большая страная, на востночном побережье ночь, а на заподном день и компьютеры погибают от нагрузки. Появляется идея соединить всё модем связью. Раскидывать Job’ы