2)운영체제 소개

Download Report

Transcript 2)운영체제 소개

운영체제 소개
IT CookBook, 운영체제: 그림으로 배우는 원리와 구조
Contents
 학습목표
 운영체제의 역할을 통해 운영체제를 개발한 목적을 이해하고, 운영체제의 발
전 과정 및 그에 따른 다양한 운영체제 유형의 특징을 살펴본다.
 운영체제의 기본 구성과 운영체제가 제공하는 서비스를 이해한다.
 운영체제 설계를 위한 모듈과 계층 구조를 이해한다.
 내용
 운영체제의 역할과 목적
 운영체제의 유형별 특징
 운영체제의 발전 과정
 운영체제 기능
 운영체제 서비스
 운영체제 구조
2/41
1. 운영체제의 역할과 목적
 운영체제 역할
 운영체제는 컴퓨터 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하며 CPU,
메모리와 같은 컴퓨터 자원을 관리하고 사용자에게 편의를 제공한다.
 컴퓨터 시스템은 일반적으로 사용자, 소프트웨어, 하드웨어 세 가지 요소로 구성된다.
• 컴퓨터 사용자
: 어떤 일을 수행하기 위해 컴퓨터를 사용하는 사람, 장치,
다른 컴퓨터를 의미한다.
• 하드웨어
: 연산을 위한 기본 자원을 제공하는 프로세서(중앙처리장치,
CPU), 메모리(기억장치), 다양한 장치(입출력장치 등)로 구성.
• 소프트웨어
: 컴퓨터가 기능을 수행하는데 필요한 프로그램을 총칭.
(ex: 운영체제, 각종 응용 프로그램 유틸리티 등)
• 응용 프로그램
[그림2-1] 컴퓨터 시스템 구성요소와 운영체제
: 어떤 문제를 해결하기 위해 사용자나 전문가에 의해
만들어진 프로그램.
(ex: 웹 브라우저, 한글 등의 워드 프로세서, 데이터베이스 관
리 프로그램, 비디오 게임 등)
3/41
1. 운영체제의 역할과 목적
 운영체제는 컴퓨터 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하며 CPU,
메모리와 같은 컴퓨터 자원을 관리하고 사용자에게 편의를 제공한다.
 컴퓨터 자원을 관리한다는 측면에서 아래와 같이 운영체제의 역할을 정리할 수 있다.
• 조정자
- 운영체제는 시스템을 운영하여 여러 운영 요소(하드웨어, 소프트웨어(프로그램), 데이터)를 적절하게 사용할
수 있도록 제어한다.
- 다른 프로그램이 작업할 수 있는 환경만 제공할 뿐 직접 일을 못하는 조정자 역할만 한다.
• 자원 할당자 또는 관리자
- 컴퓨터 시스템이 문제를 해결하는 데 필요한 자원(프로세서 시간, 메모리 공간, 파일 저장 공간, 입출력장치
등)을 할당하는 업무를 한다.
- 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 자원을 어떻게 할당할 지를 결정하는 관리자 역할도
수행한다.
• 입출력장치와 사용자 프로그램 제어
- 컴퓨터 시스템의 부적절한 사용이나 오류를 방지하기 위해 사용자 프로그램의 실행을 제어한다.
- 입출력장치를 동작시키고 통제하는 역할을 한다.
4/41
1. 운영체제의 역할과 목적
 운영체제는 다음과 같은 기능을 제공한다.
• 하드웨어와 사용자 간의 인터페이스를 정의한다.
• 사용자들이 하드웨어를 공동으로 사용할 수 있도록
해준다.
• 사용자 간의 자원 스케줄링, 즉 자원 할당자
역할을 수행한다.
• 입출력 보조 역할을 한다.
• 오류를 처리한다.
[그림2-2] 운영체제 역할
 운영체제의 역할과 기능이 매우 다양하여 완벽히 정의하기 힘드나, 일반적으로
“컴퓨터 자원을 통제하고 할당하는 공통 기능을 컴퓨터 소프트웨어 하나로 통합한 것”
으로 정의한다.
 구체적으로 표현하면,
“컴퓨터 시스템에서 항상 실행되는, 응용 프로그램을 제외한 모든 프로그램 또는 커널
(Kernel)”이라 한다.
※ 커널(Kernel)
- 운영체제의 핵심으로 메모리에 상주하며 운영체제의 다른 부분 또는 응용 프로그램 수행에 필요한 환경을 설정하는
소프트웨어.
- 응용 프로그램 실행에 필요한 다양한 서비스를 제공하고 실행되는 프로세스를 스케줄링하는 역할.
5/41
1. 운영체제의 역할과 목적
 운영체제의 목적
 운영체제는 두 가지 주요 목적을 달성하기 위해 발전해왔다.
• 편리성 : 사용자가 프로그램을 개발하고 사용하는 데 좀 더 편리한 환경 제공.
ex: 개인용 컴퓨터(PC, Personal Computer)의 GUI 환경
• 효율성 : 자원을 효과적으로 사용하기 위해 각 프로그램을 유기적으로 결합하여 시스템 전체
성능을 향상시키는 방향으로 설계된다.
- 처리 능력 : 시스템의 생산성을 나타내는 대표 지표로 단위 시간당 처리하는 작업량.
- 신뢰도 : 하드웨어(펌웨어), 소프트웨어가 실패 없이 주어진 기능을 수행할 수 있는 능력.
- 응답 시간 : 사용자가 시스템에 작업을 의뢰한 후 반응을 얻을 때까지의 시간.
(시분할 방식 시스템과 온라인 시스템에서 사용하는 용어, 일괄 처리 시스템에서는 Turn Around Time)
- 사용가능도(가동률) : 사용자가 일정 기간 동안 컴퓨터를 실제로 사용한 시간(비율).
[그림2-3] 운영체제 목적
6/41
1. 운영체제의 역할과 목적
 운영체제 기능의 발전
 초기의 컴퓨터 시스템
