728x90
프로세스와 스레드
프로세스 | 스레드 |
운영체제 입장에서 작업 단위 | CPU 입장에서 작업 단위 |
서로 독립적 프로세스A가 비정상 종료되어도 프로세스B는 정상 작동 |
서로 강하게 연결 프로세스가 종료되면 프로세스 내의 스레드도 강제종료 |
데이터를 주고 받을 때, 프로세스 간 통신(IPC) 이용 | 변수, 파일을 공유하고 전역 변수나 함수 호출을 통해 통신 |
스레드
- CPU 스케줄러가 CPU에 전달하는 일 하나
- 하나의 프로세스에는 여러 개의 스래드가 존재할 수 있음
- 관련 용어
- 멀티 스레드 : 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
- 멀티 태스킹 : 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법 (시분할 시스템)
- 멀티 프로세싱 : CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경
- CPU 멀티스레드 : 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
멀티 스레드
- fork() 시스템 호출로 프로세스를 복사하면 코드/데이터 영역 일부가 메모리에 중복하여 존재 → 낭비
- 위와 같은 멀티 태스킹의 낭비 요소를 제거하기 위해 멀티 스레드 사용
- 멀티 스레드 장점
- 응답성 향상 : 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있음
- 자원 공유 : 한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스의 자원을 모든 스레드가 공유하여 작업을 원활히 수행 가능
- 효율성 향상 : 불필요한 자원의 중복을 막음으로써 시스템 효율 향상
- 다중 CPU 지원 : 2개 이상의 CPU를 가진 컴퓨터에서 멀티 스레드를 사용하면, 다중 CPU 멀티스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스 처리 시간이 단축됨
- 멀티 스레드 단점
- 모든 스레드가 자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침
- 멀티 스레드 모델
- 사용자 스레드 : 사용자 레벨에서 관련 라이브러리를 사용하여 구현, 라이브러리는 커널이 지원하는 스케줄링, 동기화 같은 기능 대신 구현해줌 (1 to N)
- 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드 (1 to 1)
- 멀티레벨 스레드 : 사용자 스레드와 커널 스레드를 혼합한 방식 (M to N)
728x90
'CS > Operating System' 카테고리의 다른 글
[OS] 프로세스 간 통신 (0) | 2021.12.05 |
---|---|
[OS]CPU 스케줄링 알고리즘 (0) | 2021.12.02 |
[OS] CPU 스케줄링 (0) | 2021.12.02 |
[OS] 프로세스 (0) | 2021.11.02 |
[OS] 운영체제 개요 (0) | 2021.11.02 |
댓글