User Tag List

Страница 7 из 8 ПерваяПервая ... 345678 ПоследняяПоследняя
Показано с 61 по 70 из 77

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

  1. #61

    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот, выношу на обсуждение кое-какие предложения по поводу организации памяти и принципа работы с ней в ОС. С 64к много не накрутишься, но такая архитектура кажется мне достаточно приемлемой... Кодом пока не подтверждено.

    Менеджер памяти ОС.

    * Структура памяти.

    Вся системная память делится ОС на 4К-страницы. Существует память
    ROM, OS RAM, общая память, заменяемая память (область подкачки) и
    память приложений. Адресное пространство системы состоит из 16 таких
    страниц. Приложения могут динамически распределить любое число 4К
    страниц, но не менее чем 4К. Если необходимо более точное выделение
    памяти, приложение должно использовать процедуры менеджера системной
    (не страничной) памяти.

    Память ROM - это страницы, содержащие системное ПЗУ. Они используются
    только тогда, когда HAL делает системные вызовы. В этих страницах
    также находится ПЗУ TR-DOS (или ZXDOS).

    Память OS RAM - это страницы с кодом и данными ОС. Эти страницы
    являются системными и не должны изменяться приложениями. Эти
    страницы не заменяемы (сама ОС может заменять их и разделять их со
    страницами ROM), но это прозрачно для приложений.

    Общая память - это страницы, память в которых может быть распределена
    приложениям и сохраняет свой адрес независимо от текущего приложения.
    Это весьма ограниченный ресурс, который должен использоваться крайне
    аккуратно. Приложения могут использовать его для коммуникации между
    процессами/страницами, однако объем памяти, распределяемый в этой
    области, ограничен для каждого приложения. Блоки памяти в этой области
    именованы (имеют символьные идентификаторы).

    Заменяемая память (область подкачки) используется приложениями для
    обращения к статической/динамической распределяемой памяти.

    Страницы памяти приложений содержат код и статические данные
    приложений. Эта область обычно имеет гранулярность системных страниц
    (не менее 16 кб), однако одна системная страница может содержать более
    одного приложения. Если приложению нужно более одной 16К-страницы,
    то приложение должно использовать систему межстраничных вызовов.
    Межстраничные вызовы занимают 5 байт памяти и настраиваются ОС во
    время загрузки приложения.

    * Статическая и динамическая память.

    Когда приложению необходимо поместить некоторую страницу RAM (4 кб) в
    некоторую физическую страницу, вызов ОС возвращает адрес физической
    страницы в регистре IY. Эта память будет доступна до следующего
    вызова размещения страницы в той же физической странице. Такая
    память называется динамической. Любой вызов к функциям размещения
    динамической памяти делает невозможным доступ к статической памяти до
    следующего вызова размещения страниц статической памяти.

    В дополнение к динамической памяти, ОС может настроить приложение так,
    что адреса обращения к памяти будут фиксированы. Это называется
    статической памятью. Статическая память распределяется во время
    загрузки приложения и не освобождается до завершения приложения.
    Вызов размещения страниц статической памяти в физических страницах
    делает невозможным доступ к динамической памяти до следующего вызова
    размещения страниц динамической памяти.

    Метод выделения памяти (статический или динамический) определяется
    программистом. Возможно также использовать комбинацию двух методов.

    * Менеджер системной памяти.

    Если приложению не требуются полные 4К-страницы, оно может использовать
    менеджер системной памяти. Менеджер системной памяти распределяет
    4К-страницы по мере необходимости, выделяя приложениям требуемый объем.
    Менеджер системной памяти предоставляет собственные функции размещения
    памяти в страницах, аналогичные функциям размещения динамической памяти.
    Для своей работы менеджер памяти создает в 4К-страницах собственные
    структуры. Память, распределяемая через менеджер памяти, выравнивается
    по 256-байтным границам.

    * Карта памяти

    ** Вариант 1: стандартная конфигурация

    #0000 #3FFF ROM (4)
    #4000 #5FFF Экран, общая память (2)
    #6000 #9FFF OS RAM (4)
    #A000 #BFFF Область подкачки (2)
    #C000 #FFFF Область приложений (4)

    ** Вариант 2: размещаемая ROM (cache и др.)

    #0000 #3FFF ROM, OS RAM, ZXDOS (4)
    #4000 #6FFF Экран, общая память (3)
    #7000 #8FFF OS RAM (2)
    #9000 #BFFF Область подкачки (3)
    #C000 #FFFF Область приложений (4)

    ** Вариант 3: возможность замены страницы #8000-#BFFF

    #0000 #3FFF ROM (4)
    #4000 #5FFF Экран, общая память (2)
    #6000 #7FFF OS RAM (2)
    #8000 #BFFF OS RAM, область подкачки (4)
    #C000 #FFFF Область приложений (4)

    ** Вариант 4: размещаемая ROM, возможность замены страницы #8000-#BFFF

    #0000 #3FFF ROM, OS RAM, ZXDOS (4)
    #4000 #6FFF Экран, общая память (3)
    #7000 #7FFF OS RAM (1)
    #8000 #BFFF OS RAM, область подкачки (4)
    #C000 #FFFF Область приложений (4)

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

  3. #62

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    А вообще, ваш метод годится при наличии небольшой доп. утилиты для любого компилятора, хоть даже и с паскаля или С. Достаточно откомпилировать с 2х разных адресов, и подать на вход такой утилиты, и совсем несложно выявить слова, которые отличаются на смещение, которое должно наблюдаться (start2-start1).
    наверное, ты совсем понял задачи, возлагаемые на модульную библиотеку. это не только создание релоцируемого кода, а возможности для связки модулей и реализации апи. потому как кроме вызовов функций и переходов еще есть переменные, константы. и они могут меняться и зависеть от других частей системы.

  4. #63

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    Блоки памяти в этой области
    именованы (имеют символьные идентификаторы).
    зачем? по крайней мере, почему символьные?

    прочитал идеи, с чем-то согласен, с чем-то нет.

    вот что было наработано в результате бурных дискуссий с GriV'ом (лог аськи занимает около 50кб %) )
    -память в диапазоне от #5c00-#bfff является системной и система распоряжается ею по своему усмотрению. часть области занята статическими таблицами, остальная часть распределяется через менеджер кучи и работа идет с точностью до байта
    -последние 16кб адресного пространства предназначены для хранения приложений и их данных. распределяется с помощью менеджера верхней памяти (на системном уровне) и выделяется блоками по 256 байт. менеджер поддерживает множественное владение блоками памяти. для процессов верхняя память выделяется побайтово, все преобразования на себя берет менеджер памяти.
    -все необходимые системе данные (процессы, файлы и т.д) хранятся дескрипторами в виде связных списков в нижней памяти.
    -процессы могут иметь локальную область памяти, управляемую системным менеджером для работы с "кучей" (heap) на уровне байтов.

  5. #64

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

    Thumbs up Ох ты...

    Даже и добавить нечего..

    А если честно, я очень рад что идёт здоровая критика...
    И очень рад что люди включаются в осуждение этой темы...
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #65

    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня примерно то же самое. Основное в написанном - идея "свопинга". Ибо когда процессу отведено только 16 кб, переключить их и оставить целым процесс будет проблематично. Значит надо делать место для "свопинга". А для IPC - та самая "общая память".

    зачем? по крайней мере, почему символьные?
    А потому что там все равно область IPC, и найти память процесса по символьному ID гораздо легче чем по некому абстрактному числу. Кроме того, никто не мешает использовать числовые ID, просто они будут на байт больше
    Последний раз редактировалось Alex/AT; 27.03.2005 в 09:57.

  7. #66

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    А потому что там все равно область IPC, и найти память процесса по символьному ID гораздо легче чем по некому абстрактному числу. Кроме того, никто не мешает использовать числовые ID, просто они будут на байт больше
    с каких это пор поиск по символьной строке быстрее и проще чем поиск по числовому идентификатору? а еще существует бинарный поиск или индексирование. или ты придумал алгоритм хеширования, который не требует траты времени

  8. #67

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вижу выросла отдельная тема ! ) Классно! Я не имел доступа к инету и накидал спецификацию на память. Кидаю ее сюда юез исходников на С (они пока в отладке).

    Почитайте и поругайте. Потом посмотрим как и что улучшить.
    Вложения Вложения
    • Тип файла: zip zxos.zip (13.2 Кб, Просмотров: 1186)

  9. #68

    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я не о том. Помнить, какой процесс какие числовые идентификаторы имеет - трудно, не находишь? Да и пересекаться они могут. Я уже не о простоте бинарного поиска

  10. #69

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex/AT
    Я не о том. Помнить, какой процесс какие числовые идентификаторы имеет - трудно, не находишь? Да и пересекаться они могут. Я уже не о простоте бинарного поиска
    вся верхняя память (как для кода так и для данных) описывается в виде дескрипторов. причем у одного куска памяти может быть несколько дескрипторов, если он (кусок памяти) принадлежит нескольким процессам. а дескрипторы хранятся в виде связного списка. пробежать по списку и найти все дескрипторы с нужным владельцем- не проблема.

  11. #70

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

    По умолчанию Вот как выглядит то, что было указано в начале треда

    здесь схема вызовов, критикуйте.
    Вложения Вложения
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

Страница 7 из 8 ПерваяПервая ... 345678 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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