• 작업별 처리 시스템
- 속도가 느리고 온라인 판독기와 프린터에만 의존하여 작업을 수행, 많은 시간이 소요되었다.
- 컴퓨터에는 하드웨어만 있어 프로그래머가 콘솔(Console)용으로 작성한 프로그램을 종이 테이프나
펀치 카드에서 메모리로 적재한 후, 시작 주소를 설정하고 실행, 실행 과정은 콘솔을 통해 살펴보았다.
- 대부분 2진수나 8진수 기계어로 작성, 절대 주소를 사용하였고 라이브러리 루틴이 없었다.
- 로더는 용량이 작고, 메모리 내용은 대부분 사용자 자신이 작성한 프로그램이며, 수동 대화 방식으로 진행하여
프로그래머가 시스템 오퍼레이터(System Operator)가 되고 시스템 사용을 위해 신청을 예약하는 예약제도로
운영됐다.
- 예약 시간 안에 작업을 끝마치지 못하면 다른 사용자에게 사용권을 넘겨주고 대기, 작업을 빠르게 끝마쳐도
남은 시간은 유휴시간이 된다.
• 카드 판독기, 라인 프린터, 자기 테이프의 보편화
• 어셈블러(Assembler), 로더(Loader), 링커(Linker) 등이 개발
• 라이브러리 생성
- 공통 기능을 새로 작성할 필요 없이 작성할 프로그램에 삽입 가능하게 되었다.
• 컴파일러 개발
- 포트란(Fortran), 코볼(COBOL, Common Business Oriented Language) 등
- 프로그래밍 업무는 쉬워졌으나 컴퓨터 동작은 복잡해졌다.
- 포트란 컴파일러의 경우 8단계의 어셈블리(Assembly) 과정이 필요하며, 이로 인해 준비 시간(Setup Time)
단계가 많아 시간이 낭비되고 한 단계에서 오류 발생 시 처음부터 다시 수행해야 한다.
7/41
1. 운영체제의 역할과 목적
 모니터
