프로세스 개념
메모리에 올라와 실행되고 있는 프로그램의 인스턴스
운영체제로 부터 시스템 자원을 할당받는 작업단위
기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 갖고 있음
한 프로세스에서 다른 프로세스의 변수 OR 자료구조 접근 불가
(다른 프로세스의 자원에 접근 하려면 프로세스간의 통신 IPC사용)참고 IPC (Inter Process Communication) ?
- 파이프, 소켓 통신

Cdoe : 실행 명령을 포함하는 코드들
Data : Static 변수 혹은 Global 변수
Heap : 동적 메모리 영역
Stack : 지역변수, 매개변수, 반환 값 등 .. 일시적인 데이터
스레드 개념
프로세스 내에서 실행되는 여러흐름 단위
프로세스가 할당받은 자원을 이용하는 실행단위
스레드는 프로세스 내에서 Stack만 따로 할당 받고 Code, Data, Heap 영역은 공유
멀티프로세스
하나의 응용프로그램을 여러개의 프로세스로 구성, 각 프로세스가 하나의 작업을 처리 하도록 함
장점
- 여러개의 자식 프로세스 중 하나에 문제가발생하면 그 자식프로세스가 죽는것 이상으로 다른 영향 확산 없음
단점
- Context Switching 에서의 오버해드
Context Switching 과정에서 캐쉬메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 오버헤드 발생
- Context Switching 에서의 오버해드
참고 Context Switching란?
- CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다.
구체적으로, 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이 전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.
- CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다.
멀티스레드
하나의 응용프로그램을 여러 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리 하도록 하는 것
장점
- 시스템 자원 소모 감소
- 프로세스 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 할 수 있음
- 시스템 자원 소모 감소
- 스레드사이의 작업량이 작아 Contet Switching이 빠르다
- 간단한 통신 방법으로 프로그램 응답시간 단축
- 스레드는 프로세스 내의 Stack 영역을 제외하는 모든 메모리를 공유 함으로
- 단점
- 디버깅 까다로움
- 하나의 스레드 문제 발생시 전체 프로세스 영향받음
- 멀티 스레드의 경우 자원공유 문제 발생 (동기화 문제)
멀티 프로세스대신 멀티 스레드 사용 이유?
- 여러개의 프로그램을 실행하는 것보다 하나의 프로그램 안에서 여러가지 작업을 해결 함으로
Muti-Core
Concurrency (동시성)
- 하나의 코어에서 하나이상의 프로세스가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는것
Parallelism (병렬처리)
- 둘이상의 코어에서 동시에 하나이상의 프로세스가 한꺼번에 진행되는것
'잡동사니' 카테고리의 다른 글
| 이클립스 XML 한글 깨져 보일때 인코딩 변경하기 (0) | 2023.03.21 |
|---|---|
| 객체지향프로그래밍 (0) | 2021.07.08 |
| appstore 심사 리젝 (0) | 2021.03.17 |
| 앱스토어 등록시 유용한 사이트 (0) | 2021.03.16 |
| 개인정보처리방침 (0) | 2021.03.16 |