본문 바로가기
프로그래밍/운영체제 (완)

시분할에서 개인용 컴퓨터까지 - 운영체제의 다변화 (4)

by 서가_ 2025. 5. 4.
반응형

시분할에서 개인용 컴퓨터까지 - 운영체제의 다변화

"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

마무리

시분할 시스템은 컴퓨터를 '공유 자원'에서 '개인 도구'로 변화시키는 첫걸음이었습니다. 이후 마이크로프로세서의 등장으로 진정한 개인용 컴퓨터 시대가 열렸고, 운영체제는 다양한 용도와 환경에 맞춰 진화했습니다. 오늘날 우리가 사용하는 모든 디지털 기기에는 각자의 목적에 최적화된 운영체제가 탑재되어 있죠.

반응형