정의 (Definition)
프로세스 : 운영체제로부터 자원을 할당받는 (독립적인)작업의 단위
스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위
프로세스
- 운영제제로부터 (독립적인) 주소공간, 파일, 메모리등을 할당받음
- 각 프로세스는 독립적이며, 자신만의 고유의 영역을 할당받아 사용한다.
- 실행중인 프로그램을 의미
스레드
- 스레드는 프로세스 안에 존재하며, 여러 스레드가 자원을 공유
- 스레드는 프로세스내에서 각각의 스택 공간을 제외한 모든 주소공간과 자원을 공유
프로세스는 실행될 때 운영체제로부터 프로세서, 필요한 주소공간, 메모리등 자원(Resource)을 할당을 받는다.
스레드는 할 프로세스 내에서 동작되는 여러 실행(Execution)의 흐름으로 프로세스 내의 주소공간이나 자원들을
같은 프로세스내의 스레드끼리 공유하면서 실행된다.
요약하면,
운영체제(OS)가 시스템의 자원을 어떤 단위로 할당하고, 프로세스와 스레드는 이 자원을 어떻게 사용하느냐를
결정하는 것이라고 할 수 있다.
여러 프로세스가 할 수 있는 작업들을 스레드로 하는 이유?
운영체제는 시스템 자원을 효율적으로 관리하기 위해서 스레드를 사용한다. 멀티 프로세스로 실행되는 작업을
멀티 스레드로 싱핼할 경우, 프로세스를 생성하여 자원을 할당하는 시스템콜(System call)이 줄어들어 자원을
효율적으로 관리할 수 있다. 뿐만 아니라 프로세스 간의 통신보다 스레드 간의 통신비용이 적게들기 때문에
통신부담이 줄어들게 된다.
'프로그래밍 > 윈도우시스템' 카테고리의 다른 글
세마포어(Semaphore)에 대한 이해 (0) | 2019.12.04 |
---|---|
뮤텍스 예제 (0) | 2019.12.04 |
뮤텍스에 대한 이해 (Mutex) (0) | 2019.12.04 |