
- •История операционных систем
- •Первое поколение (1945-55): электронные лампы и коммутационные панели
- •Второе поколение (1955-65): транзисторы и системы пакетной обработки
- •Третье поколение (1965-1980): интегральные схемы и многозадачность
- •Четвертое поколение (с 1980 года по наши дни): персональные компьютеры
- •Онтогенез повторяет филогенез
- •1. Классификация ос
- •1.1 Дос (Дисковые Операционные Системы)
- •1.2 Ос общего назначения
- •1.3 Системы виртуальных машин
- •1.4 Системы реального времени
- •1.5 Средства кросс-разработки
- •1.6 Системы промежуточных типов
- •1.7 Семейства операционных систем
- •1.8 Выбор операционной системы
- •1.9 Открытые системы
- •2. Представление данных в вычислительных системах
- •2.1. Введение в двоичную арифметику
- •2.3. Представление текстовых данных
- •2.4. Представление изображений
- •2.5. Представление звуков
- •2.6. Упаковка данных
- •2.7. Контрольные суммы
- •1.8. Введение в криптографию
- •3. Загрузка программ
- •3.1. Абсолютная загрузка
- •3.2. Разделы памяти
- •3.3. Относительная загрузка
- •3.4. Базовая адресация
- •3.5. Позиционно-независимый код
- •3.6. Оверлеи (перекрытия)
- •3.7. Сборка программ
- •3.8. Объектные библиотеки
- •3.9. Сборка в момент загрузки
- •3.10. Динамические библиотеки
- •3.11. Загрузка самой ос
- •4 Управление оперативной памятью
- •4.1. Открытая память
- •4.2. Алгоритмы динамического управления памятью
- •4.3. Сборка мусора
- •4.4. Открытая память (продолжение)
- •4.4.1. Управление памятью в MacOs и Win16
- •4.5. Системы с базовой виртуальной адресацией
- •5. Компьютер и внешние события
- •5.1. Опрос
- •5.2. Канальные процессоры и прямой доступ к памяти
- •1. Мастер шины (bus master), когда устройство имеет свой собственный контроллер пдп,
- •2. Централизованный контроллер, устанавливаемый на системной плате и способный работать с несколькими различными устройствами.
- •5.3. Прерывания
- •5.4. Исключения
- •5.5. Многопроцессорные архитектуры
Онтогенез повторяет филогенез
После опубликования книги Чарльза Дарвина «Происхождение видов» немецкий зоолог Эрнст Хэккель (Ernst Haeckel) сформулировал правило: «Онтогенез повторяет филогенез». Сказав это, он имел в виду, что развитие зародыша (онтогенез) повторяет эволюцию видов (филогенез). Другими словами, человеческая яйцеклетка от момента оплодотворения до того, как стать человеческим ребенком, проходит через состояния рыбы, свиньи и т. д. Современные биологи считают такую модель очень сильно и грубо упрощенной, но все же в ней присутствует зерно истины.
Нечто подобное произошло в компьютерной промышленности. Каждый новый вид (мэйнфрейм, мини-компьютер, персональный компьютер, встроенный компьютер, смарт-карта и т. д.) проходит, видимо, через те же стадии развития, что и их предки. Первые мэйнфреймы программировались полностью на языке ассемблера. Даже такие сложные программы, как компиляторы и операционные системы, в те времена писали на ассемблере. Когда появились мини-компьютеры, на мэйнфреймах уже стали обычными Фортран, Кобол и другие языки программирования высокого уровня, но тем не менее на новых мини-компьютерах программировали на ассемблере (из-за недостатка памяти). Когда были созданы микрокомпьютеры (самые первые персональные компьютеры), программирование на них также велось на ассемблере, несмотря на то, что к этому времени на мини-компьютерах уже применялось программирование на языках высокого уровня. Карманные компьютеры тоже начинались с ассемблерных программ, но очень быстро перешли на языки высокого уровня (в основном за счет того, что к тому моменту они уже разрабатывались на больших машинах). То же самое относится и к смарт-картам.
А теперь взглянем на операционные системы. Первые мэйнфреймы изначально не имели защитного оборудования и поддержки многозадачности, поэтому на них работали простые операционные системы, управляющие в каждый конкретный момент времени только одной загруженной вручную программой. Позже на этих машинах появилось необходимое оборудование и операционные системы, поддерживающие управление одновременно несколькими программами, а затем и полная возможность работы в режиме разделения времени.
Когда мини-компьютеры только появились на свет, на них также не было защитной аппаратуры и в каждый конкретный момент времени могла работать только одна загруженная вручную программа, несмотря на то, что к тому времени многозадачность уже была разработана и хорошо работала в мире мэйнфреймов. Постепенно мини-компьютеры обзавелись защитным оборудованием и появилась возможность одновременной работы на них двух или более программ. На первых микрокомпьютерах также в каждый момент времени могла работать только одна программа, и только позже стал возможным многозадачный режим. Тем же путем развивались карманные компьютеры и смарт-карты.
Диски впервые появились на больших мэйнфреймах и только затем на мини-компьютерах, микрокомпьютерах и т. д. Даже сейчас на смарт-картах нет жесткого диска, но с появлением флэш-памяти вскоре будут созданы эквиваленты дисков и для карт. Лишь после возникновения первых дисков возникли примитивные файловые системы. На компьютере CDC 6600, который смело можно назвать самым мощным мэйнфреймом 60-х годов, пользователи файловой системы имели возможность создавать файл и затем объявлять этот файл постоянным. Это означало, что он останется на диске даже после завершения работы создавшей его программы. Для получения доступа к этому файлу программа должна была подключить его с помощью специальной команды, указав пароль (который задавался в тот момент, когда файл объявлялся постоянным). В сущности, тогда на компьютере был всего один каталог, совместно используемый всеми пользователями. Конфликты имен файлов должны были разрешаться самими пользователями. Так же все начиналось и на мини-компьютерах: ранние файловые системы имели один каталог, общий для всех пользователей; это верно и для ранних микрокомпьютерных файловых систем.
Виртуальная память (то есть виртуальное устройство, позволяющее работать программам, требующим больше памяти, чем физически имеется у компьютера) развивалась точно таким же образом. Сначала она появилась на мэйнфреймах, затем на мини-компьютерах, микрокомпьютерах и постепенно заработала на все меньших и меньших системах. Сети имеют очень похожую историю.
Во всех случаях развитие программного обеспечения диктовалось ростом технологий. Например, на первых микрокомпьютерах было что-то около 4 Кбайт памяти и отсутствовала аппаратная защита. Соответственно, для управления такой крошечной системой не годились языки высокого уровня и многозадачность, они были просто слишком громоздки. По мере того как микрокомпьютеры эволюционировали в современные персональные компьютеры, на них появилось необходимое оборудование, а потом и программное обеспечение для управления этими более сложными устройствами. Вероятно, подобное развитие продолжится в течение последующих лет. В других областях также действует это правило перевоплощения, но в компьютерной промышленности, как нам кажется, развитие происходит заметно быстрее.
Основные функции операционных систем
По современным представлениям ОС должна уметь делать следующее.
□ Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение (этот пункт не относится к ОС, предназначенным для прошивки в ПЗУ).
□ Обеспечивать управление памятью. В простейшем случае это указание единственной загруженной программе адреса, на котором кончается память, доступная для использования, и начинается память, занятая системой. В многопроцессных системах это сложная задача управления системными ресурсами.
□ Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски, флэш-память и т. д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные в виде файловых систем.
□ Предоставлять более или менее стандартизованный доступ к различным периферийным устройствам, таким как терминалы, модемы, печатающие устройства или двигатели, поворачивающие рулевые плоскости истребителя.
□ Предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно — часть систем ограничивается командной строкой, в то время как другие на 90% состоят из интерфейсной подсистемы. Встраиваемые системы часто не имеют никакого пользовательского интерфейса.
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа — дисковая операционная система MS DOS. Более развитые ОС предоставляют также следующие возможности:
□ параллельное (или псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач;
□ организацию взаимодействия задач друг с другом;
□ организацию межмашинного взаимодействия и разделения ресурсов;
□ защиту системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ;
□ аутентификацию (проверку того, что пользователь является тем, за кого он себя выдает), авторизацию (проверка, что тот, за кого себя выдает пользователь, имеет право выполнять ту или иную операцию) и другие средства обеспечения безопасности.