Todas as chamadas do sistema estão bloqueando?

13

Eu estava lendo um artigo que descreve a alternância entre o espaço do usuário e o espaço do kernel que ocorre em uma chamada do sistema. O artigo diz

Um aplicativo espera a conclusão da chamada do sistema antes de retomar a execução no modo de usuário.

Agora, até agora eu estava assumindo que algumas chamadas do sistema são blocking, enquanto outras são non-blocking. Com o comentário acima, agora estou confuso. Isso significa que todas as chamadas do sistema estão bloqueando ou eu entendi mal um conceito?

Ankit
fonte
@ Ankit Por favor, explique por que você reverteu a edição. Observe que editar para melhorar os detalhes de uma postagem é uma política padrão no SE e não implica uma crítica implícita.
Raphael
@Raphael Desculpe mano! Eu estava apenas brincando e empurrando a reversão por engano e, em seguida, não consegui encontrar a versão anterior. Na verdade, gostei muito da sua edição. : P
Ankit
@Raphael Entendi de volta. Na verdade, fui enganado pelo sistema de revisão (não reconheci 'artigo' era um link). Obrigado pelas edições.
Ankit
@ Ankit: Ainda bem que pude ajudar!
Raphael

Respostas:

15

Você parece estar sobrecarregando o termo "bloqueio".

Qualquer mudança de contexto que você fizer no kernel, é necessário aguardar que ele volte ao modo de usuário antes que seu aplicativo possa continuar. Isso não é o que geralmente é chamado de 'bloqueio'.

No design atual do kernel, chamadas de bloqueio são chamadas em que o kernel retorna somente quando a solicitação é concluída (ou ocorre um erro). Essas chamadas geralmente levam mais tempo e geralmente levam seu processo a ser agendado. Por exemplo, muitas chamadas de E / S estão bloqueadas.

Há chamadas de sistema que fornecem E / S assíncronas e não bloqueiam. Observe que ainda existe uma alternância de contexto aqui, apenas o aplicativo precisa cuidar da natureza assíncrona da chamada.

O artigo parece ter como objetivo acabar com essa alternância de contexto (chamadas de sistema sem exceção) e tentar fazer todas as chamadas assíncronas.

Aryabhata
fonte
Na verdade, é um trabalho de pesquisa. Aqui está o URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit
2
@ Ankit: Por favor, edite a pergunta e inclua-a lá.
Aryabhata