멀티태스킹: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
9번째 줄: | 9번째 줄: | ||
프로그램은 실행되는 동안 상당 기간을 놀고 있는 상태가 된다. 예를 들어서 워드프로세서가 실행되었다면 사용자가 뭔가 입력할 때까지는 하염없이 기다리고 있다. 문서를 다 만들어서 인쇄를 할 때에는 [[프린터]]로 데이터를 보내고 상당한 시간을 놀게 된다. 이렇게 놀면서 [[CPU]] 자원을 차지하고 있느니 차라리 그 시간에 다른 프로그램이 [[CPU]]를 쓸 수 있도록 해 주자... 이게 멀티태스킹의 기본 개념이다. 프로세스를 한 개만 돌릴 때(싱글태스킹)와 여러 개 돌릴 때를 비교한다면, 개별 프로세스의 속도만 놓고 보면 당연히 싱글태스킹 쪽이 빠르다. 일단 시스템 자원을 줬다 뺏었다 하는 데다가, 운영체제 역시 그러한 작업을 수행하려면 하는 일이 많아지고 그 역시 시스템 자원을 어느 정도 소모한다. 하지만 노는 시간이 다른 프로세스들을 수행할 수도 있고 하니 전체로 보면 효율은 멀티태스킹 쪽이 훨씬 낫다. | 프로그램은 실행되는 동안 상당 기간을 놀고 있는 상태가 된다. 예를 들어서 워드프로세서가 실행되었다면 사용자가 뭔가 입력할 때까지는 하염없이 기다리고 있다. 문서를 다 만들어서 인쇄를 할 때에는 [[프린터]]로 데이터를 보내고 상당한 시간을 놀게 된다. 이렇게 놀면서 [[CPU]] 자원을 차지하고 있느니 차라리 그 시간에 다른 프로그램이 [[CPU]]를 쓸 수 있도록 해 주자... 이게 멀티태스킹의 기본 개념이다. 프로세스를 한 개만 돌릴 때(싱글태스킹)와 여러 개 돌릴 때를 비교한다면, 개별 프로세스의 속도만 놓고 보면 당연히 싱글태스킹 쪽이 빠르다. 일단 시스템 자원을 줬다 뺏었다 하는 데다가, 운영체제 역시 그러한 작업을 수행하려면 하는 일이 많아지고 그 역시 시스템 자원을 어느 정도 소모한다. 하지만 노는 시간이 다른 프로세스들을 수행할 수도 있고 하니 전체로 보면 효율은 멀티태스킹 쪽이 훨씬 낫다. | ||
물론 [CPU]] 코어가 여러 개라면 당연히 멀티태스킹이 훨씬 효율이 높다. 코어가 2개라고 해도 운영체제가 싱글태스킹만 지원하면 프로그램을 하나만 돌릴 수 있으니까 두 개 코어 중 하나만 쓰이게 되지만 멀티태스킹이 되면 두 개의 프로그램이 동시에 실행되면서 코어를 하나씩 차지하게 되므로 훨씬 빠르다. 물론 코어 하나를 두 개 프로그램이 나눠 쓰는 것보다도 훨씬 빨라진다. 다만 운영체제가 멀티코어를 제대로 지원하는지, 즉 멀티프로세싱을 지원하는지, 지원한다면 멀티코어를 몇 개까지 지원하는지가 관건이다. | 물론 [[CPU]] 코어가 여러 개라면 당연히 멀티태스킹이 훨씬 효율이 높다. 코어가 2개라고 해도 운영체제가 싱글태스킹만 지원하면 프로그램을 하나만 돌릴 수 있으니까 두 개 코어 중 하나만 쓰이게 되지만 멀티태스킹이 되면 두 개의 프로그램이 동시에 실행되면서 코어를 하나씩 차지하게 되므로 훨씬 빠르다. 물론 코어 하나를 두 개 프로그램이 나눠 쓰는 것보다도 훨씬 빨라진다. 다만 운영체제가 멀티코어를 제대로 지원하는지, 즉 멀티프로세싱을 지원하는지, 지원한다면 멀티코어를 몇 개까지 지원하는지가 관건이다. | ||
==협력형 멀티태스킹== | ==협력형 멀티태스킹== |
2015년 7월 5일 (일) 05:19 판
동시에 여러 가지의 작업(태스크)을 동시에 실행하는 것. 여성들의 주특기.
운영체제의 멀티태스킹
여러 가지 프로세스를 동시에 실행시키는 것을 말한다. 예를 들어, MS-DOS 시절에는 한 번에 한 가지 프로그램만 실행시킬 수 있었다.
요즘은 멀티 코어도 있고 하지만 예전에는 컴퓨터에 CPU는 한 개 뿐이었다. 물론 화면도 키보드도, 기본적으로는 한 개다. 결국 한정된 시스템의 자원을 여러 프로그램이 나눠서, 교대로 써야 하는데, 운영체제는 이를 관리하고 자원을 줬다 뺐는 되게 치사한 기능을 한다.
프로그램은 실행되는 동안 상당 기간을 놀고 있는 상태가 된다. 예를 들어서 워드프로세서가 실행되었다면 사용자가 뭔가 입력할 때까지는 하염없이 기다리고 있다. 문서를 다 만들어서 인쇄를 할 때에는 프린터로 데이터를 보내고 상당한 시간을 놀게 된다. 이렇게 놀면서 CPU 자원을 차지하고 있느니 차라리 그 시간에 다른 프로그램이 CPU를 쓸 수 있도록 해 주자... 이게 멀티태스킹의 기본 개념이다. 프로세스를 한 개만 돌릴 때(싱글태스킹)와 여러 개 돌릴 때를 비교한다면, 개별 프로세스의 속도만 놓고 보면 당연히 싱글태스킹 쪽이 빠르다. 일단 시스템 자원을 줬다 뺏었다 하는 데다가, 운영체제 역시 그러한 작업을 수행하려면 하는 일이 많아지고 그 역시 시스템 자원을 어느 정도 소모한다. 하지만 노는 시간이 다른 프로세스들을 수행할 수도 있고 하니 전체로 보면 효율은 멀티태스킹 쪽이 훨씬 낫다.
물론 CPU 코어가 여러 개라면 당연히 멀티태스킹이 훨씬 효율이 높다. 코어가 2개라고 해도 운영체제가 싱글태스킹만 지원하면 프로그램을 하나만 돌릴 수 있으니까 두 개 코어 중 하나만 쓰이게 되지만 멀티태스킹이 되면 두 개의 프로그램이 동시에 실행되면서 코어를 하나씩 차지하게 되므로 훨씬 빠르다. 물론 코어 하나를 두 개 프로그램이 나눠 쓰는 것보다도 훨씬 빨라진다. 다만 운영체제가 멀티코어를 제대로 지원하는지, 즉 멀티프로세싱을 지원하는지, 지원한다면 멀티코어를 몇 개까지 지원하는지가 관건이다.
협력형 멀티태스킹
프로세스들끼리 서로 협력해서 멀티태스킹을 수행한다. 윈도우 3.1까지가 이랬다. 각각의 프로세스는 원하는 만큼 시스템 자원을 사용하고 안 쓸 때에는 반납해야 한다. 만약 어떤 프로세스가 말을 안 듣고 시스템 자원을 쥐고 안 내놓으면 멀티태스킹이 망가진다. 그러니까 프로세스를 프로그래밍할 때 멀티태스킹을 지원하도록 프로그래밍이 되어 있어야 한다. 윈도우 3.1의 경우에는 이벤트 기반 방식으로 이를 구현했다. 즉, 프로그램이 실행되면 초기 작업을 거진 후에는 루프를 빙빙 돌면서 시스템에게 제어권을 넘겨줬다가 어떤 이벤트(마우스 클릭, 키보드 입력)가 발생했을 때 그 이벤트를 처리하는 코드(이벤트 핸들러)가 호출되고, 처리가 끝나면 다시 루프로 돌아가는 식이다. 만약 이벤트 핸들러가 루프로 안 들아가고 오랫동안 처리 작업을 질질 끌면 멀티태스킹에 문제가 발생하는 것이다.
선점형 멀티태스킹
멀티태스킹을 지원하는 대다수 운영체제는 이 방식이다. 운영체제가 최고 권한을 쥐고 있으며 프로세스들이 실행되는 과정에서 일정 간격으로 계속 시스템 자원을 감시한다. 곧 어떤 프로세스가 말을 안 듣고 시스템을 자원을 쥐고 있으려고 해도 운영체제는 언제든지 원한다면 시스템 자원의 사용권을 빼앗을 수 있다. 윈도우 계열은 [윈도우 95]], 혹은 윈도우 NT부터 이 방식을 지원한다. 여전히 프로그래밍은 이벤트 기반 방식을 사용하지만 이벤트 핸들러가 루프로 안 들아가도 윈도우 3.1과는 달리 한 프로그랭이 시스템 자원을 독점하도록 운영체제가 그냥 놔두지 않는다.
사람의 멀티태스킹
사람을 비롯한 모든 생물은 멀티태스킹을 한다. 일단 수많은 장기들은 각자 끊임없이 자기 일을 하고 있다.
또한 TV를 보면서 밥을 먹는다든가, 운전을 하면서 전화 통화를 한다든가, 그러다가 사고를 치든가 실생황에서 우리는 많은 멀티태스킹을 많이 한다.
남자보다 여자가 멀티태스킹 능력이 뛰어난 것으로 알려져 있는데, 과학적으로도 뇌 구조가 다르다는 것이 입증되었다. 남자는 싱글코어, 여자는 쿼드코어.