멀티 태스킹
Task(작업)을 OS의 스케줄링 기법에 의해 번갈아 수행한다.
스케줄링은 여러 방식이 있다. 혼용해서 쓰긴 하지만,
하나씩의 개념을 간단히 알아보자.
- 멀티프로그래밍 방식
- 타임쉐어링 방식 (시분할 방식)
- 리얼타임 방식 (실시간 시스템 방식)
멀티 프로그래밍
하나의 CPU에 대하여 RAM에 여러 프로세스를 적재하는 것임.
멀티 태스킹을 구현하는 스케줄링의 방식 중 하나이다.
유니 프로그래밍은 입출력을 기다리는 시간들이 굉장히 낭비입니다. CPU연산이 끝나고 I/O연산이 진행될 때는 CPU가 쓰이질 않는데, I/O가 끝나길 대기하게 됩니다.
반면 멀티 프로그래밍은 효율적입니다. CPU가 쓰이지 않을 때 다른 프로세스에게 CPU연산을 넘겨줍니다. I/O 작업으로 넘어갈 때, 끝나길 하염없이 기다리는 것이 아닌 것이죠.
(그러나 메모리가 무한정 커질 수는 없으니까 무작정 메모리에 올라가는 대기중 프로세스를 늘릴 순 없겠죠.)
타임 쉐어링
타임쉐어링을 실현하기 위해 타임 퀀텀(:한 프로세스의 최대 처리시간)을 정해둔다.
정해진 타임퀀텀 안에 프로세스 처리가 안 끝나면, 다른 프로세스로 스왑한다.
또한 타임퀀텀이 안 지났어도, 입출력을 기다리는 wait상태가 되어도 다른 프로세스로 스왑한다.
그러면 처리시간이 짧은 프로세스가 적절히 먼저 처리될 수 있다. 처리시간 긴 작업이 끝나기까지 기다리고만 있지 않아도 되기 떄문이다. 이를 mean response time을 줄일 수 있다고 한다. 또 다시말해 하나의 프로세스가 CPU에게 처리되는데 걸리는 시간을 줄일 수 있다는 개념.
.
.
* 멀티프로그래밍과 좀 뚜렷히 구분해보자면, 멀티프로그래밍은 CPU가 안쓰이는 I/O연산시 다른프로세스를 처리한다. 반면 타임쉐어링은 프로세스 처리 중 타임퀀텀을 넘으면 스왑되거나, I/O연산시 바로 스왑된다. 둘 다 I/O 연산시 바로 처리가 넘어가네?
* 멀티프로그래밍의 확장된 개념이기도 하다. 얘도 RAM에 여러 프로세스를 적재하여 돌리긴 하는데, 타임퀀텀이 도입된 개념. 즉 타임퀀텀의 도입 덕분에 멀티프로그램의 단점을 보완할 수도 있다. 그치만 타임퀀텀이 좀 불필요한 경우에서는 단점이 될 수 있겠지? 타임퀀텀이 장점과 단점이 되는 경우를 밑에서 이어서 작성하겠다.
그럼, 멀티프로그래밍 vs 타임쉐어링 ?
위 두 개념을 다시 봅시다.
멀티프로그래밍은 여러 프로세스를 동시에 돌려서 각 프로세스를 빨리 끝낼 수 있고,
타임쉐어링은 프로세스 처리 시간을 제한해서 처리시간짧은 프로세스를 빨리 끝낼 수 있습니다.
둘 다 "프로세스를 빨리 끝낼 수 있다"라는 공통점이 있습니다.
처리대상 프로세스가 가져야하는 중요도가 무엇인지에 따라 멀프 or 타쉐를 선택할 수 있겠습니다.
멀티프로그래밍은 단위시간당 완료한 작업 수인 throughput가 커야하거나, CPU에 오래 할당되어 진행되는 프로세스라면 멀티프로그래밍이 좋습니다.
타임쉐어링은 response time이 짧습니다. 텍스트편집기같은 interative processing, 즉 사용자와 상호작용하는 작업이 핵심이면 타임쉐어링이 적절합니다.
사용자에게 즉각적인 처리가 보여야 하기 때문에 타임퀀텀을 두고 작업이 이루어져야 더 좋다는 개념이겠죠?
더 명확히 이해한 후 보완하도록 하겠습니다.
참조🌱
https://studyblog4244.tistory.com/96
https://studyblog4244.tistory.com/97
'컴퓨터구조 & OS' 카테고리의 다른 글
[운영체제] Process Control Block(PCB) (0) | 2023.10.06 |
---|---|
[운영체제] 프로세스 상태도 (2) | 2023.09.28 |
[python] gpu(cuda) 프로세스 정리하기 (0) | 2023.09.12 |
[Nvidia][Docker] 컨테이너에서 GPU 돌리기! (0) | 2023.09.09 |
Linux gpu 세팅[2] | 기존 컨테이너에서 GPU 사용하도록 변경하기 (2) | 2023.09.08 |