2021. 11. 15. 18:03ㆍ[CS] Computer Science 정리
프로세스 : 프로그램을 메모리 상에서 실행중인 작업
스레드 : 프로세스 안에서 실행되는 여러 흐름 단위
프로세스는 각각 별도의 주소공간 할당
- Code : 코드 자체를 구성하는 메모리 영역
- Data : 전역변수, 정적변수, 배열 등
- 초기화 된 데이터는 data영역에 저장
- 초기화 되지 않은 데이터는 bss 영역에 저장
- Heap : 동적 할당 시 사용 (new(), malloc() 등)
- Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
멀티 프로세스
| 하나의 컴퓨터에 여러 CPU 장착 -> 하나 이상의 프로세스들을 동시에 처리(병렬)
장점 : 안전성
단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 오버헤드 발생
멀티 스레드
| 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌
장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능
단점: 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태, 동기 비동기 작업을 유연하게 잘 처리해줘야함
멀티 프로그래밍
프로세서가 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있도록 하는 것이 멀티프로그래밍이다.
멀티 태스킹
task를 번갈아가며 수행하는 것을 의미
멀티 스레딩
하나의 프로세스를 여러 개의 실행 단위이며, 여러 개의 스레드끼리 자원을 공유하는 것
😁멀티 프로세싱 vs 멀티 스레딩
멀티 프로세싱은 프로세스를 다수개로 늘려 여러 개의 프로그램들을 병렬로 처리하며, 멀티 스레딩은 하나의 프로그램 안에서 병렬 처리를 한다.
쓰레드풀
쓰레드를 생성/수거하는데 드는 비용을 무시할 수가 없다. 그렇기 때문에 요청이 들어올 때 마다 스레드를 생성하고 일을 다하면 수거하고 하는 작업은 프로그램 퍼포먼스에 영향이 간다. 그래서 쓰레드 풀에 쓰레드를 미리 만들어 놓는 것이다. 쓰레드 풀은 작업 queue에 들어온 작업들을 미리 생성해놓은 쓰레드들에게 할당하고 작업을 완료한 쓰레드들은 다시 어플리케이션에게 결과값을 반환한다.
단점 : 너무 많이 만들어 놓으면 메모리가 낭비될 수도 있다.
'[CS] Computer Science 정리' 카테고리의 다른 글
교착상태(DeadLock)의 발생 이유와 해결방법 (0) | 2021.11.15 |
---|