Tutte le chiamate di sistema sono bloccate?


13

Stavo leggendo un articolo che descrive il passaggio tra user-space e kernel-space che si verifica durante una chiamata di sistema. L'articolo dice

Un'applicazione prevede il completamento della chiamata di sistema prima di riprendere l'esecuzione in modalità utente.

Ora, fino ad ora, supponevo che alcune chiamate di sistema lo fossero blocking, mentre altre lo sono non-blocking. Con il commento sopra, ora sono confuso. Questo significa che tutte le chiamate di sistema stanno bloccando o ho frainteso un concetto?


@Ankit Spiega perché hai ripristinato la modifica. Tieni presente che la modifica per migliorare i dettagli di un post è una politica standard su SE e non implica una critica implicita.
Raffaello

@Raphael Siamo spiacenti fratello! Stavo solo armeggiando e ho spinto il rollback per errore e quindi non sono riuscito a trovare la versione precedente. In effetti, mi è davvero piaciuta la tua modifica. : P
Ankit

@Raphael Capito. In realtà sono stato ingannato dal sistema di revisione (non ho riconosciuto che "articolo" era un collegamento). Grazie per le modifiche.
Ankit

@Ankit: Sono contento di poterti aiutare!
Raffaello

Risposte:


15

Sembra che tu stia sovraccaricando il termine "blocco".

Qualunque cambio di contesto tu faccia al kernel, devi aspettare che ritorni al codice utente prima che l'applicazione possa continuare. Questo non è ciò che di solito viene chiamato "blocco".

Nel progetto attuale del kernel, il blocco delle chiamate sono chiamate in cui il kernel ritorna solo quando la richiesta è completa (o si verifica un errore). Queste chiamate di solito richiedono più tempo e di solito portano la pianificazione del processo. Ad esempio, molte chiamate IO stanno bloccando.

Esistono chiamate di sistema che forniscono IO asincrono e non bloccano. Si noti che c'è ancora un cambio di contesto che si verifica qui, solo l'applicazione deve occuparsi della natura asincrona della chiamata.

Il documento sembra mirare a eliminare questo cambio di contesto avanti e indietro (chiamate di sistema senza eccezioni) e provare a rendere tutte le chiamate asincrone.


In realtà è un documento di ricerca. Ecco l'URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit: modifica la domanda e includila lì.
Aryabhata,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.