Study/운영체제

프로세스 스케쥴링 #2 멀티 프로그래밍

voider 2021. 3. 10. 23:01

프로세스 스케쥴링

  • 멀티 프로그래밍

멀티 프로그래밍의 목적

  • 최대한 CPU를 많이 활용하도록 하는 시스템
  • 시간 대비 CPU활용도를 높이자
  • 애플리케이션을 짧은 시간 안에 실행 완료한다

멀티 프로그래밍
애플리케이션이 온전히 CPU를 쓰기보다 다른 작업을 중간에 필요로 하는 경우가 있다. 단순한 예를 들자면, 애플리케이션이 실행되다가 파일(저장 매체)을 읽는다거나 프린팅을 해야 한다고 했을 때 그동안 아무 일도 할 수 없도록 설계되어 있다면?

만약 어떤 애플리케이션을 실행하는데 걸리는 시간이 10초라고 해보자.

이 애플리케이션은 A와 B라는 작업을 하는데, 각각 3초씩 걸린다. 그런데 A를 실행할 때 파일을 읽는 작업이 추가로 실행되는데 그 시간이 4초다.
이 애플리케이션이 CPU를 점유하는 시간은 총 10초지만, 실질적으로 CPU를 사용하는 시간은 파일 읽는 시간을 제외한 6초 뿐이다. 그럼 4초라는 시간을 낭비하는 셈이다. 이 낭비를 줄이기 위해 도입된 것이 멀티프로그래밍이다. 멀티 프로그래밍은 파일을 읽는 시간 동안 CPU가 놀지 않도록 B작업을 실행하고, 파일을 다 읽으면 다시 A작업을 실행함으로써 낭비되는 시간을 줄인다.

정리

실제로 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹은 매우 유사하고 연관된 개념이기 때문에 용어를 혼용하여 사용하는 경우가 많다.

시분할 시스템, 멀티 태스킹, 멀티 프로그래밍의 핵심은 아래와 같다.

  1. 여러 애플리케이션 실행을 가능하도록 한다.
  2. 애플리케이션이 동시에 실행되는 것처럼 보이도록 한다.
  3. CPU가 낭비되지 않도록 애플리케이션을 실행하도록 해서 짧은 시간 안에 애플리케이션이 실행 완료할 수 있도록 한다.
  4. 컴퓨터 응답 시간을 짧게 해서 다중 사용자를 지원한다.
  • 시분할 시스템 : 다중 사용자 지원, 컴퓨터 응답 시간 최소화
  • 멀티 태스킹 : 단일 CPU에서 여러 애플리케이션을 동시에 실행하는 것처럼 보이게 함
  • 멀티 프로세싱 : 여러 CPU에서 하나의 애플리케이션을 병렬로 실행하여 속도를 높인다
  • 멀티 프로그래밍 : CPU를 최대한으로 활용하기 위한 방법

'Study > 운영체제' 카테고리의 다른 글

스케줄링 알고리즘  (0) 2022.03.22
프로세스와 스레드  (0) 2022.03.18
프로세스 스케쥴링  (0) 2021.02.09
유저 모드와 커널 모드  (0) 2021.02.08
운영체제2 - 시스템 콜  (0) 2021.02.07