Вопрос по SwapContext.

Тема в разделе "WASM.NT.KERNEL", создана пользователем Aquahawk, 8 апр 2008.

  1. Aquahawk

    Aquahawk New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2007
    Сообщения:
    2
    Необходимо организовать сбор достаточно большого объема информации при каждом переключении контекста, с последующей передачей буфера в пользовательский режим. Тут возникли вопросы.
    1. На каком ядре (процессоре)будет непосредственно выполняться код свапконтекста?
    2. Будут ли на это время заморожены остальные ядра?
    3. Может ли один раз он выполниться например на 0м ядре, а следующий раз например на 3м, и если да, то как можно привязать его к какому-либо конкретному ядру.
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    на любом
    код планировщика реентерабелен: он может выполняться параллельно на всех процессорах
    нет
    никак
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Это ж какие тормоза будут.
     
  4. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    Главное окна не таскать - тогда переключений контекста не много.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Как в XP, переключение контекта не имеет никакого отношения к окнам, а вызывается по прерыванию от таймера (APIC или PIT).
     
  6. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    Из того, что переключение контекста вызывается по прерыванию таймера, не следует, что оно не имеет отношения к окнам, ибо процессы переключаются и по другим причинам (таким как приход событий и переход в состояние ожидания).
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    halyavin
    Переключение контекста происходит примерно раз в 10 мс (цифра взята из форума). Как думаешь, будет ли влиять user input на кол-во переключений?
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Переключаются потоки.
    Я думал вопрос про KiSwapContext..
     
  9. Aquahawk

    Aquahawk New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2007
    Сообщения:
    2
    В книге Марка Руссиновича этот процесс описан. Квант времени меняется динамически от того активно окно или нет, по таймеру планировщик квант подрезает, и как только тот кончится, и в системе есть другие потоки ожидающие времени процессора, то только тогда произойдет переключение. Измерения показали что наибольшее число переключений происходит при работе большого количества не сильно активных процессов, как то торрент клиен, менеджер закачек, и еще куча мелких но постоянно работающих приложений, в таких условиях количество переключений доходит до 10 тыс раз в секунду, однако если заргузить все доступные процессоры мощной вычислительной задачей, и при этом не имет торрентов и прочего висящего в фоне, а только WinXP и собственно математику, то количество переключений опускается до 100-200 раз в секунду.