아이폰의 멀티태스킹은 오히려 독이 되지 않을까...

2010. 6. 13. 09:34Work

멀티태스킹에 대해서 많이들 오해하는것이 있다.
여러개의 프로그램을 동시에 돌릴수 있다는 것으로 일반적으로 멀티태스킹을 이해한다. 틀린말은 아니다. 하지만 조금 이해가 필요한 부분이 있다. 이를테면 이런 상황을 설정해 보자.

1. A 프로그램을 시작해서 종료하기까지 15초가 걸린다.
2. B 프로그램을 시작해서 종료하기까지 10초가 걸린다.

멀티태스킹을 하면 A를 하면서 동시에 B를 하면 15초 안에 A와 B가 다 끝날 것으로 생각한다. 여기에 잘못이 있다. A, B를 동시에 실행시키면 15초가 아니라 25초가 걸린다. 혹은 그 이상의 시간이 걸릴 수도 있다. 프로그램의 성격상 조금 짧아질 수도 있다. 그래도 20초 이상은 걸린다.

왜 이런 일이 발생하는가? 멀티태스킹이라해도 일반적으로 둘 이상의 프로그램이 동시에 실행되지 않는다. 시간을 나눠서 A와 B를 번갈아가면 실행하는 것이다. 그래서 멀티태스킹은 OS 차원에서 지원이 되어야하며, 이는 각 프로그램간 시간을 나눠가며 조금씩 실행하는 것을 의미한다.

프로그램A 가 실행된다. 1초후 프로그램B가 실행되었다. 프로그램A는 멈추고 그때까지 한 작업 내용을 저장해 두고 프로그램B를 실행한다. 프로그램B가 실행되다가 자판입력을 받는 단계에서 멈춘다. 그때까지의 작업 내용을 저장하고 다시 프로그램A를 재실행한다. 이때 저장되었던 A의 중간결과를 읽어와야한다. 자판입력을 기다리며 A의 중간결과를 읽어오는 이 시간은 에러의 가능성이 매우 큰 시점이 된다. 혹시 이때 프로그램C를 실행시키거나 혹은 무선랜의 연결에 문제가 발생했다는 메시지등이 들어오면 그것도 처리해야한다. 발생가능한 많은 상황들을 고려하면서 멀티태스킹이라는 사용자의 고급스런 취향을 충족시킨다는 것은 참으로 위험부담이 큰 일이기도 하다.

이번 아이폰 4 는 멀티태스킹이 가능한 OS로 알려졌다. 동시에 애플에서는 이 멀티태스킹을 상당히 부담스러워하는 모습도 보인다. 당연한 일이다. 듀얼코어같은 CPU를 장착했을 경우 프로그램A와 B는 각각의 코어에서 100%를 차지하면서 돌아간다. 이게 진정한 멀티태스킹(정확히는 듀얼태스킹)이 될 것이다. 그 외 시분할 기법을 이용한 멀티태스킹은 보이기에는 여러개의 프로그램이 동시에 돌아가는 듯 보이겠지만 CPU는 그 이상의 고통을 받으며 쉴 시간없이 계속해서 여러 프로그램 사이를 왔다갔다하고 있는 것이다. 그 중간에 무언가 잘못된 데이타를 받거나 하면? ... 무슨 일이 발생할지 감당키 어려워진다. 애플사의 아이폰 OS에 멀티태스킹을 넣은 제작자들의 충분한 검증만을 믿을(?)뿐이다.

사용자 삽입 이미지
멀티태스킹은 어찌보면 눈속임마술 같은 것이다. 1개의 CPU는 1개의 명령밖에 처리하지 못한다. 이것을 시간을 나눠서 마치 여러개의 명령을 동시에 처리하는 것처럼 보이게 하는 것이다. CPU의 성능이 많이 좋아졌으니 이렇게해도 눈에 보이는 바로는 여러 프로그램이 동시에 구현되는 것처럼 보여진다. 하지만 정말은 그렇지 못하다는 것이다.

하나 이상의 앱에서 발생하는 다양한 입력값과 구현값들을 OS 수준에서 얼마나 정교하게 잘 줄 세울수 있느냐가 안정된 멀티태스킹인지를 말해준다. 과연 인터럽트와 시분할기법을 얼마나 잘 조화시켰는지는 아이폰4 출시 이후에 드러나게 될 것이다. 그리고 이 멀티태스킹은 안드로이드에서도 동일하다. 다만 초기부터 멀티태스킹을 지원했으니 조금 더 안정되었을 것이라고 추측은 되지만 과연 기기별 특성치가 적용되는 인터럽트와의 조화도 잘 이루어지는지는 두고 봐야 할 일이다.