운영체제에서 처리하는 작업의 단위인 태스크, 어떤 작업을 위해 실행할 수 있는 파일인 프로그램, 컴퓨터에서 연속적으로 실행되고 있는 프로그램인 프로세스, 그리고 프로세스 내에서 실행되는 여러 흐름의 단위인 스레드. 항상 헷갈리는 4가지 용어에 대해 정리해보았다.
Task, Program, Process, Thread 용어 정의
Task
- 운영체제에서 처리하는 작업의 단위
- 정해진 일을 수행하기 위한 명령어의 집합
- Process보다 확장된 개념
Program
- 어떤 작업을 위해 실행할 수 있는 '파일'
Process
정의
- 컴퓨터에서 연속적으로 실행되고 있는 프로그램 (a Program in Execution)
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체)
- OS로부터 시스템 자원을 할당받는 작업의 단위
- 시스템 자원: CPU 시간/주소 공간/독립된 메모리 영역(code/data/heap/stack)
특징
- 프로세스는 각각 독립된 메모리 영역을 할당받는다.
- 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가진다.
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
- 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.
- (ex) 파이프, 파일, 소켓 등을 이용한 통신
Thread
정의
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행 경로
- 프로세스가 할당받은 자원을 이용하는 실행 단위
특징
- 스레드는 프로세스 내에서 각각 Stack만 할당받고, 주소 공간이나 Code/Data/Heap 자원들은 같은 프로세스 내의 스레드들끼리 공유하며 실행된다.
- Java에는 프로세스가 없고 스레드만 존재하며(JVM 자체가 하나의 프로세스), Java Thread는 JVM에 의해 스케줄링되는 실행 단위 코드 블록이다.
멀티 태스킹, 멀티프로그래밍, 멀티 프로세싱, 멀티 스레딩의 정의
Multi-Tasking
- Task가 하나의 프로세서 상에서 OS의 스케줄링 방식에 따라 조금씩 번갈아가며 수행되는 것
- 빠른 속도로 번갈아가며 처리하기 때문에 사용자는 동시에 처리된다고 느낌
- 스케줄링 방식: 멀티프로그래밍, 시분할, 실시간 시스템,...
Multi-Programming
- 단일 프로세서 상에서 여러 개의 프로그램이 동시에 실행되는 것
- 동시에 실행: 프로세서는 한 번에 한 작업만 수행 가능하므로 진짜로 동시에 수행되는 것이 아니라 빠르게 번갈아가며 수행됨
- Multi-Tasking을 구현하는 스케줄링의 한 방식이다.
- OS의 최대 목적인 Reduce Idling Time을 위해 사용
Multi-Processing
- 여러 개의 프로세스(CPU)가 서로 협력적으로 일을 처리하는 것, 작업을 병렬 처리하는 것
- 프로세스가 주변장치, 대용량 저장장치, 전원 공급 장치를 서로 공유하고 있기 때문에 여러 개의 단일 프로세싱보다 비용이 절약될 수 있음
- 한 프로세서가 고장 나도 속도가 좀 느려질 뿐 시스템이 정지하지 않음 -> 신뢰성 증가
Multi-Threading
- 하나의 프로세스 내에 여러 개의 스레드를 생성하여 작업을 처리하는 것
멀티 스레딩, 멀티 태스킹, 멀티 프로세싱의 차이점
멀티 스레딩 vs 멀티 태스킹
- 멀티 스레딩은 스레드 간 자원 공유가 가능하고, 프로그래밍을 통해 구현 가능
- 멀티 태스킹은 OS에서 지원하며, 자원 공유를 위해 IPC를 구현해야 하기 때문에 멀티 스레딩에 비해 OS에 부담을 줄 수 있음. 서로 간의 독립된 메모리를 갖고 있기 때문에 독립된 수행이 가능함.
멀티 프로세싱 vs 멀티 스레딩
멀티 프로세싱
- fork를 통해 프로세스를 여러 개로 복제하므로 서로 통신하려면 IPC를 통해야 함
- 하나의 프로세스가 죽더라도 다른 프로세스를 죽이지 않음
- critical section 문제 X
- 멀티 스레딩보다 더 많은 리소스가 요구됨
멀티 스레딩
- 프로세스를 복사하지 않고 하나의 프로세스에서 function 단위로 실행(단일 프로세스) -> 부하 적음
- context switching시 공유 메모리만큼 자원(시간) 손실이 줄어듦
- 오류로 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음
- critical section 문제 O
728x90
'IT면접' 카테고리의 다른 글
[면접 준비-CS기초] 2. 운영체제 (0) | 2021.07.17 |
---|---|
[면접 준비-CS기초] 1. 자료구조와 알고리즘(2) (0) | 2021.07.15 |
[면접 준비-CS기초] 1. 자료구조와 알고리즘(1) (0) | 2021.07.15 |
댓글