Операционные системы -вопросы теории

шоколадная колбаска рецепт с фото пошаговоhow long does cialis last|additional hints

Загрузка программ


Загрузка программ
Загрузка программ Выяснив, что представляет собой программа, давайте рассмотрим процедуру ее загрузки в оперативную память компьютера (многие из обсуждаемых далее концепций, впрочем, в...
Создание процессов в Unix
Создание процессов в Unix В системах семейства Unix новые процессы создаются системным вызовом fork. Этот вызов создает два процесса, образы которых в первый момент полностью идентичны,...
Пример 3 1 Создание процесса в системах семейства Unix
Пример 3.1. Создание процесса в системах семейства Unix ;nt pid; /* Идентификатор порожденного процесса */ switch(pid = fork()) I case 0: /* Порожденный процесс */ break; case -1:...
Пример 3 2 Создание процесса и
Пример 3.2. Создание процесса и замена программы в системах семейства Unix int pid; /* Идентификатор порожденного процесса */ switch (pid = fork () ) { case 0: /* Порожденный пр...
Сборка в момент загрузки
Сборка в момент загрузки ...как только они вошли в Бесконечный Лес, собранный джентельмен стал разбираться на части и принялся выплачивать арендные деньги. Сначала о...
Программные модули в N9000
Программные модули в N9000 В этих архитектурах каждый объектный модуль соответствует одному модулю в смысле языка высокого уровня Oberon (или NIL— N9000 Instrumental Language). Далее мы...
Модуль N9000
Рисунок 3.13. Модуль N9000 Ссылки на все внешние модули собраны в таблицу, которая также содержится в сегменте данных. Внешний модуль определяется началом его сегмента данных Все ссы...
Архитектура AS/400
Архитектура AS/400 Система команд AS/400 (сервер баз данных среднего уровня, производимый IBM) представляет собой машинно-независимый байт-код. При загрузке программы этот байт-код комп...
Фрагмент структуры взаимозависимостей
Рисунок 3.14. Фрагмент структуры взаимозависимостей между NLM (Netware Loadable Module) сервера Netware 4.11  ...
Динамические библиотеки
Динамические библиотеки В Windows и OS/2 используется именно такой способ загрузки. Исполняемый модуль в этих системах содержит ссылки на другие модули, называемые DLL (Dynamically Load...
Пример 3 9 Пример использования
Пример 3.9. Пример использования динамической библиотеки (здесь — REXX | I Socket) в интерпретируемом языке /************************************************** ПРОСТОЙ HTTP клиент на REX...
Пример 3 10 DEFфайл из примеров
Пример 3.10. DEF-файл из примеров кода VisualAge C++ V3.0 LIBRARY REXXUTIL INITINSTANCE LONGNAMES PROTMODE DESCRIPTION 'REXXUTIL Utilities - (c) Copyright IBM Corporation 1991' DAT...
Разделяемый код в системах семейства Windows
Разделяемый код в системах семейства Windows Катастрофические масштабы эта проблема принимает в системах семейства Windows, где принято помещать в дистрибутивы прикладных программ все п...
Загрузка самой ОС
Загрузка самой ОС — Опять себя за волосы дергал ("Тот самый Мюнхаузен"), Г. Горин При загрузке самой ОС возникает специфическая проблема: в пустой машин...
Системное ПЗУ и BIOS дискового контроллера
Рисунок 3.15. Системное ПЗУ и BIOS дискового контроллера Как правило, сервисы загрузочного монитора доступны загружаемой системе. Так, модуль управления дисками BIOS PC-совместимых компьюте...
Загрузка Sun Solaris
Загрузка Sun Solaris Полный цикл загрузки Solaris (версия Unix System V Release 4, поставляющаяся фирмой Sun) на компьютерах х86 происходит в шесть этапов. Первые три этапа стандартны д...
Master Boot Record и таблица разделов
Рисунок 3.16. Master Boot Record и таблица разделов Разбиение физического диска на логические программа MBR осуществляет на основе содержащейся в ее теле таблицы разделов (partition tab...
Структура раздела Solaris
Рисунок 3.17. Структура раздела Solaris Загрузив драйверы всех дисковых устройств и файловых систем (а при загрузке из сети — также сетевых контроллеров и сетевых протоколов), ядро начи...
Абсолютная загрузка
Абсолютная загрузка Первый, самый простой, вариант состоит в том, что мы всегда будем загружать программу с одного и того же адреса. Это возможно в следующих случаях. Система мо...
Формат загрузочного модуля a out
Формат загрузочного модуля a.out В системе UNIX на 32-разрядных машинах также используется абсолютная загрузка. Загружаемый файл формата a.out (современные версии Unix используют более...
Рисунок З 1 Загрузочный модуль a out
Рисунок З.1. Загрузочный модуль a.out  ...
Разделы памяти
Разделы памяти Одним из способов обойти невозможность загружать более одной програм-Mbi при абсолютной загрузке являются разделы памяти. В наше время этот метод практически не применяе...
Разделы памяти
Рисунок 3.2. Разделы памяти Если мы не знаем, в какой из разделов пользователь вынужден будет загружать нашу программу, мы должны предоставить по отдельному загрузочному модулю на кажды...
Относительная загрузка
Относительная загрузка Относительный способ загрузки состоит в том, что мы загружаем программу каждый раз с нового адреса. При этом мы должны настроить ее на новые адреса, а для этого...
Перемещение кода использующего абсолютную адресацию
Рисунок 3.3. Перемещение кода, использующего абсолютную адресацию...
Рисунок З 4 Перемещение кода самостоятельно
Рисунок З.4. Перемещение кода, самостоятельно перезагружающего базовые регистры Сложность здесь в том, что если абсолютные адресные поля можно найти анализом кодов команд (деассемблиров...
Пример 3 3 Примеры статически
Пример 3.3. Примеры статически инициализованных указателей в С int buf[20], *bufptr=buf; char * message="No message defined yet\n"; void do_nothing_hook(int); void (*hook...
Пример 3 4 Реализация косвенного
Пример 3.4. Реализация косвенного перехода по адресу dst_seg:dst_offs push dst seg ; Это и будет ссылкой на абсолютный адрес push dst_offs retf На практике содействие программиста...
Пример 3 5 Заголовок ЕХЕфайла
Пример 3.5. Заголовок ЕХЕ-файла MS DOS. Цитируется по WINT.H из поставки | ; MS Visual C++ v6.0 (перевод комментариев автора) #define IMAGE_DOS_SIGNATURE Ox4D5A // MZ typedef struct...
Распределение памяти в RT11 с
Рисунок 3.5. Распределение памяти в RT-11 с одним загруженным sav-файлом и двумя rel-файлами  ...
Базовая адресация
Базовая адресация Впрочем, если уж мы полагаемся на содействие программиста, можно пойти в этом направлении дальше: мы объявляем один или несколько регистров процессора базовыми (неско...
Рисунок З 6 Перемещение кода использующего базовую адресацию
Рисунок З.6. Перемещение кода, использующего базовую адресацию В этом случае для перемещения программы нам нужно только изменить значения базовых регистров, и программа даже не узнает, что...
Позиционнонезависимый код
Позиционно-независимый код За всеми этими разговорами мы чуть было не забыли о третьем способе формирования адреса в программе. Это относительная адресация, когда адрес получается слож...
Любопытное наблюдение
Любопытное наблюдение В эпоху RT-11 хакеры писали драйверы. Сейчас они пишут вирусы. Еще любопытнее, что для некоторых персональных платформ, например, для Amiga, вирусов почти нет. Хак...
Позиционнонезависимый код в современных Unixсистемах
Позиционно-независимый код в современных Unix-системах Компиляторы современных систем семейства UNIX — GNU С или стандартный С-компилятор UNIX SVR4 имеют ключ -f PIC (Position-Independe...
Пример 3 6 Получение адреса точки
Пример 3.6. Получение адреса точки входа в позиционно-независимую подпрограмму call L4 L4: popl %ebx...
Пример 3 7 Позиционнонезависимый
Пример 3.7. Позиционно-независимый код, порождаемый компилятором GNU С /* strerror.c (emx+gcc) — Copyright (с) 1990-1996 by Eberhard Mattes */ #include <stdlib.h> #include &...
Оверлеи (перекрытия)
Оверлеи (перекрытия) Еще более интересный способ загрузки программы — это оверлейная загрузка (over-lay, лежащий сверху) или, как это называли в старой русскоязычной литературе, перекры...
Образ процесса с несколькими оверлеями
Рисунок 3.7. Образ процесса с несколькими оверлеями Потребность в таком способе загрузки появляется, если у нас виртуальное адресное пространство мало, например 1 Мбайт или даже всего 6...
Сборка программ
Сборка программ Он был ловкий и весь такой собранный джентльмен, и одет — в самые лучшие и дорогие одежды; и все у него было подобрано и пригнано, даже части тела....
Сборка программы
Рисунок 3.8. Сборка программы Для разрешения внешних ссылок мы должны создать две таблицы: в одной перечислены внешние объекты, на которые ссылается модуль, в другой — объекты, определе...
Разрешение внешних ссылок (объектный модуль)
Рисунок 3.9. Разрешение внешних ссылок (объектный модуль)...
Разрешение внешних ссылок (собранная программа)
Рисунок 3.10. Разрешение внешних ссылок (собранная программа) Кроме того, в объектных файлах может содержаться отладочная информация, формат которой может быть очень сложным. Следовательно,...
Пример 3 8 Структуры данных объектного
Пример 3.8. Структуры данных объектного модуля ELF (цитируется по elf.h из поставки Linux 2.2.16, перевод комментариев автора) ' Заголовок файла ELF. Находится в начале каждого файл...
Объектные библиотеки
Объектные библиотеки Крупные программы часто состоят из сотен и тысяч отдельных модулей. Кроме того, существуют различные пакеты подпрограмм, также состоящие О большого количества модул...
Объектная библиотека
Рисунок 3.11. Объектная библиотека Линкер (Рисунок 3.12) обычно собирает в программу все объектные модули, которые были ему заданы в командной строке, даже если на этот модуль не было ни...
Блоксхема работы редактора связей
Рисунок 3.12. Блок-схема работы редактора связей  ...








Начало