Home OS - 시스템 구조
Post
Cancel

OS - 시스템 구조

시스템 구조

  1. 운영체제 서비스
  2. 시스템 호출
  3. 시스템 호출의 유형
  4. 시스템 프로그램
  5. 운영체제 설계 및 구현
  6. 운영체제 구조

운영체제 서비스


운영체제는 프로그램의 실행 환경을 제공한다.

운영체제가 사용자에게 제공하는 서비스의 종류

  • 사용자 인터페이스(User Interface)
    • Command Line Interface(CLI)
    • Graphical User Interface(GUI)
    • Batch Interface(BI)
      • 명령어와 명령어를 제어하는 디렉티브가 파일형태로 입력되어 그 파일이 실행되는 구조
  • 프로그램 수행(Program Execution)
    • OS는 프로그램을 메모리에 적재하여 실행할 수 있어야 함
    • OS는 프로그램을 정상적이든 비정상적이든 실행을 끝낼수 있어야 함
  • 입출력 연산(I/O Operations)
    • OS는 수행중인 프로그램에게 파일, 다양한 입출력 장치등과 연관된 입출력을 요구할 수 있음
  • 파일 시스템 조작(File System Manipulation)
    • OS는 프로그램에게 파일을 생성하고 삭제할 수 있고 지정된 파일을 찾을수 있어야 하며 파일의 정보를 얻을 수 있어야 함
    • OS는 프로그램에게 파일 소유권에 기반을 둔 권한 관리를 이용하여 파일이나 디렉토리의 접근을 허가하거나 거부할 수 있어야 함
  • 통신(Communication)
    • OS는 한 프로세스가 다른 프로세스와 정보를 교환할 수 있도록 환경을 제공하여야 함
      • 공유메모리(Shared Memory) 통해 프로세스간 통신
      • 메시지 전달(Message Passing) 은 정보의 패킷들이 OS에 의해 프로세스 사이를 이동
        EX) pipe, queue, socket
  • 오류 탐지(Error Detection)
    • OS는 모든 가능한 오류를 항상 의식하고 있어야 함
      • 오류는 CPU, 메모리 하드웨어, 입출력 장치 또는 사용자 프로그램에서 일어날 수 있음
figure_2.1.1
운영체제 서비스의 관점

컴퓨터 시스템의 동작을 위한 운영체제의 기능

  • 자원 할당(Resource Allocation)
    • 다수의 사용자나 다수의 작업들이 동시에 실행될 때, 그들 각각에게 자원을 할당해 주어야 함
  • 회계(Accounting)
    • OS는 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 사용하고 있는지 추적할 수 있어야 함
  • 보호와 보안(Protection and Security)
    • OS는 시스템 자원에 대하여 모든 접근이 통제 될수 있도록 보장하여야 함
    • OS는 외부로부터 시스템이 보호디고 보안이 유지되도록 하여야 함

시스템 콜 (System Call)


시스템 콜(System Call) 은 OS에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다. 또한 일반 프로세스와 OS가 통신하기 위한 유일한 방법이다.

figure_2.2.1
시스템콜의 사용예

각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이 번호에 따라 색인되는 테이블을 유지한다. 시스템 콜 인터페이스는 의도하는 시스템 콜을 부르고 시스템 콜의 상태와 반환 값을 리턴한다.

figure_2.2.2
open() 시스템콜을 호출한 사용자 프로그램의 처리
figure_2.2.3
테이블로 매개변수 전달

OS에 매개변수를 전달하기 위해 세가지 일반적인 방법을 사용한다.

  • 매개변수를 레지스터에 전달
  • 매개변수는 메모리 내의 블록이나 테이블에 저장하고, 블록의 주소가 레지스터 내에 매개변수로 전달
    • Block Method
  • 매개변수는 프로그램에 의해 스택(Stack) 에 넣어질(Push) 수 있고, OS에 의해 꺼내진다(Pop).
    • Stack Method

시스템 콜의 유형


