[CS] 타임 쉐어링

jae·2024년 12월 2일

CS

목록 보기
5/6

타임쉐어링이라는 개념을 알고 있으면 좋다는 말에 오늘도 파먹어보기..!

멀티 프로그래밍

하나의 CPU에서 여러 프로세스들을 동시에 실행하는 것처럼 보이게 만들기 위해
CPU의 유휴 시간을 최소화하고 자원을 최대한 사용하게 하는 것이다
cpu의 유휴 시간이란 말그대로 휴식하고 있는 시간을 줄여버리는 것으로
cpu는 컴퓨터에겐 핵심인 산술 계산기이고 한정적인데 쉬고 있다면 다른 작업들은 쉬는 시간을 기다리고 있으니 시스템이 효율적이지 않을 것이다.

멀티프로그래밍은 하나의 cpu가 여러 작업(프로세스)를 동시에 하지 않지만 동시에 하는 것처럼 보이게 빠르게 작업들이 바뀌는것이 핵심이다

타임쉐어링

운영체제(OS)가 CPU가 여러 작업들을 빠르게 바꿔가면서 처리하도록해서 모든 작업이 동시에 실행되는 것처럼 느껴지게 만드는 것이다.

이 멀티프로그래밍의 한 기법인데 차이가 있다면 프로세스가 CPU를 사용하는 방식과 그 시간의 배분이라고 할수 있다

내 착각 : 그럼 병렬 처리는 사실 병렬이 아니고 타임쉐어링이 만들어내는 환상인가..?
-> 병렬처리는 스레드가 병렬인거고 타임쉐어링은 스레드가 아닌 프로세스를 바꿔끼는 것으로 스레드를 가진 프로세스의 개념이라고 한다

타임쉐어링의 동작

  1. 운영체제가 대기 큐(Ready Queue)에서 프로세스들을 대기시키고 관리한다.
  2. 운영체제가 타임 슬라이스라는 cpu를 사용할 시간을 정하고 프로세스들에게 분배한다.
  3. 운영 체제는 스케쥴러를 통해서 대기 큐에 있는 프로세스에게 타임슬라이스만큼 cpu를 사용하도록함
  4. 타임슬라이스 동안 작업이 완료가 되면 프로세스가 종료되며 큐에서 삭제가 됨.
  5. 타임슬라이스 동안 작업이 완료되지 않으면 작업이 중지되고 cpu에서 나가고 다시 큐로 들어가 대기를 한 다음에 다시 차례가 오길 기다림.
  6. 만약 모든 프로세스들이 종료가 되면 대기 큐가 비워지고 다음 프로세스들이 생긴다면 새로운 큐를 만들어서 작업을 반복함.
  • 타임슬라이스는 시스템 성능과 운영체제 종류마다 다르며 너무 짧면 오버헤드가 발생하고 길면 cpu가 불필요하게 오래 점유될수 있음..

스케줄링 Scheduling

운영 체제의 중요한 기능중 하나로 프로세스에게 CPU 시간을 어떻게 분배할지 결정하는 방식이다
프로세스들을 꺼내 CPU에 넣는 순서를 정하는 방식을 스케쥴링 알고리즘이라고 하는데 여러 종류가 있음
우선순위 기반 스케줄링(우선순위를 정하고 순위대로 시작)등이 존재

프로세스의 상태

프로세스가 작업을 실행하기 위해서 준비하는 과정과 상태 변화

  • Running 실행 중: 현재 CPU를 사용 중인 상태
  • Ready 대기: CPU를 기다리리며 대기 큐에 있는 것
  • Blocked 블록 : 입출력(I/O) 작업 등을 기다리느라 실행되지 못하는 상태
  • Terminated 종료: 작업이 완료된 상태

멀티프로그래밍과의 차이

멀티프로그램과 타임쉐어링 둘다 작업을 빠르게 바꾸어서 동시에 프로세스가 실행되는것처럼 보이게 한다
중요한 차이점은 시간이다

멀티프로그래밍은 그냥 프로세스 하나가 끝나면 바로 다른 프로세스로 바꿔버려서 cpu가 쉬지 않고 일하게 하는거라면

타임쉐어링은 cpu를 사용할 시간을 모든 프로세스에게 분배한다.
그리고 한프로세스가 분배받은 시간을 초과한다면 작업이 다 끝나지 않았더라도 cpu에서 빠져나가고 다음 프로세스가 들어와서 작업을 하도록 한다.
그렇게 시간내에 다 못끝낸 프로세스는 큐에서 대기하고 있다가 CPU가 다시 여유가 생기면 타임슬라이스를 할당받아 실행되는 것이다


OS의 역할이란 다양해...

0개의 댓글