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

новости рк

Управление оперативной памятью


Управление оперативной памятью
Управление оперативной памятью Основной ресурс системы, распределением которого занимается ОС — это оперативная память. Поэтому организация памяти оказывает большое влияние на структуру...
Открытая память
Открытая память Самый простой вариант управления памятью — отсутствие диспетчера памяти и возможность загружать в системе только один процесс. Именно так работают СР/М и RT-ll SJ (Sing...
Управление памятью в однопроцессной ОС с открытой памятью
Рисунок 4.1. Управление памятью в однопроцессной ОС с открытой памятью В этом случае управление памятью со стороны системы состоит в том, что загрузчик проверяет, поместится ли загружаем...
Загруженная программа и brk_addr
Рисунок 4.2. Загруженная программа и brk_addr Изначально эта переменная равна PROG_END, ее значение увеличивается при выделении новых блоков, но в некоторых случаях может и уменьшаться....
Пример 4 1 Выделение дополнительной
Пример 4.1. Выделение дополнительной памяти в GNU LibC для Linux morecore.с: /* Copyright (С) 1991, 1992 Free Software Foundation, Inc. Этот файл является частью библиотеки С проекта...
Алгоритмы динамического управления памятью
Алгоритмы динамического управления памятью Герой имел привычку складывать окурки в кожаный кисет и употреблять их для изготовления новых самокруток. Таким образом, согл...
Внешняя фрагментация
Рисунок 4.3. Внешняя фрагментация В стандартных библиотечных функциях языков высокого уровня, таких как malloc/free/realloc в С, new/dispose в Pascal и т. д., как правило, используются а...
Пример 4 2 Пример последовательности
Пример 4.2. Пример последовательности запросов памяти while(TRUE) { void * bl = malloc(random (10)); /* Случайный размер от 0 до 10 байт */ void * Ь2 = malloc(random(lO)+10); Л ........
Результат работы программы примера 4 2
Рисунок 4.4. Результат работы программы примера 4.2 К счастью, пример 4.2 имеет искусственный характер. В реальных программах такая ситуация встречается редко, и часто оказывается проше исп...
Внутренняя фрагментация
Рисунок 4.5. Внутренняя фрагментация Чем больше размер единицы выделения, тем меньше нам грозит фрагментация внешняя, и тем большие потери обеспечивает фрагментация внутренняя. Величина...
Антисортировка
Рисунок 4.6. Антисортировка Разработчик программы динамического распределения памяти обязан решить еще одну важную проблему, а именно — объединение свободных блоков. Действительно, обид...
Парные метки
Рисунок 4.7. Парные метки Похожим образом присоединяется и сосед, стоящий после него. Единственное отличие состоит в том, что этого соседа все-таки нужно извлекать из списка свободных б...
Объединение с использованием парных меток
Рисунок 4.8. Объединение с использованием парных меток ПримечаниеПримечание Это действительно большое преимущество, так как оно значительно облегчает выявление ошибок работы с указате...
Фрагменты в реализации malloc из GNU LibC
Рисунок 4.9. Фрагменты в реализации malloc из GNU LibC...
Пример 4 3 Реализация malloc/fгее
Пример 4.3. Реализация malloc/fгее в GNU LibC. Функция__default_morecore приведена в примере 4.1. malloc.с /* Распределитель памяти 'malloc'. Copyright 1990, 1991, 1992 Free Softw...
Таблица информационных записей
Таблица информационных записей о блоках. Размещается через align/__free (не malloc/free). */ malloc_info *_heapinfo; /* Количество информационных записей. */ static size_t heapsize; /*...
Выделение блоков фиксированных размеров
Рисунок 4.10. Выделение блоков фиксированных размеров На практике, числа Фибоначчи не используются. Одной из причин, по-видимому, является относительная сложность вычисления такого Fi, кото...
Алгоритм близнецов
Рисунок 4.11. Алгоритм близнецов Существуют и более сложные варианты применения описанного выше подхода. Например, пул свободной памяти Novell Netware состоит из 4 очередей с шагом 16 б...
Сборка мусора
Сборка мусора Что-то с памятью моей стало Р. Рождественский Явное освобождение динамически выделенной памяти применяется во многих системах программирования и п...
Сборка мусора просмотром ссылок
Рисунок 4.12. Сборка мусора просмотром ссылок Все методы сборки мусора, так или иначе, сводятся к поддержанию базы данных о том, какие объекты на кого ссылаются. Использование такой техники...
Открытая память (продолжение)
Открытая память (продолжение) Описанные выше алгоритмы распределения памяти используются не операционной системой, а библиотечными функциями, присоединенными к программе. Однако ОС, ко...
Фрагментация при загрузке и выгрузке задач
Рисунок 4.13. Фрагментация при загрузке и выгрузке задач...
Управление памятью в OS/360
Управление памятью в OS/360 В этой связи нельзя не упомянуть о поучительной истории, связанной с управлением памятью в системах линии IBM System 360. В этих машинах не было аппаратных с...
Управление памятью в MS DOS
Управление памятью в MS DOS Так, например, процедура управления памятью MS DOS рассчитана на случай, когда программы выгружаются из памяти только в порядке, обратном тому, в каком они т...
Управление памятью в MS DOS
Рисунок 4.14. Управление памятью в MS DOS...
Нарушения стекового порядка загрузки и выгрузки в MS DOS
Рисунок 4.15. Нарушения стекового порядка загрузки и выгрузки в MS DOS В системах с открытой памятью невозможны эффективные средства разделения доступа. Любая программная проверка прав...
Управление памятью в MacOS и Win16
Управление памятью в MacOS и Win16 В этих системах предполагается, что пользовательские программы не сохраняют указателей на динамически выделенные блоки памяти. Вместо этого каждый та...
Управление памятью с помощью "ручек"
Рисунок 4.16. Управление памятью с помощью "ручек" Вызовы GlobalLock/GlobalUnlock: сами по себе увеличивают объем кода и время исполнения; мешают компиляторам выполнять опти...
Дефрагментация при управлении
Рисунок 4.17. Дефрагментация при управлении памятью с помощью "ручек" Наиболее опасной ошибкой, возникающей на фазе микрооптимизации, является вынос указателя на динамическую...
Системы с базовой виртуальной адресацией
Системы с базовой виртуальной адресацией Как уже говорилось, в системах с открытой памятью возникают большие сложности при организации многозадачной работы. Самым простым способом разр...
Виртуальная память на основе базовой адресации
Рисунок 4.18. Виртуальная память на основе базовой адресации Вы можете заметить, что термин базовая адресация уже занят — мы называли таким образом адресацию по схеме reg[offset]. Метод...
Дефрагментация при использовании базовой адресации
Рисунок 4.19. Дефрагментация при использовании базовой адресации Часто ОС, работающие на таких архитектурах, умеют сбрасывать на диск образы тех процессов, которые долго не получают управле...
Диспетчер системных вызовов
Рисунок 4.20. Диспетчер системных вызовов Протокол общения прикладной программы с системой состоит в следующем: программа помещает параметры вызова в оговоренное место — обычно в регистры...
Системный и пользовательский режимы
Рисунок 4.21. Системный и пользовательский режимы В архитектурах с более сложной адресацией нередко предоставляются специальные инструкции для передачи данных между пользовательским и системн...








Начало