배치(batch) OS, 다중 프로그래밍, 시분할 시스템

2024. 3. 14. 02:21·컴퓨터 공학(Computer Science)/OS

Batch OS

컴퓨터의 idle time을 줄여 활용률을 향상시키기 위해서 Batch OS가 개발되었다. Batch는 개발자가 작성한 punched card(천공 카드)의 한 묶음을 의미하는데, batch 하나가 일종의 프로그램인 셈이다.

이런 일련의 batch들을 한꺼번에 실행하되, 한번에 한개씩 순서대로 처리한다. 이것을 batch processing(배치 처리)라고 함.

즉, 하나의 프로그램이 완전히 끝나야 다음 프로그램 실행으로 넘어갈 수 있다.

다중 프로그래밍(multi-programming)

컴퓨터의 throughput(처리율)을 높이기 위해 CPU를 효율적으로 사용하기 위해 고안한 방법.

CPU가 쉬지 못하게 하는게 목적이다. I/O작업시에는 CPU가 일을 하지 않는데, I/O작업시에도 CPU가 일을 하도록 하는게 다중 프로그래밍 기법이다.

프로그램 A, B, C가 메모리에 적재되었고, 실행한다고 가정한다면, 프로그램 A가 실행되고 I/O작업을 시작할 때, 프로그램 B가 실행된다. 또 프로그램 B가 실행되고 I/O작업시에 프로그램 C가 실행된다. 그리고 다시 A가 실행되는게 반복된다.

 

그렇다면, 어떤 작업이 먼저 처리될 것이냐?(스케줄링) 에 대해서는 당시에 batch processing에 익숙해져있던 상황을 고려할 때, 먼저 온 작업을 먼저 처리하는게 옳다.

즉, 다중 프로그래밍은 여러개의 프로그램을 동시에 조금씩(I/O 작업시간을 이용) 실행 시킨다.

 

시분할 다중 프로그래밍(time sharing multi-programming)

I/O 작업시에 다른 프로그램을 실행시키는 다중 프로그래밍과는 달리, 여러 프로그램을 시간 단위로 나누어 번갈아 실행시키는 다중 프로그래밍 기법이다.

예를 들어, 단위 시간을 100ms라고 가정하면 프로그램 A, B, C에게 CPU를 사용할 수 있는 권리를 100ms씩 준다. 프로그램들이 돌아가면서 100ms씩 실행한다. 만약, 100ms이상의 시간이 필요할 경우 다음의 자기 차례에 마저 실행한다.

시분할 OS에서 각 프로그램에게 동일한 시간 할당량만큼씩 번갈아 실행시키는 스케줄링 기법을 round-robin 이라고 부른다.

하나의 메인 프레임 컴퓨터를 두고, 여러개의 터미널(사용자)가 할당 받은 시간만큼 돌아가며 CPU를 사용한다

공통점

다중 프로그래밍, 시분할 시스템 둘 다 CPU를 효율적으로 사용하기 위해서 고안되었다. 하지만, 시분할 시스템은 짧은 단위 시간을 각각의 터미널에게 할당하므로, CPU를 사용하고자 하는 각각의 사용자가 터미널에서 CPU를 혼자 사용하는 것 같은 느낌을 준다.

'컴퓨터 공학(Computer Science) > OS' 카테고리의 다른 글

OS와 인터럽트  (0) 2024.03.30
Kernel의 실체  (0) 2024.03.26
Kernel, user mode, kernel mode  (0) 2024.03.26
커널과 시스템 호출  (0) 2024.03.25
'컴퓨터 공학(Computer Science)/OS' 카테고리의 다른 글
  • OS와 인터럽트
  • Kernel의 실체
  • Kernel, user mode, kernel mode
  • 커널과 시스템 호출
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C++
    이진 트리
    스택
    버퍼
    파이썬
    리눅스
    arm
    커널 기여
    피보나치
    commit
    소수
    Qualcomm
    yolo
    커널
    c언어
    순환
    Git
    백준
    파일 입출력
    INIT
    시스템콜
    rubikpi3
    포인터
    동적메모리
    앤드류모튼
    토발즈
    rubik pi
    드라이버 분석
    Branch
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
배치(batch) OS, 다중 프로그래밍, 시분할 시스템
상단으로

티스토리툴바