Media Log

이것은 윈도우 프로그래밍 이야기.
길을 걷다 보면 간혹 듣게 되는 이야기. 는 아니고 소프트웨어 회사의 사무실이나 엘레베이터에서 가끔 들을 수 있는 이야기.
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요?
어잉. 그런가?

답은 아니오이다. 메인 쓰레드가 종료된다고 프로세스가 종료되는 것은 아니다.
ExitProcess 같은 함수를 통해 명시적으로 프로세스를 종료시키거나, 모든 쓰레드가 종료되었을 때 프로세스는 종료된다.

그럼 사람들은 왜 저런 미신을 가지게 되었을까. 아마도 메인 함수에서 리턴할 때 다른 쓰레드들이 존재하더라도 프로세스가 종료되는 것을 봐왔기 때문일 것이다.
그렇다. 메인 함수가 리턴하면 다른 쓰레드들이 잘 살아 있더라도 프로세스가 종료된다.
하지만 메인 쓰레드가 종료되었기 때문에 프로세스가 종료되는 것은 아니다. 이 때 프로세스가 종료되는 이유는 메인 함수가 끝나고 CRT에서 exit 함수를 호출 해주기 때문이다. exit()는 물론 내부적으로 ExitProcess를 호출한다.

다른 쓰레드를 생성해 놓은 뒤 메인 함수 내에서 ExitThread 함수를 사용해 메인 쓰레드만 종료시켜 보면 프로세스가 종료되지 않는다는 것을 살펴 볼 수 있을 것이다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
김택진 스토리 - 7점
김정남 지음/e비즈북스
몇달 전 DevOn인가 Daum에서 진행했던 개발자 행사에서 김택진의 이야기를 듣고는 어떤 사람인지 좀 더 알고 싶어져서 읽어본 책이다. 100페이지 짜리 아주 얇은 책이라서 금방 읽을 수 있었다.

현대에서 병특을 하는 동안에도 승진에 승진을 거듭하고 정주영 앞에서 프리젠테이션을 하기도 했다는 걸 읽으면서 될 성 싶은 나무는 떡잎부터 다르다더니 그 말이 딱 맞구나 싶었다.
이미 초 거물이 된 엔씨소프트 사장의 지금 모습이 아닌 한메소프트 시절과 엔씨 소프트 초창기 시절 엔지니어 김택진의 모습만을 다뤄줘서 너무 좋았다.

좀 아쉬웠던 점은 이렇게 얇은 책임에도 불구하고 김택진에 대한 내용으로 가득 채워져 있는 것이 아니라 송재경과 김정주, 리처드 개리엇 같은 사람들의 내용으로 절반 이상을 할애한다는 점이다. 물론 그들의 이야기도 재밌게 읽긴 했다. 하지만 그래도 책 제목이 김택진인데 송재경이나 리처드 개리엇 이야기를 김택진 만큼 많이 써버리면 좀 그렇지 않나.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. Favicon of http://ebizbooks.tistory.com BlogIcon e비즈북스 at 2012.04.27 18:08 신고 [edit/del]

    리뷰를 남겨주셔서 감사합니다. 저도 게임 이야기가 좀 많아서 송재경씨만 넣었으면 어땠을까 생각을 했었습니다. 그런데 엔씨소프트를 이해하려면 게임 이야기가 필요하다는 의견이 있었습니다. 저자분이 게임에 관심이 많은데다가 편집자가 게임을 좋아해서 그럴지도 모르겠습니다^^

    Reply

submit

좋은 프로그래머가 되려면 컴퓨터가 명령어를 실행시키는 데 걸리는 시간, 메모리에서 데이터를 가져오는 데 걸리는 시간(캐시 히트 또는 미스가 날 때를 각각), 디스크에서 데이터를 읽어오거나 탐색하는 데 걸리는 시간을 잘 알고 있어야 한다.
그 답은 아래 표에 나와있다. (출처 http://norvig.com/21-days.html#answers)

execute typical instruction

1/1,000,000,000 sec = 1 nanosec

fetch from L1 cache memory

0.5 nanosec

branch misprediction

5 nanosec

fetch from L2 cache memory

7 nanosec

Mutex lock/unlock

25 nanosec

fetch from main memory

100 nanosec

send 2K bytes over 1Gbps network

20,000 nanosec

read 1MB sequentially from memory

250,000 nanosec

fetch from new disk location (seek)

8,000,000 nanosec

read 1MB sequentially from disk

20,000,000 nanosec

send packet US to Europe and back

150 milliseconds = 150,000,000 nanosec


나는 도대체 나노초가 어느 정도인지 감도 잘 오지 않는다. 그래도 뭐 외우라면 외워야지.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 초보 at 2012.03.25 11:46 신고 [edit/del]

    락 거는 게 메모리 접근 보다 빠르다는게 놀랍네요.
    저는 매우 느릴거라고 생각했는데...

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012.03.26 12:07 신고 [edit/del]

      Mutex lock이 뭘 말하는건지 잘 모르겠지만 뮤텍스 커널 오브젝트를 생성하고 획득한다던지 하는 내용은 아닌 것 같습니다. CPU가 제공하는 LOCK 명령어를 저렇게 쓴 건 아닐까 싶네요.

submit

그는 결코 틀리는 법이 없어.
자신이 만났던 가장 위대한 해커이자 비아웹의 절친한 동료였던 로버트 모리스를 보고 하던 말.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
제로데이 - 4점
마크 러시노비치 지음, 김지량 옮김, 정관진 감수/제이펍
마이크로소프트의 테크니컬 펠로우이자 윈도 인터널의 저자인 마크 러시노비치가 사이버 보안에 관련된 소설을 썼다길래 원서가 나왔을 때부터 얼른 번역되기를 기다리고 있었다.
이번 주에 회사에 왔다 갔다 하면서 조금씩 읽다가 이번 휴일에 다 읽었는데 읽는 내내 실망감을 감출 수 없었다. 읽으면서 어쩌면 마크 러시노비치는 기술적인 몇 가지 부분의 아이디어만 제공하고 다른 사람이 전체적인 내용을 써내려갔을지도 모르겠다는 생각이 들었다. 하긴 그렇게 바쁜 사람이 무슨 소설을 쓴다고.
전체적인 구성이 별로였다. 기술적인 부분도 재미가 없었으며 주인공들의 로맨스도 어설펐고 긴장감도 없었다. 훌륭한 엔지니어가 훌륭한 소설가가 되는 것은 어렵다는 것만 배웠다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit