프로그램은 작업을 위해 실행할 파일입니다. 컴퓨터 시스템(커널)에 실행할 파일이 등록되기 전을 의미합니다.
프로세스는 프로그램(실행할 파일)이 컴퓨터 시스템에 등록된 상태를 의미합니다.
스레드란 프로세스의 실행 단위를 의미합니다.
context switching
사진 출처 - https://www.crocus.co.kr/1364
프로세스 P0 프로세스 P1이 서로 대기, 실행을 번갈아가면서 하는 것을 컨텍스트 스위칭이라고 합니다. P0이 실행 중에서 대기 중으로 변하게 될 때는 지금까지 작업해오던 내용을 어딘가에 저장해야 되는데 그곳이 PCB(Process Control Block)입니다.
정리하면 컨텍스트 스위칭은 CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선 순위를 가진 프로세스가 실행되어야 할 때 기존의 프로세스 정보들을 PCB에 저장하고 다음 프로세스의 정보를 PCB에서 가져와 교체하는 작업이다. 이러한 컨텍스트 스위칭을 통해 우리는 멀티 프로세싱, 멀티 스레딩 운영이 가능합니다.
멀티 프로세싱과 멀티 스레딩은 CPU의 최대 활용을 위해 프로그램의 둘 이상의 부분을 동시에 실행하는 기술입니다.
멀티 프로세싱
사진 출처 - https://you9010.tistory.com/136
멀티 스레딩
사진 출처 - https://you9010.tistory.com/136
간단한 예
프로세서(cpu)가 요리사라면 프로세스는 한식, 일식, 중식 등 다양한 작업을 의미합니다. 한식, 일식, 중식 등 요리하는 구역이 존재한다면 스레드는 요리구역의 요리 과정을 의미합니다.
프로세스와 스레드의 차이
프로세스 | 스레드 |
---|---|
실행 중인 프로그램 | 프로그램의 실행 단위 |
종료 시간 많이 걸림 | 종료 시간 적게 걸림 |
생성 시간 많이 걸림 | 생성 시간 적게 걸림 |
컨텍스트 전환 시간 오래 걸림 | 컨텍스트 전환 시간 적게 걸림 |
커뮤니케이션 측면에서 효율성 떨어짐 | 대화면에서 효율적 |
프로세스 격리 | 메모리 공유 |
<참고>