멀티- 프로그래밍 & 태스킹 & 프로세싱 & 스레드

msg016·2022년 7월 3일
0

CS Study

목록 보기
6/6

멀티프로그래밍

최대한 CPU를 많이 사용하고자 하는 시스템.
일반적으로 실행되는 프로세스는 CPU 또는 I/O 사용 중 하나를 필요로 한다. CPU를 점유하여 프로세스를 실행하거나, I/O 작업을 통해 파일 입출력 등을 진행한다. 즉, 어떤 프로세스가 I/O 작업을 한다면 CPU는 그 동안 유휴 상태에 놓이게 된다.
이를 해결하고 CPU 사용을 효율적으로 하기 위한 것이 멀티 프로그래밍이다. 메인 메모리에 여러 작업을 올려 어떤 작업이 CPU 사용 중 I/O 작업을 하게 되면, CPU는 자신을 필요로 하는 다른 task를 실행한다.

멀티태스킹

하나의 CPU는 동시에 하나의 작업만을 실행할 수 있다. 만약 어떤 작업이 오랜 시간이 소요될 때, 해당 작업만을 수행한다면 다른 작업은 더 일찍 끝나는 작업이라도 앞선 작업들의 완료를 기다릴 수 밖에 없다.
이를 해결하기 위해 Time Quantum이라는 일종의 사용 시간을 정하여 여러 프로세스를 번갈아가며 정해진 시간만큼을 반복하여 수행한다. 이를 통해 동시에 여러 프로그램이 실행되는 것처럼 보일 수 있다. 이를 Time-sharing이라고 하며, 여러 프로그램 사이의 타임 쉐어링이 멀티태스킹 개념이다.

멀티프로세싱

단일 프로세서 시스템에서는 오로지 하나의 작업만 수행할 수 있다. 그러나 일반적으로 수행해야하는 작업은 하나보다 많고, 이를 하나의 프로세서로 처리하는 것은 많은 시간을 필요로 한다. 이를 해결하기 위해 여러 프로세서를 사용하여 자원(메모리, 시스템 버스, I/O 등)을 공유하고 작업을 동시에 처리하는 것을 멀티프로세싱이라 한다.
복수의 작업을 수행할 때 이를 병렬적으로 처리할 수 있으므로 더 높은 처리율과 짧은 작업 시간을 가질 수 있으며, 일부 프로세서의 불능에도 다른 프로세서에 의해 작업이 처리될 수 있다.
그러나 프로세서 간의 자원을 공유하므로 이에 대한 처리가 필요하며, 더 많은 메모리와 비용을 필요로 한다.

멀티스레드

하나의 프로세스를 여러 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것이 멀티스레딩이다.
스레드 간에는 부모 프로세스의 힙과 같은 자원을 공유하기 때문에 자원 공유가 용이하고, 스택 등의 실행 환경은 독립되어 있기 때문에 하나의 스레드의 처리가 오래걸리더라도 다른 스레드에 영향을 미치지 않는다. 또한 새로운 프로세스를 생성하는 것에 비해 새로운 스레드를 생성하는 것의 비용과 오버헤드가 적다.
반면 스레드 중 하나에 문제가 발생하면 전체 프로세스에 영향을 줄 수 있으며, 공유하는 부모 프로세스의 자원에 대한 접근의 동기화에 주의하여야 한다.

참고

profile
프론트엔드 개발자 지망생

0개의 댓글