Preemption что это
Перейти к содержимому

Preemption что это

  • автор:

Что такое kernel preemption ?

Ядро 2.6
Правильно ли я понимаю :
когда шедулятор собирается переключить в очереди текущий процесс ,
он может этого не сделать и оставить текущий процесс текущим
Именно это называется kernel preemption ?

kto_tama ★★★★★
01.10.06 16:15:54 MSD

Re: Что такое kernel preemption ?

Не правильно.
kernel preemption это снятие процесса с выполнения (переключение процесса) в момент когда он выполняется в режиме ядра.

andron01
( 01.10.06 16:29:48 MSD )
Ответ на: Re: Что такое kernel preemption ? от andron01 01.10.06 16:29:48 MSD

Re: Что такое kernel preemption ?

т.е. в тот момент , когда он делает системный вызов либо в момент срабатывания прерывания ?

kto_tama ★★★★★
( 01.10.06 16:33:35 MSD ) автор топика
Ответ на: Re: Что такое kernel preemption ? от kto_tama 01.10.06 16:33:35 MSD

Re: Что такое kernel preemption ?

грубо говоря, ядро может само себя вытеснить, если очень надо

Pi ★★★★★
( 01.10.06 16:38:15 MSD )
Ответ на: Re: Что такое kernel preemption ? от Pi 01.10.06 16:38:15 MSD

Re: Что такое kernel preemption ?

Речь идет о следующем куске кода ядра :

Идет проверка статуса процесса
Что означает :
if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) <

kto_tama ★★★★★
( 01.10.06 16:57:08 MSD ) автор топика

Re: Что такое kernel preemption ?

При входе в сисколл прерывания выключены, во время выполнения сисколла никно (практичеки) не может прервать ядро.Т.е.если сисколл выполняется долго, то система «подвисает».

После входв сисколл насильно включаем прерывания, и код ядра (из сисколла) выполняется как процесс.т.е. если сделать for(;;); в сисколле, ядро не повиснет, процесс будет в D state.

xnix ★★
( 01.10.06 18:52:30 MSD )
Ответ на: Re: Что такое kernel preemption ? от kto_tama 01.10.06 16:57:08 MSD

Re: Что такое kernel preemption ?

не совсем понятно. скажи конкретное имя файла.

xnix ★★
( 01.10.06 18:53:57 MSD )
Ответ на: Re: Что такое kernel preemption ? от xnix 01.10.06 18:53:57 MSD

Re: Что такое kernel preemption ?

preempt — эту опцию вообще можно выставить при сборке ядра ?
Речь идет о файле :
Kernel 2.6.9/kernel/sched.c
строка 2687

kto_tama ★★★★★
( 01.10.06 19:05:51 MSD ) автор топика
Ответ на: Re: Что такое kernel preemption ? от kto_tama 01.10.06 16:57:08 MSD

Re: Что такое kernel preemption ?

>!(preempt_count() & PREEMPT_ACTIVE)

Верно если не в preempt.

ищи *.h файл где описаны состояния процессов.

schedule() может быть вызван из сисколла.Там видимо есть проверка, в preempt мы или нет.

xnix ★★
( 01.10.06 19:18:01 MSD )
Ответ на: Re: Что такое kernel preemption ? от xnix 01.10.06 18:52:30 MSD

Re: Что такое kernel preemption ?

> NO preempt:

> При входе в сисколл прерывания выключены,

Больше никогда никому такого не говори, ибо это не так.

> во время выполнения сисколла никно (практичеки) не может прервать ядро.Т.е.если сисколл выполняется долго, то система «подвисает».

Сильно зависит от code path, которую выполняет сискол

> После входв сисколл насильно включаем прерывания

Нет. Прерывания включены практически всегда — их запрещают только драйверы (сейчас — очень редко), низкоуровневый код ядра (очень редко) и любой код, выполняющийся в NO_PREEMPT под спинлоком.

