컴퓨터 구조

1. 디스크에서 프로그램의 일부를 메모리에 올림(프로세스).

2. 프로세스는 명령어의 집합이고 명령어의 일부를 cache에 적재.

3. CPU는 cahce에서 처리해야 할 명령어를 가져온 후 ALU에서 하나씩 연산.

 

 

기본적으로 CPU는 한 번에 하나의 연산만 할 수 있다.

그렇다면 동시에 여러 프로그램을 어떻게 실행시킬까?

 

 

시분할

방법은 시분할이다.

약간의 눈속임인데, CPU의 시간을 분할하여 처리해야 하는 프로세스들에게 나눠주는 거다.

즉 여러 프로세스를 번걸아가면서 조금씩 처리하는 거라고 보면 된다.

 

 

운영체제 책을 보면 이런 식의 그림을 볼 수 있을텐데,

프로세스 A, B, C, D가 있다고 하자.

각각의 프로세스가 모두 처리되려면 각각 3/4초, 1/4초, 1초, 1/2초가 필요하다.

 

 

A → B → C → D 순으로 순차적으로 처리하면 A가 다 처리될 때까지 나머지 프로세스들은 CPU를 할당받지 못 할 거다.

위 예시는 3/4초가 지나면 다음 프로세스가 서비스 받을 수 있지만, 만약 A가 처리되는데 매우 오랜 시간이 걸린다면?

그렇다면 A를 제외한 나머지는 오랫동안 서비스 받지 못하고 한참을 대기해야할 거다.

 

사용자 입장에서 예를 들면 인터넷 브라우저 창 4개를 열었을 때 하나만 정상적으로 보이고 나머지는 모두 흰 화면인 상황일 것이다.

 


만약 A가 다 처리될 때까지 기다리지 않고 조금씩 나눠서 처리하면 어떨까?

즉 A를 1/4초 동안 처리한 후 CPU를 B에게 넘기는 거다.

B 또한 1/4초 동안 처리한 후 CPU의 소유가 C에게 넘어가는 거다.

 

이렇게 된다면 B, C, D는 A가 모두 처리될 때까지 기다릴 필요 없이 공평하게 조금씩 CPU를 점유할 수 있게 된다.

사용자 입장에서도 인터넷 브라우저 창 4개가 모두 비슷한 시간에 로딩이 완료된 화면을 볼 수 있을 것이다.

 

 

이처럼 CPU의 시간을 조금씩 분할하여 각 프로세스들에게 할당하는 방식을 시분할이라고 한다.

복사했습니다!