Вопрос по SwapContext.

Discussion in 'WASM.NT.KERNEL' started by Aquahawk, Apr 8, 2008.

  1. Aquahawk

    Aquahawk New Member

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

    rei3er maxim

    Blog Posts:
    0
    на любом
    код планировщика реентерабелен: он может выполняться параллельно на всех процессорах
    нет
    никак
     
  3. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Это ж какие тормоза будут.
     
  4. halyavin

    halyavin New Member

    Blog Posts:
    0
    Главное окна не таскать - тогда переключений контекста не много.
     
  5. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Как в XP, переключение контекта не имеет никакого отношения к окнам, а вызывается по прерыванию от таймера (APIC или PIT).
     
  6. halyavin

    halyavin New Member

    Blog Posts:
    0
    Из того, что переключение контекста вызывается по прерыванию таймера, не следует, что оно не имеет отношения к окнам, ибо процессы переключаются и по другим причинам (таким как приход событий и переход в состояние ожидания).
     
  7. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    halyavin
    Переключение контекста происходит примерно раз в 10 мс (цифра взята из форума). Как думаешь, будет ли влиять user input на кол-во переключений?
     
  8. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Переключаются потоки.
    Я думал вопрос про KiSwapContext..
     
  9. Aquahawk

    Aquahawk New Member

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