Blog Content

    티스토리 뷰

    11. 프로세스와 스레드의 차이점

    반응형

    프로세스와 스레드의 차이점에 대해 설명하겠습니다.

    프로세스(Process) : 자기 고유의 자원을 가지고 있음(Code, Data, File)
    스레드는(Thread) : 각자의 흐름을 위해 사용됨 (Register, Stack)

    프로세스와 스레드를 비유하면 프로세스는 화면 스레드는 실제 화면속에서 명령에 의해 움직이는 유닛

    리눅스에서는 프로세스와 스레드를 구분하지 않고 테스크(Task) 라고 합니다.
    왜냐하면 프로세스와 스레드는 Task의 자원을 가지고 있습니다.
    다 같은 task_struct로 만들어지기 때문입니다. 프로세스는 생성될때마다 각각의 메모리에서 생성되지만
    스레드는 부모 프로세스의 가상 메모리를 공유합니다.

    [그림 11-1] [그림 11-2]

    프로세스와 스레드가 나눠진 이유는 속도때문입니다.
    프로세스간에 태스크 문맥(Task Switch)를 하면 매번 4GB 메모리를 바꾸게 되면 그 만큼 메모리를 바꿔주기 때문에속도가
    느립니다. 그래서 생긴게 스레드 입니다.
    스레드간에 태스크 문맥(Task Switch)를 하게되면 4GB의 메모리를 바꾸지 않고 공유하기때문에 속도가 빠릅니다.
    실제 커널 소스를 보면 task_struct 라는 구조체로 선언됩니다. 커널 소스보시려면

    [그림 11-3]


    [그림 11-4]


    코드 1200~1576 Line 까지가 task_struct 입니다. 코드가 엄청 길고 복잡하네요. 아직 코드를 읽을 수는 없어요.
    열공하겠습니다.

    제 친구의 말로는 if def end if 구문이 있는데 이 조건에 따라서 스레드와 프로세스로 나누는데 필요한건
    추가하고 필요없는 건 빼는 식으로 조건에 따라 프로세스를 만든다면 task_struct가 생성될 때
    프로세스가 어떤걸 필요한지를 보고 ifdef ~endif 조건에 따라 컴파일 될지 결정한다고 합니다.

     

    반응형

    'ubuntu_Git' 카테고리의 다른 글

    13. 태스크 관리 (Task List)  (0) 2012.04.05
    12. 태스크 관리 (Task_Struct 구조체)  (0) 2012.04.05
    10. 프로세스와 스레드 (Process and Thread)  (0) 2012.03.27
    09. Kernel 의 종류  (0) 2012.03.25
    08. Kernel 이란?  (0) 2012.03.18

    Comments