





제 1 부 개요
1. 서론 - 운영체제의 정의와 목적 ← 운영체제 기법의 발전 단계
‘중개자(intermediary)’
▶ 운영체제: 컴퓨터 사용자 ↔ 컴퓨터 하드웨어
(편리성) (효율성)
1.1 운영체제란 무엇인가
▶ 컴퓨터 시스템: 4부분 - [그림1.1] 컴퓨터 시스템의 구성 요소에 대한 개략적인 구성도
① 하드웨어(hardware): CPU, 기억 장치, 입출력 장치
→ 기본적인 계산용 자원의 준비
② 응용 프로그램(application program): 컴파일러, 데이터베이스 시스템, 게임, 사무용 프로그램
→ 사용자의 문제 풀이를 위한 자원의 이용 방법 규정
③ 사용자(user): 사람, 기계, 다른 컴퓨터
→ 문제 풀이
④ 운영체제(operating system)
→ 여러 응용 프로그램간의 하드웨어 사용을 위한 제어 및 조정
▶ 운영체제의 정의
1) 환경 제공자(environment provider):
컴퓨터 시스템의 기본 요소인 하드웨어, 소프트웨어, 자료(data)를 다른 프로그램이 유용한 작업을 할 수 있도록 환경을 제공
2) 자원 할당자(resource allocator):
사용자의 작업을 위한 프로그램이 필요로 하는 컴퓨터 시스템의 자원(H/W, S/W)을 할당하되, 충돌 시 공정하고 효율적으로 할당
3) 제어 프로그램(control program):
컴퓨터의 오류와 부적절한 사용의 방지를 위해, 다양한 입출력 장치와 사용자 프로그램을 제어
▶ 운영체제의 목적
- 주목적: ‘편의성(convenience)’ - 컴퓨터 사용의 편의 제공 → (예) 개인용 컴퓨터(PC)
- 부목적: ‘효율성(efficiency)’ - 컴퓨터 시스템의 효율적인 운영 → (예) 대형 컴퓨터
→ 편의성과 효율성은 상반될 수 있음
▶ 1950년대 컴퓨터 등장 이후의 운영체제의 발전 단계 조사: 운영체제 정의와 목적의 이해를 위함
1.2 단순 일괄처리 시스템(Simple Batch Systems)
▶ 초기 컴퓨터: 콘솔(consol)에 의해 구동되는 상당히 큰 기계
- 입력 장치: 카드 판독기, 테이프 구동기
- 출력 장치: 라인 프린터, 테이프 구동기, 카드 펀치
→ 사용자는 통상 펀치 카드 형태로 된 작업(프로그램, 데이터, 작업의 특성에 관한 제어 정보(제어 카드))를 준비하여 컴퓨터 조작자에게 제출한 후, 출력으로 프로그램 결과를 받거나, 에러 시에는 메모리나 레지스터의 덤프를 받음
▶ 초기 컴퓨터의 운영체제: [그림 1.2] 간단한 일괄 시스템을 위한 기억장치 구성도
- 주요 업무는 제어를 한 작업에서 다음 작업으로 전달하는 것이고, 메모리에 상주함
- 이때, 처리 속도를 향상시키기 위해 컴퓨터 조작자는 프로그램들을 유사한 요구를 가지는 일괄 작업(batch)들로 정렬시켜 처리함
→ CPU의 유휴는 여전히 발생: 기계적인 입출력 장치가 전자적인 CPU 보다 느리기 때문
▶ 스풀링(SPOOLing: Simultaneous Peripheral Operation On-Line) ← ‘디스크’ 도입으로 가능
[그림 1.3] 스풀링
① 작업을 시작하기 전에, 카드 판독기에 의해 카드를 읽어 디스크에 저장하고 각 카드 내용의 위치를 운영체제의 테이블에 유지한다.
② 작업이 수행되면, 카드 판독기에 의한 입력 요청 시 디스크로부터 읽어들이고, 유사하게 프린터에 의한 라인 출력 요청 시 그 라인을 시스템 버퍼에 복사한 후 디스크에 기록한다.
③ 작업이 완료된 후, 출력이 실제로 프린트된다.
- 스풀링은 입력 장치로부터 가능한 한 미리 읽거나 출력 파일을 출력 장치가 수용할 수 있을 때까지 저장하기 위한 방대한 버퍼로 디스크를 활용함
- 또한, 스풀링은 원거리에 위치하는 데이터의 처리를 위해 사용될 수 있음: 즉, CPU는 통신 경로를 통해 데이터를 원거리의 프린터에 전송하거나 입력 작업을 원거리의 카드 판독기로부터 수신할 수 있는데, 이때 CPU의 개입(intervention)이 필요없으며, 단지 처리가 완료되었다는 통지만 받으면 됨
→ 스풀링은 한 작업의 입출력과 또 다른 작업의 연산을 중첩시킬 수 있음: 따라서, 스풀링은 CPU와 입출력 장치를 고효율로 작동하게 할 수 있음
1.3 다중 프로그램의 일괄처리 시스템(Multiprogrammed Batched Systems)
▶ 다중 프로그래밍(Multiprogramming): 기억장치에 여러 작업을 적재하고 이중 하나를 선택하여 실행하다가 입출력을 하게 되면 중앙처리장치가 유휴하지 않고 다른 작업을 수행할 수 있도록 제어를 전환하게 하는 기법
→ 중앙처리장치의 이용률 증진
↔ 비다중 프로그래밍(nonmultiprogramming, uniprogramming)
[그림 1.4] 다중 프로그래밍 시스템을 위한 기억장치 구성도
사용자 작업1
사용자 작업2
사용자 작업N
CPU
1, N+1
2
N
execute
wait(입출력)
.
.
.
1.4 시분할 시스템(Time Sharing System)
▶ 다중 프로그래밍 형태의 일괄처리 시스템의 단점
작업 제출 → 작업 실행 → 작업 완료
↓
‘긴 반환 시간(turnaround time)’
→ 사용자와 작업간의 대화 단절
1) 발생할 수 있는 모든 경우를 완벽히 고려하여 작업을 제출해야 함 - 매우 어려움
2) 프로그램의 오류 수정은 ‘snapshot dump’에 의해 정적으로만 가능
▶ 대화식/수조작 컴퓨터 시스템(interactive/hands-on computer system): 사용자와 시스템간에 온라인 통신을 마련하여 사용자가 운영체제나 프로그램에 직접 명령을 주고 즉시 응답을 받을 수 있는 시스템
→ 한 명령씩 수행, 수초 이내의 짧은 반응 시간이 목적
- 입력: 키보드, 출력: 프린터 또는 모니터(CRT; Cathode-Ray Tube)
- 대화식 문안 편집기(text editor), 대화식 오류 수정기(debugger) 등
→ 사용자의 동작을 기다리는 CPU 유휴 시간이 매우 큼
▶ 시분할 시스템(time sharing system)/멀티태스킹(multitasking): 다중 프로그래밍의 논리적 확장
각 사용자 작업에게 CPU를 시간적으로 분할하여 할당하는 시스템
사용자 작업1
사용자 작업2
사용자 작업N
CPU
1, N+1
2
N
짧은 시간 수행
.
.
.
→ 많은 사용자가 컴퓨터를 공유: 각 사용자가 자신의 컴퓨터가 있는 것으로 착각하게 함
▶ 일괄 처리 + 시분할 시스템의 시도
ex) IBM OS/360의 시분할 옵션 (TSO; Time-Sharing Option):
초기 일괄 처리 시스템에 시분할 부속 시스템(time-sharing subsystem)을 부착
→ 최근의 운영체제: 둘 다 제공
▶ 다중프로그래밍 및 시분할 시스템에 관련된 사항
- 중앙처리장치 스케줄링(5장): 프로세스에 CPU를 할당하는 기법
- 작업 스케줄링(5장): 디스크의 작업 저장소(job pool)에서 일부를 기억장치에 위치시키는 기법
- 기억장치 관리(8장): 여러 작업을 기억장치에 보관하는 기법
- 가상기억장치(9장): 작업의 일부만이 기억장치에 존재하게 할 수 있고, 적절한 응답시간을 유지하기 위해 작업을 주기억장치와 디스크간에 스웹인(swap-in), 스웹아웃(swap-out)시키는 기법
- 온라인 파일 시스템(10-11장) 및 디스크 관리 기법(13장),
- 동기화 및 통신(6장): 작업을 순서대로 처리하기 위한 기법
- 교착상태처리(7장): 작업이 교착 상태에 빠지지 않게 하기 위한 기법
→ 다중 프로그래밍과 시분할 시스템은 최신 운영체제의 중심 주제
1.5 개인용 컴퓨터 시스템(Personal-Computer Systems)
▶ 작고 값이 싼 초소형 컴퓨터: 1970년대 출현
→ 중앙처리장치와 주변장치 이용률의 극대화보다는 편이성과 응답성에 주력
- 마이크로소프트(Microsoft)사의 윈도우즈
- IBM사의 OS/2
- 애플(Apple)사의 매킨토시 운영체제 등
▶ 대형 컴퓨터에서 개발된 기술을 ‘소형화’, ‘저렴화’로 개발된 소형 컴퓨터 그리고 초소형 컴퓨터에서 사용함
[그림 1.5] 운영체제의 개념과 특징의 변천
- 대형 컴퓨터(mainframes): 1950년대 중반 출현 ex) Multics - MIT의 GE645
↓
- 소형 컴퓨터(minicomputer): 1960년대 중반 출현 ex) Unix - Bell lab.의 PDP-11
↓
- 초소형 컴퓨터(microcomputer): 1970년대 출현 ex) Unix
1.6 병렬 시스템(Parallel Systems)
▶ 다중 처리기 시스템(multiprocessor system): 여러 개의 처리기들이 컴퓨터 버스, 클록, 기억장치, 주변 장치를 공유하는 강결합 시스템(tightly coupled system)
↔ 단일 처리기 시스템(uniprocessor system)
- 처리율 증가: 다수 처리기에 의한 오버헤드로 인해 처리기의 수에 비례하여 증가하는 것은 아님
- 비용 절약: 주변장치, 케이스, 전원 공급 등의 공유
- 신뢰성 증가: 고장난 처리기를 대신하여 나머지 처리기들이 다소 느려지지만 분산 처리함
→ 단계적 성능 저하(graceful degradation), 고장 소프트(fail-soft)
① 대칭적 다중처리(symmetric multiprocessing): 각 처리기가 운영체제의 동일한 복사본을 수행
→ 여러 처리기가 방대한 자료를 동시에 처리
② 비대칭적 다중처리(asymmetric multiprocessing): 주종 관계의 처리기들에 특정 태스크가 할당
- 주 처리기: 시스템 제어
- 종 처리기: 주 처리기의 지시 또는 정해진 업무 수행
1.7 분산 시스템(Distributed Systems)
▶ 분산 시스템: 여러 처리기들이 클록을 공유하지 않고 개별적인 지역 기억장치를 가지면서 버스나 전화선 등의 다양한 통신선을 사용해 상호 통신하는 약결합(loosely coupled) 시스템
→ 처리기:
- 마이크로프로세서, 워크스테이션, 소형 컴퓨터, 대형 범용 컴퓨터 시스템 등 다양
- 사이트(site), 노드(node), 컴퓨터(computer) 등으로 불림
▶ 분산 시스템의 목적
1) 자원 공유: 한 사이트의 사용자는 여러 사이트의 자원을 공유할 수 있음
2) 연산 속도 증가:
- 병행 수행될 수 있는 서브 연산(subcomputation)의 분산
- 특정 사이트에 걸린 심한 부하를 부하가 적은 다른 사이트로 이동시키는 부하 공유(load sharing)
3) 신뢰성: 시스템이 중복되어 있는 경우 일부 사이트의 고장을 극복할 수 있음
4) 통신:
- 서로 다른 사이트에 있는 프로세스간의 정보 교환
- 사용자간의 전자우편(electronic mail)
1.8 실시간 시스템(Real-Time Systems)
▶ 실시간 시스템: 처리기의 작동이나 자료의 흐름에 있어 엄격한 시간 제약이 있는 시스템
- 종종 특수한 응용 프로그램을 제어하는 제어 장치로 사용
ex) 과학 실험 제어 시스템, 의학 영상 시스템, 산업 제어 시스템, 디스플레이 시스템 등
센서
조절 장치
컴퓨터
① 입력
② 분석
③ 제어
→ ①+②: 시간 제약
1) 하드 실시간 시스템: 중요한 태스크를 정해진 시간에 반드시 완료할 수 있도록 한 시스템
→ 범용 운영체제가 존재하지 않음
2) 소프트 실시간 시스템: 중요한 실시간 태스크가 다른 태스크보다 높은 우선 순위를 얻고 완료될 때까지 그 우선 순위를 유지하게 하는 시스템
→ 최근 대부분의 범용 운영체제에서 채택