본문 바로가기

IT

PC의 운영체제(OS)가 멀티태스킹을 하는 방법.




PC의 일반 응용 프로그램이나 백 그라운드 프로그램등은 모두 프로세스내에서 동작이 이루어집니다. DOS 처럼 제한된 운영체제(OS)는 한번에 하나의 프로세스만 실행 시킬 수 있었습니다. 하지만 현대의 OS는 동시에 여러 프로세스를 동작시키는 멀티태스킹이 가능합니다.



프로세스 관리는 여러 프로세스를 실행하기 위해 OS가 수행하는 작업인데요. 프로세서 1개 만을 실행시킨다면 빠른 실행이 가능하겠지만 여러개의 프로세스를 실행하면 각 프로세스에 할당된 시간은 줄어들 수 밖에 없습니다. 이럴 경우 하드의 버벅거림과 더불어 화면이 멈추거나 마우스 커서의 움직임이 끊기는 현상이 나타나게됩니다. 일반적으로 프로세스 관리는 각 프로세스마다 우선순위를 부여해서 적절한 시간을 결정합니다.



OS의 커널에는 스케줄러라는 소프트웨어가 포함되어 있고, 이것이 프로세서의 순서와 시간을 결정합니다. 커널은 스케쥴러가 선택한 프로세스로 제어권을 넘겨주어 프로그램이 CPU메모리에 액세스 할 수 있게 합니다. 그런 다음 정해진 메카니즘을 통해 제어가 커널에 반환이 되고 스케줄러가 다시 새프로세스를 선택합니다. 커널과 응용프로그램간의 제어를 컨텍스트 스위치라고 합니다.


프로그램 그룹에 CPU 시간을 할당하는 방법의 초기 모델로 협업 멀티 태스킹이 있습니다. 커널이 특정 프로그램에 제어권을 넘겨주면 해당 프로그램은 시간에 제한을 받지 않고 처리할 수 있으며 자발적으로 커널에 제어권을 반환합니다. 따라서 만약 악성 프로그램이나 버그가 있는 프로그램이 실행된다면 CPU 시간을 다른 프로그램에 할당할 수 없기 때문에 무한루프에 빠지며 전체 시스템이 중단되는 사태가 벌어질 수 있습니다.


선점형 멀티태스킹에서는 운영중인 프로세스에 대해 어느때든 제어권을 가져올 수 있으며 모든 프로그램에 미리 지정된 CPU 시간을 할당할 수 있습니다.이를 위해 OS는 타이머 인터럽트를 사용하고 일정시간이 경과하면 인터럽트가 발생해 제어가 감독자 모드로 돌아가면서 커널이 스케줄러를 호출하게 됩니다.


최신 OS에서 선점형 멀티태스킹은 응용프로그램 뿐만아니라 장치 드라이버및 커널 코드에도 적용되기 때문에 실시간 성능이 향상됩니다.


가정용 PC와 같은 경우는 주로 평가가 좋은 프로그램 몇개만을 사용하기 때문에 협업 멀티태스킹을 하더라도 문제가 될 여지는 적습니다. 예외적으로 아미고OS는 초기 버전에서 선점형 멀티태스킹을 적용했고, 마이크로 소프트에서는 윈도우 XP에 가정용으론 처음으로 선점형 멀티태스킹을 적용했습니다.플팬   공감 좀 눌러 주세요*_*