Czy wszystkie wywołania systemowe są blokowane?

13

Czytałem artykuł opisujący przełączanie między przestrzenią użytkownika a przestrzenią jądra, która ma miejsce po wywołaniu systemowym. Artykuł mówi

Aplikacja oczekuje na zakończenie wywołania systemowego przed wznowieniem wykonywania w trybie użytkownika.

Do tej pory zakładałem, że niektóre wywołania systemowe są blocking, podczas gdy inne są non-blocking. Z powyższym komentarzem jestem teraz zmieszany. Czy to oznacza, że ​​wszystkie wywołania systemowe są blokowane, czy też źle zrozumiałem koncepcję?

Ankit
źródło
@Ankit Wyjaśnij, dlaczego cofnąłeś edycję. Pamiętaj, że edytowanie w celu ulepszenia szczegółów postu jest standardową polityką w SE i nie implikuje ukrytej krytyki.
Raphael
@Raphael Sorry bracie! Po prostu bawiłem się i przez pomyłkę odsunąłem rollback, a potem nie mogłem znaleźć poprzedniej wersji. W rzeczywistości bardzo podobała mi się twoja edycja. : P
Ankit
@Raphael Mam to z powrotem. Właściwie zostałem oszukany przez system weryfikacji (nie rozpoznałem, że „artykuł” to link). Dzięki za zmiany.
Ankit
@Ankit: Cieszę się, że mogłem pomóc!
Raphael

Odpowiedzi:

15

Wydaje się, że przeciążasz termin „blokowanie”.

Po każdym przełączeniu kontekstu na jądro musisz poczekać, aż przełączy się z powrotem na tryb użytkownika, zanim aplikacja będzie mogła kontynuować. To nie jest zwykle tak zwane „blokowanie”.

W obecnym projekcie jądra wywołania blokujące to wywołania, w których jądro zwraca tylko wtedy, gdy żądanie jest kompletne (lub wystąpi błąd). Połączenia te zwykle zajmują więcej czasu i zwykle prowadzą do zaplanowania procesu. Na przykład wiele połączeń We / Wy jest blokowanych.

Istnieje wywołanie systemowe, które zapewnia asynchroniczne operacje we / wy i nie blokuje. Zauważ, że nadal występuje tutaj zmiana kontekstu, tylko aplikacja musi zadbać o asynchroniczny charakter połączenia.

Artykuł wydaje się mieć na celu wyeliminowanie tego przełączania kontekstu tam iz powrotem (bez wyjątków wywołania systemowe) i próbę uczynienia wszystkich wywołań asynchronicznymi.

Aryabhata
źródło
To właściwie praca naukowa. Oto adres URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit
2
@Ankit: Edytuj pytanie i dołącz je tam.
Aryabhata,