> и код ядра (из сисколла) выполняется как процесс

Сискол _всегда_ выполняется от имени процесса

> .т.е. если сделать for(;;); в сисколле, ядро не повиснет, процесс будет в D state.

Не уверен насчет D — может, R ?

tailgunner ★★★★★
( 01.10.06 19:24:34 MSD )
Ответ на: Re: Что такое kernel preemption ? от kto_tama 01.10.06 19:05:51 MSD

Re: Что такое kernel preemption ?

> preempt — эту опцию вообще можно выставить при сборке ядра ?

При конфигурации ядра.

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

tailgunner ★★★★★
( 01.10.06 19:31:11 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 01.10.06 19:24:34 MSD

Re: Что такое kernel preemption ?

>Больше никогда никому такого не говори, ибо это не так. Для i386 так. sysenter disables interrupts. >Сильно зависит от code path, которую выполняет сискол имелся в виду сразу после входа в ring0. >Нет. Прерывания включены практически всегда ENTRY(sysenter_entry) movl TSS_sysenter_esp0(%esp),%esp sysenter_past_esp: sti ^^^ ;) >Сискол _всегда_ выполняется от имени процесса от имени и как - разные вещи. >Не уверен насчет D - может, R ? насчет D сам не уверен также как и на счет R.

xnix ★★
( 01.10.06 20:17:23 MSD )
Ответ на: Re: Что такое kernel preemption ? от xnix 01.10.06 20:17:23 MSD

Re: Что такое kernel preemption ?

>>Нет. Прерывания включены практически всегда

>ENTRY(sysenter_entry)
> movl TSS_sysenter_esp0(%esp),%esp
>sysenter_past_esp:
> sti
> ^^^ 😉

Поэтому я и сказал «практически». На короткую последовательность команд
входа в ядро они и в самом деле запрещены. Потом разрешаются (причем
как раз той инструкцией, на которую ты указал).

Цитата оттуда же:
/*
* No need to follow this irqs on/off section: the syscall
* disabled irqs and here we enable it straight after entry:
*/

>>Сискол _всегда_ выполняется от имени процесса

>от имени и как — разные вещи.

