week3 : 운영체제 chapter 2: 컴퓨터 시스템 소개
DESCRIPTION
Week3 : 운영체제 Chapter 2: 컴퓨터 시스템 소개. 담당교수 : 최 윤 정. Contents. 학습목표 : 운영체제의 역할을 통해 OS 의 목적을 이해해본다 . OS 의 발전 과정 및 그에 다른 다양한 OS 유형의 특징 OS 의 기본구성과 제공하는 서비스 운영체제 설계를 위한 모듈과 계층구조 내용 OS 의 역할과 목적 유형별 특징 발전과정 기능 및 서비스 구조. 1. 운영체제의 역할과 목적. 컴퓨터 사용자 : 어떤 일을 수행하기 위해 컴퓨터를 사용하는 - PowerPoint PPT PresentationTRANSCRIPT
Week3 : 운영체제
Chapter 2: 컴퓨터 시스템 소개
담당교수 : 최 윤 정
Contents
학습목표 : 운영체제의 역할을 통해 OS 의 목적을 이해해본다 .
OS 의 발전 과정 및 그에 다른 다양한 OS 유형의 특징
OS 의 기본구성과 제공하는 서비스
운영체제 설계를 위한 모듈과 계층구조
내용
OS 의 역할과 목적
유형별 특징
발전과정
기능 및 서비스
구조
2
[ 그림 2-1] 컴퓨터 시스템 구성요소와 운영체제
컴퓨터 사용자 : 어떤 일을 수행하기 위해 컴퓨터를 사용하는
사람 , 장치 , 다른 컴퓨터 포함 .
하드웨어 : 연산을 위한 기본 자원을 제공하는 프로세서 (CPU),
메모리 ( 기억장치 ), 다양한 장치 ( 입출력장치 등 ) 로 구
성 .
소프트웨어 : 컴퓨터가 기능을 수행하는데 필요한 프로그램을
총칭 . (ex: 운영체제 , 각종 응용 프로그램 유틸리티 등 )
응용 프로그램 : 어떤 문제를 해결하기 위해 사용자나 전문가에
의해 만들어진 프로그램 . (ex: 웹 브라우저 , 한글 등의
워드
프로세서 , 데이터베이스 관리 프로그램 , 비디오 게임 등 )
1. 운영체제의 역할과 목적
역할
컴퓨터 H/W 와 응용 프로그램 간의 인터페이스 !
CPU, memory 같은 자원을 관리
사용자 편의성
3
4
운영체제의 역할 : 조정 , 관리 , 제어
컴퓨터 자원을 관리한다는 측면에서 아래와 같이 운영체제의 역할을 정리할 수 있다 .
조정자
운영체제는 시스템을 운영하여 여러 운영 요소 ( 하드웨어 , 소프트웨어 ( 프로그램 ), 데이
터 ) 를 적절하게 사용할 수 있도록 제어한다 .
다른 프로그램이 작업할 수 있는 환경만 제공한다 .
자원 할당자 또는 관리자
컴퓨터 시스템이 문제를 해결하는 데 필요한 자원 ( 프로세서 시간 , 메모리 공간 , 파일 저장
공간 , 입출력장치 등 ) 을 할당하는 업무를 한다 .
컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 자원을 어떻게 할당할 지를 결정하는
관리자 역할도 수행한다 .
입출력장치와 사용자 프로그램 제어
컴퓨터 시스템의 부적절한 사용이나 오류를 방지하기 위해 사용자 프로그램의 실행을 제어 .
입출력장치를 동작시키고 통제한다 .
[ 그림 2-2] 운영체제 역할
운영체제의 역할 : 주요기능
기능
인터페이스 : h/w – user
h/w 의 자원제어 : sharing!
사용자들간의 스케쥴링 및 자원할당
I/O 지원 및 오류처리
5
사용자들 !
운영체제의 역할 :
6
운영체제의 역할과 기능이 매우 다양하여 완벽히 정의하기 힘드나 , 일반적으로
“ 컴퓨터 자원을 통제하고 할당하는 공통 기능을 컴퓨터 소프트웨어 하나로 통합한 것”
혹은 구체적으로 표현으로
“ 컴퓨터 시스템에서 항상 실행되는 , 응용 프로그램을 제외한 모든 프로그램 또는 커널
(Kernel)” 이라고도 정의된다 .
※ 커널 (Kernel)
운영체제의 핵심으로 메모리에 상주하며 운영체제의 다른 부분 또는 응용 프로그램
수행에 필요한 환경을 설정하는 소프트웨어 .
응용 프로그램 실행에 필요한 다양한 서비스를 제공하고 실행되는 프로세스를
스케줄링하는 역할 .
운영체제의 목적
2 가지의 주요목적을 달성하고 싶었다 .
( 사용자를 위한 ) 편리성
프로그램 사용 및 개발을 위한 편리한 환경 .!
( 자원관리를 위한 ) 효율성 : 각 프로그램의 유기적으로 결합하도
록 .
처리능력 : 시스템의 생산성 - 단위시간당 처리하는 작업량
신뢰도 : h/w( 펌웨어 ). s/w 가 실패없이 수행하도록 .
응답시간 : 사용자가 시스템에 작업을 의뢰한 후 반응을 얻을 때까지의
시간 .
사용가능도 ( 가동율 ) : 사용자가 컴퓨터를 실제로 사용한 시간
고장이나 오류 보수시간 제외 !. 시스템을 중단시키지 않고 운영하자 . 7
운영체제의 목적 : 요약
8
[ 그림 2-3] 운영체제 목적
운영체제 기능의 발전 : 초기 환경
초기 컴퓨터 시스템 및 환경
작업별 처리 시스템
저성능 , 속도 느림
온라인 판독기아 프린터에 의존 .
예 ) 프로그래머 : 콘솔로 작성 종이테입이나 펀치카드로 저장
카드리더기가 메모리에 저장 콘솔에서 실행 .!
프로그램 형태는 2 진수 8 진수등의 기계어코드로 작성 .
절대주소를 사용했고 , 라이브러리 루틴은 없었다 .
프로그래머는 시스템사용을 위해 예약을 했고 , 시간내에 끝내지 못하면
다른 사용자에게 사용권 넘기고 대기 .
작업을 빨리 마쳐도 남은 시간은 유휴시간 .!
9
운영체제의 기능의 발전
카드판독기 , 라인프린터 , 자기 테이프가 보편화
어셈블러 , 로더 , 링커 등의 툴이 개발
라이브러리 생성
공통기능을 새로 작성할 필요없이 프로그램에 삽입하여 사용한다 .
예 ) stdio.h, java.io.* 등
컴파일러 개발
포트란 , 코볼 , 베이직 등
프로그래밍 업무는 쉬워졌으나 , 컴퓨터 동작은 복잡해졌다… -
포트란의 경우 8 단계 어셈블리과정이 필요하여 , setup 시간이 많아
시간낭비 . 오류발생시 처음부터 다시 ..!
10
운영체제의 기능 : 모니터링
모니터링
작업 준비시간의 문제를 해결하여 컴퓨터의 처리율을 높인다 .
방법 1: 운용을 위한 전문 오퍼레이터를 고용한다 .!
방법 2: 유사작업을 묶어 일괄처리하도록 스케쥴링한다 .
11
[ 그림 2-4] 초기의 일괄 처리 시스템
5000
운영체제의 기능의 발전 : 자동작업순서
자동작업순서 (Automatic Job Sequencing)
작업의 중단 !
오퍼레이터는 정상종료인가 ? 비정상종료인가 ? 를 파악하고
프로세스는 쉰다… 할 일은 많은데 !
순서에 따라 다음 작업을 준비하도록 제어 .
12[ 그림 2-5] 제어 카드 ( 작업 제어 언어 ) 사용 예 [ 그림 2-6] 상주 모니터 영역과 메모리 배치도
운영체제의 기능의 발전 : Offline
오프라인 연산 ( 장치들의 독립성 )
일괄처리시스템을 자동작업순서로 전환함으로써 성능은 높였음에도 , 종종 유휴시간이 발생 .
왜 ? 기계적 장치와 전자적 장치간의 속도차 !
초당 수백만개의 명령을 수행하는 프로세서 Vs. 초당 17 개의 카드를 읽은 리더기 .!
느린 카드판독기와 라인 프린터 자기테이프로 대체
카드판독기와 라인프린터는 자기테이프에 복사 : Offline
프로세스가 카드를 직접읽는 대신 , 자기테이프를 읽도록 구현 . 장점은 ?
13[ 그림 2-7] 온라인 처리와 입출력장치를 위한 오프라인 처리
[ 그림 2-8] 버퍼링
운영체제의 기능의 발전 : 버퍼링
버퍼링
입출력장치의 느린속도를 보완하여 CPU 가 노는 시간이 없도록 ,
바쁘게 움직이도록 수행하는 간단한 방법 : 연산과정과 입출력이
동시에 가능하도록 한다 .
예 ) 프로세서가 어떠한 작업을 처리하기 시작하기 직전 ,
입력장치는 그 작업에 필요한 다음 입력을 받는다 .
데이터 구성단위인 레코드 수에 따라 성능이 좌우된다 .
14
[ 그림 2-9] 스풀링
운영체제의 기능의 발전 : 스풀링
스풀링
자기테이프의 문제점 : 테이프의 특성상 프로세서가 다른 부분을 읽고 있는
동안 추가로 기록할 수 없다 .
반면 디스크는 가능하다 .!
‘Simultaneous Peripheral Operation On-Line’ :
디스크를 매우 큰 버퍼처럼 사용하는 , 입력장치에서 미리 읽어
출력 장치가 받을 수 있을 때 까지 출력 파일을 저장한다 .
버퍼링 vs. 스풀링
내부버퍼 - 외부장치
한 작업의 입출력을 수행하면서
다른 작업의 계산도 가능 .
15
운영체제의 기능의 발전 : 스풀링
스풀링 시스템 : 현재는 표준 .
초기에는 NASA 의 휴스톤 계산 센터에 부가된 특수 기능이었음 .
별개의 오프라인 장치를 사용 , 한 작업의 입출력을 수행하면서 다른 작업의
계산이 가능하고 많은 작업의 입출력과 계산을 함께 할 수 있다 .
작업 풀 (Job Pool) 데이터 구조를 제공한다 .
디스크에 읽혀져 실행을 위해 대하는 여러 작업을 수행할 수 있도록 준비 ,
디스크에 저장된 작업은 프로세서 이용률 향상을 위해 운영체제가 다음
수행할 작업 선택을 돕는다 . 예 ) 프린트 작업 스풀링 .
테이프 스테이징 (Tape Staging) : 기존의 테이프 시스템에도 적용 .
자기 테이프의 전체 내용을 이용하기 전 디스크로 읽어 복사된 디스크에서
빠른 속도로 모든 연산이 수행되고 테이프를 사용하지 않는 방법 .16
[ 그림 2-10] 다중 프로그래밍 시스템을 위한 메모리 구조
2. 운영체제의 유형별 특징 : 다중프로그래밍 발전과정과 용도 , 응답시간에 데이터 입력방식에 따라
다중 프로그래밍시스템 시분할시스템 vs. 작업분할 vs 일괄처리 분산처리 vs. 다중처리 Sing-user vs. Multi-user
다중 프로그래밍 시스템 : 프로세서가 항상 수행할 작업을 갖도록 하자 .! 버퍼링 , 스풀링 : 입출력장치와 프로세서를 항상 바쁘게 하자 . But, 한계점이 있음 ( 예 :single-user)
작업의 예1. 운영체제가 메모리에 있는 작업 1 을 실행한다 .2. 작업 1 에서 키보드 입력이 끝날 동안 , 마냥 기다리지않고 간단히 다른 작업으로 전환 - 수행한다 .3. 위에서 입력작업이 끝나면 계속해서 작업 1 을 수행한다 . ** 역시 메모리관리 , 결정방법에 대한 정책이 필요합니다 .
현대 운영체제의 중심주제 인터럽트를 이용한 스케줄링
17
운영체제의 유형별 특징 : 시분할
시분할 시스템
다중 프로그래밍을 논리적으로 확장한 개념으로 , 프로세서가 다중작업을 교대로
수행한다 .
프로세서 스케쥴링과 다중 프로그래밍을 사용하여 각 사용자에게 컴퓨터를 시간적으로
분할하여 나누어 주는 효과 .
각 사용자는 메모리에 독립된 프로그램을 갖고 ,
프로그램은 입출력을 수행하는 아주 짧은 시간 동안만 실행하는 방식 .
60년 이전에 제안되었으며 , 초기 버전은 MIT 에서 개발한 CTSS 61년 IBM 에
탑재
복잡한 방식과 구현비용이 높아 70년초까지는 일반화되지 못했다 .
18
운영체제의 유형별 특징 : 시분할 시스템
시분할시스템에서는
여러 작업들이 저장되어 있는 경우 , 데이터 변경이 동시에 일어나지 않도록 보호해야
함 .
다수의 사용자가 접근하는 파일은 접근권한을 두어 해당사용자 그룹만 접근하도록 .!
공유자원의 경우 , 접근순서도 조정할 수 있도록 제어기능이 요구된다 ..
현재의 시스템은 일괄처리방식과 시분할 방식 모두 제공 .
19
운영체제의 유형별 특징 : 분산처리
분산 처리 시스템 (Distributed Processing System) chapter 11
시스템마다 각각 운영체제와 메모리를 가지고 독립적으로 운영 .! 필요할 때 통신하는 시스템 !
최근의 컴퓨터 환경 : 성능향상 및 신뢰성 등을 위해 여러 개의 컴퓨터에 작업을 분산시켜 연결한 구조 .
분산 시스템 구성 방법
강결합 ( 단단히 결합된 ) 시스템
프로세서 ( 처리기 ) 가 기억장치와 클록 (Clock) 을 공유하며 , 공유된 기억장치를 통해 통신 .
약결합 ( 느슨하게 결합된 ) 시스템
둘 이상의 독립된 컴퓨터 시스템을 통신선으로 연결 .
20[ 그림 2-12] 분산 ( 약결합 ) 처리 시스템의 구성 예
운영체제의 유형별 특징 : 다중처리
다중처리 시스템
하드웨어 비용이 저렴해짐에 따라 , 마이크로 프로세서 여러 개를 연결해 다중
프로세서를 만든다 .
시스템은 신뢰성 , 가용성 , 컴퓨팅 능력이 증가
비용이 큰 초고속 프로세서를 사용하지 않고도 대형컴퓨터에 근접하는 능력을 얻을 수
있다 .
주 / 종 (Master/Slave) 다중처리 시스템 – 비대칭구조
대칭적 구성 다중처리 시스템
21
운영체제의 유형별 특징 : 다중처리
22
[ 그림 2-13] 주 / 종 다중 처리 시스템 구성
[ 그림 2-13] 대칭적 구성 다중 처리 시스템
• 마스터프로세서가 주가되어 부가적인 슬레이브
프로세서를 관리하는 단일처리 시스템 !
• 형태가 단순하지만 마스터 프로세서에 부하가 많아서
신뢰도나 자원사용면에서 비효율적이다 .
• 모든 프로세스가 동등한 성능일때 최적으로 구현된다 .
• 교착상태나 기아상태등 프로세서 관리를 위한 동기화
작업의 구현이 매우 어려우나 , 약결합 시스템보다
신뢰성이 높고 오버헤드를 균형있게 분산할 수 있어
효율적이다 .
23
운영체제의 유형별 특징 : single/multi-user
단일 사용자 시스템
예 ) 개인 컴퓨터
하드웨어 비용이 저렴해짐에 따라 컴퓨터 시스템 하나를 사용자 한 명이 전용하는 것 .
다중 사용자 시스템
예 ) 서버 : 파일공유사이트 , 네이버 , 다음 등의 포털 ,
해당시스템에 여러 사용자가 로그인하여 동시에 사용할 수 있는 작업 환경을 제공
최근 사용자의 편리함과 빠른 응답을 제공하기 위해 다중 작업 (Multi-Tasking),
다중 사용자 (Multi-User) 환경으로 변하고 있다 .
3. 운영체제의 발전과정
운영체제 -- 컴퓨터 구조의 발전 단계
24
[ 표 2-1] 운영체제의 발전 과정
25
3. 운영체제의 발전과정 : 제 0 세대
제 0 세대 (1940년대 )
초기 시스템에는 운영체제가 없었다 .!
프로그래밍 : 사용자가 직접 기계어를 사용해 명령문을 작성
카드리더기는 언제 작업을 시작하고 종료하는지
데이터는 어떻게 해석하는지
무엇을 계산하여 결과는 어디에 어떻게 , 출력은 ?
프로그램을 작성할 때 컴퓨터에 필요한 작업을 모두 포함하고 , 모든 명령어를
명시적으로 표현하였다 . 기계어로… !
모든 작업은 예약을 통해 진행되고 컴퓨터는 프로그래머가 메인 콘솔에서
수동으로
운영하였다 ..
3. 운영체제의 발전과정 : 제 1 세대
제 1 세대 (1950년대 ) – 버퍼링 , 스풀링 , 일괄처리 시스템
1952년 초 , 자동차 제조회사 GM 의 연구실에서 IBM 701 운영체제 개발 .
1955년 , GM 과 북아메리가 항공사가 IBM 704 운영체제를 공동으로 개발 .
IBM 사용자협회 SHARE(Semi-Automatic Business Research Environment) 에서
운영체제에 대한 토론회를 육성 , 1957년까지 IBM 704 를 위한 자체 운영체제를 개
발 .
버퍼링 , 스풀링 기법 적용
설치시간 (setup time), 철거시간 (teardown time) 을 줄이자 .
일괄처리 기법 적용
프로세스가 쉬는 시간을 줄이기 위하여 .
시스템 화일명
하드웨어 장치의 독립성을 위해 하드웨어 장치번호를 사용하는 대신 표준입출력
파일을 지정했다 .
어셈블러 vs. 컴파일러
링커와 로더로의 변환이 원활해짐 26
27
3. 운영체제의 발전과정 : 제 2 세대
제 2 세대 (1960년대 초기 ) – 다중 프로그래밍 , 다중 처리 , 시분할 시스템
일괄 처리 형태로 처리량을 향상 .
장치 독립성이라는 개념으로 하드웨어 관리가 편리해 짐 .
다중 프로그래밍
여러 프로그램이 메인 메모리에 공존 , 프로세서를 작업 간에 수시로 번갈아 할당 .
다중 처리 시스템
시스템의 처리 능력을 증진시키기 위해 한 컴퓨터에 여러 개의 프로세서 사용 .
시분할 시스템
사용자와 대화 방식으로 작동하며 , 사용자가 컴퓨터에 요구 사항을 입력하고
컴퓨터가 요구를 처리하여 사용자의 터미널로 응답하는 대화형 .
실시간 시스템
가솔린 정제용 공정작업이나 , 군사용 실시간 시스템에 적용되면서 발전 .
비용이 크고 활용도가 높지 못하지만 , 빠른 응답과 즉각적인 사용을 위해 적용되었
다 .
트랜잭션 (Transaction) 처리 : 사용자 - 컴퓨터가 대화를 하되 , 간단히 요구하고
즉각 응답하는 작업 . 예 ) 마트에서 계산하기 .
28
3. 운영체제의 발전과정 : 제 3 세대
제 3 세대 (1960년 중반 ~ 1970년대 중반 ) – 범용 시스템 , 다중 모드 시스템
1964년 IBM 시스템 /360 계열 컴퓨터로부터 시작 .
범용 시스템으로 설계되어 덩치가 크며 , 모든 사용자에게 모든 기능을 제공할 수 있도록
제작되어 무거웠다 .
다량의 컴퓨터가 판매되었으나 , 이러한 기능이 필요 없는 사용자에게 실행 시간의
과부하 , 시스템 이해를 위한 기간 , 오류 발생 시 수정 시간 , 시스템 유지 등에 있어
많은 비용 부담의 단점을 가짐 .
다중 모드 시스템
일괄 처리 , 시분할 처리 , 실시간 처리 , 다중 처리를 모두 제공 .
고가이며 계획한 시간과 예산을 초과하여 완성되었다 .
사용하려면 고도의 훈련이 필요 .!
사용자와 하드웨어 사이에 소프트웨어 계층 도입 .
하드웨어에 대한 관점 없이 소프트웨어로 접근하게 되어
사용이 어려우며 , 간단한 작업도 복잡한 작업 제어 언어 (JCL, Job Control Language) 의
이해가 필요함 .
29
3. 운영체제의 발전과정 : 제 4 세대
제 4 세대 (1970년대 중반 이후 ) – 네트워크 , 가상 머신 , 분산 처리 시스템 ,
개인 컴퓨터
통신 발달과 더불어 컴퓨터 네트워크와 온라인 처리가 사용됨 .
다양한 형태의 단말기를 이용하여 네트워크 기능을 이용 .
마이크로프로세서의 등장으로 개인용 컴퓨터를 가짐 .
개인용 컴퓨터
데이터 통신 인터페이스를 갖추어 터미널로 사용 : 예 ) 서버에 접속하여 작업
정보의 안전성에 관한 문제가 대두되어 정보 보호에 대한 중요성 인식 .
1980년대 , 메뉴 지향적 시스템 .
컴퓨터를 사용하는 인구가 급증하며 , 컴퓨터를 쉽게 사용할 수 있도록
“ user-friendly“( 사용자에게 친숙한 시스템 ) 이란 문구 등장 .
1990년대 , GUI(Graphical User Interface) 시스템 .
도형 ( 아이콘 ) 과 마우스를 기반으로 한 시스템 - apple 의 맥킨토시
30
3. 운영체제의 발전과정 : 제 4 세대
가상 머신 (Virtual Machine) 개념 출현
더 이상 컴퓨터 시스템의 물리적인 부분을 신경 쓰지 않고 , 운영체제에 의해
만들어진 가상 머신의 관점으로 이해한다 .
오늘날의 사용자는 머신 내부의 기능보다 실제로 컴퓨터 작업을 수행하는 데
관심을 가진다 .
리눅스를 윈도우 위에 설치할 수 있었던 이유 .!
vmware 나 virtual box 등의 가상머쉰을 설치한 후 , 그 위에 리눅스를 설치합니다 .
데이터베이스 시스템의 중요성
정보를 제공받을 권리가 있는 사람에게만 일정한 통제 하에서 정보를 제공한다 .
수많은 온라인 데이터베이스를 통신 네트워크의 터미널을 통해 사용 가능하다 .
분산 처리의 개념 확립 .
컴퓨터가 있는 곳으로 데이터를 가져가기 보다 ,
데이터가 발생하는 곳에 컴퓨터의 능력이 사용되도록 ..
31
4. 운영체제의 기능
기본 역할 :
운영체제는 프로그램을 실행하는 데 필요한 환경과 자원을 제공하고 관리하기 위한 크고
복잡한 시스템이다 .
논리적으로 작은 모듈로 구성되며 각 부분은 명확하게 정의된다 .
대부분의 시스템은 자원 관리와 프로그램을 위한 인터페이스 역할을 수행한다 .
[ 그림 2-15] 운영체제의 자원 관리 기능
• 자원관리기능
• 메모리관리
• 보조기억장치관리
• 프로세스관리
• 입출력장치 관리
• 파일 관리
• 주요 기능 :
• 시스템 보호
• 네트워킹
• 명령어 해석과
시스템 관리
• 기타기능
5. 운영체제 서비스
기본 서비스 :
프로그램 실행을 위한 환경을 제공하고 프로그램과 사용자에게 정해진 서비스를
제공한다 .
프로그래밍을 위한 편리한 환경도 제공한다 .
32
• 부트스트래핑 (
부팅 )
• 사용자서비스
• 시스템 서비스
• 시스템 호출서비스
• 주요 서비스
[ 그림 2-16] 부트스트래핑 과정
5. 운영체제 서비스
사용자 서비스
목적 : 프로그래밍 작업을 쉽게 수행할 수 있도록 .
사용자 인터페이스의 형태 : Command line, GUI
프로그램 수행
입출력 동작
파일 시스템 조작
통신
오류탐지
33
34
5. 운영체제 서비스
시스템 서비스
사용자가 아닌 시스템 자체의 효율적인 동작을 보장하는 기능이다 .
다수의 사용자를 위해 컴퓨터 자원을 공유하여 효율성을 높인다 .
자원 할당
다수의 사용자나 다수의 작업이 동시에 실행 시 운영체제는 자원을 작업에 할당하여 관리 .
계정
계정 정보를 이용해 각 사용자의 시스템 이용 정보를 알 수 있다 .
시스템 사용 통계를 수집하기 위해 보관 , 사용자 서비스 개선을 위한 연구 자료로 이용
가능하다 . 에 ) 시스템 로그 기록들
보호
시스템 호출을 위해 전달된 모든 매개변수의 타당성을 검사 , 시스템 자원에 모든 접근을
제어하도록 보장한다 .
다중 사용자 컴퓨터 시스템에서 저장된 정보의 소유자는 정보 사용을 제한할 수 있다 .
35
5. 운영체제 서비스
시스템 호출 (System Call) 서비스 : API
실행 중인 프로그램과 운영체제 간의 인터페이스로 , 이를 이용하여 운영체제의 기능을 서비스 받으
며 , API(Application Programming Interface) 라고도 부른다 . 예 ) Win32API, POSIX API, JAVA
API.. 등
호출 방법 : 크게 두 가지
프로그램에서 명령 또는 서브 루틴의 호출 형태로 실행 , 일반적으로 어셈블리 명령어로 제공 .
고수준 언어 (C, C++) 로 작성한 프로그램에서 직접 수행 가능하며 , 이때 호출은 미리 정의된
기능이나 서브루틴 호출과 비슷하다 .
시스템에서 명령 해석기를 통해 대화 형태로 호출한다 .
[ 그림 2-17] 시스템 호출 구조
5. 운영체제 서비스
일반적인 시스템 호출기능
36
프로세스 제어
파일 조작
장치 조작
정보 관리
통신
• 통신 연결의 생성 , 제거 , 메시지
송수신
• 상태 정보 전달
• 원격 장치의 부착 및 제거
• 종료 , 취소 , 적재 ( 로드 , Load), 수행
• 프로세스 생성 , 종료 , 속성 획득 , 속성
지정
• 대기 , 대기 이벤트 (Event), 신호 이벤트
• 파일 생성 , 삭제 , 오픈 (Open), 폐쇄
(Close), 속성 획득 및 지정
• 읽기 , 쓰기 , 재배치 (Reposition)
• 논리적 부착 (Logically Attach)• 장치 요구 , 해제 , 속성 획득 및
설정
• 읽기 , 쓰기 , 재배치
• 논리적 부착 또는 장치 제거
• 시간과 일자 , 데이터의 설정과 획득
• 프로세스 , 파일 , 장치 속성의 설정과
획득
6. 운영체제 구조
각 구성요소가 커널과 상호접속하는 방법에 따라 .
단순구조 운영체제
계층구조 운영체제
마이크로 커널 운영체제
37
현대 운영체제처럼 크고 복잡한 시스템일 수록 , 수정 -변경이 용이하도록 설계되어야 한다 .
독립적인 기능을 가진 작은 부분으로 분할하여 개발과정을 단순화하고 체계화 한다 .
모듈화 . 프로그래밍 과정에서도 매우 중요한 요소 !
6. 운영체제 구조 : 단순구조
단순구조 운영체제
작고 간단하며 시스템 기능이 제한됨 - MS-DOS
구조적이긴 했으나 모듈이 효율적으로 분할되어 있지 않았다 .
초기 유닉스
커널과 시스템 프로그램으로 구성
커널 : OS 의 주요기능이 포함되 있으며 , 여러 인터페이스와 장치드라이버로 분리되어 있도록 확
장 .
단일 (Monolithic) 커널 구조의 운영체제는 대부분의 기능이 프로시저들의 집합으로 구현되어 있어
직접 통신하여 효율이 높으나 새 기능 추가를 위한 수정과 유지 보수가 매우 어렵다 .
38[ 그림 2-18] MS-DOS 계층 구조 [ 그림 2-19] 유닉스 운영체제 구조
[ 그림 2-21] 운영체제 계층
6. 운영체제 구조 : 계층구조
계층구조 운영체제
계층구조와 정보의 추상화 개념의 도입
유사한 기능을 수행하는 요소를 그룹으로 묶는다 .
최하위계층 : level 0 – 하드웨어
최상위계층 : level n - 사용자 인터페이스
전형적으로 상위계층에 의해 수행될 수 있는 데이터구조와 루틴의 집합으로 구성 .
각 계층은 인접한 계층과 상호작용이 가능하나
요청을 수행하는데 많은 계층을 거쳐야 하므로 성능은 저하된다 .
39
[ 그림 2-20] 계층적 구조 운영체제
6. 운영체제 구조 : 계층구조
계층 시스템 : 시스템설계나 구현이 단순해짐
각 계층은 자신보다 하위 계층이 제공하는 연산을 사용하여 구현한다 .
연산이 어떻게 수행되나 ? 가 아니라 무슨일을 하는지 !
캡슐화 ( 정보은닉 ) : 데이터 구조의 존재와 동작방법 / 상위계층으로 부터 하드웨어들을
숨길 수 있다 .
대표 운영체제
THE
Venus
OS/2
40[ 그림 2-22] THE 운영체제의 계층 구조 [ 그림 2-23] Venus 운영체제의 계층 구조 [ 그림 2-24] OS/2 운영체제의 계층 구조
6. 운영체제 구조 : 마이크로커널구조
41
42
SUMMARY
운영체제 목적
운영체제는 편리성과 효율성의 두 가지 목적을 달성하기 위해 발전해왔다 .
운영체제의 역할
운영체제는 조정자 , 자원 할당자 또는 관리자 , 다양한 입출력 장치와 사용자 프로그램을 제어하는
역할을 한다 .
운영체제 기능의 발전
초기의 작업별 처리 시스템은 콘솔을 사용 , 소프트웨어를 통해 프로그래밍하는 데
편리함을 제공하였으나 , 준비 시간 (Set-Up Time) 이 많이 필요했다 .
일괄처리 시스템은 상주 모니터를 이용 , 자동 작업 순서를 실현하여 컴퓨터 이용률을
전반적으로 높였으나 입출력장치의 느린 속도로 프로세서 이용률이 낮았다 .
이를 위해 버퍼링 , 스풀링 기법이 제안되었다 .
다중 프로그래밍과 시분할 시스템
다중 프로그래밍은 시스템 전체의 성능을 향상 시키기 위해 프로세서 (CPU) 하나가 둘 이상의
프로그램을 처리하는 방식이다 .
시분할 시스템은 프로세서 스케줄링과 다중 프로그래밍을 사용 , 각 사용자에게 컴퓨터를 시간적으로
분할하여 제공하며 , 다수의 사용자가 컴퓨터를 대화형으로 사용할 수 있다 .
SUMMARY
다중 처리 시스템
둘 이상의 프로세서 ( 처리기 ) 가 여러 프로그램을 동시에 처리하는 것으로 신뢰성과
가용성 , 컴퓨터 능력 향상 등의 목적을 달성할 수 있다 .
주 / 종 다중 처리 시스템 구성 , 대칭적 다중 처리 시스템이 제안되었다 .
운영체제 발전 과정
제 1 세대 (버퍼링 , 스풀링 , 일괄 처리 시스템 ), 제 2 세대 ( 다중 프로그래밍 , 다중 처리 , 시분할
시스템 ), 제 3 세대 (범용 시스템 , 다중모드 시스템 ), 제 4 세대 (네트워크 , 가상
머신 , 분산 처리 , 개인 컴퓨터 ) 로 발전하였다 .
운영체제 기능
자원 관리 , 시스템 보호 , 네트워킹 , 명령 해석기 시스템 관리 등의 기능을 수행한다 .
운영체제 서비스
부트스트래핑 서비스 , 사용자 서비스 , 시스템 서비스 , 시스템 호출 서비스 등을 제공한다 .
단순 구조 운영체제
시스템 호출 계층은 프로세스 제어 , 파일 및 장치 처리와 같은 기본적인 기능을 제공한다 .
시스템 서비스는 프로그램 제어 , 자원 할당 , 보호 등의 다양한 형태로 분류할 수 있다 .
SUMMARY
계층적 구조 운영체제
유사한 기능을 수행하는 요소를 그룹으로 묶어 최하위 계층 (layer 0) 인 하드웨어에서
최상위 계층 (layer n) 인 사용자 인터페이스에 이르는 다수의 계층 ( 수준 ) 으로
구성된다 .
시스템 설계나 구현이 단순해지고 시스템 검증과 오류 수정이 쉽다 .
마이크로 커널 구조 운영체제
커널의 최소 기능만 내부에 포함 , 커널의 크기를 대폭 축소하고 나머지 기능은 사용자
공간으로 이전하여 사용자 영역에서 수행되는 서버로 구현한다 .