프로세스
프로그램?
어떤 작업을 위해 실행하는 파일
프로세스?
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
- 운영체제로부터 시스템 자원 할당받는 작업의 단위
- 실행된 프로그램
시스템 자원 예
- CPU 시간
- 운영되기 위한 주소공간
- 메모리 영역
특징
- 프로세스는 각각 독립된 메모리 영역 할당받음
- 프로세스당 최소 1개의 스레드 보유
- 프로세스는 별도 주소공간에서 실행되며 다른 프로세스에 접근 불가
- 다른 프로세스에 접근 하기 위해서는 프로세스 간 통신 사용
ex) 파이프, 파일, 소켓 등을 사용
멀티 프로세스(Multi Process)
하나의 프로그램을 여러 프로세스로 구성해 하나의 작업을 처리
장점 : 하나의 프로세스가 잘못되어도 프로그램 동작
단점 : Context Swtiching 비용 발생
Context Swtiching
- CPU에서 여러 프로세스를 돌아가면서 작업 처리하는 과정
- 실행되던 프로세스의 상태를 저장했다가 다시 복구하는 시간
스레드
프로세스 내 실행되는 여러 흐름의 단위
프로세스의 특정 수행 경로
프로세스가 할당받은 자원 이용하는 실행 단위
특징
- 동일 프로세스 내 독립적 다중 수행 가능
- 응답 시간 단축
- 실행 환경을 공유시켜 기억장소 낭비가 줄어든다.
멀티 스레드 (Multi Thread)
프로그램을 여러 스레드로 구성하고 각 스레드가 하나의 작업을 처리
장점 : 시스템 자원 소모 감소, 처리 비용 감소, 실행 속도 향상, 스레드간 자원 공유
단점 : 디버깅 어려움, 하나 쓰레드 오류로 전체 문제 발생
Thread Safe
여러 스레드가 동시 사용되도 안전하다!