-
Process와 ThreadCS/CS 2022. 2. 23. 22:11
프로그램(Program)
프로그램은 컴퓨터에서 특정 작업을 수행하기 위해 작성된 일련의 지침을 포함하는 실행 파일이다. 프로그램은 컴퓨터의 기본 메모리에 저장되지 않고 컴퓨터의 디스크 또는 보조 메모리에 저장된다. 기본 메모리로 읽어들여 커널에 의해 실행된다. 프로그램은 보조 메모리에 상주하므로 때때로 수동 개체라고도 한다
프로세스(Process)
프로세스는 프로그램이 실행중인 상태이다
프로그램을 실행하면 운영체제로 부터 자원을 할당받아 프로세스가 된다
스레드(Thread)
스레드는 프로세스의 실행 가능한 가장 작은 단위이다
프로세스는 최소하나이상의 스레드를 포함한다 각 스레드는 프로세스에서 고유한 작업과 고유한 실행 경로를 갖습니다
동일한 프로세스의 모든 스레드는 해당 프로세스의 메모리를 공유합니다동일한 프로세스의 스레드가 동일한 메모리를 공유하므로 스레드 간의 통신이 빠릅니다
프로세스
- 프로세스는 무거운 작업이다
- 모든 프로세스에는 자체 메모리 공간이 있다
- 프로세스간 메모리 주소가 다르기때문에 통신이 오래걸린다
- 프로세스간의 컨텍스트 스위칭은 시스템에 부담이 크다
- 프로세스는 다른 프로세스와 메모리를 공유하지 않는다
스레드
- 스레드는 가벼운 작업이다
- 스레드는 자신이 속한 프로세스의 메모리를 사용한다
- 스레드가 속한 프로세스의 동일한 메모리 주소를 공유하므로 빠릅니다
- 동일한 프로세스내에 스레드의 컨텍스트 스위칭이 시스템에 부담이 적다
- 스레드는 동일한 프로세스의 다른 스레드와 메모리를 공유합니다
멀티프로세스(Multi Process)
두개이상의 프로세스가 동시에 실행되는 상태이다
프로세스간에 영역모두(Code, Data, Heap, Stack) 공유하지 않아 안전성이 높지만 독립된 메모공간을 가지고 있어 작업량이 많을수록 오버헤드가 발생하여 성능이 저하 될수있다
장점
- 독립된 구조로 안정성이 높다
단점
- 각자 독립된 메모리 영역을 가지고 있어 작업량이 많아지면 속도가 저하된다
멀티스레드(Multi Thread)
하나의 프로세스에 두개이상의 스레드가 자원을 공유하는 상태이다
스레드간에 영역(Stack을 제외한 나머지부분)을 공유한다
장점
- 프로그램 응답속도가 단축된다
- 시스템 자원소모가 감소된다
- 컨텍스트 스위칭 비용이 감소되어 시스템 처리량이 향상된다
단점
- 하나의 스레드에 문제발생시 전체 프로세스가 영향을 받는다
- 주의깊게 설게해야하고 디버깅이 까다롭다,
- Stack을 제외한 나머지영역들을 공유하기에 동기화가 어렵다
'CS > CS' 카테고리의 다른 글
얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy) (0) 2024.01.28 HTTP 와 HTTPS (0) 2022.02.23 프록시와 VPN (0) 2022.02.21 TCP 와 UDP 차이는? (0) 2022.02.21 쿠키와 세션 차이는? (0) 2022.02.20