다중작업: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
WhiteDecember (토론 | 기여)
편집 요약 없음
苦笑 (토론 | 기여)
재번역
1번째 줄:
[[전산|전산학]] 분야에서 '''멀티태스킹'''은 다수의 태스크(혹은 [[프로세스]])가 [[중앙처리장치]](이하 CPU)와 같은 공용 자원을 나누어 사용하는 것을 말한다. 엄밀히 말해 한 개의 CPU를 가진 [[개인용 컴퓨터]]는 특정 순간에 수행되는 태스크의 갯수가 하나뿐이다. 멀티태스킹은 [[스케쥴링]]이라는 방식을 사용하여 [[개인용 컴퓨터|컴퓨터]]사용자에게 [[병렬 컴퓨팅|병렬컴퓨팅]]이 이루어진 것과 같은 환경을 제공한다. 스케쥴링 방식은 CPU의 시간을 일정한 기준에 따라 나누어 각 태스크가 사용할 수 있도록 분배 한다. 태스크가 분배 받은 시간동안 CPU를 사용할 때 다른 태스크들은 자신의 차례가 오기를 기다린다. 분배 받은 시간이 종료되어 태스크가 사용하던 CPU를 다른 태스크가 사용할 수 있도록 재배정하는 것을 [[문맥교환]]이라 하는데 스케쥴링에서 이 문맥교환이 충분히 자주 발생하게 되면 컴퓨터 사용자는 [[병렬 컴퓨팅|병렬컴퓨팅]]이 이루어진 것처럼 느끼게 된다.
'''다중작업''' 또는 '''멀티태스킹'''(multitasking)은 컴퓨터 환경에서 [[프로세스]]로 알려진 여러 가지 일들이 [[중앙 처리 장치|CPU]]와 같은 공통 처리 리소스를 함께 사용하는 것을 말한다. 하나의 CPU를 가진 컴퓨터의 경우 하나의 작업만이 어느 시점에서 실행 중이라면 CPU는 그 작업을 위한 명령어를 활발하게 실행하고 있음을 말한다. 다중작업은 [[CPU 스케줄링|스케줄링]]이라는 방식을 사용하여 이러한 문제를 해결한다. 한 작업에서 다른 작업으로 CPU를 다시 할당하는 행위는 [[문맥 교환]]이라고 부른다. 문맥 교환이 충분히 일어나면 [[병렬컴퓨팅|병렬화]]가 수행된다. 하나 이상의 CPU를 가진 컴퓨터(이를 [[멀티프로세서]]를 갖춘 컴퓨터로 부름)에서도 다중작업은 기존에 갖고 있던 수의 CPU보다 더 많은 일을 허용한다.
 
멀티캐스팅은 다수의 CPU를 내장한 컴퓨터(즉, [[멀티프로세서]])에서도 유효한데. 멀티태스킹을 사용하게되면 탑재한 CPU의 숫자보다 많은 수의 태스크를 동시에 수행 할 수 있게 된다.
운영 체제는 각기 다른 수많은 [[CPU 스케줄링|스케줄링 전략]]을 채용하며 그 분류는 다음과 같다:
* 멀티프로그래밍 시스템: 실행 중인 작업은 외부 이벤트를 기다리는 것을 요구하는 작업(이를테면 테이프에서 읽는 작업)을 수행할 때까지, 아니면 컴퓨터의 스케줄러가 실행 중인 작업을 CPU 밖으로 강제적으로 스왑 처리할 때까지 실행을 지속한다. 멀티프로그래밍 시스템은 CPU 사용률을 극대화하도록 설계되어 있다.
* [[시분할 시스템]]: 실행 중인 작업은 CPU를 포기할 것을 요구 받는다. 자발적으로 할 수도 있고 [[하드웨어 인터럽트]]와 같은 외부 이벤트를 통해서 이 일을 처리할 수 있다. 시분할 시스템은 여러 개의 프로그램들을 명백하게 동시에 실행할 수 있도록 설계된다. 시분할이라는 표현은 일반적으로 IBM의 [[시분할 옵션|TSO]], [[CP/CMS|VM/CMS]]와 같은 터미널에서 상호작용하는 사용자들이 공유하는 컴퓨터를 가리키는 데 쓰인다.
* [[실시간 컴퓨팅|실시간]] 시스템: 실시간 시스템은 때에 맞추어 처리가 필요한 산업 로봇과 같은 기계 장치를 제어하는 데 사용된다.
 
[[운영체제]]는 아래의 일반적인 카테고리로 구분할 수 있는 다양한 방식의 스케쥴링을 지원한다.
시분할이라는 용어는 더 이상 흔히 쓰이지 않으며 개인용 컴퓨터와 워크스테이션의 출현으로 단순히 다중작업이라는 용어로 대체되었다.
 
* [[멀티프로그래밍]] 시스템에서 현재 실행되고 있는 태스크는 다른 외부 이벤트를 기다려야 하는 상황이 되거나, 컴퓨터의 스케쥴러가 강제로 실행중인 태스크를 중단시킬 때까지 계속 실행 된다. 멀티 프로그램 시스템은 CPU 사용율을 극대화할 수 있도록 설계 되었다.
 
* [[시분할]] 시스템에서 현재 실행되고 있는 태스크는 스스로 혹은 [[하드웨어 인터럽트]] 따위의 외부적인 이유로 중앙처리장치의 점유를 포기해야 한다. 시분할 시스템은 다수의 프로그램이 거의 동시에 수행 될 수 있도록 해준다. "시간을 분할한다"라는 표현은 단말에 위치한 사용자가 함께 공유할 수 있는 IBM사의 [[TSO]], [[CP/CMS]]와 같은 컴퓨터를 가리키기위해 쓰였다.
 
* [[실시간 컴퓨팅|실시간 시스템]], 몇 개의 대기중인 태스크들이 외부 이벤트가 발생하였을 때, CPU를 점유 받을 수 있도록 보장해준다. 실시간 시스템은 시간내에 처리가 되야 하는 산업 로봇과 같은 기계적인 장치를 제어 하기 위해 사용된다.
 
동일한 시스템을 여러명이 공유해서 쓰는 것을 나타내던 ''시분할'' 이라는 용어는 개인용 컴퓨터와 워크스테이션의 발전으로 ''멀티태스킹''이라는 용어로 대체 되어 특수한 경우를 제외하고 현재는 거의 사용되지 않는다.
 
== 함께 보기 ==