Помогите новичку

Applications development, KoOS API questions
  • Привет.
    Много вопросов, задавай по одному и пользуйся поиском по форуму. Основная инфа - в коде, ну и здесь кое-что можно найти.
    Все мануалы и Вики (увы!) страдают и оставляют желать.
    Что за "эмулятор" такой кривой?
    Какая версия ядра?
    "Обычные приложения размещаются в памяти по адресу 0x60400000" - это очень старая адресная модель; сейчас линейные адреса приложения начинаются с 0.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • SoUrcerer wrote: Если ты про бейсик от Ярека - то он морально устарел и никуда не годится. Почему автор сделал так, а не иначе - нужно спросить у автора.
    То есть, самому esp устанавливать нет необходимости? Только указать значение в хедере, а дальше система уже сама всё сделает?
    Я думаю, автор делал так для "универсальности" своего транслятора. Ещё где-то в исходниках(наверное, уже устаревших) было "MENUET00" и "Version 38" в заголовке.
    SoUrcerer wrote: Каждая иконка - это поток ICON. Их два десятка с одним именем. Разумеется, у них разные идентификаторы.
    Я не совсем правильно выразился... В общем, я проверил своей программкой каждый ICON(саму иконку на рабочем столе), а когда отводил мышь от иконки на рабочий стол, то вот этот ID рабочего стола менялся.
    Я понял, что ICON — поток иконки, а иконок несколько.
    SoUrcerer wrote: Мне кажется, если нужна максимальная производительность программы, то можно делать так:
    1) проверка события (а события помещаются в буфер событий)
    2) реакция на события, если есть
    3) вычисления
    4) Переход к п.1
    Все остальное должна брать на себя система.
    Если проверять без ожидания и не переключаться на другой поток, то это сильнее грузит систему. Теперь я попробовал ждать в течение определённого времени(вместо прежней проверки и переключения потока) — стало меньше грузить систему.
    art_zh wrote:Привет.
    Много вопросов, задавай по одному и пользуйся поиском по форуму. Основная инфа - в коде, ну и здесь кое-что можно найти.
    Все мануалы и Вики (увы!) страдают и оставляют желать.
    Ну я, например, в Вики тоже многое нашёл.
    Раньше можно было здесь http://kolibrios.org/ru/repos/ найти исходники и на Редмайне ещё было. А теперь куда всё делось?
    art_zh wrote: "Обычные приложения размещаются в памяти по адресу 0x60400000" - это очень старая адресная модель; сейчас линейные адреса приложения начинаются с 0.
    То есть, и у системы, и у приложений(без исключений) память с нуля?
  • Я понял, что ICON — поток иконки, а иконок несколько.
    Поставь галку в CPU и увидишь все запущенные потоки. ICON многопоточное приложение.
    Если проверять без ожидания и не переключаться на другой поток, то это сильнее грузит систему.
    Функции 10, 11, 23.
    То есть, и у системы, и у приложений(без исключений) память с нуля?
    http://wiki.kolibrios.org/wiki/Kernel/ru
    http://ru.wikipedia.org/wiki/Плоская_модель_памяти
    http://en.wikipedia.org/wiki/Flat_memory_model
  • 0CodErr wrote:В общем, я проверил своей программкой каждый ICON(саму иконку на рабочем столе), а когда отводил мышь от иконки на рабочий стол, то вот этот ID рабочего стола менялся.
    Рабочий стол - не приложение. Есть обои, которые рисует система, и есть иконки и панель. Иконки и панель - приложения. Стол - нет.
    0CodErr wrote:Раньше можно было здесь http://kolibrios.org/ru/repos/ найти исходники и на Редмайне ещё было. А теперь куда всё делось?
    http://websvn.kolibrios.org
  • SoUrcerer wrote: http://websvn.kolibrios.org
    Спасибо!
    SoUrcerer wrote: Рабочий стол - не приложение. Есть обои, которые рисует система, и есть иконки и панель. Иконки и панель - приложения. Стол - нет.
    Но тогда идентификатор чего это мог быть(да ещё и менялся)?
    Спасибо, с памятью разобрался.
    Mario wrote: Функции 10, 11, 23.
    Что они делают — я понял. Мне не ясно, как лучше: ждать по времени или же сразу проверять и потом переключать поток(если не переключаю — нагрузка этого потока больше)?
  • Если сразу переключать, то увеличится время отклика. Вообще ф.11 и ф.23 отличаются лишь наличием вызова паузы в 23.
    Если нет жесткой необходимости проверять что-то кроме приходящих приложению событий, то нужно использовать ф.10.
    Если есть необходимость обрабатывать что-то еще кроме системных событий, то можно использовать ф.23 - к примеру zSea в режиме показа слайд-шоу использует ее, да и при демонстрации анимированного GIF.
    Но тогда идентификатор чего это мог быть(да ещё и менялся)?
    Зачем требовать от людей развитого скилла телепатия? Где код по которому можно сделать выводы?
  • Mario wrote:Если сразу переключать, то увеличится время отклика.
    Когда я использовал ф.11 и переключение потока — увеличивалось только потребление CPU, а не время отклика(я, по крайней мере, этого не заметил).
    Mario wrote: Если есть необходимость обрабатывать что-то еще кроме системных событий, то можно использовать ф.23...
    Скорее всего, то, что нужно. У меня в этом случае и потребление CPU меньше.
    Mario wrote:
    Но тогда идентификатор чего это мог быть(да ещё и менялся)?
    Зачем требовать от людей развитого скилла телепатия? Где код по которому можно сделать выводы?
    Там суть в том, чтобы отображать информацию о потоке, над окном которого указатель мыши.
    Если рабочий стол потоком не является, то когда мышь «уходит» с ICON — она оказывается «не над чьим окном». Вероятно, поэтому возвращаются разные идентификаторы(они просто не имеют смысла).
  • Если мсье задумал написать вирус - я больше помогать не буду. Другие могут считать иначе и помогать.
  • Mario wrote:Если мсье задумал написать вирус...
    ?????? :shock:
  • http://wiki.kolibrios.org/wiki/SysFn09/ru

    Code: Select all

    Слоты нумеруются с 1.
    Слот 1 соответствует специальному потоку операционной системы, для которого:
    -    окно находится внизу оконного стэка, поля +4 и +6 содержат значение 1
    -    имя процесса - "OS/IDLE" (дополненное пробелами)
    -    адрес процесса в памяти равен 0, размер используемой памяти 16 Mb (0x1000000)
    -    PID=1
    -    координаты и размеры окна, равно как и клиентской области, условно полагаются равными 0
    -    состояние слота - всегда 0 (выполняется)
    -    время выполнения складывается из времени, уходящего на собственно работу, и времени простоя в ожидании прерывания (которое можно получить вызовом подфункции 4 функции 18). 
    
    Начиная со слота 2, размещаются обычные приложения.
  • 0CodErr wrote:
    Mario wrote:Если мсье задумал написать вирус...
    ?????? :shock:
    Если это не так, то добро пожаловать. Просто ломать всегда проще чем делать - даже если это бетонный антитермоядерный бункер. Прецеденты были.
  • Будет ли происходить перерисовка, если окно свёрнуто в заголовок?
    Моя программка отображает увеличенный участок экрана под указателем мыши и показывает RGB-цвет точки. Так вот, если её свернуть в заголовок, то будет ли она пытаться перерисовывать?
    Image
  • Если специально не отлавливать на уровне алгоритма, то в типичном случае окно перерисовывается со всеми элементами, но код ядра отсекает и не выводит элементы (примитивы) находящиеся за текущей границей окна.
    З.Ы. Судя по скриншоту - работает драйвер ATI.
  • Вопросы по поводу событий и установке маски событий.

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

    В некоторых исходниках есть такой момент:
    если, например, потоку не нужно обрабатывать нажатие клавиатуры, то
    код клавиши просто считывается.
    А если установить соответствующую маску — всё равно необходимо будет
    считывать код клавиши?

    Что произойдёт, если я установлю маску «не реагировать ни на какие события»,
    если при этом потоку нужно производить какие-то действия? Процессорное время
    будет больше выделяться этому потоку(он, ведь, не будет в состоянии ожидания события)?
    Чтобы уменьшить это время надо переключаться на другой поток(или есть другие способы)?
  • Who is online

    Users browsing this forum: No registered users and 43 guests