Linux Kyber I / O 스케줄러에서 동기 및 비동기 요청의 의미는 무엇입니까?
Aug 20 2020
I / O 스케줄러를 공부하는 동안 Linux 커널에서 I / O 스케줄러에 대한 문서를 읽었습니다. 특히 카이 버 스케줄러에는 몇 가지 혼란스러운 점이 있습니다. 다음 링크의 기사에서 (https://lwn.net/Articles/720675/), Kyber Scheduler에는 동기 요청 용과 비동기식 요청 용으로 하나씩 두 개의 기본 큐가 있습니다. 그 기사에서
읽기 요청을 발행하는 프로세스는 일반적으로 해당 요청이 완료되고 데이터를 사용할 수있을 때까지 진행할 수 없으므로 이러한 요청은 동기식으로 간주됩니다.
동기 및 비동기 요청은 I / O 작업의 종류가 아니라 CPU 및 장치 드라이버에 의존한다고 생각했습니다.
이 질문에 대한 아이디어가 있습니까?
답변
1 telcoM Aug 20 2020 at 20:55
그것은 "개념적으로 동 기적"이거나 "당신이 생각했던 것보다 더 높은 수준의 추상화에서 동 기적"과 비슷할 것입니다. 프로그램은 어떻게 든 처리하기 위해 데이터를 읽으므로 해당 데이터를 얻을 때까지 처리 할 수 없습니다. 따라서 읽기는 동기 작업이어야합니다.
반면에 쓰기 요청은 다른 작업이 최종 대상에 기록 된 것과 동일한 데이터를 "인식"하는 한 연기 될 수 있습니다. 즉, 모든 읽기 작업은 먼저 읽으려는 데이터의 수정 된 버전이 쓰기 캐시에 있는지 확인하고, 그렇다면 대신 캐시에서 "읽기"를 확인해야합니다.