2025-09-15 12:54
Tags: 소프트웨어 공학
시분할 시스템(Time-Sharing System, TSS)
- 하나의 컴퓨터를 여러 사용자가 동시에 사용하는 것처럼 느끼게 만드는 운영체제 기술
- CPU 사용 시간을 매우 짧은 단위로 쪼개 여러 작업에 번갈아 할당하는 원리로 동작한다.
- 핵심은 ‘CPU 시간을 잘게 나누어 여러 프로세스에 공평하게 분배하는 것’
1. 시간 조각 (Time Slice 또는 Quantum)
- 시간 조각은 각 프로세스가 CPU를 한 번에 사용할 수 있도록 할당된 매우 짧은 시간이다.
- 보통 밀리초(ms, 1/1000초) 단위로 정해진다.
- 이 시간이 다 되면 해당 프로세스는 강제로 CPU 점유를 포기하고 다음 프로세스에게 순서를 넘겨야 한다.
- 시간 조각 크기가 작으면 반응성 빨라지지만 오버헤드 커져 작업 처리 효율 떨어지고 반대로 커지면 효율 높아지지만 반응성 느려지는 트레이드 오프 존재
2. 문맥 교환 (Context Switching)
- A 프로세스에서 B 프로세스로 CPU 제어권이 넘어갈 때, 운영체제는 그냥 전환하는 것이 아니다.
- A 프로세스가 어디까지 실행했는지 모든 상태(프로그램 카운터, 레지스터 값, 사용하던 메모리 주소 등)를 프로세스 제어 블록(PCB, Process Control Block) 이라는 곳에 저장해야 한다.
- 그리고 B 프로세스를 실행하기 위해 이전에 저장해 두었던 B의 상태를 다시 불러온다.
- 이처럼 한 프로세스의 상태를 저장하고 다른 프로세스의 상태를 적재하는 과정을 문맥 교환이라 한다.
- 이는 시분할의 필수적인 과정이지만, 아무런 실질적인 작업을 하지 않는 순수한 오버헤드]이기도 하다.
3. 스케줄링과 디스패치 (Scheduling and Dispatch)
- CPU 스케줄러:
- 디스패처 (Dispatcher):
- 스케줄러가 프로세스를 결정하면, 실제로 문맥 교환을 수행하고 선택된 프로세스에 CPU 제어권을 넘겨주는 모듈이다.
4. 타이머 인터럽트 (Timer Interrupt)
- 만약 한 프로세스가 할당된 시간 조각을 다 썼는데도 CPU를 놓아주지 않는다면 어떻게 될까?
- 시스템 전체가 멈출 것이다. 이를 방지하기 위해 하드웨어적으로 타이머가 존재한다.
- 운영체제는 프로세스에 CPU를 넘겨주기 전에 타이머에 시간 조각만큼의 시간을 설정한다.
- 시간이 만료되면 타이머는 CPU에 인터럽트(Interrupt) 신호를 보낸다.
- 이 신호를 받은 CPU는 하던 일을 강제로 멈추고 운영체제에게 제어권을 넘겨, 다음 프로세스로 전환할 수 있게 한다.
- 이것은 독점적인 프로세스로부터 시스템을 보호하는 매우 중요한 안전장치다.
5. 메모리 관리 (Memory Management)
- 여러 사용자 프로세스를 동시에 처리하려면 이들을 모두 주기억장치(RAM)에 올려두어야 한다.
- 하지만 초창기 컴퓨터의 메모리는 매우 작고 비쌌다.
- 시분할 시스템은 이 문제를 해결하기 위해 스와핑] 이나 가상 메모리(Virtual Memory) 같은 기법을 도입했다.
- 스와핑:
- 당장 실행되지 않는 프로세스를 보조기억장치(하드 디스크 등)로 잠시 내려보내고(swap-out), 실행할 프로세스를 메모리로 가져오는(swap-in) 기법.
- 가상 메모리:
- 프로세스 전체가 아닌, 당장 필요한 부분만 메모리에 올려 실행하는 기법. 이는 후에 모든 현대 운영체제의 표준적인 메모리 관리 기법이 된다.
- 스와핑: