Операционные системы -вопросы теории
Загрузка программ
Загрузка программ Выяснив, что представляет собой программа, давайте рассмотрим процедуру ее загрузки в оперативную память компьютера (многие из обсуждаемых далее концепций, впрочем, в
Создание процессов в 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
Модуль N9000 Ссылки на все внешние модули собраны в таблицу, которая также содержится в сегменте данных. Внешний модуль определяется началом его сегмента данных Все ссы
Архитектура AS/400
Архитектура AS/400 Система команд AS/400 (сервер баз данных среднего уровня, производимый IBM) представляет собой машинно-независимый байт-код. При загрузке программы этот байт-код комп
Фрагмент структуры взаимозависимостей
Фрагмент структуры взаимозависимостей между 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 дискового контроллера
Системное ПЗУ и BIOS дискового контроллера Как правило, сервисы загрузочного монитора доступны загружаемой системе. Так, модуль управления дисками BIOS PC-совместимых компьюте
Загрузка Sun Solaris
Загрузка Sun Solaris Полный цикл загрузки Solaris (версия Unix System V Release 4, поставляющаяся фирмой Sun) на компьютерах х86 происходит в шесть этапов. Первые три этапа стандартны д
Master Boot Record и таблица разделов
Master Boot Record и таблица разделов Разбиение физического диска на логические программа MBR осуществляет на основе содержащейся в ее теле таблицы разделов (partition tab
Структура раздела Solaris
Структура раздела Solaris Загрузив драйверы всех дисковых устройств и файловых систем (а при загрузке из сети — также сетевых контроллеров и сетевых протоколов), ядро начи
Абсолютная загрузка
Абсолютная загрузка Первый, самый простой, вариант состоит в том, что мы всегда будем загружать программу с одного и того же адреса. Это возможно в следующих случаях. Система мо
Формат загрузочного модуля a out
Формат загрузочного модуля a.out В системе UNIX на 32-разрядных машинах также используется абсолютная загрузка. Загружаемый файл формата a.out (современные версии Unix используют более
З 1 Загрузочный модуль a out
З.1. Загрузочный модуль a.out
Разделы памяти
Разделы памяти Одним из способов обойти невозможность загружать более одной програм-Mbi при абсолютной загрузке являются разделы памяти. В наше время этот метод практически не применяе
Разделы памяти
Разделы памяти Если мы не знаем, в какой из разделов пользователь вынужден будет загружать нашу программу, мы должны предоставить по отдельному загрузочному модулю на кажды
Относительная загрузка
Относительная загрузка Относительный способ загрузки состоит в том, что мы загружаем программу каждый раз с нового адреса. При этом мы должны настроить ее на новые адреса, а для этого
Перемещение кода использующего абсолютную адресацию
Перемещение кода, использующего абсолютную адресацию
З 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 с
Распределение памяти в 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 и все у него было подобрано и пригнано, даже части тела.
Сборка программы
Сборка программы Для разрешения внешних ссылок мы должны создать две таблицы: в одной перечислены внешние объекты, на которые ссылается модуль, в другой — объекты, определе
Разрешение внешних ссылок (объектный модуль)
Разрешение внешних ссылок (объектный модуль)
Разрешение внешних ссылок (собранная программа)
Разрешение внешних ссылок (собранная программа) Кроме того, в объектных файлах может содержаться отладочная информация, формат которой может быть очень сложным. Следовательно,
Пример 3 8 Структуры данных объектного
Пример 3.8. Структуры данных объектного модуля ELF (цитируется по elf.h из поставки Linux 2.2.16, перевод комментариев автора) ' Заголовок файла ELF. Находится в начале каждого файл
Объектные библиотеки
Объектные библиотеки Крупные программы часто состоят из сотен и тысяч отдельных модулей. Кроме того, существуют различные пакеты подпрограмм, также состоящие О большого количества модул
Объектная библиотека
Объектная библиотека Линкер (обычно собирает в программу все объектные модули, которые были ему заданы в командной строке, даже если на этот модуль не было ни
Блоксхема работы редактора связей
Блок-схема работы редактора связей
Введение в программу Acrobat Standard
- перейти
Знакомство с рабочей областью
- перейти
Преобразование файлов Microsoft Office
- перейти
Преобразование файлов в формат PDF
- перейти
Настройка качества выходных файлов PDF
- перейти
Создание файлов PDF из Web страниц
- перейти
Модифицирование файлов PDF
- перейти
Использование Acrobat Standard
- перейти
Помещение документов онлайн
- перейти
Оптимизация дизайна онлайновых документов
- перейти
Подписание и защита документов
- перейти
Заполнение форм
- перейти
Подготовка презентаций
- перейти
Работа с рисунками и изображениями
- перейти
Adobe Illustrator 7.0 (часть 2)
- перейти
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий