반응형
멀티 프로세스
두개 이상의 프로세서가 협력적으로 하나 이상의 작업을 동시에 처리하는 것 -> 병렬처리, 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용 메모리 독립적
장점
- 독립된 구조로 안전성이 높음
- 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 전체 프로세스가 정지되거나 하는 문제가 발생하지 않음
- 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두소 모든 프로세서가 이를 공유하면 비용적으로 저렴
문제점
- 독립된 메모리 영역이기 떄문에 작업량이 많을수록 오버헤드가 발생하여 성능저하가 발생할 수 있음
- [Context Switching](Context Switching) 과정에서 Cache 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생
Context Switching
- CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정
- CPU는 한 번에 하나의 프로세스만 실행 가능
- 구체적으로, 동작 중인 프러세스가 대기 하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업
멀티 스레드
하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것, 메모리를 공유
장점
- 시스템 자원소모 감소(자원의 효율성 증대): 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리할 수 있음
- 시스템 처리율 향상 (처리비용 감소): 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어듬, 스레드 사이 작업량이 작아 Context Switching이 빠름 -> 캐시 메모리를 비울 필요가 없음
- 간단한 통신 방법으로 프로스램 응답 시간 단축: 스레드는 프로세스 내 스택 영역을 제외한 메모리 영역을 공유하기 떄문에 통신 비용이 적음, heap 영역을 공유하므로 데이터를 주고 받을 수 있음
문제점
- 자원을 공유하기 떄문에 동기화 문제가 발생할 수 있음. Ex) 병목현상, 데드락 등
- 주의 깊은 설계가 필요하고 디버깅이 어려움. 불필요한 부분까지 동기화 할 경우, 대기시간으로 인해 성능저하 발생
- 하나의 스레드에 문제가 생기면 전제 프로세스가 영향을 받음
- 단일 프로세스 시스템의 경우에는 효과를 기대하기 어려움
프로세스와 스레드의 차이
프로세스: 운영체제로부터 자원을 할당받는 작업의 단위
스레드: 프로세스 내에서 실행되는 흐름의 단위
반응형
'IT 톺아보기 > 이런저런 공부' 카테고리의 다른 글
memcpy 사용법 (0) | 2023.04.18 |
---|---|
CAN 통신 (1) | 2023.04.17 |
한글 오토마타 만들기 - 3 (0) | 2023.01.18 |
한글 오토마타 만들기 - 2 (0) | 2023.01.18 |
한글 오토마타 만들기 - 1 (1) | 2023.01.18 |