2020. 5. 4. 21:52ㆍOS
https://www.geeksforgeeks.org/difference-between-process-and-thread/
https://www.geeksforgeeks.org/thread-in-operating-system/
Process
Process는 어떤 프로그램이든 실행을 한다. Process control block은 프로세스의 작업을 컨트롤한다. process Control block은 process에 대한 정보를 포함하고 있는데 process 우선순위, process id, process 상태, cpu, register 등이 있다.
또한 프로세스는 자식 프로세스로 알려진 다른 프로세스를 만들 수 있다. 프로세스는 끝을 내기 위해 많은 시간을 가지며 다른 프로세스와 메모리 공유를 하지 않으며 고립됐다고 의미한다.
Thread
프로세스의 세그먼트이다. 프로세스는 여러 개의 쓰레드를 가질 수 있고 여러 개의 쓰레드는 프로세스안에 위치하고 있다.
스레드는 세개의 상태를 가지는데 run, block, ready로 이루어져 있다.
프로세스와 비교하여 종료하는데 오랜 시간이 걸리지 않고 프로세스와 다르게 고립되지 않았다.
Multi Thread
프로세스 안에 멀티 스레드를 놓음 으로써 병렬적으로 실행할 수 있다. 예를 들어 브라우저의 다수의 탭은 서로 다른 스레드로 이루어 져있을 겁니다. 워드에서도 여러 개의 스레드를 사용하는데 하나는 텍스트를 수정하고 하나는 입력을 하는 등 하나의 프로그램에서 여러 개의 스레드가 각자의 역할을 하고 있습니다.
장점
1. 응답성
멀티 스레드 중에 하나의 스레드가 결과를 도출하면 즉각적으로 반환해줄 수 있다.
2. 빠른 문맥교환
프로세스의 문맥교환 보다 빠르게 문맥교환 할 수 있다.
3. 멀티프로세서에서 효율적인 이용성
만약 하나의 프로세서에 여러 개의 스레드가 존재하면 멀티스레드를 멀티 프로세서에서 스케쥴링할 수 있다. 이러한 점은 프로세스의 실행을 더욱 빠르게 만든다.
4. 리소스 공유
코드, 데이터, 파일을 프로세스 안에서 모든 쓰레드 들이 공유하여 사용할 수 있다.
참고. 레지스터와 스택은 공유하여 사용할 수 없다. 쓰레드안에 스택과 레지스터가 있다.
5. 의사소통 부분에서
쓰레드는 같은 주소 공간을 사용하기 때문에 의사소통 부분에서 쉽게할 수 있다. 반면 프로세스에서는 특정한 커뮤니케이션 테크닉을 따라야한다.
6. 향상된 시스템의 처리량
프로세스가 멀티 스레드로 나누어지고 각 스레드에는 각각의 job을 수행하면 시간당 완료된 unit의 수가 증가하게 되어 시스템의 처리량이 올라갑니다.
프로세스와 쓰레드의 차이점
Process | Thread |
프로세스는 프로그램을 실행시킨다. | 프로세스의 세그먼트이다. |
종료 및 생성하는데 오랜시간이 걸린다. | 종료 및 생성하는데 적은 시간이 걸린다. |
문맥교환하는데 많은 시간이 걸린다. | 문맥교환하는데 적은 시간이 걸린다. |
많은 자원을 소비한다. | 적은 자원을 소비한다. |
프로세스는 고립되어 있다. | 메모리를 공유하여 사용한다. |
os에 의해 프로세스 교환이 일어난다. | os요청에 의해 교환이 안일어난다, kernel interrupt의 원인이 된다. |
첫 번째 서버 프로세스가 block되면 unblock 될때까지 다른 프로세스들이 실행될 수 없다. | 다른 스레드를 이용하여 같은 작업을 수행할 수 있다. 하나의 서버 스레드가 block되어도 |
소통하는 부분에서 비효율적이다. | 소통하는 부분에서 효율적이다. |
'OS' 카테고리의 다른 글
프로세스 동기화 (0) | 2020.09.11 |
---|---|
CPU 스케줄링 (0) | 2020.09.09 |
스레드 (0) | 2020.09.07 |
컴퓨터 OS 프로세스 (0) | 2020.09.05 |
Thread Context Switching vs Process Context Switching (1) | 2020.05.05 |