모든 시스템 호출이 차단됩니까?


13

시스템 호출시 발생하는 사용자 공간과 커널 공간 사이의 전환을 설명 하는 기사 를 읽고있었습니다 . 기사는 말합니다

응용 프로그램은 사용자 모드 실행을 재개하기 전에 시스템 호출이 완료 될 것으로 예상합니다.

지금까지 지금까지는 일부 시스템 호출은 blocking이고 다른 시스템 호출은이라고 가정했습니다 non-blocking. 위의 의견으로, 나는 지금 혼란스러워합니다. 이것은 모든 시스템 호출이 차단되었거나 개념을 오해 했습니까?


@Ankit 편집을 롤백 한 이유를 설명하십시오. 게시물의 세부 정보를 개선하기위한 수정은 SE의 표준 정책이며 암시 적 비판을 암시하지 않습니다.
Raphael

@Raphael 죄송합니다 bro! 나는 방황하고 실수로 롤백을 밀고 이전 버전을 찾을 수 없었습니다. 사실, 나는 당신의 편집을 정말로 좋아했습니다. : P
Ankit

@Raphael 다시 찾았습니다. 실제로 나는 개정 시스템에 속았다 ( '기사'가 링크라는 것을 인식하지 못했다). 편집 해 주셔서 감사합니다.
Ankit

@Ankit : 도와 드리겠습니다.
라파엘

답변:


15

'차단'이라는 용어를 오버로드하는 것 같습니다.

커널에 대한 컨텍스트 전환은 응용 프로그램을 계속하기 전에 사용자 모드로 다시 전환 될 때까지 기다려야합니다. 이것은 일반적으로 '차단'이라고하는 것이 아닙니다.

현재 커널 디자인에서 차단 호출은 요청이 완료되거나 오류가 발생할 때만 커널이 반환하는 호출입니다. 이러한 통화는 일반적으로 시간이 오래 걸리고 일반적으로 프로세스가 예약되도록합니다. 예를 들어 많은 IO 호출이 차단되고 있습니다.

비동기 IO 를 제공하는 시스템 호출이 있으며 비 블로킹입니다. 여기서 발생하는 컨텍스트 전환이 여전히 있으며 애플리케이션 만 호출의 비동기 특성을 처리해야합니다.

이 백서는이 컨텍스트 전환 (예외가없는 시스템 호출)을 없애고 모든 호출을 비동기 적으로 만드는 것을 목표로하는 것 같습니다.


실제로는 연구 논문입니다. URL은 다음과 같습니다. eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit : 질문을 편집하고 거기에 포함 시키십시오.
Aryabhata
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.