• 작업 준비 시간의 문제를 해결하고 컴퓨터 처리율을 높이기 위해 다음 방법을 고려할 수 있다.
1. 컴퓨터 운용을 촉진하기 위해 전문 오퍼레이터를 채용한다.
2. 유사 작업을 묶어 일괄 처리하는 방법을 작업 스케줄링 기법에 도입하여 준비 시간을 줄인다.
• 초기의 일괄 처리 시스템 (그림 2-4)
- 진행 과정
1. 컴퓨터로 카드 판독기와 테이프 드라이브를 작동, 데이터를 테이프에 저장.
2. 생성한 데이터 테이프의 연산 처리를 위해 컴퓨터의 입력 테이프 드라이브로 사용하여 입력.
3. 연산 처리된 데이터는 출력 테이프 드라이브에 의해 출력 테이프에 저장, 컴퓨터에서 출력을 위해
프린터의 입력 테이프로 사용.
- 작업 중 문제 발생 시 오퍼레이터가 콘솔을 조사, 사태 여부를 파악하고 필요한 조치를 취하기
위해 프로세서의 유휴 시간이 생성되는 문제점이 있다.
[그림2-4] 초기의 일괄 처리 시스템
8/41
1. 운영체제의 역할과 목적
• 초기의 일괄 처리 시스템의 문제점을 해결하기 위해 개발한 자동 작업 순서(Automatic Job
Sequencing)가 초기의 운영체제이다.
• 상주 모니터(Resident Monitor)
- 자동 작업 순서에서 하나의 작업에서 다른 작업으로의 진행을 자동으로 제어하는 프로그램을 말한다.
- 메모리에 상주하며 프로그램 종료 시 상주 모니터로 제어를 복귀시키고 다음 프로그램을 위해 제어를
프로그램에 다시 전달하여 프로그램과 작업이 자동으로 수행되도록 한다.
- 영역을 보호하기 위해 경계 레지스터를 이용하여 구분, 주요 부분은 카드에 있는 명령어를 판독하고 지시를
전달하는 역할을 수행하는 제어카드 해석기이다. (그림 2-6)
• 제어 카드(Control Card)
- 상주 모니터가 어느 프로그램을 실행할 지에 대한 정보를 직접 제공하기 위해 도입되었다.
- 다른 카드와 구별하기 이해 첫 번째 칸에 $ 문자를 삽입하거나 다른 코드(//)를 사용하였다.
[그림2-5] 제어 카드(작업 제어 언어) 사용 예
[그림2-6] 상주 모니터 영역과 메모리 배치도
9/41
1. 운영체제의 역할과 목적
 오프라인 연산(장치 독립성)
• 카드 판독기와 라인 프린터를 자기 테이프 장치로 대체.
- 일괄 처리 시스템을 자동 작업 순서로 전환하며 성능은 향상되었으나, 유휴 시간이 발생하는 문제점을 해결
하기 위해 느린 카드 판독기와 라인 프린터를 대체하였다.
- 프로세서가 카드를 직접 읽지 않고 자기 테이프에 먼저 복사하여 테이프가 충분히 채워지면 이것을 옮겨 입력
카드가 필요할 때 사용한다.
- 카드 판독기와 라인 프린터는 주 컴퓨터가 아닌 오프라인(Off-line)으로 수행된다.
• 오프라인 처리 운영 방식
1. 자기 테이프로부터 직접 입출력 할 수 있는 특수목적 장치(카드 판독기, 라인 프린터) 이용.
2. 전용 소형 컴퓨터(IBM 1401)를 사용, 테이프에 복사하는 작업을 수행.
- 전용 소형 컴퓨터는 주 컴퓨터의 보조 역할을 하는 하나의 프로세서로 보며, 이런 프로세서에 의한 처리는
성능 개선을 위해 함께 동작하는 다중 컴퓨터 시스템의 최초 개념이다.
[그림2-7] 온라인 처리와 입출력장치를 위한 오프라인 처리
10/41
1. 운영체제의 역할과 목적
• 오프라인 연산의 장점
- 컴퓨터가 카드 판독기와 라인 프린터 속도의 영향을 받지 않고 자기 테이프 장치의 속도에만 영향을 받는다.
- 직접 입출력 방식에서 오프라인 방식으로 변경하기 위한 별도의 수정 작업이 필요하지 않는다.
- 프로세서 하나가 여러 개의 카드 판독기에서 테이프 장치로, 또는 테이프 장치에서 프린터 시스템으로 서로
변경하여 사용할 수 있다.
 버퍼링(Buffering)
• 입출력장치의 느린 속도를 보완하여, 유휴 시간이 없도록 프로세서의 연산 과정과 함께 어떤
작업의 입출력을 동시에 수행하는 운영체제의 기능 중 하나이다.
• 컴퓨터 하드웨어의 일부인 버퍼를 사용하며, 한 작업의 입출력과 그 작업의 계산만 함께 할 수 있다.
• 데이터 구성 단위는 레코드로, 버퍼링의 성능은 처리되는 레코드 수에 따라 달라진다.
- 레코드는 응용 프로그램에 의해 정의되는 논리적 레코드와 입출력장치의 특성에 의해 정의되는 물리적
레코드로 나뉜다.
[그림2-8] 버퍼링
11/41
1. 운영체제의 역할과 목적
 스풀링(Spooling)
• 프로세서가 다른 부분을 판독하고 있는 동안 추가로 기록할 수 없는 테이프 시스템의 문제를
해결하기 위해 추가 기록이 가능한 디스크의 특성을 이용하여 개발되었다.
• ‘Simultaneous Peripheral Operation On-Line’라는 의미로 디스크를 매우 큰 버퍼처럼 사용하는, 입
력장치에서 미리 읽어 출력 장치가 받을 수 있을 때 까지 출력 파일을 저장한다.
• 초기에 NASA의 휴스톤 계산 센터(Houston Computation Center)에 부가된 특수 기능으로
HASP(Houston Automatic Spooling Program)으로 알려져 있다.
• 별개의 오프라인 장치를 사용, 한 작업의 입출력을 수행하면서 다른 작업의 계산이 가능하고
많은 작업의 입출력과 계산을 함께 할 수 있다.
• 작업 풀(Job Pool) 데이터 구조를 제공한다.
- 디스크에 읽혀져 실행을 위해 다기하는 여러 작업을 수행할 수 있도록 준비, 디스크에 저장된 작업은 프로세서
이용률 향상을 위해 운영체제가 다음 수행할 작업 선택을 돕는다.
• 테이프 스테이징(Tape Staging)
- 자기 테이프의 전체 내용을 이용하기 전 디스크로 읽어 복사된 디스크에서 빠른 속도로 모든 연산이 수행되고
테이프를 사용하지 않는 방법.
[그림2-9] 스풀링
12/41
2. 운영체제의 유형별 특징
 다중 프로그래밍 시스템
 작업 스케줄링에서 가장 중요한 부분은 다중 프로그래밍(Multi
Programming).
 프로세서가 항상 수행할 작업을 가지도록 하여 프로세서
이용률을 증진시키는 방법이다.
• 운영체제는 메모리에 있는 작업 중 하나를 택하여 실행을 시작한다.
• 작업이 어떤 일을 기다려야 하는 경우, 비다중 프로그래밍 시스템의
프로세서는 유휴 상태가 되지만 다중 프로그래밍 시스템에서는 운영
체제가 간단히 다른 작업으로 전환하여 수행한다.
• 작업을 위해 기다리는 것이 끝나면 프로세서를 다시 차지하며,
수행될 작업이 메모리에 적재되어 있으면 프로세서는 유휴하지 않을
것이다.
[그림2-10] 다중 프로그래밍
시스템을 위한 메모리 구조
 인터럽트를 이용하여 수행하는 프로세서 스케줄링의 다중 프로그래밍은 현대
운영체제의 중심 주제이다.
• 다중 프로그래밍 운영체제는 아주 복잡하며, 여러 작업을 준비 상태로 두려면 이를 메모리에
보관해야 하고 일정 형태의 메모리 관리가 필요하다.
• 또한 여러 개의 작업이 수행할 준비를 갖추고 있으면 이 중 하나를 선택하기 위한 결정 방법이
필요하다.
13/41
2. 운영체제의 유형별 특징
 시분할 시스템 (TSS, Time Sharing System)
 다중 프로그래밍을 논리적으로 확장한 개념으로 프로세서를 통해 다중 작업을 교대로
수행한다.
• 사용자가 프로그램을 실행하고 있을 동안 자신의 프로그램과 접촉하기 위해 교대가 빈번히 일어난다.
 프로세서 스케줄링과 다중 프로그래밍을 사용해 각 사용자에게 컴퓨터를 시간적으로
분할하여 나눠준다.
• 각 사용자는 메모리에 독립된 프로그램을 갖고, 프로그램은 입출력을 수행하는 아주 짧은 시간 동
안만 실행되어 많은 사용자가 컴퓨터를 공유하도록 한다.
• 각 트랜젝션(Transaction)이 짧아 각 사용자는 짧은 시간 동안만 프로세서를 사용한다.
 1960년 이전에 제안되었으며, 초기에 개발된 시스템 중 하나가 MIT에서 개발한
CTSS(Compatible Time Sharing System)다.
• 1961년 IBM-709에 탑재되어 사용됨.
 1970년대 초까지는 일반화되지 못했으나 오늘날의 시스템은 대부분 일괄 처리 방식과
시분할 방식을 모두 제공한다.
• 여러 작업이 메모리에 저장되어 있는 경우 한 작업이 다른 작업의 데이터를 변경하는 등의
작업에 대한 보호가 필요하다.
• 다수의 사용자가 접근하는 파일은 접근 권한을 두어 특정 권한을 가진 사용자만 접근할 수
있도록 파일 시스템을 보호해야 한다.
• 공유 자원의 경우 접근 순서도 조정할 수 있도록 기능을 제공해야 한다.
14/41
2. 운영체제의 유형별 특징
 일괄 처리 시스템과 비교
• 일괄 처리 시스템
- 작업을 미리 정의된 각 제어 카드와 함께 읽어 들이고 작업을 완료하면 출력.
- 처리 과정 중 발생할 수 있는 모든 경우에 대한 제어 카드를 제공해야 하므로 작업 제출과 완료까지의
반환 시간이 길어질 수 있다.
- 오류 수정은 당시의 상태를 그대로 출력해야 가능하며, 오류를 수정한 후 다시 처음부터 수행해야 한다.
• 시분할 시스템
- 사용자와 시스템 간의 온라인 통신을 제공, 사용자가 운영체제나 프로그램에 직접 명령을 주고 즉시 응답을
받을 수 있다.
 대화식 입출력
• 입출력은 대화식으로 가능하며, 출력은 사용자를 위해 화면에 출력되고 입력은 키보드에서 읽어
들이는 대화식이 될 수 있다.
• 보통, 사람의 처리와 속도가 같으므로 종료까지 소요 시간이 길며, 이 경우 운영체제는
프로세서를 다른 사용자의 프로그램으로 전환시킨다.
[그림2-11] 시분할 시스템
15/41
2. 운영체제의 유형별 특징
 분산 처리 시스템 (Distributed Processing System)
 시스템마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요할 때 통신하는
시스템이다.
 최근의 컴퓨터는 자원 공유, 연산 속도 향상, 신뢰성과 통신 등의 문제로 여러 개의
물리적 프로세서에 연산을 분산하는 경향이 있다.
 분산 시스템 구성 방법
• 강결합(단단히 결합된) 시스템
- 프로세서(처리기)가 기억장치와 클록(Clock)을 공유하며, 공유된 기억장치를 통해 통신.
• 약결합(느슨하게 결합된) 시스템
- 둘 이상의 독립된 컴퓨터 시스템을 통신선으로 연결.
[그림2-12] 분산(약결합) 처리 시스템의 구성 예
16/41
2. 운영체제의 유형별 특징
 다중 처리 시스템
 마이크로프로세서 여러 개를 연결해 다중 프로세서를 만든다.
• 시스템은 프로세서(처리기)를 많이 사용해 신뢰성, 가용성, 컴퓨터 능력 등을 증가시킨다.
• 하드웨어 비용이 저렴해짐에 따라 단위 시간당 처리량을 증가시키기 위해 사용한다.
• 고가의 초고속 프로세서를 사용하지 않고도 대형 컴퓨터에 근접하는, 단일 프로세서 컴퓨터
시스템의 계산 능력을 증대시킬 수 있다.
• 다중 처리를 위한 운영체제 구성 방법은 비대칭(주/종)적 구성과 대칭적 구성이 있다.
 주/종 다중 처리 시스템(Master/Slave Multi Process System)
• 비대칭적 구성으로 마스터 프로세서가 주가 되어 부가적인 슬레이브 프로세서를 관리하는
단일 처리 시스템이다.
• 형태가 단순하나 마스터 프로세서에 부하가 많아 신뢰도나 자원 사용에서는 비효율적이다.
• 운영체제의 개입이 요구되는 경우, 마스터 프로세서에 인터럽트를 요청해야 하므로 인터럽트
수가 증가한다.
[그림2-13] 주/종 다중 처리 시스템 구성
17/41
2. 운영체제의 유형별 특징
 대칭적 구성(Symmetric Configuration) 다중 처리 시스템
• 모든 프로세서가 동일한 종류일 때 최적으로 구현되나, 교착 상태 및 기아 상태를 회피하기 위해
동기화해야 하기 때문에 구현이 매우 어렵다.
• 약결합 분산처리 시스템보다 신뢰성이 높고 자원을 효율적으로 사용할 수 있으며 오버헤드를
균형 있게 분산한다.
• 프로세서의 스케줄링은 분산된 형태로 수행되며 메모리에 공유된다.
• 입출력 요청이나 다른 유형의 인터럽트 발생 시 해당 프로세서는 프로세스 목록에서 엔트리를
갱신, 실행시킬 다른 프로세스를 찾는다.
- 프로세서가 바쁜 상태를 계속 유지하며, 때로는 여러 프로세서에 의해 수행됨.
• 충돌을 예방하는 프로세스 동기화가 반드시 필요하다.
- 모든 프로세서가 모든 입출력장치에 접근하여 참조할 수 있으므로 여러 프로세서가 동일 자원에 동시에 접근할
경우 충돌이 발생한다.
[그림2-13] 대칭적 구성 다중 처리 시스템
18/41
2. 운영체제의 유형별 특징
 단일 사용자 시스템
 개인 컴퓨터
• 하드웨어 비용이 저렴해짐에 따라 컴퓨터 시스템 하나를 사용자 한 명이 전용하는 것.
 최근 사용자의 편리함과 빠른 응답을 제공하기 위해 다중 작업(Multi-Tasking),
다중 사용자(Multi-User) 환경으로 변하고 있다.
19/41
3. 운영체제의 발전 과정
 운영체제의 발전 과정
 운영체제와 컴퓨터 구조는 서로 많은 영향을 끼쳤으며, 관찰을 통해 운영체제의 개념을
올바르게 이해할 수 있다.
 하드웨어와 같이 “세대”라고 불리는 발전 단계를 거쳤으며, 그 과정은 아래의 표와 같다.
[표 2-1] 운영체제의 발전 과정
20/41
3. 운영체제의 발전 과정
 제 0세대 (1940년대)
 초기 시스템에는 운영체제가 없었으며, 사용자가 직접 기계어를 사용해 명령문을
작성하였다.
 프로그램을 작성할 때 컴퓨터에 필요한 작업을 모두 포함하고, 모든 명령어를
명시적으로 표현하였다.
 모든 작업은 예약을 통해 진행되고 컴퓨터는 프로그래머가 메인 콘솔에서 수동으로
운영하였다.
 제 1세대 (1950년대) – 버퍼링, 스풀링, 일괄처리 시스템
 1952년 초, 자동차 제조회사 GM의 연구실에서 IBM 701 운영체제 개발, 이것이
운영체제의 효시이다.
 1955년, GM과 북아메리가 항공사가 IBM 704 운영체제를 공동으로 개발.
 IBM 사용자협회 SHARE(Semi-Automatic Business Research Environment)에서
운영체제에 대한 토론회를 육성, 1957년까지 IBM 704를 위한 자체 운영체제를 개발.
 IBM 1400 계열 같은 소형 컴퓨터는 운영체제 없이 작동하며, 입출력 제어 시스템인
IOCS(Input/Output Control System) 패키지를 사용.
21/41
3. 운영체제의 발전 과정
 버퍼링, 스풀링 기법 적용.
• 초기 운영체제는 설치 시간(Setup Time)과 철거 시간(Teardown Time) 낭비를 줄이는데 관심을 가짐.
- 설치 시간 : 작업을 컴퓨터 시스템에 올리는 필요한 시간.
- 철거 시간 : 작업을 컴퓨터 시스템에서 해체하는데 필요한 시간.
 유휴 기간을 줄이기 위해 작업을 일괄 처리하여 성능 향상.
• 운영체제 개발 전의 작업은 카드에서 개별적으로 적재, 실행 중에는 각 작업이 전 시스템을 차지.
• 각 작업은 완료 또는 오류가 발생할 때까지 실행, 작업이 끝나야 오퍼레이터가 기존 프로그램과
카드를 제거하여 다음 작업을 실행 가능.
• 이 과정에서 시스템은 유휴 상태가 되므로, 이를 줄이고 성능을 향상시키기 위해 작업을 소형
보조 컴퓨터의 테이프에 옮긴 다음 나중에 대형 컴퓨터로 처리되는 과정을 채택.
 하드웨어 장치의 독립성을 위해 시스템 파일명 등장.
• 사용자가 하드웨어 장치 번호를 직접 코드화할 필요가 없어졌으며, 카드를 읽는 장치에 대해
표준 시스템 입력 파일, 인쇄 출력 장치에 대해서 표준 시스템 출력 파일을 지정 가능.
• 어셈블러와 컴파일러에서 링커(Linker)와 로더(Loader)로의 변환이 원활해 짐.
22/41
3. 운영체제의 발전 과정
 제 2세대 (1960년대 초기) – 다중 프로그래밍, 다중 처리, 시분할 시스템
 일괄 처리 형태로 처리량을 향상시키며, 장치 독립성이라는 개념으로 하드웨어 관리가
편리해 짐.
• 사용자 프로그램에서 테이프 드라이브를 지정, 운영체제가 현재 사용되고 있지 않는 테이프
드라이브를 찾아 오퍼레이터에게 테이프를 드라이브에 걸어줄 것을 지시함.
 다중 프로그래밍
• 여러 프로그램이 메인 메모리에 공존, 프로세서를 작업 간에 수시로 번갈아 할당.
 다중 처리 시스템
• 시스템의 처리 능력을 증진시키기 위해 한 컴퓨터 시스템에 여러 개의 프로세서 사용.
 시분할 시스템
• 사용자가 터미널을 통해 컴퓨터와 직접 접촉하기 위해 개발.
• 사용자와 대화 방식으로 작동하며, 사용자가 컴퓨터에 요구 사항을 입력하고 컴퓨터가 요구를
처리하여 사용자의 터미널로 응답.
 실시간 시스템
• 즉시 응답한다는 점이 특징으로, 컴퓨터가 가솔린 정제 등의 공정을 제어하는 데 사용되며
발전하기 시작함.
• 군용 실시간 시스템은 적의 공중 공격에 대비해 동시에 수천 지점을 감시하기 위해 개발.
• 필요할 때 즉시 사용할 수 있고 빠른 응답이 중요하므로 활용도가 높지 못하고 비용이 많이 듬.
23/41
3. 운영체제의 발전 과정
 미항공 회사의 SABRE(Semi-Automatic Business Research Environment) 예약 시스템
• 제 2세대의 가장 중요한 개발 중 하나로, 멀리 떨어진 사용자가 단말기를 통해 중앙 컴퓨터
시스템과 통신하는 트랜잭션 처리 시스템의 효시.
• 트랜잭션 처리 시스템 : 사용자와 컴퓨터 시스템이 대화를 하되 사용자가 비교적 간단하게
요구하면 컴퓨터가 빠른 시간 내에 응답.
• 사용자 단말기는 컴퓨터의 온라인이라 불림.
 제 3세대 (1960년 중반 ~ 1970년대 중반) – 범용 시스템, 다중 모드 시스템
 1964년 IBM 시스템/360 계열 컴퓨터로부터 시작.
 범용 시스템으로 설계, 육중하며 모든 사용자에게 모든 기능을 제공할 수 있도록 제작.
• 다량의 컴퓨터가 판매되었으나, 이러한 기능이 필요 없는 사용자에게 실행 시간의 과부하, 시스템
이해를 위한 기간, 오류 발생 시 수정 시간, 시스템 유지 등에 있어 많은 비용 부담의 단점을 가짐.
 다중 모드 시스템
• 일괄 처리, 시분할 처리, 실시간 처리, 다중 처리를 모두 제공.
• 고가이며 계획한 시간과 예산을 초과하여 완성되었으며 사용에도 고도의 훈련이 필요.
• 사용자와 하드웨어 사이에 소프트웨어 계층 도입.
- 하드웨어에 대한 관점 없이 소프트웨어에 의해 형성된 관점을 보게 됨으로 사용이 어려우며, 간단한 작업
수행에도 복잡한 작업 제어 언어(JCL, Job Control Language)의 이해가 필요함.
24/41
3. 운영체제의 발전 과정
 제 4세대 (1970년대 중반 이후)
– 네트워크, 가상 머신, 분산 처리 시스템, 개인 컴퓨터
 통신 발달과 더불어 컴퓨터 네트워크와 온라인 처리가 사용됨.
• 다양한 형태의 단말기를 이용하여 멀리 떨어진 지역의 컴퓨터를 네트워크를 통해 사용 가능.
• 마이크로프로세서의 등장으로 개인용 컴퓨터를 가짐.
 개인용 컴퓨터
• 데이터 통신 인터페이스를 갖추어 터미널로 사용.
• 시분할 모드로 한정된 컴퓨터만 사용해야 하는 제약 없이 지역적으로 멀리 떨어진 여러 시스템과
통신이 가능하다.
• 통신선을 통과하는 정보의 안전한 관리 문제가 대두되며 정보 보호가 중요한 관심사로, 교신
내용 유출 시에도 지정한 수신자 외에 데이터 사용이 불가능하도록 하는 부분이 주요 이슈다.
 1980년대, 메뉴 지향적 시스템.
• 컴퓨터를 사용하는 인구가 급증하며, 일반 사용자에게 컴퓨터를 쉽게 사용할 수 있도록
“사용자에게 친숙한 시스템”이란 문구 등장.
• 1960년대와 1970년대의 텍스트(명령) 중심의 시스템 사용법이 메뉴 지향적 시스템으로 대치됨.
 1990년대, GUI(Graphical User Interface) 시스템.
• 도형(아이콘)과 마우스를 기반으로 한 시스템.
25/41
3. 운영체제의 발전 과정
 가상 머신 (Virtual Machine) 개념 출현
• 더 이상 컴퓨터 시스템의 물리적인 부분을 신경 쓰지 않고, 운영체제에 의해 만들어진 가상 머신의
관점으로 이해한다.
• 오늘날의 사용자는 머신 내부의 기능보다 실제로 컴퓨터 작업을 수행하는 데 관심을 가진다.
 데이터베이스 시스템의 중요성
• 정보를 제공받을 권리가 있는 사람에게만 일정한 통제 하에서 정보를 제공한다.
• 수많은 온라인 데이터베이스를 통신 네트워크의 터미널을 통해 사용 가능하다.
 분산 처리의 개념 확립.
• 컴퓨터가 있는 곳으로 데이터를 가져가기 보다, 데이터가 발생하는 곳으로 컴퓨터의 능력을
가져온다.
26/41
4. 운영체제 기능
 운영체제의 기능
 운영체제는 프로그램을 실행하는 데 필요한 환경과 자원을 제공하고 관리하기 위한
크고 복잡한 시스템이다.
 논리적으로 작은 모듈로 구성되며 각 부분은 명확하게 정의된다.
 대부분의 시스템은 자원 관리와 프로그램을 위한 인터페이스 역할을 수행한다.
 자원 관리 기능
 대부분 메모리, 프로세스, 장치, 파일 등의 시스템
구성 요소를 제공하며 이를 자원이라 하며,
운영체제는 이런 자원을 관리하는 역할을 수행한다.
[그림 2-15] 운영체제의 자원 관리 기능
27/41
4. 운영체제 기능
 메모리 관리
• 메인 메모리와 보조 기억장치로 구분한다.
- 메인 메모리는 컴퓨터 시스템에서 핵심 역할을 수행하며, 프로세서가 직접 주소로 지정할 수 있는 유일한
메모리다.
- 프로세서가 명령어를 수행하기 위해 메인 메모리에 명령어를 저장하며, 프로그램 수행을 위해 프로그램이
절대주소로 맵핑되어 메모리에 저장되어야 한다.
• 프로세서 이용률과 컴퓨터 응답 속도 향상을 위한 다양한 메모리 관리 기법이 존재한다.
• 운영체제는 메인 메모리 관리를 위해 다음 기능을 담당한다.
- 현재 메모리의 어느 부분이 사용되고, 누가 사용하는 지를 점검.
- 기억 공간에 어떤 프로세스를 저장할 지를 결정.
- 기억 공간을 할당하고 회수하는 방법 결정
 보조기억장치 관리
• 메인 메모리의 공간이 제한적이므로 컴퓨터 시스템은 보조기억장치를 이용해 메인 메모리의
내용을 저장한다.
- 대부분의 시스템은 온라인 저장 매체로 디스크를 이용하므로 디스크에서의 저장 기법이 매우 중요하다.
• 운영체제는 디스크 관리를 위해 다음 기능을 담당한다.
- 비어 있는 공간 관리
- 저장 장소 할당
- 디스크 스케줄링
28/41
4. 운영체제 기능
 프로세스 관리
• 프로세스 하나는 자신의 업무를 수행하기 위해 프로세서 점유, 메모리, 파일, 입출력장치 같은
다양한 자원이 필요하다.
• 자원은 프로세스가 생성될 때 또는 실행 중에 할당될 수도 있다.
• 하나의 프로세스는 한 시스템에서 작업 단위이며, 시스템은 프로세스의 집합으로 구성된다.
• 모든 프로세스는 프로세서를 분할하여 사용함으로써 병행하여 수행할 수 있다.
• 운영체제는 프로세스 관리를 위해 다음 기능을 담당한다.
- 프로세스와 스레드 스케줄링
- 사용자와 시스템 프로세스 생성과 제거
- 프로세스의 중지와 재수행
- 프로세스 동기화와 통신을 위한 기법 제공
- 교착 상태(Deadlock)를 방지하는 기법 제공
 장치 관리(입출력 관리)
• 운영체제는 사용자가 특정 하드웨어 장치(입출력장치 등)를 포괄적 기계로 인식하게 하여 장치의
특성을 숨긴다.
• 운영체제는 입출력 시스템을 관리하기 위해 다음의 기능을 제공한다.
- 임시 저장(Buffer-aching) 시스템
- 일반적인 장치 드라이버 인터페이스
- 특정 하드웨어 장치를 위한 드라이버
29/41
4. 운영체제 기능
 파일 관리
• 가장 많이 사용되는 운영체제 구성 요소 중 하나로, 컴퓨터는 물리적으로 다양한 형태로 정보를
저장할 수 있으며, 효율적인 사용을 위해 단일화된 정보 저장 형태를 제공한다.
• 운영체제는 파일의 추상적인 개념을 운영하고 쉽게 사용하기 위해 디렉터리로 구성, 다수의
사용자에 의한 파일 접근을 제어한다.
• 운영체제는 파일 관리를 위해 다음 기능을 담당한다.
- 파일과 디렉터리의 생성과 제거
- 보조기억장치에 있는 파일의 맵핑
- 안전한(비휘발성) 저장 매체에 파일 저장
 운영체제 기타 기능
 시스템 보호
• 운영체제에 있는 프로세스를 다른 사용자의 프로그램으로부터 보호한다.
 네트워킹
• 시스템에 있는 프로세서는 다양한 방법으로 구성될 수 있는 통신 네트워크를 운영한다.
• 네트워크는 완전 접속과 부분 접속으로 연결되며, 설계 시 경로 설정, 접속 정책, 충돌, 보안 등의
문제를 고려해야 한다.
 명령어 해석기와 시스템 관리
• 명령어 해석기(Command Interpreter)는 운영체제를 위한 중요한 시스템 프로그램 중 하나이다.
• 초소형 컴퓨터에는 커널이, 대형 시스템에서는 특수 목적 프로그램으로 명령어 해석기를 가지고 있다.
30/41
5. 운영체제 서비스
 부트스트래핑 서비스
 운영체제가 적재되는 과정을 부트스트래핑(Bootstraping) 또는 부팅(Booting)이라 한다.
• 부트스트랩 로더(Bootstrap Loader)는 디스크 트랙 0, 나머지는 디스크의 다른 부분에 적재된다.
• 부트스트랩 로더의 목적은 운영체제를 적재하는 것이며, 운영체제를 적재하면 시스템이 초기화된다.
• 초기화의 목적은 운영체제 정리, 사용자와의 대화를 통한 시간 등의 설정, 명령 해석기의 적재와
준비 등이다.
[그림 2-16] 부트스트래핑 과정
31/41
5. 운영체제 서비스
 사용자 서비스
 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 제공되는 서비스로 운영체제는
다음과 같은 역할을 수행한다.
• 사용자 인터페이스
- 운영체제와 사용자의 연결을 위해 사용자가 제어 가능한 부분, 이를 통해 운영체제와 통신, 대화할 수 있다.
- 구현 방법 : 명령 라인 인터페이스(Command-Line Interface), GUI(Graphical User Interface)
• 프로그램 수행
- 시스템은 프로그램을 메모리에 적재하여 실행, 실행을 정상적 혹은 비정상적으로 끝낼 수 있어야 한다.
• 입출력 동작
- 수행 중인 프로그램이 입출력을 요구, 파일이나 입출력 장치를 지정할 수 있다.
- 특수한 기능이 필요한 입출력장치는 운영체제가 입출력 동작을 위한 방법을 제공한다.
• 파일 시스템 조작
- 프로그램은 파일을 정확히 읽고 기록, 파일 이름으로 파일을 생성하고 삭제해야 한다.
• 통신
- 프로세스간 정보 교환 방법은 크게 두 가지로 동일한 컴퓨터 또는, 컴퓨터 네트워크에 의해 함께 묶인 다른
컴퓨터 시스템에서 수행되는 프로세스 간에 일어난다.
• 오류 탐지
- 운영체제는 가능한 모든 오류를 항상 탐지하고, 올바르고 일관성 있는 계산을 보장하기 위해 오류 유형별로
적절히 조치해야 한다.
- 오류는 프로세스, 메모리, 하드웨어, 입출력장치, 사용자 프로그램에서 발생 가능하다.
32/41
5. 운영체제 서비스
 시스템 서비스
 사용자가 아닌 시스템 자체의 효율적인 동작을 보장하는 기능이다.
 다수의 사용자를 위해 컴퓨터 자원을 공유하여 효율성을 높인다.
• 자원 할당
- 다수의 사용자나 다수의 작업이 동시에 실행 시 운영체제는 자원을 작업에 할당, 관리한다.
• 계정
- 계정 정보를 이용해 각 사용자의 시스템 이용 정보를 알 수 있다.
- 시스템 청구, 시스템 사용 통계를 수집하기 위해 보관, 사용자 서비스 개선을 위한 연구 자료로 이용 가능하다.
• 보호
- 시스템 호출을 위해 전달된 모든 매개변수의 타당성을 검사, 시스템 자원에 모든 접근을 제어하도록 보장한다.
- 다중 사용자 컴퓨터 시스템에서 저장된 정보의 소유자는 정보 사용을 제한할 수 있다.
33/41
5. 운영체제 서비스
 시스템 호출(System Call) 서비스
 실행 중인 프로그램과 운영체제 간의 인터페이스로, 이를 이용하여 운영체제의 기능을
서비스 받으며, API(Application Programming Interface)라고도 부른다.
 호출 방법은 크게 두 가지이다.
• 프로그램에서 명령 또는 서브 루틴의 호출 형태로 실행, 어셈블리 명령어로 제공된다.
- 고수준 언어(C, C++)로 작성한 프로그램에서 직접 수행 가능하며, 이때 호출은 미리 정의된 기능이나
서브루틴 호출과 비슷하다.
• 시스템에서 명령 해석기를 통해 대화 형태로 호출한다.
- 개인 컴퓨터, 워크스테이션에서 사용된다.
[그림 2-17] 시스템 호출 구조
34/41
5. 운영체제 서비스
 운영체제가 제공하는 일반적인 시스템 호출은 다음과 같다.
• 프로세스 제어
- 종료, 취소, 적재(로드, Load), 수행
- 프로세스 생성, 종료, 속성 획득, 속성 지정
- 대기, 대기 이벤트(Event), 신호 이벤트
- 기억장치 할당 및 해제
• 파일 조작
- 파일 생성, 삭제, 오픈(Open), 폐쇄(Close), 속성 획득 및 지정
- 읽기, 쓰기, 재배치(Reposition)
- 논리적 부착(Logically Attach)
• 장치 조작
- 장치 요구, 해제, 속성 획득 및 설정
- 읽기, 쓰기, 재배치
- 논리적 부착 또는 장치 제거
• 정보 관리
- 시간과 일자, 데이터의 설정과 획득
- 프로세스, 파일, 장치 속성의 설정과 획득
• 통신
- 통신 연결의 생성, 제거, 메시지 송수신
- 상태 정보 전달
- 원격 장치의 부착 및 제거
35/41
6. 운영체제 구조
 단순 구조 운영체제
 작고 간단하며 시스템 기능이 제한된 운영체제로, 최소한의 영역으로 대부분의 기능을
제공하나 모듈이 효율적으로 분할되어 있지 않다.
 대표적인 예로 MS-DOS, 초기의 유닉스가 있다.
• MS-DOS
- 구조화되어 있으나 인터페이스와 기능에 대한 계층이 잘 분리되지 않았다.
• 초기의 유닉스
- 커널과 시스템 프로그램 두 부분으로 구성, 커널은 시스템 호출 인터페이스 아래와 물리적 하드웨어 위에
여러 인터페이스와 장치 드라이버로 분리되어 있다.
- 이후 커널의 여러 기능이 분할하는 형태로 개발, 처음 구성된 후 몇 년에 걸쳐 추가되고 확장되었다.
- 이러한 단일(Monolithic) 커널 구조의 운영체제는 대부분의 기능이 프로시저(프로그램)들의 집합으로 커널에
구현, 직접 통신하여 효율이 높으나 새 기능 추가를 위한 수정과 유지 보수가 매우 어렵다.
[그림 2-18] MS-DOS 계층 구조
[그림 2-19] 유닉스 운영체제 구조
36/41
6. 운영체제 구조
 계층 구조 운영체제
 유사한 기능을 수행하는 요소를 그룹으로 묶어 최하위 계층(0계층)인 하드웨어에서
최상위 계층(n계층)인 사용자 인터페이스에 이르는 다수의 계층(수준)으로 구성된다.
 각 계층은 인접한 상위 또는 하위의 계층과 상호 작용하나, 사용자 프로세스의 요청을
수행하는 데 많은 계층을 거쳐야 하므로 성능이 저하된다.
• 전형적인 운영체제 계층은 상위 계층에 의해 수행될 수 있는 데이터 구조와 루틴의 집합으로
구성된다.
• [그림 2-21]에서 M계층은 하위 계층(M-1계층)에 있는 연산을 수행할 수 있다.
[그림 2-20] 계층적 구조 운영체제
[그림 2-21] 운영체제 계층
37/41
6. 운영체제 구조
 계층적 접근 방법의 예
• THE 운영체제 (그림 2-22)
- 1968년 다익스트라(Dijkstra)가 개발한 Technische Hogeschool Eindhoven 회사의 운영체제로, 계층적 접근
방법을 이용한 운영체제가 처음 사용되었다.
- 총 6계층으로 구성, 메모리 관리 기법은 가상 메모리를 사용한다.
- 입출력 버퍼링은 오퍼레이터 콘솔 계층 위에 있으므로 입출력 오류 조건이 오퍼레이터 콘솔에 대한 출력이
될 수 있다.
• Venus 시스템 (그림 2-23)
- 프로세서 스케줄링과 기억장치 관리를 다루는 하위 계층(0-4)을 마이크로로 코드화하여, 빠른 수행 속도 및
마이크로 코드화 계층과 상위 계층 사이를 명확히 구분한다.
• OS/2 운영체제 (그림 2-24)
- MS-DOS에서 파생, MS-DOS의 제한성을 극복하기 위해 개발되었다.
- 다중 작업(Multi Tasking), 이중 모드(Dual Mode) 운영 뿐만 아닌 새로운 특징을 추가, 강력한 하드웨어 설계로
운영체제가 좀 더 계층적으로 설계되었다.
[그림 2-22] THE 운영체제의 계층 구조
[그림 2-23] Venus 운영체제의 계층 구조
[그림 2-24] OS/2 운영체제의 계층 구조
38/41
6. 운영체제 구조
 계층적 접근 방법 장단점
• 장점
1. 모듈화
- 각 계층은 자신의 하위 계층 서비스와 기능만을 사용하는 방식으로 만들어진다.
2. 계층 구조는 시스템 검증과 오류 수정이 쉽다.
- 첫 번째 계층은 기본 하드웨어를 사용하여 기능을 만들고, 이로써 나머지 시스템에 의문을 가지지 않고
오류를 수정할 수 있다.
- 첫 번째 계층의 오류가 수정되면 기능이 정확하다고 가정, 다음 계층을 만들며, 이 과정을 반복한다.
- 특정 계층에 오류 발견 시 하위 계층은 오류가 수정되었으므로, 해당 계층에 오류가 있다고 볼 수 있다.
3. 시스템 설계나 구현이 단순해진다.
- 하위 계층이 제공하는 연산만을 사용하여 구현되므로 해당 계층은 연산 과정은 알 필요 없이 연산의 목적만
알면 된다.
- 각 계층은 데이터 구조의 존재와 동작 그리고 좀 더 높은 계층으로부터 하드웨어를 숨기게 된다.
• 단점
1. 계층 정의
- 각 계층은 자신의 하위 계층만 사용 가능하므로 설계 시 신중해야 하지만, 모두 명확하게 정의할 수 없다.
2. 계층 구조 정의에 제한이 있다.
- 보조기억장치 드라이버는 통상적으로 프로세서 스케줄러 위에 존재하나, 대형 시스템의 프로세서 스케줄러는
교체(Swapping) 기능이 필요한데, 이는 보조 기억장치 드라이버 루틴이 프로세서 스케줄러 하위에
놓이도록 요구한다.
39/41
6. 운영체제 구조
 마이크로 커널 구조 운영체제
 1980년대 카네기 멜론 대학교에서 모듈화된 마이크로 커널(Micro-kernel)을 사용하여
마크(Mach)를 개발.
• 단일 커널의 크기가 커지며 버그의 원인과 기타 오류를 구분하기 어렵고 동일한 메모리에서 실행
되므로 한 부분의 문제가 시스템 전체에 심각한 영향을 주는 단점을 해결하기 위해 개발된다.
• 커널에는 최소 기능만 포함시켜 크기를 줄이고 기타 기능은 사용자 공간으로 옮겨 사용자 영역에서
수행되는 서버로 구현하는 방식이다.
• 커널 모드
- 커널의 규모를 축소화하고 시스템의 확장성 향상을 위해 메시지 전송과 하드웨어를 직접 다루는 부분을 비롯한
최소한의 기능만 동작하도록 구현한다.
• 사용자 모드
- 네트워크 시스템, 파일 시스템 상호 작용과 장치 관리 등 대부분의 운영체제 구성요소를 실행하도록 사영자
영역의 서버로 구현한다.
[그림 2-25] 단일 커널과 마이크로 커널
40/41
6. 운영체제 구조
 마이크로 커널 구조 장단점
• 장점
1. 커널이 가볍다.
- 커널에서 필수 기능만 제공하고 기타 기능은 사용자 영역의 서버에서 제공하게 하여 커널을 가볍게 하였다.
2. 한 부분에서 발생한 문제가 시스템 전체에 영향을 주지 않는다.
- 운영체제가 제공하는 서비스를 사용자 영역의 독립적인 서버에서 수행하므로 서버에서 잘못 수행하여도
다른 서버와 커널에 치명적인 영향을 주지 않는다.
3. 서버의 개발이 용이하고 운영체제 기능의 변경이 쉽다.
- 운영체제의 많은 기능이 사용자 영역의 서버로 구현 가능하다.
4. 실시간 시스템에 활용.
- 커널 내부에서 발생 지연이 작고 예측이 가능하다.
• 단점
1. 프로세스 간 통신 발생을 최소화하여야 한다.
- 사용자 영역에서 수행 중인 서버들 사이에 빈번한 프로세스 통신이 발생하므로 성능에 있어 병목 지점으로
지적된다.
2. 속도가 느리다.
- 응용 프로그램과 서버 간의 자료 교환을 위해 커널을 출입하는 문맥 전환(Context Switching) 때문에 속도가
느리다.
41/41