Важная информация

User Tag List

Страница 1 из 8 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 77

Тема: Менеджер памяти для многозадачной ОС

  1. #1
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Менеджер памяти для многозадачной ОС

    Суть такая:

    1) ни одна программа не может работать напрямую с памятью, исключение составляет память из Heap, но в любом случае этот адрес идёт от системы, система указывает программе где находится её heap.

    2) программа резервирует любое количество памяти с точностью до байта трёхбайтовым указателем.

    3) Разделяются блоки данных (которые хранятся где угодно) и программа (тело и heap), последнее всегда доступно прямым обращением (п. 1).

    4) Блоки данных необходимо запрашивать у системы:
    4.А) New(p: pointer, Length [3 байта], Mode [режим Share - только для владельца или для всех ]) - выделение блока памяти.
    4.Б) GetReadMem(p: pointer, OffSet: pointer[3 байта], Length [2 байта]) - получение памяти на чтение, перед получением памяти данный блок копируется из верхней области в окно обмена.
    4.В) GetRWMem(синтаксис аналогично 4.б) - получение памяти на запись, после того как данный кусок обработан он копируется в оригинальное место расположения.
    4.Г) EndGetReadMem(p: pointer) - освобождается окно обмена, чтение из области данных закончена.
    4.Д) EndGetRWMem(p: pointer) - освобождается окно обмена область копируется в исходное место.

    5) Адрес окна возвращается системой (менеджером памяти).

    6) В случае невозможности выделить блок возвращается сообщение об ошибке.
    Последний раз редактировалось GriV; 21.03.2005 в 14:22.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Кроме того

    для некоторых случаев не всегда имеется возможность определить сколько памяти надо
    Поэтому имеется функция
    realloc(p: pointer, length [3 байта], Mode) - перераспределяет память под имеющийся дескриптор.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #3
    Member Аватар для dwt
    Регистрация
    16.01.2005
    Адрес
    ЕнакиеВО!
    Сообщений
    129
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Цитата Сообщение от GriV
    2) программа резервирует любое количество памяти с точностью до байта трёхбайтовым указателем.
    (Page)+(Address)?

  5. #4
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dwt
    (Page)+(Address)?
    Нет, именно три байта.
    Все проблемы с трансляцией трёхбайтового адреса на страницы на себя берёт система (менеджер).

    Хотя если разбивать как Page*65536+Address, то наверное да
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #5
    Member Аватар для dwt
    Регистрация
    16.01.2005
    Адрес
    ЕнакиеВО!
    Сообщений
    129
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Нет, именно три байта.
    Все проблемы с трансляцией трёхбайтового адреса на страницы на себя берёт система (менеджер).
    А не вызовет ли эта трансляция излишних "тормозов"? Ведь, трансляция прямой трехбайтовой адресации (16MB) - дело хоть и не очень многотактовое, но как мне кажется, полная инкапсуляция "в систему" процедур обработки памяти в целом выйдет довольно-таки тактозатратным (всяческие проверки, арифметика, и т.д.).
    Я имел ввиду (номер page16k)+(физический адрес).
    Последний раз редактировалось dwt; 21.03.2005 в 15:32.

  7. #6
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Тут имеется 2 момента:

    да, в любом случае такая система предполагает притормаживание приложений/процессов из-за того, что происходит служебная работа (перемещение блоков памяти)
    НО: такая система даёт плюс в использование виртуальной памяти ЛЮБОГО размера (до 16 метров) для блоков данных для КАЖДОГО процесса.

    И ещё, при такой организации возможно при помощи виртуальной памяти "расширять" память для 48кб до 48кб+размер своп-файла на диске (или дискете)
    Последний раз редактировалось GriV; 21.03.2005 в 16:20.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  8. #7
    Member Аватар для dwt
    Регистрация
    16.01.2005
    Адрес
    ЕнакиеВО!
    Сообщений
    129
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    да, в любом случае такая система предполагает притормаживание приложений/процессов из-за того, что происходит служебная работа (перемещение блоков памяти)
    НО: такая система даёт плюс в использование виртуальной памяти ЛЮБОГО размера (до 16 метров) для блоков данных для КАЖДОГО процесса.
    А цель? Цель оправдывает средства?

  9. #8
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Цитата Сообщение от dwt
    А цель? Цель оправдывает средства?
    Цель в этом случае оправдывает средства.

    Программист не сможет просчитать все варианты использования памяти, система же будет просчитывать всё автоматически и приложения писать становится до смешного просто: указывайте что надо использовать память, связывайте индекс и ваяйте!
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  10. #9
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не вижу причин обойтись 2х-байтным дескриптором, тем не менее, даже если память выделяется с точностью до 1 байта. Дескритор - это номер в таблице (или связном списке) выделенных блоков.

  11. #10
    Member Аватар для dwt
    Регистрация
    16.01.2005
    Адрес
    ЕнакиеВО!
    Сообщений
    129
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Цель в этом случае оправдывает средства.

    Программист не сможет просчитать все варианты использования памяти, система же будет просчитывать всё автоматически и приложения писать становится до смешного просто: указывайте что надо использовать память, связывайте индекс и ваяйте!
    А не вызовет ли это необходимость создания языка выского уровня или хотя бы интерфейса для обработки не присущих z80 команд работы с памятью/адресов? В последнем случае команды/адреса будут передаваться посредством дека/стека/очереди/...?

Страница 1 из 8 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 6
    Последнее: 10.09.2013, 16:04
  2. Порты памяти - Scorpion и др.
    от ASMAN в разделе Программирование
    Ответов: 27
    Последнее: 18.06.2008, 12:20
  3. Unreal. Breakpoint на чтение памяти.
    от valker в разделе Эмуляторы
    Ответов: 1
    Последнее: 12.02.2005, 12:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •