[OS] 프로세스 스케쥴링

박성재·2021년 2월 20일
0

운영체제

목록 보기
4/10
post-thumbnail

패스트캠퍼스 컴퓨터 공학자 따라잡기 온라인 완주반
운영체제(이준희 님) 파트를 수강하며 공부한 내용을 정리한 자료입니다.

배너: godori님이 만드신 배너 메이커 활용


배치 처리 시스템, 시분할 시스템, 멀티 태스킹

배치 처리 시스템

배치 처리 시스템:
일괄 처리, 배치 처리, batch processing 이라고 부름
컴퓨터 프로그램 실행 요청 순서에 따라서 순차적으로 프로그램을 실행하는 방식
한 번에 등록된 여러 프로그램을 순차적으로 실행 가능

배치 처리 시스템은 자료구조의 큐 방식과 비슷하다.

여러 프로그램을 순차적으로 실행시키는 경우

  • 어떤 프로그램은 실행 시간이 너무 많이 걸려서 다른 프로그램이 실행하는데 시간을 많이 기다려야 한다.
  • 음악을 들으면서 문서 작성을 하고 싶다면?.. (동시에 여러 프로그램 실행 x)
  • 여러 사용자가 동시에 하나의 컴퓨터를 쓰고 싶다면?.. (다중 사용자 지원 x)

위와 같은 불편과 요구사항에 의해 시분할 시스템이 나왔다.

시분할 시스템

시분할 시스템(TSS; Time Sharing System):
다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템

출처: 위키피디아
시분할 운영 체제는 많은 사용자들이 컴퓨터를 공유하도록 한다. 시스템은 한 사용자에서 다음 사용자로 빠르게 전환함으로써 각 사용자에게 자신만이 컴퓨터를 사용하고 있는 것과 같은 착각을 주지만, 실제로는 여러 사용자가 하나의 컴퓨터를 공유하여 사용하고 있는 것이다.

예: 입출력 인터페이스에서 사람에게는 1초에 5문자를 치는 것이 빠른 편이지만, 컴퓨터 입장에서는 아주 느린 것이다. 이런 경우 운영체제는 CPU를 그냥 쉬게 하지 않고 다른 사용자의 프로그램을 수행하도록 전환시킨다.

오늘날 대부분의 시스템은 시분할 시스템이다.

그림1. 시분할 시스템

시분할 시스템은 응답시간을 굉장히 짧은 단위로 분할해서 응용 프로그램을 변경해 가며 실행하기 때문에, 사용자 입장에서 컴퓨터 응답 시간을 굉장히 짧게 할 수 있다.

멀티 태스킹

멀티 태스킹:
단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템

  • 음악을 들으면서 문서 작성

실제 멀티 태스킹은 10 ~ 20 ms 단위로도 실행 응용 프로그램이 바뀌는데, 사람이 인지하기에 굉장히 짧은 시간이기 때문에 사용자에게는 응용 프로그램들이 동시에 실행되는 것처럼 보인다.

그림2. 멀티 태스킹

그림3. 멀티 태스킹과 멀티 프로세싱

멀티 태스킹: 단일 CPU
멀티 프로세싱: 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화시키는 시스템


멀티 프로그래밍

멀티 프로그래밍

응용 프로그램은 CPU를 계속해서 사용하기보다, 다른 작업을 중간에 필요로 하는 경우가 많다. 이 동안 CPU는 아무 일도 할 수 없이 기다리게 되어 절대적인 시간은 짧을 지라도, CPU 입장에서는 많은 시간을 낭비하게 된다.

  • 응용 프로그램이 실행되다가 파일을 읽는 경우
  • 응용 프로그램이 실행되다가 프린팅을 하는 경우

그림4. 파일을 읽어 오는 동안 CPU가 아무 일도 하지 못하는 상황

이러한 상황을 방지하여 CPU를 최대하 많이 활용하기 위해 멀티 프로그래밍이 활용된다.

그림5. 멀티 프로그래밍 예시

위와 같이 응용 프로그램이 파일을 읽어 오는 등의 이유로 CPU를 사용하지 않고 있을 때 다른 응용 프로그램을 실행함으로써 단위 시간 당 CPU 활용도를 높일 수 있다.

정리

  • 배치 처리 시스템: 요청 처리된 순서에 따라 응용 프로그램이 자동적으로 이어서 실행될 수 있도록 하는 시스템
  • 시분할 시스템: 다중 사용자 지원, 응답시간 최소화 시스템
  • 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
  • 멀티 프로세싱: 여러 CPU에서 하나의 프로그램을 병렬로 실행시키는 시스템
  • 멀티 프로그래밍: CPU를 일정 시간 당 최대한 많이 활용하기 위한 시스템
    • CPU를 쉬지 않고 응용 프로그램을 실행하도록 해서 짧은 시간 안에 응용 프로그램 실행이 완료될 수 있도록 함

0개의 댓글