목차
- Q1_사전 배경 지식(프로그램, 프로세스, CPU, 메인 메모리, I/O, 프로세스 컨텍스트, 프로세스 스위칭)
- Q2_단일 프로세스 시스템, 멀티 프로그래밍, 멀티 태스킹
- Q3_스레드와 멀티 스레딩
- Q4_멀티 스레드 VS 멀티 프로세스

- Q1_사전 배경 지식(프로그램, 프로세스, CPU, 메인 메모리,  I/O, 프로세스 컨텍스트, 프로세스 스위칭)

더보기

A.
- 프로그램(Program) : 컴퓨터가 실행할 수 있는 명령어들의 집합을 의미합니다.

 

- 프로세스(Process) : 컴퓨터에서 실행 중인 프로그램 각각의 독립된 메모리 공간을 할당 받아서 명령어들과 데이터를 가지게 되는데 이를 프로세스라고 합니다.

 

- CPU(Central Processing Unit) : 컴퓨터의 주요 장치로서, 모든 프로세스와 프로그램의 명령어들을 실행하는 연산, 제어, 데이터 처리 등의  컴퓨터 시스템의 기본적인 작업을 처리하는 중앙 연산 장치입니다.

 

- 메인 메모리(Main memory) : 프로세스가 CPU에서 실행되기 위해 대기하는 곳을 의미합니다.

 

- I/O(Input/output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고받는 것, 입출력(키보드, 마우스 등..) 장치와 데이터를 주거나 받는 것입니다.

- 프로세스 컨텍스트(Process Context) : CPU에서 실행되기 위해 필요한 모든 데이터를 포함한 운영 체제에서 프로세스의 실행 상태를 나타내는 정보의 집합입니다.

- 프로세스 스위칭(Process Switching) : 다른 프로세스로 CPU를 전환할 때 발생하며, 운영 체제의 스케줄러에 의해 관리됩니다.

 

- Q2_단일 프로세스 시스템, 멀티 프로그래밍, 멀티 태스킹, 멀티 프로세싱

더보기

A.
- 단일 프로세스 시스템 : 한 번에 하나의 프로그램만 실행 됨을 의미하며 또 다른 프로그램을 실행시키려면 현재 프로그램을 종료하고 진행해야 합니다. 이렇게 사용했을 경우 실행 중인 프로세스가 I/O 작업을 하는 동안에는 CPU가 사용되지 않고 놀고 있기 때문에 CPU 사용률이 좋지 않습니다.

 

- 멀티프로그래밍 : 여기서 CPU 사용률을 극대화 시키는데 목적을 가지고 여러 개의 프로그램을 메모리에 올려놓고 I/O 작업이 발생하면 다른 프로세스가 CPU에서 실행시키게 됩니다. 이를 멀티프로그래밍(MultiProgramming)이라고 합니다. 대신 여기서도 단점이 발생하게 되는데 CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기하게 됩니다.

 

- 멀티 태스킹(Multi Tasking) : 이를 해결하기 위해 프로세스의 응답 시간을 최소화 시키는데 목적을 두고 한 번 CPU를 사용 할 때 아주 짧은 시간(=quantum)만 CPU에서 실행되도록 하게하여 동시에 프로그램이 동작하는 느낌을 주게 되었습니다.

 

- 멀티 프로세싱(Multi Processing) : 두 개 이상의 프로세서나 코어를 활용하는 시스템입니다.

 

- Q3_스레드와 멀티 스레딩

더보기

A.
- 스레드(Thread) : 프로세스 내에서 실행되는 흐름의 단위(unit of execution)로, 프로세스의 메모리와 기타 자원을 공유하면서 CPU에서 실행됩니다. 프로세스는 한 개 이상의 스레드를 가질 수 있으며, 이를 멀티 스레딩이라고 합니다.

 

- 멀티 스레딩(Multi Theading) : 하나의 프로세스가 동시에 여러 작업(스레드)으로 메모리와 기타 자원을 공유하며 작업을 나누어 수행하는 것입니다. 장점은 시스템 자원소모 감소, 시스템 처리율 향상(처리비용 감소), 간단한 통신 방법으로 프로그램 응답시간 단축, 힙 영역을 공유하므로 데이터를 주고받을 수 있습니다.


탄생 배경은 단점(프로세스의 컨텍스트 스위칭이 무거운 작업으로 비효율적이고 프로세스끼리 데이터는 독립적인 공간을 가지고 있어 공유가 까다롭다.)을 보완하고자 만들어진 개념입니다.

 

- Q4_멀티 스레드 VS 멀티 프로세스

더보기

A.
- 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 컨텍스트 스위칭이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료될 위험을 갖고 있다.

 

- 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지하는 단점이 있다.

 

- 두 방법은 동시에 여러 작업을 수행하는 점에서 동일하지만, 각각의 장단이 있으므로 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 한다.