ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process & Thread
    > Information Security/Reverse Engineering 2010. 7. 13. 22:47

    ※ 프로세스(process)란

    운영체제로 부터 cpu의 자원을 일정기간동안 할당받아 명령어를 실행하는 것이다.
    프로그램을 객체화 시킨 것이라고도 한다.
    ex) notepad 프로그램을 여러개 수행시켰을 때, 서로 다른 프로세스에 의해 실행된다.

    ※ 프로세스의 상태


    - 보류상태 ( pending state )
    - 준비상태 ( ready state )
    - 실행상태 ( running state )
    - 대기상태 ( blocked state )
    - 완료상태 ( termintaed state )



    ※ 프로세스가 가지는 구별적 특징

    1. 자원소유의 단위

    2. 디스패칭 단위
       하나의 프로세스에서 여러개의 디스패칭 단위가 실행 될 수 있도록 한다.

    여기에서 디스패칭 단위는 스레드 (thread)를 의미한다.






    ※ 스레드 (thread)란

    실제적으로 명령어가 cpu를 사용하여 실행되어지는 객체의 단위 (=디스패칭)
    간단히 말하면 어떠한 프로그램(특히 프로세스) 내에서 실행되는 흐름의 단위라고 할 수 있다.


    ※ 스레드 (thread)의 특징

    1. 생성 시 text, data, stack 이 필요함.
       동일한 프로세스에서 또 다른 스레드 생성 시 text, data는 프로세스 내부에 있는것 사용하고, stack만 할당받는다.

    2. 같은 프로세스(process)내에 있는 스레드(thread)는 같은 주소공간에 존재하기 때문에
       동일한 데이터에 접근이 가능하다.

    3. 스레드(thread)는 프로세스(process)에 의해 지배당한다.


    ※ 스레드 (thread)의 장점.


    1. 같은 주소공간을 사용하므로 메모리 효율성이 높다.

    2. context switching에 비용 적음 
       ☞ context switching :
       현재 실행중인 프로세스의 실행정보를 저장하고, 다음에 실행될 프로세스의 실행정보를 가져오는 과정. 

    3. 프로세스와는 다르게 Kernel 간섭없이 빠르게 정보교환 가능하므로 IPC 사용하지 않는다.
       ☞ IPC(InterProcess Communication) : 두 프로그램이 상호교환 하며 정보교환 하는 방법. 


    ※ 프로세스(process)와 스레드(thread)의 공통점
       스케줄링(scheduling)의 단위가 된다.
        ☞스케줄링(scheduling) : 처리할 일들의 진행 순서를 정하는 일.


    ※ 프로세스(process)와 스레드(thread)의 차이점




    ※ 멀티 스레드(Multi thread)

    하나의 프로세스(process)가 여러개의 스레드(tread)를 가지고 다양한 작업을 분산시켜 처리하도록 하는 것.
    운영체제가 알아서 시간을 쪼개어 스래드(tread)에게 작업을 나눠주므로 훨씬 빠르고 효과적(비용절감)이다.

    하지만, 멀티스레드(multi thread)가 가지는 단점은
    하나의 프로세스(process) 안에 존재하는 스레드(thread)들이 같은 코드, 주소공간, 전역변수를 공유함으로써 생기는
    '자원경쟁' 혹은 '비동기문제' 이다.

    이것을 해결 하기 위한 것이 스레드 지역 기억장소 (Tread Local Storage) 이다.
    스레드 지역 기억장소 (Tread Local Storage)는 '하나의 스레드에 대해서만 전역변수 인 공간' 이다.


    728x90
    반응형

    '> Information Security > Reverse Engineering' 카테고리의 다른 글

    Crack Me 문제유형  (0) 2011.01.05
    upx(실행파일압축) 가 packing 하는 원리  (0) 2010.11.17
    Tool - PEiD  (0) 2010.11.17
    레지스터  (0) 2010.07.01
    어셈블리  (0) 2010.07.01
Designed by Tistory.