시분할에서 개인용 컴퓨터까지 - 운영체제의 다변화
"1960년대, 프로그래머가 버그를 찾기 위해 하루를 기다려야 했던 시절. MIT의 젊은 교수가 외쳤습니다. '왜 컴퓨터가 우리를 기다리게 하는가?'"
들어가며
다중프로그래밍이 CPU 활용률을 높였지만, 여전히 사용자들은 불만이었습니다. 프로그램을 제출하고 결과를 받기까지 하루 이상 걸리는 일이 다반사였죠. 이 문제를 해결하기 위해 탄생한 것이 바로 시분할 시스템입니다.
시분할 시스템의 탄생 배경
배치 처리의 근본적 한계
배치 처리와 다중프로그래밍의 문제점:
- ⏰ 긴 응답 시간 (Turn-around time)
- 🚫 비대화식 처리 (Non-interactive)
- 🐛 디버깅의 어려움
- 📝 프로그램 수정 후 재실행까지 긴 대기
전형적인 개발 사이클:
1. 오전 9시: 프로그램 제출
2. 오후 6시: 결과 수령 "에러 발생"
3. 다음날 오전: 수정 후 재제출
4. 또 하루 대기...
John McCarthy의 혁신적 제안 (1959년)
MIT의 John McCarthy 교수가 제시한 아이디어:
"컴퓨터가 마치 여러 사용자를 동시에 상대하는 것처럼 보이게 하자!"
시분할 시스템의 원리
기본 개념
시분할(Time Sharing)은 CPU 시간을 작은 단위로 나누어 여러 사용자에게 순환적으로 할당하는 방식입니다.
시간 분할 방식:
시간 슬롯 (0.1초)
┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
│ A │ B │ C │ A │ B │ C │ A │ B │ C │ A │ ...
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
사용자 A, B, C가 번갈아가며 CPU 사용
사용자 관점
- 각 사용자는 0.1초마다 CPU 시간을 받음
- 3명의 사용자가 있다면 0.3초마다 자신의 차례
- 인간의 반응 속도(0.1초)보다 빠름
- 결과: 마치 컴퓨터를 독점하는 것처럼 느낌
CTSS - 최초의 시분할 시스템
Compatible Time Sharing System (1962)
MIT에서 개발한 CTSS는 시분할 개념을 최초로 구현한 시스템입니다.
주요 특징:
- 최대 30명 동시 사용
- 각 사용자에게 0.2초씩 할당
- 대화식 명령어 인터페이스
- 원격 터미널 지원
터미널 시스템의 구조
터미널 구성:
┌─────────────┐
│ 키보드 │
├─────────────┤ 전화선 ┌──────────────┐
│ 모니터 │◄──────────►│ 메인프레임 │
├─────────────┤ │ (시분할 OS) │
│ 모뎀 │ └──────────────┘
└─────────────┘
시분할 시스템의 기술적 도전
1. 빠른 컨텍스트 스위칭
요구사항:
- 0.1초마다 프로세스 전환
- 최소한의 오버헤드
- 정확한 상태 보존/복원
해결책:
- 하드웨어 지원 (특수 레지스터)
- 효율적인 메모리 구조
- 최적화된 스케줄러
2. 메모리 관리의 혁신
여러 사용자의 프로그램을 동시에 메모리에 유지:
기술 설명 장점
스와핑 | 프로세스를 디스크로 임시 이동 | 더 많은 사용자 수용 |
---|---|---|
가상 메모리 | 메모리 추상화 | 큰 프로그램 실행 가능 |
페이징 | 메모리를 고정 크기 블록으로 관리 | 외부 단편화 해결 |
3. 공정한 CPU 할당
시분할 스케줄링 알고리즘:
1. 라운드 로빈 (Round Robin)
- 각 프로세스에 동일한 시간 할당
- 순환 큐 사용
2. 다단계 큐 (Multilevel Queue)
- 우선순위별 큐 분리
- 대화식 작업 우선 처리
3. 다단계 피드백 큐
- 동적 우선순위 조정
- CPU 집중 작업 페널티
시분할의 영향: 대화식 컴퓨팅의 시작
프로그래밍 방식의 변화
배치 처리 시대:
SUBMIT JOB → WAIT → GET RESULTS
시분할 시대:
> edit program.c
> compile program.c
Error on line 42
> edit program.c
> compile program.c
Success!
> run program
새로운 응용 프로그램의 등장
- 텍스트 에디터 (ed, vi)
- 대화식 디버거
- 명령어 쉘 (Shell)
- 이메일 시스템
- 온라인 게임 (최초의 MUD)
개인용 컴퓨터의 등장
시분할 시스템의 한계
1960년대 말, 시분할 시스템도 한계를 보이기 시작했습니다:
- 사용자 증가로 인한 응답 속도 저하
- 메인프레임의 높은 비용
- 전산실에서만 사용 가능한 공간 제약
마이크로프로세서 혁명
1971년, Intel 4004의 등장으로 새로운 시대가 열립니다:
컴퓨터 진화:
메인프레임 (방 크기) → 미니컴퓨터 (냉장고) → 개인용 컴퓨터 (책상 위)
가격 변화:
$1,000,000 → $100,000 → $1,000
개인용 운영체제의 특징
특성 메인프레임 OS 개인용 OS
사용자 수 | 수십~수백 명 | 1명 |
---|---|---|
복잡도 | 매우 높음 | 상대적으로 단순 |
보안 | 핵심 요소 | 덜 중요 |
사용자 인터페이스 | 명령어 중심 | GUI 지향 |
MS-DOS: 개인용 컴퓨터 시대의 개막
MS-DOS의 탄생 (1981)
IBM PC를 위해 Microsoft가 개발한 MS-DOS는:
- 단일 사용자, 단일 태스킹
- 640KB 메모리 제한
- 간단한 명령어 인터페이스
- 파일 시스템 관리
전형적인 MS-DOS 세션:
C:\> dir
C:\> cd documents
C:\DOCUMENTS> edit letter.txt
C:\DOCUMENTS> print letter.txt
개인용 컴퓨터의 폭발적 성장
- 1977: Apple II
- 1981: IBM PC
- 1984: Apple Macintosh (GUI 도입)
- 1985: Windows 1.0
운영체제의 다변화
다양한 용도의 운영체제 등장
1980년대 이후, 컴퓨터의 용도가 다양해지면서 특화된 운영체제들이 등장합니다:
운영체제 계보:
범용 OS
│
┌──────────────┼──────────────┐
서버 OS 데스크톱 OS 임베디드 OS
│ │ │
┌───┴───┐ ┌─────┴─────┐ ┌───┴───┐
UNIX Windows Windows macOS VxWorks RTOS Server Linux WinCE
현대 운영체제의 다양성
유형 특징 예시
서버 OS | 안정성, 보안, 24/7 운영 | Linux, FreeBSD |
---|---|---|
데스크톱 OS | 사용자 친화성, GUI | Windows, macOS |
모바일 OS | 절전, 터치 인터페이스 | Android, iOS |
임베디드 OS | 특정 하드웨어 최적화 | FreeRTOS, QNX |
실시간 OS | 데드라인 보장 | VxWorks, RT-Linux |
마무리
시분할 시스템은 컴퓨터를 '공유 자원'에서 '개인 도구'로 변화시키는 첫걸음이었습니다. 이후 마이크로프로세서의 등장으로 진정한 개인용 컴퓨터 시대가 열렸고, 운영체제는 다양한 용도와 환경에 맞춰 진화했습니다. 오늘날 우리가 사용하는 모든 디지털 기기에는 각자의 목적에 최적화된 운영체제가 탑재되어 있죠.
'프로그래밍 > 운영체제 (완)' 카테고리의 다른 글
현대 운영체제의 종류와 특징 (6) (2) | 2025.05.05 |
---|---|
운영체제의 진화 - 배치에서 다중프로그래밍까지 (5) (0) | 2025.05.04 |
최초의 운영체제 탄생기 - GM OS에서 GM-NAA I/O까지 (3) (0) | 2025.05.04 |
운영체제의 탄생 - 고정 프로그래밍에서 내장 프로그래밍까지 (2) (1) | 2025.05.04 |
운영체제란 무엇인가? (1) (0) | 2025.05.04 |