프로세스(Process)
- 실행 중인 프로그램
- 커널에 등록된 실행 단위
- 각종 자원들을 요청하고 할당받을 수 있는 개체
- 프로세스 관리 블록(PCB)를 할당받은 개체
- 능동적인 개체(active entity)
- 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
- 전통적인 프로세스는 단일 스레드 프로세스
- 각 프로세스는 독자적인 자원을 보유
스레드
- Light Weight Process(LWP)
- 자원을 제어하는 역할
- 제어는 여러 개가 있을 수 있다. (멀티 스레드)
- 구성 요소
- Thread ID
- Register set(PC, SP 등)
- Stack
- 프로세스 내 각 스레드는 프로세스가 할당 받은 자원(코드, 전역 데이터, 힙)을 공유
- 프로세스 내 각 스레드는 독자적인 지역 데이터, 스택, 제어 정보(SP, PC, 상태 등)를 보유
멀티 프로세스
- 하나의 응용 프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리하도록 한 것
- 장점
- 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스 이외 영향이 확산되지 않는다.
- 단점
- Context Switching의 오버헤드
- 캐시 메모리 초기화 등 무거운 작업이 진행, 많은 시간 소모
- 프로세스는 각각 독립된 메모리 영역을 할당받았기 때문에, Context Switching 발생 시 캐시에 있는 모든 데이터를 리셋하고 다시 캐시 정보를 불러와야 한다.
- 프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
멀티 스레드
- 하나의 응용 프로그램을 여러 개의 스레드로 구성해 각 스레드가 하나의 작업을 처리하도록 한 것
- 장점
- 사용자 응답성
- 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
- 자원 공유
- 자원을 공유해서 효율성 증가
- 커널의 개입을 피할 수 있음
- 생성 및 관리의 부하가 적음, 유연한 관리 가능, 이식성이 높음
- 동일 address space에서 스레드 여러 개
- 경제성
- 프로세스의 생성, context switch에 비해 효율적
- 멀티 프로세서(multi-processor) 활용
- 단점
- 디버깅이 까다롭다.
- 단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.
- 자원 공유의 문제, 즉 동기화 문제가 발생한다.
- 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다. (사용자 수준 스레드)
사용자 수준 스레드(User Thread)
- 사용자 영역의 스레드 라이브러리로 구현됨
- 커널은 스레드의 존재를 모름
- 커널의 관리(개입)을 받지 않음
- 생성 및 관리의 부하가 적음, 유연한 관리 가능
- 이식성(portability)이 높음
- 커널은 프로세스 단위로 자원 할당
- 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기 (single-threaded kernel의 경우)
커널 수준 스레드(Kernel Thread)
- OS(Kernel)가 직접 관리
- 커널 영역에서 스레드의 생성, 관리 수행
- Context switching 등 부하(Overhead)가 큼
- 단, 프로세스 간 Context switching보단 적음
- 커널이 각 스레드를 개별적으로 관리
- 프로세스 내 스레드들이 병행 수행 가능
- 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
기타 용어
커널(Kernal)
- OS(운영체제)의 핵심 부분(메모리 상주)
- 가장 빈번하게 사용되는 기능들 담당
- 시스템 관리(Processor, memory 등)
Context
- 프로세스와 관련된 정보들의 집합
- CPU register context => in CPU
- Code & data, Stack, PCB => in memory
Context Switching
- 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
- OS의 성능에 큰 영향을 줌
Process Control Block(PCB)
- 각 프로세스들에 대한 정보를 관리
- 상태가 전이되면, 진행하던 작업 내용을 정리하고 CPU를 반환하는데, 이때 진행하던 작업들을 모두 저장해야 한다. 이 역할
- 커널 공간(kernal space) 내에 존재
참고링크
유튜브 강의
블로그
댓글남기기