다중작업
From Wikipedia, the free encyclopedia
컴퓨팅 분야에서 멀티태스킹(영어: multitasking) 또는 다중작업(이하 멀티태스킹)은 다수의 작업(혹은 프로세스, 이하 태스크[1])이 중앙 처리 장치(이하 CPU)와 같은 공용자원을 나누어 사용하는 것을 말한다. 엄밀히 말해 한 개의 CPU를 가진 개인용 컴퓨터가 특정 순간에 수행할 수 있는 태스크의 개수는 하나뿐이다. 따라서 멀티태스킹은 스케줄링이라는 방식을 사용하여 컴퓨터 사용자에게 병렬 연산이 이루어지는 것과 같은 환경을 제공한다. 스케줄링 방식은 CPU 사용시간을 일정한 기준에 따라 나누어 각 태스크가 사용할 수 있도록 분배한다. 분배받은 시간 동안 태스크가 CPU를 사용할 때 다른 태스크들은 자신의 차례가 오기를 기다린다. 분배받은 시간이 종료되어 태스크가 사용하던 CPU를 다른 태스크가 사용할 수 있도록 재배정하는 것을 문맥교환이라 하는데 스케줄링에서 이 문맥교환이 충분히 자주 발생하게 되면 컴퓨터 사용자는 병렬 연산이 이루어진 것처럼 느끼게 된다.
멀티태스킹은 다수의 CPU를 내장한 컴퓨터(즉, 멀티프로세서)에서도 유효한데, 멀티태스킹을 사용하게 되면 탑재한 CPU의 숫자보다 많은 수의 태스크를 동시에 수행할 수 있게 된다.
일반적으로 운영 체제는 아래 나열된 스케줄링 방식중 하나를 채택해서 사용한다.
- 멀티프로그래밍 시스템에서는 현재 실행되고 있는 태스크는 다른 외부 이벤트를 기다려야 하는 상황이 되거나, 컴퓨터의 스케줄러가 강제로 실행 중인 태스크를 중단시킬 때까지 계속 진행된다. 멀티 프로그램 시스템은 CPU 사용률을 극대화할 수 있도록 설계되었다.
- 시분할 시스템에서는 현재 실행되고 있는 태스크가 스스로 혹은 하드웨어 인터럽트 따위의 외부적인 이유로 중앙 처리 장치의 점유를 포기해야 한다. 시분할 시스템은 다수의 프로그램이 거의 동시에 수행될 수 있도록 해준다. "시간을 분할한다"라는 표현은 단말에 위치한 사용자가 함께 공유할 수 있는 IBM사의 TSO, CP/CMS와 같은 컴퓨터를 가리키기 위해 쓰였다.
- 실시간 시스템에서는 외부 이벤트가 발생하였을 때 몇 개의 대기 중인 태스크들이 CPU를 점유할 수 있도록 보장해 준다. 실시간 시스템은 시간 내에 처리하여야 하는 산업 로봇과 같은 기계적인 장치를 제어하기 위해 사용된다.
동일한 시스템을 여러 명이 공유해서 쓰는 것을 나타내던 시분할이라는 용어는 개인용 컴퓨터와 워크스테이션의 발전으로 인해 멀티태스킹이라는 용어로 대체되어 특수한 경우를 제외하고 현재는 거의 사용되지 않는다.