multiprocess and multiThread
Multi Process(멀티 프로세스)
멀티 프로세스란?
- 다수의 프로세스로 하나의 Task를 처리하는것
- 프로세스간 메모리 구분이나 독립된 공간이 필요할때 사용
특징
- 독립된 구조로 다른프로세스에게 서로 영향을 주지않아서 문제가 발생해도 해당 프로세스 이외에는 영향이 없다. -> 안정적이다.
단점
- 서로 독립된 영역에서 작업을 진행하기 때문에 작업량이 많아질수록 Context Switching에 의한 오버헤드가 발생하여 성능의 저하가 일어날 수 있다
- 서로 독립되어있기 때문에 통신을 위해 별도의 통신설비를 이용해야함(IPC, Inter Process Communication)
- 프로세스간 변수등의 자료 교환을 할 수 없다.
Multi Thread(멀티 스레드)
멀티 스레드란?
- 하나의 프로세스에 여러개의 스레드로 자원을 공유하여 다수의 작업을 동시에 처리하는것
특징
- 프로세스 안에서 공유 메모리를 가지고 있기때문에 시간, 자원의 손실이 프로세스대비 적다
- 스레드간 자료, 변수의 공유가 가능하다.
단점
- 공유메모리를 가지기 때문에 공유메모리의 공간의 손상이 발생하면 다른 스레드또한 작업이 불가능한 상태가 되어버린다.
- 위의 문제를 가지기 때문에 주의깊은 설계가 필요하다. -> Critical Section # Context Switching
- 하나의 프로세스나 쓰레드가 CPU를 사용중인 상태에서 다른 프로세스나 쓰레드가 CPU를 사용하기위해 현재 프로세스의 상태정보를 저장하고 다른 프로세스의 상태값을 불러오는 과정 -> PCB에 저장
- 상태값을 저장하고 불러오는 동안에는 작업을 수행할 수 없다 -> 오버헤드
multiprocess and multiThread