시스템 콜은 크게 다섯가지로 분류 될 수 있다.

  • 프로세스 제어 (Process Control)
    • 끝내기(end), 중지(abort)
    • 적재(load), 수행(execute)
    • 생성(create), 종료(terminate)
    • 프로세스 속성(attributes) 획득, 프로세스 속성(attributes) 설정
    • 시간을 기다림
    • 사건을 기다림(wait event), 사건을 알림(signal event)
    • 메모리 할당 및 자유화
  • 파일 조작 (File Manipulate)
    • 생성(create), 삭제(delete)
    • 열기(open), 닫기(close)
    • 읽기(read), 쓰기(write), 위치 변경(reposition)
    • 파일 속성 획득 및 설정
  • 장치 관리 (Device Management)
    • 장치 요구(request), 장치 방출(release)
    • 읽기(read), 쓰기(write), 위치 변경(reposition)
    • 장치 속성 획득 및 설정
    • 장치의 논리적 부착(attach) 및 분리(detach)
  • 정보 유지 (Information Maintenance)
    • 시간과 날짜의 설정과 획득
    • 시스템 데이터의 설정과 획득
    • 프로세스, 파일, 장치 속성의 획득 및 설정
  • 통신 (Communication)
    • 통신 연결의 생성, 제거
    • 메시지의 송신, 수신
    • 상태 정보 전달
    • 원격 장치의 부착(attach) 및 분리(detach)
figure_2.3.1
Windows와 UNIX 시스템 콜의 예
figure_2.3.1
표준 C 라이브러리의 예
figure_2.3.2
멀티 프로그램을 수행하는 FreeBSD

운영체제 설계 및 구현


설계 목표

OS를 설계하기 이전에, 시스템의 목표, 명세, 요구사항들을 근본적으로 사용자의 목적과 시스템 목적 두가지로 기본 그룹으로 나눈다.

사용자들이 시스템에 대하여 기대하는 특징은 대게 사용하기 쉽고, 배우기 쉽고, 믿을 수 있고, 안전하고, 신속해야 한다는 점이다. 이에 유사하게 시스템을 설계, 생성, 유지, 조작해야 하는 사람들에게도 비슷하게 정의될 수 있는데, OS는 설계, 구현, 유지 보수가 쉬워야 하며 또한 적응성, 신뢰성, 무오류, 효율성을 가져야 한다는 점이다.

기법과 정책

한가지 중요한 원칙은 기법(Mechanism) 으로부터 정책 을 분리하는 것이다. 기법은 어떤 일을 어떻게 할 것인가를 결정하는 것이고, 정책은 무엇 을 할 것인가를 결정하는 것이다.

운영체제 구조


일반적인 접근 방법은 한 개의 일관된 시스템 보다는 태스크를 작은 구성요소로 분할하는 것이다.

간단한 구조(Simple Structure)

figure_2.6.1
MS-DOS의 계층 구조
figure_2.6.2
전통적인 UNIX 시스템의 구조

계층적 접근(Layered Approach)

시스템은 다양한 방식으로 모듈화 될 수 있다. OS를 여러개의 계층으로 나누어 구별하는 방식.

figure_2.6.2
계층구조의 운영체제

각 층은 자신보다 하위 수준의 층에 의해 제공된 연산만 사용해 구현한다.

계층적 접근 방법의 가장 어려운 점은 여러 층을 적절히 정의하는 것이다.

마이크로커널(Microkernels)

모든 중요하지 않은 구성 요소를 커널로부터 제거하고, 그들을 시스템 및 사용자 수준의 프로그램으로 구현하여 OS를 구성하는 방법

figure_2.6.3
일반적인 마이크로 커널의 구조

마이크로커널의 단점중 하나는 가중된 시스템 기능 오버헤드 때문에 성능이 나빠진다는 점이다.

모듈(Modules)

OS 설계하는데 이용되는 최근 기술에는 적재가능한 커널 모듈(Loadable Kernel Modules) 기법이다. 커널은 핵심적인 구성요소의 집합을 가지고 있고 부팅 때 또는 실행 중에 부가적인 서비스들을 모듈을 통래 링크한다.

커널의 각 부분이 정의되고 보호된 인터페이스를 가진다는 점에서 계층구조와 닮았지만, 모듈에서 임의의 다른 모듈을 호출할 수 있다는 점에서 보다 유연하다.

figure_2.6.4
Solaris 적재가능 모듈
This post is licensed under CC BY 4.0 by the author.