프로그램 A가 있고, 프로그램 B가 있으면 처음에 OS는 CPU제어권을 프로그램 A에게 주고 A프로그램 실행 도중에 I/O devices controller에서 인터럽트가 발생하면 CPU제어권이 다시 OS로 넘어오고 OS는 CPU제어권을 I/O device에게 전달한다.
=> CPU에 인터럽트가 너무 많이 걸리기 때문에 CPU의 일이 많아져 비효율적
해결방안: DMA(Direct Memoery Access)
CPU의 개입 없이 디바이스 컨트롤러와 메모리가 직접
데이터 블록을 전송할 수 있도록 하는 장치
바이트 단위가 아닌 데이터 블록 전체에 대해 인터럽트 처리
타이머: 지정된 시간 후 컴퓨터를 인터럽트 하도록 설정할 수 있는 하드웨어
특정 프로세스가 CPU를 독점하지 못하도록 방지
CPU는 instruction을 처리하기만 한다.
I/O devices는 각각의 device controller가 있다.
ex) 디스크 컨트롤러, 마우스 컨트롤러, 프린트 컨트롤러, 모니터 컨트롤러
I/O deviecs는 프로그램에 직접 접근할 수 없다. (OS가 각각의 디바이스 컨트롤러에게 CPU 제어권을 줘서 접근한다.)
ex) 타자를 치면 I/O 컨트롤러는 CPU에게 요청해서 CPU 제어권이 OS를 통해 I/O 디바이스에게 온다.
개념 : 한 작업의 계산과 함께 입/출력을 동시에 수행하는 방법
입력 버퍼링 : 프로세스가 데이터를 요구하기 전에 입력장치가 데이터를 주기억장치에 복사
출력 버퍼링 : 데이터를 주기억장치에 저장하고 프로세스가 실행을 계속하는 동안에 장치에 데이터를 기록. 데이터를 입력한 후, CPU가 이를 연산하려고 하는 순간 CPU와 입력 장치는 동시에 동작되며, 양쪽의 속도가 비슷하다면 버퍼 이용이 효율적.
CPU가 문자나 데이터를 하나씩 연속적으로 읽을 때 마다 채널에게 SIO(Start I/O) 명령을 행한다면 매우 복잡하고 많은 작업량이 필요. 따라서 버퍼를 사용하여 문자나 데이터를 미리 읽어온 후, 필요할 때 마다 사용하면 효율적이다. 느릴수록 효과적 이다.
multi-tasking: 최초의 컴퓨터는 한 번에 하나의 작업만을 처리할 수 있었다. 어떤 프로그램을 실행하고 있을 때 다른 프로그램을 실행하려면 실행 중인 프로그램의 작업이 끝나야 다른 작업을 수행할 수 있는 블로킹 방식이었기 때문. 채팅 프로그램으로 비유하면 무전기처럼 채팅해야 하는 셈. 프로세서와 운영체제 기술이 발달하면서 한 번에 여러가지 작업을 처리할 수 있게 되었다
커널 내부에서는 운영체제가 각각의 프로그램에 CPU 사용권을 적절히 분배하는 작업이 반복되고 있다. 하드웨어 자원은 한정되어 있는데 멀티태스킹을 위해 더 많은 작업을 바쁘게 수행해야 하므로 어느 특정 프로그램 하나가 실행할 때 다른 여러 프로그램들과 함께 실행할 때가 실행하지 않을 때보다 더 느릴 수밖에 없지만, 블락킹 상태를 자주 보면서 작업하는 것보단 훨씬 나은 UX를 제공할 수 있기 때문에 멀티태스킹이 정착하게 된 것이다. 보다 효율적인 멀티태스킹이 되기 위해서는 프로세스들을 적절히 분배하는 작업이 이루어져야 하는데 이러한 작업을 프로세스 스케줄링 (CPU 스케줄링) 이라고 한다.
multi-programming: 여러작업을 수행할 때 단일 프로세서 상에서 여러작업이 동시에 실행되는 것이다. => 메모리에 여러 프로그램을 올린다. (멀티 태스킹과 비슷한 개념이지만 멀티 태스킹에 비해 메모리 측면을 강조)
time sharing (시분할): 여러작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할 하여 작업 => 멀티 태스킹과 비슷한 개념이지만 멀티 태스킹에 비해 CPU측면을 강조
multi-processor: 하나의 컴퓨터에 CPU(processor)가 여러개 붙어 있음을 의미한다.
ex) 멀티 코어
multi-process: 멀티프로세스란 2개 이상의 프로세스가 동시에 실행되는 것을 말합니다. 프로세스 간에 Code, Data, Heap, Stack 영역 모두 서로 공유하지 않습니다.
mulit-thred: 멀티스레드란 2개 이상의 스레드가 동시에 실행되는 것을 말합니다. 프로세스의 Code, Data, Heap 영역을 공유하지만 Stack영역은 공유하지 않습니다.