본문 바로가기

Talk

전에 Mr.K가 실험했던 Iteration VS Recursion 관련 글.

ㄲㄲ

잊고있었습니다.

뭐... 정규 포스트에는 안끼우고 그냥 Talk에 올리는걸로 하지요.

---------------------------------------------------------------------------------------
사용자 삽입 이미지


ㄲㄲ 저기 ....을 대충 그린건 죄송합니다만.... 귀찮았어요 -_-

윈도우고 뭐고 간에 멀티태스킹을 하는 OS는 대략 저렇게 돌아갑니다.

각각의 프로세스(프로그램)들에게 우선순위를 주지요.

그리고 프로그램(프로세스)들은 모두 명령어 코드로 이루어져 있다는거, 아시지요?

CPU는 우선순위에 따라 해당 프로세스를 더 많이 읽습니다.

멀티태스킹이란것 자체가 원체 CPU가 한번에 1개의 일밖에 못하는 지라,

메모리상에 띄워져있는 작동해야할 프로세스들을 "번갈아가면서" 읽어들여 실행합니다.

그리고 '멀티스레딩'이란 프로세스 내에 여러개의 스레드를 프로세스 나눈것처럼 나눠서,

CPU가 자신의 코드를 읽을때 해당 스레드를 읽게 하지요.

뭐... 대충 원리 설명은 이정도로 된 것 같고,

프로세스는 두가지로 나뉩니다.

눈에 보이는 결과를 내뱉는 Visiable 프로세스(사용자 우선)와,

뒤에서 숨어서 일하는 Background 프로세스(시스템 우선)입죠.

Iteration의 경우는 한 개의 프로세스 내에서 별다른 시스템 스택호출(함수호출)이 거의 없기 때문에,

사용자 우선의 Visiable 프로세스로 분류되어 '최소화'모드로 실행시

프로세스의 우선순위가 내려갑니다.

반면, Recursive의 경우 함수 호출이 잦아 시스템 스택을 자주 불러야 하기 때문에

시스템 우선의 Background 프로세스로 분류되지요. 이 경우 '최소화'나 일반 창으로 두나

CPU가 읽어들이는 코드의 양에 별 차이가 없게 됩니다. 우선순위 변동이 거의 없다는 것이지요.

이해들 되십니까?-_-? ㄲㄲㄲㄲ

어때요, 참 쉽죠?

P.S. 전에 Mr.K의 포스팅에서 Recursion도 느려졌던 이유는, printf함수 때문입죠. ㄲㄲㄲㄲㄲ

'Talk' 카테고리의 다른 글

Mr.K. 이번엔 정말 솔깃할만한 걸 들고왔다.  (2) 2008.12.16
울 아부지랑 나랑 담배만으로 모았....  (2) 2008.12.15
심플스  (8) 2008.12.12
용자가 되어가고 있습니다.  (3) 2008.12.08
Mr.K. 좋은거 구해왔다.  (3) 2008.12.08