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