카테고리 없음

스케쥴링 - 멀티 프로그래밍

:_: 2022. 2. 22. 16:43

 

멀티 프로그래밍이란? 

 

최대한 CPU를 많이 활용하도록 하는 시스템

시간대비 CPU 활용도를 높이자!

응용 프로그램을 짧은 시간 안에 실행 완료를 시킬 수 있다.

 

응용 프로그램이 CPU에 놓여져서 실행하는 중이라도 응용 프로그램이 다양한 작업을 중간중간에 필요로 해서

CPU 응용프로그램이 있어도 실행 못하는 경우가 있다.(CPU가 놀고 있을 수도 있음)

CPU가 필요한 응용 프로그램을 놀고 있는 CPU에게 할당 : 촘촘하게 CPU를 응용프로그램이 사용할 수 있도록

시간대비 CPU 활용도 높아지고 짧은 시간안에 응용프로그램 실행 완료 가능

 

 

응용프로그램은 온전히 CPU를 쓰기 보다는 다른 작업을 중간에 필요로 하는 경우가 많다.

ex. 응용프로그램이 실행되다가 파일을 읽는 경우 저장매체로 가게된다.

저장매체는 CPU의 실행시간으로 볼 때 굉장히 느린 장치이다. 그렇게 되면 그 시간동안 아무 작업을 하지 못하게 된다. 

ex. 응용프로그램이 실행되다가 프린팅을 한다

 

Q. 파일을 읽을 응용프로그램이 실행이 멈춰야 하는가?

 

 처음부터 int fd: 까지는 CPU 순차적으로 실행할 있다.

 open( ) 시스템 콜은 저장매체를 한번 갔다와야 한다.

data.txt open 가능한지 아닌지에 대한 결과값을 변수 fd 가져와야 다음 코드를 실행 있다.

 코드에서 fd = open(~~) q부터 if (fd == -1) 까지 작업을 하는 시간은 CPU 입장에서는 굉장히 오래 걸리기 때문에 다른 응용프로그램으로 바꿔주면 좋다.

 

일정 시간 총 8초 CPU 실행 시간 : 3초   3/8 -> CPU 활용도 50% 도 안됨..

 응용프로그램 3번이 fd 변수 선언하고 파일을 open하는 순간 CPU입장에서는 한참 시간이 걸린다.

CPU입장에서는 아무것도 못하고 기다려야 한다. ( CPU 짧은 시간안에 동작하기 때문 )

 

일정 시간 총 8초 CPU 실행 시간 : 8초   8/8 -> CPU 활용도 100%

 응용프로그램 3번을 다른 응용프로그램에 던져 놓고 다른 응용프로그램 실행 하고 파일을 오픈하면 다음 코드를 실행할 있는 시점이 되면 응용프로그램 3번을 다시 실행. (멀티 프로그래밍 기술 활용)

 

멀티 프로그래밍은 CPU 활용도를 높이는 기술이다.

 

 

메모리 계층 - 컴퓨터 구조 복습

 

System Bus - 컴퓨터 구조 복습

  System Bus 기반으로 해서 여러가지 입출력 디바이스가 묶여 있고 메모리도 묶여 있는 경우가 많다.

CPU 입장에서 보면 저장매체까지 가려면 한참 걸린다.

그래서 CPU 저장매체까지 직접 가지 않고 DMA 라는 별로 장치를 만들어서 데이터를 가져오라고 시키고

그동안 다른 작업을 한다.  → CPU 활용도를 높이는 방법

 

 

 

실제로는 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹이 유사한 의미로 통용된다. 

  1. 여러 응용 프로그램 실행을 가능하게 한다.
  2. 응용 프로그램이 동시에 실행되는 것처럼 보이도록 한다.
  3. CPU를 쉬지 않고 응용프로그램을 실행하도록 짧은 시간 안에 응용프로그램이 실행완료 있도록 한다.
  4. 컴퓨터 응답시간을 짧게 해서 다중 사용자도 지원

 


 

정리 

  1. 시분할 시스템: 다중 사용자 지원, 컴퓨터 응답시간을 최소화하는 시스템
  2. 멀티태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템
  3. 멀티 프로세싱: 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행하게 해서 실행속도를 높이는 기법
  4. 멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템
728x90