본문 바로가기

# IT, Computer Science/Operating System

Process와 Thread 개념, 차이점

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

- 프로세스

프로세스란 실행 중인 프로그램을 나타내는 말로서 디스크에 저장되어 있는 프로그램이 실행되면 그 프로그램은 자신의 고유한 메모리 공간에 프로그램의 코드가 읽혀질 것이고 CPU는 메모리에 로드된 프로그램의 명령어를 하나하나 읽어서 실행하게 될 것이다. 그리고 이렇게 실행 중인 상태의 프로그램을 우리는 프로세스(Process) 또는 태스크 (Task) 라 부른다.

Windows와 같이 멀티태스킹을 지원하는 운영체제에서는 동시에 실행되고 있는 여러개의 프로세스에 대하여 cpu와 메모리 자원을 안정되게 분배해 주어야 하며 이러한 역할은 그 운영체제의 성능을 결정하는 데 있어 아주 중요한 요소이다.

그럼 프로세스가 가지는 구별적인 특성은 무엇일까? 이는 아래와 같이 정리할 수 있다.

자원 소유의 단위 : 각각의 프로세스는 자산의 실행 이미지 로드와 실헹에 필요한 추가적인 메모리 공간을 가지고 있어야 할 것이며, 이들은 각 프로세스 마다 구별되어야 할 것이고 해당 프로세스가 접근하고자 하는 파일, i/o 장치들에 대해서 또한 프로세서 단위로 할당받아 관리되어야 할 것이다.

디스패칭의 단위 : 프로세스는 하나의 프로그램이 운영체제로부터 cpu의 자원을 일정 기간동안 할당받아 명령어를 실행하는 것이며, 운영체제는 여러 개의 프로세스가 병렬적으로 실행되게 하기 위해서 cpu의 사용 시간을 각각의 프로세스에 골고루 나누어 주어야 한다.

위와 같은 두 가지 구별적 특성은 하나의 프로세스에서 하나의 디스패칭 단위가 실행되어질 경우이며, Windows와 같은 최근의 운영체제는 보다 효울적인 멀티캐스킹을 위하여 하나의 프로세스에서 여러 개의 디스패칭 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드라 부른다.


- 스레드 (Thread)

앞에서 이야기 했듯이 스레드란 실제적으로 명령어가 cpu를 사용하여 실행되어지는 객체의 단위이며, windows  운영체제는 하나의 프로세스에서 여러 개의 스레드가 실행될 수 있도록 하고 있으며, 이러한 스레드는 같은 프로세스에 있는 자원과 상태를 공유하게 된다.

즉, 같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있고 하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는스레드에 영향을 미치게 되며 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수도 있다.


또한 이 프로세스에 속한 스레드들은 그프로세스의 상태에 지배를받게 되므로 만약 그 프로세스가 종료하게 되면 이에 속한 모든 스레드 또한 종료하게 되는 것이다.


사용자 삽입 이미지


앞의 그림에서는 각각의 스레드가 독립적인 실행을 위하여 독립된 스택과 스레드 스위칭 시 필요한 레지스터 값, 우선순위 또는 기타 스레드와 연관된 상태 정보를 포함하는 스레드 제어 블럭을 가지고 있음을 보여 주고 있다.


이러한 멀티스레딩의특성은 같은 프로세스 내의 스레드간 스위칭을 보다 빠르게 할 수 있게 한며, 어떠한 명려어를 실해하기 위한 별도의 스레드 생성 시 그 비용을 줄여줄 수도 있게 한다.



[출처] 프로세스와 스레드의 개념|작성자 존스







The major difference between threads and processes is 


1.Threads share the address space of the process that created it; processes have their own address.


2.Threads have direct access to the data segment of its process; processes have their own copy of the data segment of the parent process. 


3.Threads can directly communicate with other threads of its process; processes must use interprocess communication to communicate with sibling processes. 


4.Threads have almost no overhead; processes have considerable overhead.


5.New threads are easily created; new processes require duplication of the parent process.


6.Threads can exercise considerable control over threads of the same process; processes can only exercise control over child processes.


7.Changes to the main thread (cancellation, priority change, etc.) may affect the behavior of the other threads of the process; changes to the parent process does not affect child processes. 


출처 : http://www.allinterview.com/showanswers/258.html




'# IT, Computer Science > Operating System' 카테고리의 다른 글

Process Scheduling  (0) 2012.10.02