2016-09-16 6 views
0

프로세스가 대기 상태로 전환 될 때마다 CPU가 다른 프로세스로 이동 한 것을 이해합니다. 그러나 프로세스가 대기 상태에있을 때마다 다른 I/O 리소스에 대한 요청을 여전히 수행해야하는 경우 해당 계산이 처리를 필요로하지 않습니까? 내가 데이터를 앞뒤로 이동하기 위해 I/O 요청의 계산을 돕기 위해 전담하는 프로세서의 작은 부분이 있다고 가정하고 있습니까?제어 블록 프로세스

이 질문에 감사드립니다.

답변

0

IO 작업은 실제로 주변 장치가 작업을 수행하는 작업입니다. 일반적으로 장치에 속한 메모리의 특수 영역에 데이터를 기록하여 작업을 설정합니다. 이 작은 영역의 변경 사항을 모니터링하고 작업을 시작합니다. 따라서 CPU는 작업이 진행되는 동안 아무 것도 할 필요가 없으며 다른 프로그램으로 전환 할 수 있습니다. 입출력이 완료되면 일반적으로 인터럽트가 트리거됩니다. 이것은 현재 실행중인 프로그램을 임의의 위치에서 일시 중지하고 나중에 수행 할 작업을 결정하는 특별한 suprogramm으로 전환하는 특별한 하드웨어 메커니즘입니다. 또 다른 설계가있을 수 있습니다. 예를 들어 장치가 메모리 영역의 어딘가에 특수 플래그를 설정할 수 있으며 OS는 수시로이를 확인해야합니다.

문제는 이러한 IO는 일반적으로 COM 포트를 통해 1 바이트를 보내는 것과 같이 매우 작기 때문에 CPU가 너무 자주 중단되어야한다는 것입니다. 당신은 그들과 함께 빠른 속도를 낼 수 없습니다. 여기서 DMA가 유용합니다. 이것은 RAM에 직접 액세스 할 수 있고 큰 메모리 블록을 장치에 공급할 수있는 특수 보조 프로세서 (또는 주변 장치의 일부)입니다. 따라서 CPU를 중단하지 않고도 메가 바이트 단위의 데이터를 처리 할 수 ​​있습니다.

+0

오케이 그 말이 맞습니다. 방금 책을 읽었으며 대기 상태에 대해 이야기 한 다음 준비 상태로 들어갑니다. 대기 상태가 프로세서를 사용하여 더 이상 계산을 수행하지 않는 것처럼 보입니다. 나는 정말로 정리에 감사한다! =] – mrprogrammer231

+0

나는 더 적절한 설명이 주어질 수 있다는 것을 이해했기 때문에 대답을 완전히 다시 작성했습니다. –