tailgunner ★★★★★
( 01.10.06 20:24:44 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 01.10.06 20:24:44 MSD

Re: Что такое kernel preemption ?

кстати в 2.4 ядре они не включаются после sysenter.

xnix ★★
( 01.10.06 20:33:54 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 01.10.06 20:24:44 MSD

Re: Что такое kernel preemption ?

>В чем разница?

от имени -> только та же page directory.

как -> может быть прерван по таймеру, его состояние сохранено и т.д.

xnix ★★
( 01.10.06 20:36:33 MSD )
Ответ на: Re: Что такое kernel preemption ? от xnix 01.10.06 20:36:33 MSD

Re: Что такое kernel preemption ?

> кстати в 2.4 ядре они не включаются после sysenter.

Они всегда включаются после входа в ядро, поверь мне 🙂

>>В чем разница?

>от имени -> только та же page directory.

>как -> может быть прерван по таймеру, его состояние сохранено и т.д.

Не понял. Слишком умно для меня :/

tailgunner ★★★★★
( 01.10.06 21:00:16 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 01.10.06 21:00:16 MSD

Re: Что такое kernel preemption ?

Вот по поводу разницы — нельзя ли поподробнее?

Для наглядности предлагаю пример (как я себе это представляю): прога (userspace) выполняет системный вызов например read() (какого-то девайса) -> идёт переход в kernel space -> [подготовка к выполнению read() драйвера] -> read() драйвера -> [подготовка к возврату в userspace]

Допустим в read() драйвер блокируется на время получения данных (переходит в состояние D).

Так где здесь «от имени» и «как»? А то есть подозрение, что я вас неправильно понял

Mr_Nobody
( 02.10.06 13:36:28 MSD )
Ответ на: Re: Что такое kernel preemption ? от Mr_Nobody 02.10.06 13:36:28 MSD

Re: Что такое kernel preemption ?

> Допустим в read() драйвер блокируется на время получения данных (переходит в состояние D).

блокируется то не сам драйвер, блокируется вполне конкретный процесс затребовавший операцию чтения 🙂

klalafuda ★☆☆
( 02.10.06 13:53:22 MSD )
Ответ на: Re: Что такое kernel preemption ? от Mr_Nobody 02.10.06 13:36:28 MSD

Re: Что такое kernel preemption ?

> Допустим в read() драйвер блокируется на время получения данных (переходит в состояние D).

Это хреновый драйвер :/ Нормальные делают wait_*_interruptible (состояние S).

Насчет «от имени» и «как» — зависит от определения процесса. Если это userspace сущность — то тогда «от имени». Если считаем, что процесс при выполнении системного вызова просто переходит в другой режим исполнения, то «как». Практически все (или даже все) системные вызовы выполняются от имени процесса.

Правда, что я должен ответить на твой пример — я не понял 🙂

tailgunner ★★★★★
( 02.10.06 14:25:33 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 02.10.06 14:25:33 MSD

Re: Что такое kernel preemption ?

>Это хреновый драйвер :/ Нормальные делают wait_*_interruptible (состояние S).

Хреновый? Это почему же? Конечно опыт у меня небольшой (в плане написания драйверов) — всего лишь около 2 лет пишу дрова для USB-устройств и что-то я довольно редко встречал в дровах явное оперирование состоянием. Зачем это нужно? USB-подсистема предоставляет определённый (и в большинстве случаев достаточный) интерфейс. Применительно к примеру — блокировка происходит в функции ожидающей поступления данных по USB-шине (состояние D) при их приходе состояние будет автоматически переведено в R.

BTW, в чём по вашему преимущества состояния S перед D с точки зрения ресурсопоглощения системы и времени реакции на переход S->R и D->R?

>Правда, что я должен ответить на твой пример — я не понял 🙂

Интересно узнать что вы понимаете под «переходит в другой режим исполнения»? Вы хотите сказать что возможна ситуация когда pgd не будет соответствовать процессу?

Mr_Nobody
( 02.10.06 15:10:06 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 02.10.06 14:25:33 MSD

Re: Что такое kernel preemption ?

>Это хреновый драйвер :/ Нормальные делают wait_*_interruptible (состояние S).

Хреновый? Это почему же? Конечно опыт у меня небольшой (в плане написания драйверов) — всего лишь около 2 лет пишу дрова для USB-устройств и что-то я довольно редко встречал в дровах явное оперирование состоянием. Зачем это нужно? USB-подсистема предоставляет определённый (и в большинстве случаев достаточный) интерфейс. Применительно к примеру — блокировка происходит в функции ожидающей поступления данных по USB-шине (состояние D) при их приходе состояние будет автоматически переведено в R.

BTW, в чём по вашему преимущества состояния S перед D с точки зрения ресурсопоглощения системы и времени реакции на переход S->R и D->R?

>Правда, что я должен ответить на твой пример — я не понял 🙂

Интересно узнать что вы понимаете под «переходит в другой режим исполнения»? Вы хотите сказать что возможна ситуация когда pgd не будет соответствовать процессу?

Mr_Nobody
( 02.10.06 15:12:21 MSD )
Ответ на: Re: Что такое kernel preemption ? от Mr_Nobody 02.10.06 15:12:21 MSD

Re: Что такое kernel preemption ?

Прошу прощения — два раза запостилось — с сетью у нас на работе ерунда какая-то.

Mr_Nobody
( 02.10.06 15:13:54 MSD )
Ответ на: Re: Что такое kernel preemption ? от Mr_Nobody 02.10.06 15:10:06 MSD

Re: Что такое kernel preemption ?

>>Это хреновый драйвер :/ Нормальные делают wait_*_interruptible (состояние S).

> Хреновый? Это почему же?

Потому что процесс в состоянии D нельзя убить. И, если железка, к которой процесс обращается, глючит — то всё, получаем бессмертный процесс.

> пишу дрова для USB-устройств

Ненавижу, бл#, подсистему USB в Linux. #баное глюкалово.

> что-то я довольно редко встречал в дровах явное оперирование состоянием.

причем здесь _явное_ оперирование состоянием? Просто используются функции, которые переводят процесс в uninterruptible sleep (то есть варианты wait_* без _interruptible).

> блокировка происходит в функции ожидающей поступления данных по USB-шине (состояние D) при их приходе состояние будет автоматически переведено в R

Вот поэтому — #баное глюкалово. Данные — они могут и не прийти. О таких вещах в Linux вообще мало думают, а в USB-подсистеме не думают вообще. Но зато крутой перец GregKH всех учит жить.

> Интересно узнать что вы понимаете под «переходит в другой режим исполнения»?

Переходит в режим ядра (фраза из старой книги Баха про Unix). А на pgd, pmd и и прочее я не заморачиваюсь.

tailgunner ★★★★★
( 02.10.06 15:24:12 MSD )
Ответ на: Re: Что такое kernel preemption ? от tailgunner 02.10.06 15:24:12 MSD

Re: Что такое kernel preemption ?

По поводу D и S — накладные расходы (на реализацию вашего варианта) на мой взгляд перевешивают вероятность глючного железа. По большому счёту будет ли бессмертный процесс в userspace или он повиснет в каком-то обработчике ожидающем прихода данных — для системы это одинаково хреново (хотя во втором случае скорее всего будет занято меньше памяти — но от этого не легче).

По поводу глюкалово — могу не согласится — по крайней мере с 2.4 к 2.6 заметен серьёзный прогресс особенно в плане обработки ситуаций возникающих при передаче объёмов данных близких к пределу пропускной способности, хотя в целом до реализации того что описано в спецификации USB 2.0 конечно далековато. Интересно с какими глюками вам приходилось сталкиватся — любопытно?

BTW, в целом перевод в D не так уж фатален — например в нормальном драйвере при выдёргивании девайса (и процесс в D) ничего страшного не произойдёт — он будет переведён в R и будет возвращена ошибка получения данных. Хотя в целом можно и изобретать велосипед не пользуюясь стандартными интерфейсами — в ядре есть примеры таких драйверов (но они скорее исключение чем правило)

Кто такой GregKH? А то я самоучка — тёмный человек, не светский.

Mr_Nobody
( 02.10.06 15:54:44 MSD )
Ответ на: Re: Что такое kernel preemption ? от Mr_Nobody 02.10.06 15:54:44 MSD

Re: Что такое kernel preemption ?

> По поводу D и S — накладные расходы (на реализацию вашего варианта) на мой взгляд перевешивают вероятность глючного железа.

Я плакал 8( Какие накладные расходы имеются в виду? Насчет «вероятности глючного железа» — какая такая вероятность? Глючное железо БУДЕТ, пиши драйвер, рассчитывая на это.

> будет ли бессмертный процесс в userspace или он повиснет в каком-то обработчике ожидающем прихода данных — для системы это одинаково хреново

Ты не читаешь, что я пишу. Да, не важно где завис процесс. Но если он в S, я делаю kill — и нет процесса! И нет проблемы, совсем.

> По поводу глюкалово — могу не согласится — по крайней мере с 2.4 к 2.6 заметен серьёзный прогресс

Да, заметен. Но мое мнение остается в силе.

> Интересно с какими глюками вам приходилось сталкиватся — любопытно?

Этот глюк с D-state (только я не уверен, что мне выдергивание кабеля помогает 🙂 ). На 2.4 был вообще атас — вставляешь флэшку, монтируешь, работаешь, демонтируешь. Потом вставляешь _другую_ флэшку — и ядро говорит «no medium found».

> перевод в D не так уж фатален — например в нормальном драйвере при выдёргивании девайса (и процесс в D) ничего страшного не произойдёт — он будет переведён в R и будет возвращена ошибка получения данных.

Во-первых, не всегда возможно просто выдернуть. Во-вторых, какого черта я должен выдергивать кабель, возможно, прибивая этим другие процессы, если это чисто программная проблема? И в-третьих: такой подход по всему ядру, а некоторые устройства не выдергиваются 🙁

> Кто такой GregKH?

Он отвечал за USB в ядре 2.4 Теперь всех учит жить (и писать драйверы).

Перевод «preemption» на русский

preemption of the enemy in the adoption and implementation of political and military decisions, achievement and retention over him information superiority.

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

However, in the drafting of this document Zelikow had opposed the proposed language using preemption in the context of how to deal with weapons of mass destruction.

Однако при составлении данного документа Зеликов выступил против предложенного стиля, используя упреждение в контексте борьбы с оружием массого уничтожения.

Modern operating systems extend the concepts of application preemption to device drivers and kernel code, so that the operating system has preemptive control over internal run-times as well.

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

Перевод «preemption» на русский

Ваш текст переведен частично.
Вы можете переводить не более 999 символов за один раз.
Войдите или зарегистрируйтесь бесплатно на PROMT.One и переводите еще больше!

Словарь

preemption [pri:ˈempʃən] существительное
мн. preemptions

Indeed, the Obama administration’s main challenge these days is not peacemaking, but regional conflict management and preemption .

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

преимущество ср.р. (Бизнес)
внесение изменений в расписание передач ср.р. (Кино и масс-медиа)
другие переводы 2

Словосочетания (3)

  1. preemption right — преимущественное право
  2. right of preemption — преимущественное право покупки
  3. statutory preemption clause — установленный законом пункт о преимущественном праве покупки

Контексты

Indeed, the Obama administration’s main challenge these days is not peacemaking, but regional conflict management and preemption . Действительно, основным вызовом администрации Обамы в эти дни является не миротворчество, а подтверждение своего преимущественного права в урегулировании данного регионального конфликта.

Preemption by Gazprom has been accomplished through a raft of acquisitions. Упреждение было осуществлено «Газпромом» посредством большого количества приобретений.

Federal preemption of state law forged the country into a single market. Главенство федерального закона над законами штатов превратило огромную страну в единый рынок.

All these cases of preemption occurred when China was weak, poor, and internally torn. Все эти случаи захвата территории происходили, когда Китай был слабой, бедной и внутренне нестабильной страной.

To be sure, preemption is fully justified vis-à-vis stateless terrorists wielding such weapons. Надо отметить, что упреждение полностью оправдано, если его применять в отношении отдельных террористов, имеющих такое оружие.

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

Бот-переводчик

Бот-переводчик

PROMT Master NMT

PROMT Master NMT

Скачайте мобильное приложение PROMT.One

Бесплатный переводчик онлайн с английского на русский

На английском найдется всё. Англоязычный сегмент Интернета – самый обширный в мировой сети и именно туда мы устремляемся, если не нашли нужную информацию на русском языке. Чтение последних научных статей, выпущенных на английском, повышает наш профессиональный уровень. Общение в чатах с собеседниками со всего мира, чтение отзывов об отелях путешественников, понимание писем от авиакомпаний, все это помогает интегрироваться в современный мир, позволяет чувствовать себя в нем более свободным. Выучить язык, в котором каждые два часа появляется новое слово, а всего слов больше, чем в любом другом языке, нетривиальная задача. На помощь приходит переводчик нового поколения PROMT.One. Он мгновенно переведет текст с английского на русский и с русского на английский.

Точный перевод с транскрипцией

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

Вы отправили слишком много запросов, поэтому ваш компьютер был заблокирован.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *