pavia писал(а):
В ограниченных ресурсах жили с ограниченными алгоритмами. Для примера в DOS можно было открыть не более 40 файлов одновременно. Задача была 1.
MS DOS -- пример не шибко удачный, ибо накладывает миллион ограничений там, где системы, работавшие на ещё более ограниченных ресурсах, таких ограничений не имели. Тот же MS DOS, даже имея 640 Кбайт оперативной памяти и изрядную часть поддержки ввода-вывода в BIOS, лежащем в ПЗУ (т.е. не расходуя на это ОЗУ), был однозадачной системой с крайне ограниченным функционалом. Уже упоминавшаяся мной OS/360 или, например, RSX-11M были многозадачными системами, причём поддерживали многозадачность и всё из этого вытекающее даже на 128 Кбайтах ОЗУ (RSX-11M в полном варианте вообще 96 Кбайт хватало, а в максимально кастрированном -- 32 Кбайт, хотя уже не всякая задача могла работатать -- Фортрану хватало, например, ну а компилятор Паскаля или Кобола не лез).
Цитата:
Что касается процессов. То у юникса 1.0 как и у доса задача была ограничена в размерах.
В MS DOS ограничения как такового не было -- можно было использовать всю память, кроме занятой под саму ДОС. Что до ранних Юниксов, то ограниченность объяснялась железом: адресное пространство не более 64 Кбайт. Хотя RSX-11M, работающая на том же самом железе (PDP-11), позволяла создавать задачи, имеющие большее адресное пространство -- хотя в любой конкретный момент времени задача могла адресовать лишь 64 Кбайта.
Цитата:
Механизма страничной защиты небыло в процах.
Не было в 8086/8088. Но был (вместе с поддержкой виртуальной памяти) во многих PDP-11; защита была практически во всех мэйнфреймах, хотя виртуальная память появилась позже, в районе 1970 года (вместе с Системой 370, хотя впервые она появилась несколько раньше на паре моделей, формально относившихся к Системе 360).
Цитата:
Юникс для расширения колличество процессов использовал дисковую память.
Все системы с виртуальной памятью этим могут пользоваться. И многие без неё (например, RSX-11M для системы без т.н. диспетчера памяти -- т.е. MMU, или OS/360 в режиме MVT с поддержкой свёртки-развёртки).
Цитата:
Процессы динамически создавались. Хотя ему это и ненужно было так как количество одновременно работающих процессов не превышала 10 до 90-тых годов.
Как в Юниксе -- не знаю. В OS/360 MFT и MVT (т.е. в системах без виртуальной памяти) число, выражаясь современным языком, процессов пользователя было ограничено 15-ю (это аппаратное ограничение, связанное с механизмом защиты памяти), однако одновременно могло выполняться до нескольких десятков системных процессов (главный планировщик, задачи системного ввода и вывода, ещё что-то там). Кроме того, каждый процесс мог иметь несколько потоков (ограничивалось больше объёмом памяти под управляющие блоки, сама ОС ограничивала, если память не изменяет, 255 потоками на процесс).
Цитата:
Приоритетов в юниксе небыло. Так как универсальный планировщик был изобретён только 80 тых годах.
В IBM этого не знали, поэтому в OS/360 MVT (ещё 1960-е годы) приоритеты уже были.
Цитата:
Был только три состояния ожидание, перекур и работа. Вместо планирования было понятие рандеву(свидания).
То же самое.
Цитата:
А вот память умели выделялась динамически. Но из-за ограниченности ресурсов обычно использовали статическое распределение. Во вторых алгоритмы динамического выделения памяти были не оптимальными. Heap allocator был изобретён в 70-тых годах.
То же самое.
Цитата:
Использовали буферы да массивы. Списки не использовали, вернее использовали, но крайне редко.
То же самое. Внутренние структуры данных ядра OS/360 -- сплошь списки (очереди), даже область динамической памяти называлась областью системных очередей (SQA).
Цитата:
Изоляции избегали ресурсы были общими, виртуализации был минимум.
Первая система виртуальных машин -- VM/370, работавшая на Системе 370 и доступная как коммерческий продукт с 1970 года. До сих пор IBM по виртуализации так никто и не превзошёл (VM/370 плавно эволюционировала в современную z/VM, работающую на мэйнфреймах z/Architecture -- дальних потомках Системы 360).
В общем, "всё
украдено изобретено до нас".