운영체제에서 Multi-tasking이란, 여러 개의 프로세스들이 CPU 시간을 나눠서 사용하며, 동시에 돌아가는 것을 의미한다. 그런데, 이때 동시에 돌아간다는 말은 영어로 'Concurrent' 혹은 'Parallel' 로 해석할 수 있는데, 이 둘의 의미는 조금 다르다.
Concurrent vs. Parallel
- Parallel: 여러 개의 프로세스들이 병렬적으로 실행되는 것
- Concurrent: 완전히 병렬적으로 실행되거나, 혹은 병렬적으로 실행되지는 않지만, CPU 스케쥴링을 통해 동시에 도는 것처럼 유저에게 보여지는 경우를 통틀어서 일컫는 말
따라서 이 포스팅에서 말하는 Multi-tasking에서 프로세스들은 concurrent하게 돈다는 것을 가정하고 시작한다.
: 디스크 I/O를 하는 동안 CPU가 필요없으면 CPU를 다른 프로세스에 넘겨주고 I/O를 수행한다. 이렇게 CPU의 다른 작업과 I/O 작업이 동시에 이뤄지는 것을 CPU/IO Overlap이라고 한다.
그런데, 이렇게만 설명한다면 모든 프로세스가 I/O 작업을 수행하지 않는 경우에는 Multi-tasking이 이뤄지지 않는다고 생각할 수 있다. 그러나 이런 경우에는 프로세스들이 time slice(CPU를 사용할 수 있도록 할당받은 시간)를 나눠갖고, 이 시간이 끝나면(time slice burst) CPU를 다른 프로세스에 넘겨주는 식으로 Multi-tasking이 이루어진다.
: 한 프로세스가 잘리고, 다른 프로세스로 넘어가는 것을 의미한다.
따라서 Preemptive Multi-tasking이란, CPU-I/O Overlap, CPU Scheduling을 통해 프로세스들 간에 CPU를 나눠서 쓰는데, 이때 하나의 프로세스가 다른 프로세스의 작업을 자르고 들어가서 자신의 작업을 수행하는 식으로 이루어지는 멀티태스킹을 의미한다.
안녕하세요, tech 기업에서 일하는/ 일하기를 희망하는 여성들을 모아서 모임을 만들고 있어요!
자세한 사항은 및 링크 참조바랍니다 :)
https://velog.io/@emilyscone/SheKorea-1%EA%B8%B0-%EB%A9%A4%EB%B2%84%EB%A5%BC-%EB%AA%A8%EC%A7%91%ED%95%A9%EB%8B%88%EB%8B%A4