1 / 45

Week3 : 운영체제 Chapter 2: 컴퓨터 시스템 소개

Week3 : 운영체제 Chapter 2: 컴퓨터 시스템 소개. 담당교수 : 최 윤 정. Contents. 학습목표 : 운영체제의 역할을 통해 OS 의 목적을 이해해본다 . OS 의 발전 과정 및 그에 다른 다양한 OS 유형의 특징 OS 의 기본구성과 제공하는 서비스 운영체제 설계를 위한 모듈과 계층구조 내용 OS 의 역할과 목적 유형별 특징 발전과정 기능 및 서비스 구조. 1. 운영체제의 역할과 목적. 컴퓨터 사용자 : 어떤 일을 수행하기 위해 컴퓨터를 사용하는

tamera
Télécharger la présentation

Week3 : 운영체제 Chapter 2: 컴퓨터 시스템 소개

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Week3 : 운영체제Chapter 2: 컴퓨터 시스템 소개 담당교수 : 최 윤 정

  2. Contents • 학습목표 : 운영체제의 역할을 통해 OS의 목적을 이해해본다. • OS의 발전 과정 및 그에 다른 다양한 OS유형의 특징 • OS의 기본구성과 제공하는 서비스 • 운영체제 설계를 위한 모듈과 계층구조 • 내용 • OS의 역할과 목적 • 유형별 특징 • 발전과정 • 기능 및 서비스 • 구조

  3. 1. 운영체제의 역할과 목적 • 컴퓨터 사용자 : 어떤 일을 수행하기 위해 컴퓨터를 사용하는 • 사람, 장치, 다른 컴퓨터포함. • 하드웨어 : 연산을 위한 기본 자원을 제공하는 프로세서(CPU), • 메모리 (기억장치), 다양한 장치(입출력장치 등)로 구성. • 소프트웨어 : 컴퓨터가 기능을 수행하는데 필요한 프로그램을 • 총칭. (ex: 운영체제, 각종 응용 프로그램 유틸리티 등) • 응용 프로그램 : 어떤 문제를 해결하기 위해 사용자나 전문가에 • 의해 만들어진 프로그램. (ex: 웹 브라우저, 한글 등의 워드 • 프로세서, 데이터베이스 관리 프로그램, 비디오 게임 등) [그림2-1] 컴퓨터 시스템 구성요소와 운영체제 • 역할 • 컴퓨터 H/W 와 응용 프로그램 간의 인터페이스! • CPU, memory 같은 자원을 관리 • 사용자 편의성

  4. 운영체제의 역할 : 조정, 관리, 제어 • 컴퓨터 자원을 관리한다는 측면에서 아래와 같이 운영체제의 역할을 정리할 수 있다. • 조정자 • 운영체제는 시스템을 운영하여 여러 운영 요소(하드웨어, 소프트웨어(프로그램), 데이터)를 적절하게 사용할 수 있도록 제어한다. • 다른 프로그램이 작업할 수 있는 환경만 제공한다. • 자원 할당자 또는 관리자 • 컴퓨터 시스템이 문제를 해결하는 데 필요한 자원(프로세서 시간, 메모리 공간, 파일 저장 공간, 입출력장치 등)을 할당하는 업무를 한다. • 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 자원을 어떻게 할당할 지를 결정하는 관리자 역할도 수행한다. • 입출력장치와 사용자 프로그램 제어 • 컴퓨터 시스템의 부적절한 사용이나 오류를 방지하기 위해 사용자 프로그램의 실행을 제어. • 입출력장치를 동작시키고 통제한다.

  5. 운영체제의 역할 : 주요기능 사용자들! [그림2-2] 운영체제 역할 • 기능 • 인터페이스: h/w – user • h/w의 자원제어 : sharing! • 사용자들간의 스케쥴링및 자원할당 • I/O 지원 및 오류처리

  6. 운영체제의 역할 : • 운영체제의 역할과 기능이 매우 다양하여 완벽히 정의하기 힘드나, 일반적으로 • “컴퓨터 자원을 통제하고 할당하는 공통 기능을 컴퓨터 소프트웨어 하나로 통합한 것” • 혹은 구체적으로 표현으로 • “컴퓨터 시스템에서 항상 실행되는, 응용 프로그램을 제외한 모든 프로그램 또는 커널(Kernel)”이라고도 정의된다. • ※ 커널(Kernel) • 운영체제의 핵심으로 메모리에 상주하며 운영체제의 다른 부분 또는 응용 프로그램 수행에 필요한 환경을 설정하는 소프트웨어. • 응용 프로그램 실행에 필요한 다양한 서비스를 제공하고 실행되는 프로세스를 스케줄링하는 역할.

  7. 운영체제의 목적 • 2가지의 주요목적을 달성하고 싶었다. • (사용자를 위한 ) 편리성 • 프로그램 사용 및 개발을 위한 편리한 환경.! • (자원관리를 위한) 효율성: 각 프로그램의 유기적으로 결합하도록. • 처리능력 : 시스템의 생산성-단위시간당 처리하는 작업량 • 신뢰도 : h/w( 펌웨어). s/w 가 실패없이 수행하도록. • 응답시간 : 사용자가 시스템에 작업을 의뢰한 후 반응을 얻을 때까지의 시간. • 사용가능도(가동율): 사용자가 컴퓨터를 실제로 사용한 시간 • 고장이나 오류 보수시간 제외!. 시스템을 중단시키지 않고 운영하자.

  8. 운영체제의 목적 : 요약 [그림2-3] 운영체제 목적

  9. 운영체제 기능의 발전 : 초기 환경 • 초기 컴퓨터 시스템 및 환경 • 작업별 처리 시스템 • 저성능, 속도 느림 • 온라인 판독기아 프린터에 의존. • 예) 프로그래머 : 콘솔로 작성  종이테입이나 펀치카드로 저장 카드리더기가메모리에 저장  콘솔에서 실행.! • 프로그램 형태는 2진수 8진수등의 기계어코드로 작성. • 절대주소를 사용했고, 라이브러리 루틴은 없었다. • 프로그래머는 시스템사용을 위해 예약을 했고, 시간내에 끝내지 못하면 다른 사용자에게 사용권 넘기고 대기. • 작업을 빨리 마쳐도 남은 시간은 유휴시간.!

  10. 운영체제의 기능의 발전 • 카드판독기, 라인프린터, 자기 테이프가 보편화 • 어셈블러, 로더, 링커 등의 툴이 개발 • 라이브러리 생성 • 공통기능을 새로 작성할 필요없이 프로그램에 삽입하여 사용한다. • 예) stdio.h, java.io.* 등 • 컴파일러 개발 • 포트란, 코볼, 베이직 등 • 프로그래밍 업무는 쉬워졌으나, 컴퓨터 동작은 복잡해졌다…- • 포트란의 경우 8단계 어셈블리과정이 필요하여, setup 시간이 많아 시간낭비. 오류발생시 처음부터 다시..!

  11. 운영체제의 기능 : 모니터링 5000 [그림2-4] 초기의 일괄 처리 시스템 • 모니터링 • 작업 준비시간의 문제를 해결하여 컴퓨터의 처리율을 높인다. • 방법1: 운용을 위한 전문 오퍼레이터를 고용한다.! • 방법2: 유사작업을 묶어 일괄처리하도록스케쥴링한다.

  12. 운영체제의 기능의 발전 : 자동작업순서 [그림2-5] 제어 카드(작업 제어 언어) 사용 예 [그림2-6] 상주 모니터 영역과 메모리 배치도 • 자동작업순서(Automatic Job Sequencing) • 작업의 중단! • 오퍼레이터는 정상종료인가? 비정상종료인가?를 파악하고 • 프로세스는 쉰다… 할 일은 많은데! • 순서에 따라 다음 작업을 준비하도록 제어.

  13. 운영체제의 기능의 발전 : Offline [그림2-7] 온라인 처리와 입출력장치를 위한 오프라인 처리 • 오프라인 연산(장치들의 독립성) • 일괄처리시스템을 자동작업순서로 전환함으로써 성능은 높였음에도, 종종 유휴시간이 발생. • 왜? 기계적 장치와 전자적 장치간의 속도차! • 초당 수백만개의 명령을 수행하는프로세서 Vs. 초당 17개의 카드를 읽은 리더기.! • 느린 카드판독기와 라인 프린터 자기테이프로 대체 • 카드판독기와 라인프린터는 자기테이프에 복사: Offline • 프로세스가 카드를 직접읽는 대신, 자기테이프를 읽도록구현. 장점은?

  14. 운영체제의 기능의 발전 : 버퍼링 [그림2-8] 버퍼링 • 버퍼링 • 입출력장치의 느린속도를 보완하여 CPU가 노는 시간이 없도록, 바쁘게 움직이도록 수행하는 간단한 방법 : 연산과정과 입출력이 동시에 가능하도록 한다. • 예)프로세서가 어떠한 작업을 처리하기 시작하기 직전, 입력장치는 그 작업에 필요한 다음 입력을 받는다. • 데이터 구성단위인 레코드 수에 따라 성능이 좌우된다.

  15. 운영체제의 기능의 발전 : 스풀링 • 스풀링 • 자기테이프의 문제점 : 테이프의 특성상 프로세서가 다른 부분을 읽고 있는 동안 추가로 기록할 수 없다. • 반면 디스크는 가능하다.! • ‘Simultaneous Peripheral Operation On-Line’: • 디스크를 매우 큰 버퍼처럼 사용하는, 입력장치에서 미리 읽어 출력 장치가 받을 수 있을 때 까지 출력 파일을 저장한다. • 버퍼링vs. 스풀링 • 내부버퍼 - 외부장치 • 한 작업의 입출력을 수행하면서 • 다른 작업의 계산도 가능. [그림2-9] 스풀링

  16. 운영체제의 기능의 발전: 스풀링 • 스풀링 시스템 : 현재는 표준. • 초기에는 NASA의 휴스톤 계산 센터에 부가된 특수 기능이었음. • 별개의 오프라인 장치를 사용, 한 작업의 입출력을 수행하면서 다른 작업의 계산이 가능하고 많은 작업의 입출력과 계산을 함께 할 수 있다. • 작업 풀(Job Pool) 데이터 구조를 제공한다. • 디스크에 읽혀져 실행을 위해 대하는 여러 작업을 수행할 수 있도록 준비, 디스크에 저장된 작업은 프로세서 이용률 향상을 위해 운영체제가 다음 수행할 작업 선택을 돕는다. 예) 프린트 작업 스풀링. • 테이프 스테이징(Tape Staging) : 기존의 테이프 시스템에도 적용. • 자기 테이프의 전체 내용을 이용하기 전 디스크로 읽어 복사된 디스크에서 빠른 속도로 모든 연산이 수행되고 테이프를 사용하지 않는 방법.

  17. 2. 운영체제의 유형별 특징 : 다중프로그래밍 [그림2-10] 다중 프로그래밍 시스템을 위한 메모리 구조 • 발전과정과 용도, 응답시간에 데이터 입력방식에 따라 • 다중 프로그래밍시스템 • 시분할시스템 vs. 작업분할vs일괄처리 • 분산처리 vs. 다중처리 • Sing-user vs. Multi-user • 다중프로그래밍 시스템 : 프로세서가 항상 수행할 작업을 갖도록하자.! • 버퍼링, 스풀링: 입출력장치와 프로세서를 항상 바쁘게 하자. • But, 한계점이 있음(예:single-user) • 작업의 예 1. 운영체제가 메모리에 있는 작업1을 실행한다. 2. 작업1에서 키보드 입력이 끝날 동안, 마냥 기다리지않고 간단히 다른 작업으로 전환-수행한다. 3. 위에서 입력작업이 끝나면 계속해서 작업1을 수행한다. ** 역시 메모리관리, 결정방법에 대한 정책이 필요합니다. • 현대 운영체제의 중심주제 • 인터럽트를 이용한 스케줄링

  18. 운영체제의 유형별 특징 : 시분할 • 시분할 시스템 • 다중 프로그래밍을 논리적으로 확장한 개념으로, 프로세서가 다중작업을 교대로 수행한다. • 프로세서 스케쥴링과 다중 프로그래밍을 사용하여 각 사용자에게 컴퓨터를 시간적으로 분할하여 나누어 주는 효과. • 각 사용자는 메모리에 독립된 프로그램을 갖고, • 프로그램은 입출력을 수행하는 아주 짧은 시간 동안만 실행하는 방식. • 60년 이전에 제안되었으며, 초기 버전은 MIT에서 개발한 CTSS 61년 IBM에 탑재 • 복잡한 방식과 구현비용이 높아 70년초까지는일반화되지 못했다.

  19. 운영체제의 유형별 특징 : 시분할 시스템 • 시분할시스템에서는 • 여러 작업들이 저장되어 있는 경우, 데이터 변경이 동시에 일어나지 않도록 보호해야 함. • 다수의 사용자가 접근하는 파일은 접근권한을 두어 해당사용자 그룹만 접근하도록.! • 공유자원의 경우, 접근순서도 조정할 수 있도록 제어기능이 요구된다.. • 현재의 시스템은 일괄처리방식과 시분할 방식 모두 제공.

  20. 운영체제의 유형별 특징 : 분산처리 [그림2-12] 분산(약결합) 처리 시스템의 구성 예 • 분산 처리 시스템 (Distributed Processing System)  chapter 11 • 시스템마다 각각 운영체제와 메모리를 가지고 독립적으로 운영.! 필요할 때 통신하는 시스템! • 최근의 컴퓨터 환경 : 성능향상 및 신뢰성 등을 위해 여러 개의 컴퓨터에 작업을 분산시켜 연결한 구조. • 분산 시스템 구성 방법 • 강결합(단단히 결합된) 시스템 • 프로세서(처리기)가 기억장치와 클록(Clock)을 공유하며, 공유된 기억장치를 통해 통신. • 약결합(느슨하게 결합된) 시스템 • 둘 이상의 독립된 컴퓨터 시스템을 통신선으로 연결.

  21. 운영체제의 유형별 특징 : 다중처리 • 다중처리 시스템 • 하드웨어 비용이 저렴해짐에 따라 , 마이크로 프로세서 여러 개를 연결해 다중 프로세서를 만든다. • 시스템은신뢰성, 가용성, 컴퓨팅 능력이 증가 • 비용이 큰 초고속 프로세서를 사용하지 않고도 대형컴퓨터에 근접하는 능력을 얻을 수 있다. • 주/종(Master/Slave) 다중처리 시스템– 비대칭구조 • 대칭적 구성 다중처리 시스템

  22. 운영체제의 유형별 특징 : 다중처리 • 마스터프로세서가 주가되어 부가적인 슬레이브 프로세서를 관리하는 단일처리 시스템! • 형태가 단순하지만 마스터 프로세서에 부하가 많아서 신뢰도나 자원사용면에서 비효율적이다. • 모든 프로세스가 동등한 성능일때 최적으로 구현된다. • 교착상태나 기아상태등 프로세서 관리를 위한 동기화 작업의 구현이 매우 어려우나, 약결합시스템보다 신뢰성이 높고 오버헤드를 균형있게 분산할 수 있어 효율적이다. [그림2-13] 대칭적 구성 다중 처리 시스템 [그림2-13] 주/종 다중 처리 시스템 구성

  23. 운영체제의 유형별 특징 : single/multi-user • 단일 사용자 시스템 • 예) 개인 컴퓨터 • 하드웨어 비용이 저렴해짐에 따라 컴퓨터 시스템 하나를 사용자 한 명이 전용하는 것. • 다중 사용자 시스템 • 예) 서버 : 파일공유사이트, 네이버, 다음 등의 포털, • 해당시스템에 여러 사용자가 로그인하여 동시에 사용할 수 있는 작업 환경을 제공 • 최근 사용자의 편리함과 빠른 응답을 제공하기 위해 다중 작업(Multi-Tasking), 다중 사용자(Multi-User) 환경으로 변하고 있다.

  24. 3. 운영체제의 발전과정 운영체제--컴퓨터 구조의 발전 단계 [표 2-1] 운영체제의 발전 과정

  25. 3. 운영체제의 발전과정 : 제 0세대 • 제 0세대 (1940년대) • 초기 시스템에는 운영체제가 없었다.! • 프로그래밍: 사용자가 직접 기계어를 사용해 명령문을 작성 • 카드리더기는 언제작업을 시작하고 종료하는지 • 데이터는 어떻게 해석하는지 • 무엇을 계산하여 결과는 어디에 어떻게, 출력은? • 프로그램을 작성할 때 컴퓨터에 필요한 작업을 모두 포함하고, 모든 명령어를 명시적으로 표현하였다. 기계어로…! • 모든 작업은 예약을 통해 진행되고 컴퓨터는 프로그래머가 메인 콘솔에서 수동으로 운영하였다..

  26. 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. 컴파일러 • 링커와로더로의변환이 원활해짐

  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] 운영체제의 자원 관리 기능

  32. 5. 운영체제 서비스 • 주요 서비스 • 부트스트래핑(부팅) • 사용자서비스 • 시스템 서비스 • 시스템 호출서비스 [그림 2-16] 부트스트래핑 과정 • 기본 서비스: • 프로그램 실행을 위한 환경을 제공하고 프로그램과 사용자에게 정해진 서비스를 제공한다. • 프로그래밍을 위한 편리한 환경도 제공한다.

  33. 5. 운영체제 서비스 • 사용자 서비스 • 목적 : 프로그래밍 작업을 쉽게 수행할 수 있도록. • 사용자 인터페이스의 형태 : Command line, GUI • 프로그램 수행 • 입출력 동작 • 파일 시스템 조작 • 통신 • 오류탐지

  34. 5. 운영체제 서비스 • 시스템 서비스 • 사용자가 아닌 시스템 자체의 효율적인 동작을 보장하는 기능이다. • 다수의 사용자를 위해 컴퓨터 자원을 공유하여 효율성을 높인다. • 자원 할당 • 다수의 사용자나 다수의 작업이 동시에 실행 시 운영체제는 자원을 작업에 할당하여 관리. • 계정 • 계정 정보를 이용해 각 사용자의 시스템 이용 정보를 알 수 있다. • 시스템 사용 통계를 수집하기 위해 보관, 사용자 서비스 개선을 위한 연구 자료로 이용 가능하다. 에) 시스템로그 기록들 • 보호 • 시스템 호출을 위해 전달된 모든 매개변수의 타당성을 검사, 시스템 자원에 모든 접근을 제어하도록 보장한다. • 다중 사용자 컴퓨터 시스템에서 저장된 정보의 소유자는 정보 사용을 제한할 수 있다.

  35. 5. 운영체제 서비스 [그림 2-17] 시스템 호출 구조 • 시스템 호출(System Call) 서비스 : API • 실행 중인 프로그램과 운영체제 간의 인터페이스로, 이를 이용하여 운영체제의 기능을 서비스 받으며,API(Application Programming Interface)라고도 부른다. 예) Win32API, POSIX API, JAVA API..등 • 호출 방법 : 크게 두 가지 • 프로그램에서 명령 또는 서브 루틴의 호출 형태로 실행, 일반적으로어셈블리 명령어로 제공. • 고수준 언어(C, C++)로 작성한 프로그램에서 직접 수행 가능하며, 이때 호출은 미리 정의된 기능이나 서브루틴 호출과 비슷하다. • 시스템에서 명령 해석기를 통해 대화 형태로 호출한다.

  36. 5. 운영체제 서비스 • 종료, 취소, 적재(로드, Load), 수행 • 프로세스 생성, 종료, 속성 획득, 속성 지정 • 대기, 대기 이벤트(Event), 신호 이벤트 • 프로세스 제어 • 파일 조작 • 장치 조작 • 정보 관리 • 통신 • 파일 생성, 삭제, 오픈(Open), 폐쇄(Close), 속성 획득 및 지정 • 읽기, 쓰기, 재배치(Reposition) • 논리적 부착(Logically Attach) • 장치 요구, 해제, 속성 획득 및 설정 • 읽기, 쓰기, 재배치 • 논리적 부착 또는 장치 제거 • 시간과 일자, 데이터의 설정과 획득 • 프로세스, 파일, 장치 속성의 설정과 획득 • 통신 연결의 생성, 제거, 메시지 송수신 • 상태 정보 전달 • 원격 장치의 부착 및 제거 일반적인시스템호출기능

  37. 6. 운영체제 구조 현대 운영체제처럼 크고 복잡한 시스템일 수록, 수정-변경이 용이하도록 설계되어야 한다. 독립적인 기능을 가진 작은 부분으로 분할하여 개발과정을 단순화하고 체계화 한다.  모듈화. 프로그래밍 과정에서도 매우 중요한 요소! • 각 구성요소가 커널과상호접속하는 방법에 따라. • 단순구조 운영체제 • 계층구조 운영체제 • 마이크로 커널 운영체제

  38. 6. 운영체제 구조 : 단순구조 • 단순구조 운영체제 • 작고 간단하며 시스템 기능이 제한됨 - MS-DOS • 구조적이긴 했으나 모듈이 효율적으로 분할되어 있지 않았다. • 초기 유닉스 • 커널과 시스템 프로그램으로 구성 • 커널: OS의 주요기능이 포함되 있으며, 여러 인터페이스와 장치드라이버로 분리되어 있도록 확장. • 단일(Monolithic) 커널 구조의 운영체제는 대부분의 기능이 프로시저들의 집합으로 구현되어 있어직접 통신하여 효율이 높으나 새 기능 추가를 위한 수정과 유지 보수가 매우 어렵다. [그림 2-18] MS-DOS계층 구조 [그림 2-19] 유닉스 운영체제 구조

  39. 6. 운영체제 구조 : 계층구조 [그림 2-20] 계층적 구조 운영체제 [그림 2-21] 운영체제 계층 • 계층구조 운영체제 • 계층구조와 정보의 추상화 개념의 도입 • 유사한 기능을 수행하는 요소를 그룹으로 묶는다. • 최하위계층 : level 0 – 하드웨어 • 최상위계층 : level n - 사용자 인터페이스 • 전형적으로 상위계층에의해 수행될 수 있는 데이터구조와 루틴의 집합으로 구성. • 각 계층은 인접한 계층과 상호작용이 가능하나 요청을 수행하는데 많은 계층을 거쳐야 하므로 성능은 저하된다.

  40. 6. 운영체제 구조 : 계층구조 [그림 2-22] THE운영체제의 계층 구조 [그림 2-23] Venus운영체제의 계층 구조 • 계층 시스템 : 시스템설계나 구현이 단순해짐 • 각 계층은 자신보다 하위 계층이 제공하는 연산을 사용하여 구현한다. • 연산이 어떻게 수행되나?가 아니라무슨일을 하는지! • 캡슐화(정보은닉) : 데이터 구조의 존재와 동작방법 / 상위계층으로 부터 하드웨어들을 숨길 수 있다. • 대표 운영체제 • THE • Venus • OS/2 [그림 2-24] OS/2운영체제의 계층 구조

  41. 6. 운영체제 구조 : 마이크로커널구조

  42. SUMMARY • 운영체제 목적 • 운영체제는 편리성과 효율성의 두 가지 목적을 달성하기 위해 발전해왔다. • 운영체제의 역할 • 운영체제는 조정자, 자원 할당자 또는 관리자, 다양한 입출력 장치와 사용자 프로그램을 제어하는 역할을 한다. • 운영체제 기능의 발전 • 초기의 작업별 처리 시스템은 콘솔을 사용, 소프트웨어를 통해 프로그래밍하는 데 편리함을 제공하였으나, 준비 시간(Set-Up Time)이 많이 필요했다. • 일괄처리 시스템은 상주 모니터를 이용, 자동 작업 순서를 실현하여 컴퓨터 이용률을 전반적으로 높였으나 입출력장치의 느린 속도로 프로세서 이용률이 낮았다. • 이를 위해 버퍼링, 스풀링 기법이 제안되었다. • 다중 프로그래밍과 시분할 시스템 • 다중 프로그래밍은 시스템 전체의 성능을 향상 시키기 위해 프로세서(CPU) 하나가 둘 이상의 프로그램을 처리하는 방식이다. • 시분할 시스템은 프로세서 스케줄링과 다중 프로그래밍을 사용, 각 사용자에게 컴퓨터를 시간적으로 분할하여 제공하며, 다수의 사용자가 컴퓨터를 대화형으로 사용할 수 있다.

  43. SUMMARY • 다중 처리 시스템 • 둘 이상의 프로세서(처리기)가 여러 프로그램을 동시에 처리하는 것으로 신뢰성과 가용성, 컴퓨터 능력 향상 등의 목적을 달성할 수 있다. • 주/종 다중 처리 시스템 구성, 대칭적 다중 처리 시스템이 제안되었다. • 운영체제 발전 과정 • 제 1세대(버퍼링, 스풀링, 일괄 처리 시스템), 제 2세대(다중 프로그래밍, 다중 처리, 시분할 시스템), 제 3세대(범용 시스템, 다중모드 시스템), 제 4세대(네트워크, 가상 머신, 분산 처리, 개인 컴퓨터)로 발전하였다. • 운영체제 기능 • 자원 관리, 시스템 보호, 네트워킹, 명령 해석기 시스템 관리 등의 기능을 수행한다. • 운영체제 서비스 • 부트스트래핑 서비스, 사용자 서비스, 시스템 서비스, 시스템 호출 서비스 등을 제공한다. • 단순 구조 운영체제 • 시스템 호출 계층은 프로세스 제어, 파일 및 장치 처리와 같은 기본적인 기능을 제공한다. • 시스템 서비스는 프로그램 제어, 자원 할당, 보호 등의 다양한 형태로 분류할 수 있다.

  44. SUMMARY • 계층적 구조 운영체제 • 유사한 기능을 수행하는 요소를 그룹으로 묶어 최하위 계층(layer 0)인 하드웨어에서 최상위 계층(layer n)인 사용자 인터페이스에 이르는 다수의 계층(수준)으로구성된다. • 시스템 설계나 구현이 단순해지고 시스템 검증과 오류 수정이 쉽다. • 마이크로 커널 구조 운영체제 • 커널의 최소 기능만 내부에 포함, 커널의 크기를 대폭 축소하고 나머지 기능은 사용자 공간으로 이전하여 사용자 영역에서 수행되는 서버로 구현한다.

More Related