Чи блокуються всі системні дзвінки?


13

Я читав статтю, яка описує переключення між простором користувача та простором ядра, що відбувається під час системного виклику. У статті йдеться

Додаток очікує завершення системного виклику перед тим, як відновити виконання режиму користувача.

Тепер, до цих пір я припускав, що деякі системні дзвінки є blocking, тоді як інші є non-blocking. З коментарем вище я зараз плутаюсь. Чи означає це, що всі системні дзвінки блокуються чи я неправильно зрозумів поняття?


@Ankit Будь ласка, поясніть, чому ви відмовили редагування. Зауважте, що редагування для поліпшення деталей публікації є стандартною політикою щодо SE та не передбачає неявної критики.
Рафаель

@Raphael Вибач, брате! Я просто хитався навколо і помилково відсунув відкат, а потім не зміг знайти попередню версію. Насправді мені дуже сподобалась ваша редакція. : P
Анкіт

@Raphael Отримав це назад Насправді мене оприлюднила система ревізії (не визнала, що "стаття" була посиланням). Дякуємо за правки
Анкіт

@Ankit: Радий, що можу допомогти!
Рафаель

Відповіді:


15

Ви, здається, перевантажуєте термін «блокування».

Будь-який контекстний перемикач, який ви здійснюєте до ядра, вам доведеться почекати, коли він перейде до режиму користувача, перш ніж ваша програма може продовжуватись. Це не те, що зазвичай називають «блокуванням».

У поточній конструкції ядра блокування дзвінків - це дзвінки, де ядро ​​повертається лише тоді, коли запит завершений (або трапилася помилка). Ці дзвінки, як правило, займають більше часу і зазвичай призводять до планування вашого процесу. Наприклад, багато викликів вводу-виводу блокуються.

Є системний виклик, який забезпечує асинхронний IO, і вони не блокують. Зауважте, що тут все ще відбувається контекстний перемикач, лише програма повинна дбати про асинхронність природи виклику.

Здається, що стаття має на меті усунути цей контекст з переключенням вперед і назад (без винятків системних викликів) і спробувати зробити всі виклики асинхронними.


Насправді це дослідження. Ось URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit: Будь ласка, відредагуйте питання та додайте його туди.
Ар'ябхата
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.