User Tag List

Страница 6 из 7 ПерваяПервая ... 234567 ПоследняяПоследняя
Показано с 51 по 60 из 67

Тема: Перемещаемость на лету

  1. #51

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

    По умолчанию

    Ты на вопрос не ответил: как часто нужно перемещение запущенного кода? Нужно ли это вообще или это из категории просто хороших хотелок?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  2. #52

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нужно после удаления или десвопа задач. Без этого сама идея батников отправляется в помойку.

  3. #53

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  4. #54

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это будет не правило хорошего тона, а ограничение при написании программ. Я предлагаю рассматривать только те варианты, которые можно реализовать автоматически в компиляторе.

  5. #55

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Это будет не правило хорошего тона, а ограничение при написании программ. Я предлагаю рассматривать только те варианты, которые можно реализовать автоматически в компиляторе.
    Т.е. тщательно следить за тем, чтобы не накакать в чужую память- это нормально (MMU ведь нет), а вот необходимость отдавать управление системе, делая кооперативную многозадачность- это ограничение. Может стоит начать с изучения основ и анализа возможностей?
    Не взлетит...

  6. #56

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А если упростить задание, абстрагироваться от zx-128 и представить себе любой виртуальный процессор который нужен. Возможно ли вообще сделать код и данные перемещаемыми на лету? Что для этого нужно от процессора?

  7. #57

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Т.е. тщательно следить за тем, чтобы не накакать в чужую память- это нормально (MMU ведь нет)
    Чтобы насрать мимо своей памяти, надо сильно постараться.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    а вот необходимость отдавать управление системе, делая кооперативную многозадачность- это ограничение.
    Не просто отдавать, а не реже, чем раз во фрейм. Для этого надо тоже сильно постараться, если программа представляет из себя нечто большее, чем окошко с кнопкой. Программа печатает текст. За фрейм не успеет - значит, надо вызывать систему каждую строку. Стоп! А вдруг строка больше 1000 символов? Значит, каждый символ. Стоп! А вдруг символ во весь экран? Значит, каждую линию символа.

    ---------- Post added at 12:00 ---------- Previous post was at 11:57 ----------

    Цитата Сообщение от bigral Посмотреть сообщение
    А если упростить задание, абстрагироваться от zx-128 и представить себе любой виртуальный процессор который нужен. Возможно ли вообще сделать код и данные перемещаемыми на лету? Что для этого нужно от процессора?
    Сегменты или индексная адресация во всех командах, включая CALL и RET.

  8. #58

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Чтобы насрать мимо своей памяти, надо сильно постараться.
    Да ну?

    Цитата Сообщение от alone Посмотреть сообщение
    Не просто отдавать, а не реже, чем раз во фрейм.
    Для чего? Прерывания никто не отменял.

  9. #59

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Для чего? Прерывания никто не отменял.
    Прерывания тут причем? Речь шла о "добровольном" сохранении адресов в заранее известное системе место и последующей передаче управления системе с тем чтобы система смогла произвести перемещение модуля и произвести коррекцию адресов в модуле.

    Я пересмотрел старые сообщения в теме и пришел к выводу что для перемещения процесса на лету нужно:
    1. иметь отдельно стек адресов и стек данных (чтобы при перемещении знать что корекции подлежит только содержимое стека адресов);
    2. иметь сведения о группе регистров используемых ТОЛЬКО для хранения адресов, т.е. должен быть системный вызов который мог бы добавить\убрать регистры из этой группы;
    3. иметь карту памяти процесса в которую должны входить:
    - все выделенные области памяти (те которые были выделенны при загрузке и те которые полученны от системы позже в процессе работы);
    - адреса используемые процессом (включая адресса используемые для CALL\JP, адреса указывающие на сегменты данных (.data .bss) а так же адреса хранящиеся в выделенной в процессе работы памяти и тоже указывающие на сегменты данных (.data .bss) или возможно использующиеся для CALL\JP);

    Кроме того, сама по себе "перемещаемость на лету" только НЕМНОГО поможет решить проблемы возникшие в результате ограничений накладываемых битностью логических адресов (16/24/32/64). Т.е. в принципе "перемещаемость на лету" обеспечит возможность SWAP-a и\или виртуальной памяти, но НЕ расширит прямоадресуемое пространство, поэтому для операции SWAP-a нужно будет пересылать немалые обьемы и терять на этом скорость, ну и кроме того процесс который физически не влазит в логическое адресное пространство всеравно не сможет быть запущен на такой системе.

    Так что интереснее рассмотреть вопрос: "Как запустить процесс требующий памяти больше чем логически адресуемое пространство?"

  10. #60

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    bigral, а если я обращаюсь к какимто данным?
    я могу на стеке (даже стеке данных) хранить как ссылки на информацию так и счетчики
    С уважением,
    Jerri / Red Triangle.

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

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

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

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

Ваши права

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