[OS] 배치처리, 시분할, 멀티 태스킹

Operating System Note 4

Posted by Sol on January 14, 2021 · 3 mins read

배치처리 시스템, 시분할 시스템, 멀티 태스킹에 대하여

배치처리 시스템

  • 배치처리 시스템은 선형의 시간축대로 프로그램이 순차적으로 실행되는 방식이다.
    • 그렇기에 배치처리 시스템은 Queue(큐) 자료구조를 활용할 수 있다.
    • 배치처리 시스템의 본질 자체가 First In, First Out 이기 때문이다.
    • 그러면 배치처리 시스템에서 시분할 시스템, 멀티 태스킹으로 패러다임이 옮겨간 이유는 무엇인가?
      • 다음과 같은 요구사항이 있었기 때문이다 :
        • 어떤 프로그램은 실행 시간이 많이 걸려서, 다른 프로그램이 대기해야 하기 때문.
        • MP3음악을 들으면서, 동시에 문서작업도 하고 싶기 때문 -> 멀티태스킹을 하고싶으니까.
        • 여러 사용자가 동시에 하나의 컴퓨터를 쓰고 싶기 때문.

시분할 시스템

  • 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템.

image_1

  • A가 끝날 때 까지 B가 기다리지 않아도 됨.

멀티 태스킹 (멀티 프로그래밍)

  • 멀티 태스킹의 목적은 최대한 CPU를 많이 활용하도록 하는 데 목적이 있다 – > CPU를 가능 한 촘촘히 활용하는 것!

  • 단일 CPU에서, 여러 응용프로그램이 동시에 실행되는 것처럼 - 실제로는 동시에 실행되는 것은 아니지만 - 보이도록 하는 시스템.
    • 나는 MP3음악을 들으면서 문서 작성을 동시에 한다.
    • MP3음악의 재생과 문서 작성이라는 두 tasks를 아주 잘개 쪼개서 아주 짧은 시간으로 번갈아가면서 수행한다면, 사용자(인간)의 입장에서는 그 두 tasks가 마치 동시에 실행되는 것처럼 보이게 된다.
  • 멀티 태스킹과 멀티 프로세싱의 차이는?
    • 멀티 태스킹은 단일 CPU일때 / 멀티 프로세싱은 다수의 CPU일 때를 의미한다고 생각하면 됨.
    • 멀티 프로세싱은 여러 CPU에 하나의 응용프로그램을 ‘병렬’로 실행해서 실행속도를 극대화하는 기술이다.
  • 응용 프로그램은 온전히 CPU를 쓰기 보다, 다른 작업을 중간에 필요로 하는 경우가 많다 :
    • 예를 들어, 응용 프로그램이 실행 중 File을 읽는 경우 :
      • File은 보조기억장치에 위치하고, 보조기억장치는 CPU에 비해 굉장히 느린 장치이다.
      • 따라서 File 읽기에 진입하는 순간 CPU는 작동을 잠시 중지하게 된다.
    • 혹은, 응용프로그램이 실행 중 Print를 하는 경우 :
      • 딱 봐도 시간이 많이 걸린다.
    • 이런 여러가지 경우에 CPU가 작동을 멈추므로 CPU가 쉬지않고 다른 응용프로그램을 실행하는 편이 사용자의 정신건강에 좋다.
    • CPU가 작동을 멈추는 상황을 Blocking이라고 기술적으로 표현한다.
#include <unist.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
    fd = open("data.txt", O_RDONLY);
	  /* 위 open() 함수는 파일을 여는 system call API로, 해당 함수의 return값을 받기 전 까지는 
     * main()함수 전체가 잠시 멈춰있어야 한다 
     * -- > 프로그램의 실행이 pause되고 CPU는 작동을 멈춘다.
     * 즉, CPU자원의 낭비가 발생한다.
     * 따라서, open() 함수가 실행되어 file읽기가 끝나는 동안 CPU로 다른 응용프로그램을 실행시키면?
     * CPU를 쉬지 않고 돌릴 수 있게 된다!!
     */
    if(fd == -1){
        printf("파일을 열지 못했음");
        return 1
    }else{
        printf("파일을 열었음");
        return ();
    }
}
  • 실제로는 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹이 유사한 의미로 통용된다.

위 세 기술의 핵심은, ‘여러 응용프로그램의 실행’, ‘다중 사용자 지원’, ‘CPU 활용의 극대화’ 이다.


위 내용은 ‘패스트캠퍼스’의 컴퓨터공학 강좌 내용을 요약 정리한 것임을 밝힙니다. (https://www.fastcampus.co.kr/)