Реферат: Операционные системы 5
Книги /5/ и /6/ содержат много полезного по практическим вопросам проектирования ОС, а /7/ остается хорошим источником по теоретическим и алгоритмическим вопросам.
Из литературы по Windows следует прежде всего рекомендовать классическую книгу /8/, которая делает понятными многие вопросы, трудно перевариваемые по официальной документации. Более глубокий разбор того, «как это сделано в Windows», можно найти в книге /9/. К сожалению, эта книга заметно уступает замечательной, но устаревшей по материалу книге того же автора /10/, которую, тем не менее, полезно прочесть тем, кого интересуют вопросы практической реализации ОС.
На фоне неисчислимых и неотличимых друг от друга пользовательских руководств по UNIX следует выделить достаточно серьезную работу /11/. Не потеряла интереса старенькая, тонкая книжка /12/, в которой содержится много полезного об основных структурах данных и алгоритмах UNIX. Намного подробнее те же вопросы рассмотрены в другой старой книге, которая давно приобрела известность в электронном варианте /13/. Бумажное издание этой книги на русском языке существует только в пиратском варианте, без указания имени автора.
Для тех, кого еще интересует MS-DOS, можно порекомендовать /14/, это одна из лучших книг на данную тему.
Некоторые алгоритмы, используемые при реализации различных ОС, хорошо изложены в классической книге /15/.
Большие коллекции литературы и документации по ОС имеются в Интернете. Среди русскоязычных сайтов можно рекомендовать, например, /16, 17, 18, 19, 20/.
Знание английского языка открывает доступ к морю свежей информации в Интернете. Огромная куча сведений по Windows содержится в /21/. На сайте /22/ можно найти интересные статьи по отдельным вопросам архитектуры Windows, а также скачать ряд полезных утилит. Из большого числа сайтов, посвященных UNIX и Linux, можно назвать, например, /23/ и /24/. На сайте /25/ можно найти много статей и книг по актуальным вопросам программирования, в том числе по ОС.
1.3. Краткий очерк истории ОС
Изучение истории развития ОС показывает, что все существенные продвижения в области архитектуры ОС связаны с влиянием двух основных факторов:
· прогресс технологии, приводящий к быстрому возрастанию характеристик аппаратуры ЭВМ и к появлению принципиально новых типов аппаратуры;
· принципиально новые идеи, возникающие у проектировщиков.
Не ввязываясь в давний спор материалистов с идеалистами, в данном частном случае приходится признать, что первый, материальный фактор определял развитие ОС на 80 – 90%. Такие технологические прорывы, как изобретение магнитных дисков, микропроцессоров, создание высококачественных видеомониторов, настоятельно требовали радикальных изменений в технологии работы с компьютером, и вследствие этого обуславливали создание принципиально новых типов ОС или их отдельных подсистем. С другой стороны, некоторые идеи в области организации вычислительного процесса и интерфейса дали серьезный толчок совершенствованию архитектуры компьютеров.
Не зная хотя бы в общих чертах основных этапов развития аппаратного и программного обеспечения, трудно понять многие особенности современных ОС.
Дополнительный аргумент в пользу знания истории заключается в том, что многие технические решения, которые, казалось, навсегда ушли в прошлое вместе с конкретными системами, неожиданно вновь оказываются актуальными на новом витке развития. Некоторые примеры такого рода будут рассмотрены в курсе.
1.3.1. Предыстория ОС
Вскоре после того, как в конце 40-х годов XX века были созданы первые электронные компьютеры, очень остро встала проблема повышения эффективности использования оборудования, и прежде всего центрального процессора.
Типичный компьютер первого – второго поколений представлял собой большую комнату, уставленную шкафами и увитую кабелями. Каждое из основных устройств – центральный процессор, оперативная память, накопители на магнитных лентах, устройства ввода с перфокарт, принтер – занимало один или несколько «шкафов» или «тумб», наполненных радиолампами и механическими частями.
Все это стоило больших денег, потребляло бешеное количество электроэнергии[1] и регулярно ломалось.
В таких условиях машинное время стоило очень дорого. Тем не менее, обычная практика использования ЭВМ не способствовала экономии. Как правило, программист, разрабатывающий программу, заказывал ежедневно несколько часов машинного времени и в течение этого времени монопольно использовал машину. Выполнив очередной запуск отлаживаемой программы (которую надо было каждый раз вводить либо с клавиатуры, либо, в лучшем случае, с перфокарт), пользователь получал распечатку (чаще всего в виде массива цифр), анализировал результаты, вносил изменения в программу и снова запускал ее. Таким образом, в ходе сеанса отладки дорогостоящее оборудование простаивало 99% времени, пока программист осмысливал результаты и работал с устройствами ввода/вывода. Кроме того, сбой при вводе одной перфокарты мог потребовать начать сначала всю работу программы.
Возникла великая идея – использовать сам компьютер для повышения эффективности работы с ним же.
Одно из ответвлений этой идеи – создание языков и систем программирования – рассматривается в отдельных курсах. Другим важным шагом стало возложение на специальную компьютерную программу части тех функций, которые до этого выполнял оператор или сам программист.
Программы такого рода назывались обычно мониторами (не путать с монитором как устройством вывода, который в то время был редчайшей экзотикой!). Монитор принимал команды, состоящие, как правило, из 1-2 букв названия и 1-3 аргументов, заданных 8-ричными или 16-ричными числами. Типичными командами были, например:
· загрузка данных с перфокарт по указанному адресу памяти;
· просмотр и корректировка (с пишущей машинки) значений в указанном диапазоне адресов;
· пошаговое выполнение программы с выдачей результатов каждой команды на пишущую машинку;
· запуск программы с указанного адреса с заданием адресов контрольных точек остановки.
Несмотря на убогость, по нынешним меркам, подобных средств, они в свое время значительно повысили производительность работы программистов. Однако кардинального повышения загрузки процессора не произошло.
Временем широкого распространения мониторов в мире были 50-е годы прошлого века (в СССР – 60-е годы). В настоящее время нечто подобное можно встретить на самых примитивных микропроцессорных контроллерах.
1.3.2. Пакетные ОС
Историю собственно ОС можно начать с появления в конце 50-х годов первых систем, организующих работу по пакетному принципу.