[운영체제]2. 운영체제 구조

sai06266·2023년 8월 31일
0

운영체제

목록 보기
2/8

Operating System Service

운영체제는 사용자에게 다음과 같은 서비스를 제공한다.

  • 유저 인터페이스
    • Command Line Interface(CLI), Graphics User Interface(GUI)
  • 프로그램 실행
    • 프로그램을 메모리에 로드, 실행, 종료함.
  • I/O 작동
    • 키보드/마우스로부터 입력을 받아 모니터/프린터로 출력을 함.
  • 파일 시스템 관리
    • 파일과 디렉토리를 읽고/쓰고/생성하고/삭제하고/검색함.
  • 커뮤니케이션
    • 프로세스들간에 정보를 교환한다.
  • 에러 탐지
    • 하드웨어
    • I/O 장치
    • 유저의 프로그램

효율적인 시스템 작동을 위한 운영체제의 기능들

  • 자원 할당
    • 여러 유저나 멀티 테스킹
    • cpu 사이클, 메모리, 저장 장치, 입출력 장치
  • 계산
    • 어떤 유저가 어느 만큼 어느 종류의 자원을 사용하는지
  • 보호와 보안
    • 시스템 자원으로의 접근을 컨트롤
    • 유저 허가
    • 부적절한 접근시도로부터 방어

Operating System User Interface

  • Command Line Interface(CLI)
    • 키보드 기반의 인터페이스
    • 명령어 실행
    • 유저가 명령어를 외워야함.
  • Graphic User Interface(GUI)
    • 마우스 기반의 인터페이스

    • 유저친화적인 인터페이스를 제공

      • 윈도우, 메뉴 시스템
      • 아이콘이 파일, 프로그램 등을 제공
  • CLI VS GUI
    • 개인의 선호에 따라 선택
    • 현대의 운영체제는 둘다 제공

System Calls

시스템 콜

  • 운영체제가 제공하는 인터페이스
  • 어떻게 프로그램이 운영체제로부터 서비스를 요구하는지
  • 프로세스와 운영체제간에 필수적인 인터페이스를 제공

API

Application Program Interface(API)

  • 응용 프로그래머가 사용할 수 있는 일련의 기능
  • 가장 흔한 API
    • Win32 API for Windows
    • POSIX API for POSIX-based systems(유닉스, 리눅스)
    • Java API for the Java virtual machine
  • 왜 시스템 콜보다 API를 사용하는가?
    • 이식 가능성
    • 사용하기 쉬움
  • 프로그래머는 시스템 콜 실행을 알 필요가 없다.
    • 단지 API를 따르고, 운영체제가 하는 일을 이해하면 된다.
    • 운영체제의 디테일은 API에 의해 프로그래머에게서 숨겨져있다.

System call handling 시스템 콜 처리


유저가 해당 함수를 호출하면,
라이브러리에서 시스템 콜의 주소를 파악하고,
시스템 콜을 수행하고 다시 돌아온다.

System Call Parameter Passing

  • 때때로 시스템콜 식별자보다 많은 정보가 요구될 수 있다.
  • 운영체제에서 사용하는 3가지의 방법
    • 매개변수를 리지스터로 전달
    • 매개변수를 메모리에 있는 테이블에 저장, 테이블의 주소를 리지스터에 전달
    • 매개변수를 프로그램에 있는 스택에 저장, 운영체제에 의해 pop off

Types of System calls

  • 프로세스 관리
    • 생성/종료, 로드/실행, wait/signal event
  • 파일 관리
    • 생성/삭제, 열기/닫기, 읽기/쓰기
  • 메모리 관리
    • 메모리 할당
  • 정보 유지
    • get/set timer or date, get/set process, file or device attributes
  • 커뮤니케이션
    • 연결 생성/삭제, 메세지 발송/수신

Operating System Design and Implementation

운영체제 디자인과 실행

  • 디자인 목표
    • 하드웨어와 시스템 타입의 선택

      • batch, time sharing, single/multi user, real-time
    • 요구사항

      • 유저 입장 -> 사용하기 쉽게, 신뢰성, 안전하고 빠르게
      • 시스템 입장 -> 디자인하기 쉽게, 실행 및 유지 쉽게
  • 정책을 매커니즘으로 부터 분리
    • 매커니즘: 어떻게 어떤 것을 할 것인가?
    • 정책: 무엇을 할 것인가?
  • 실행
    • 과거에는 어셈블리어로 작성

    • 현재는 고급 언어로 작성됨. C, C++

      • 리눅스, 윈도우
      • 느려진 속도, 큰 저장 장치
      • 읽기 쉽고, 이식성이 높음
    • 운영체제의 수행

      • 자료구조와 알고리즘이 매우 중요하다.

Operating System Structures

  • 심플한 구조
    • 인터페이스와 기능성의 단계가 잘 구분되어있다.
    • 어플리케이션이 입출력 루틴에 직접 접근할 수 있다.
    • 어플리케이션에 오류가 나면 전체 시스템이 붕괴된다.
    • MS-DOS, early UNIX
  • 계층 구조
    • 운영체제는 층으로 나뉘어 있다.
    • 바닥 층(layer 0)이 하드웨어
    • 가장 높은 층(layer N-1)이 유저 인터페이스
    • 디버그하기 쉽지만, 층을 정의하는 것이 어렵고 효율적이지 않다.
  • 마이크로커널 구조
    • 커널에서부터 유저 공간까지 움직인다.
    • 확장이 쉽고, 이식이 쉽다.
    • 안정적이고 보안이 좋다.
    • 수행 능력이 떨어진다. ->유저 모듈과 커널이 자주 커뮤니케이션을 하기 때문
  • 모듈 구조
    • 현대의 운영체제 시스템은 커널을 모듈처럼 실행한다.
    • 객체 지향의 접근을 사용
    • 각각의 코어 요소들은 구분되어 있다.
    • 각각은 알려진 인터페이스를 통해 정보를 나눈다.
    • 각각은 필요할때 커널로부터 불러온다.
    • Solaris, Linux, Mac OS X

System Boot

커널을 어떻게 로드하는가?

  • 부트로더
    - 진단을 하고, 시스템을 시작한다.
    • 커널을 위치시키고, 메모리에 불러오고 시작한다.
  • 작은 시스템의 경우
    - 부트로더와 운영체제를 ROM에 저장한다.
  • 큰 시스템의 경우
    - 부트로더를 ROM에 운영체제를 디스크에 저장한다.

0개의 댓글