준코딩

운영체제 구조 본문

CS/운영체제

운영체제 구조

Ljunhyeob - App Dev 2019. 1. 21. 17:13

운영체제 서비스

  • 사용자 인터페이스(User Interface): 거의 모든 운영체제는 사용자 인터페이스를 제공한다.
  • 프로그램 실행: 프로그램을 메모리에 적재해 실행할 수 있어야 한다. 정상적이든 비정상적이든 실행을 끝낼 수 있어야 한다.
  • 입출력 연산: 실행 중인 프로그램은 입출력을 요구할 수 있다.
  • 파일 시스템 조작: 파일 생성, 삭제할 수 있으며, 지정된 파일을 찾을 수 있어야 하고 파일의 정보를 열거할 수 있어야 한다.
  • 통신: 한 프로세스가 다른 프로세스와 정보를 교환이 가능해야 한다.
  • 오류 탐지: 모든 가능한 오류를 항상 의식하고 있어야 한다. 운영체제는 올바르고 일관성 있는 계산을 보장하기 위해 각 유형의 오류에 대해 적당한 조치를 취해야 한다.
  • 자원 할당: 다수의 사용자나 다수의 작업들이 동시에 실행될 때 그들 각각에 자원을 할당해야 한다.
  • 회계: 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 관리 해야 한다.
  • 보호와 보안: 여러 프로세스가 동시에 실행될 때 한 프로세스가 다른 프로세스나  운영체제 자체를 방해해서는 안 된다. 보호는 시스템 자원에 대한 모든 접근이 통제되도록 보장하는 것을 포함한다. 보안은 각 사용자가 자원에 대한 접근을 허가받기 위해 통상 패스워드를 사용해서 시스템에게 자기자신을 인증하는 것으로부터 시작한다.



사용자 운영체제 인터페이스


  • 명령어 라인 인터페이스 또는 명령어 해석기를 제공
  • 명령어 라인 인터페이스는 사용자가 운영체제가 실행할 명령어를 직접 입력할 수 있도록 한다.
  • 사용자가 그래피컬 사용자 인터페이스(GUI)를 통하여 운영체제와 접촉하게 하는 것.


명령어 해석기:  셸(shell) 이라고 한다. 사용자가 지정한 명령을 가져와서 그것을 실행하는 것. 즉, 생성, 삭제, 리스트, 프린트, 복사, 실행 등을 한다.


그래피컬 사용자 인터페이스(Graphical User Interface) : 기본화면(데스크톱) 은유를 채용한다. 명령어를 직접 입력하는 것이 아니라 GUI가 마우스를 기반으로 하는 윈도 메뉴 시스템을 제공한다.



시스템 호출(System Calls): 운영체제가 제공하는 서비스에 대한 인터페이스를 제공한다. 특정 저수준 작업은 어셈블리 명령을 사용하여 작성되어야 하더라도 이러한 호출은 일반적으로 C와C++  언어로 작성된 루틴 형태로 제공된다.


시스템 호출의 유형

  • 프로세스 제어: 실행중인 프로그램ㄹ은 실행을 정상적 또는 비정상적으로 끝낼 수 있어야 한다. 프로그램에 문제가 발생해 오류 트랩을 유발할 경우, 문제의 원인을 결정하기 위해 디버거에 의해 검사될 수 있다.
  • 파일 관리: 파일을 생성 하고 삭제할 수 있어야 한다. 파일을 열고 사용가능, 읽고, 쓰고, 그리고 위치 변경을 할 수 있다.
  • 장치 관리: 자원 요구/반납/읽기/쓰기/위치 변경
  • 정보 유지보수: 시간, 날짜, 시스템 데이터, 프로세스/파일/장치 속성
  • 통신:  -통신 열결 생성/삭제
            -메시지 송신, 수신, 상태 정보 전달
            -원격 장치 부착/분리
  • 보호: -역사적으로 다중 사용자/다중 프로그램 환경에서 고려됨
            -네트워크와 인터넷 연결로 모든 컴퓨터 시스템에서 보호를 고려해야 함
            -자원 접근 제어 - 허가권 설정

시스템 프로그램: 프로그램 개발과 실행을 위해 편리한 환경을 제공하는 프로그램

  • 파일관리

  • 상태 정보

  • 파일 변경

  • 프로그래밍 언어 지원

  • 프로그램 적재/실행

  • 통신

  • 서비스, 데몬, 서브시스템: 시스템이 정지할 때까지 특정 서비스 제공을 위하여 백그라운드로 계속해서 실행되는 프로세스.

응용 프로그램: 일반적인 문제 해결이나 연산 처리에 유용한 프로그램



운영체제의 설계와 구현


  • 설계 목표와 명세정의
    -하드웨어와 시스템 유형의 선택에 영향 받음
  • 설계 목표
    -사용자 목표: 사용하기 쉽고, 배우기 쉽고, 신뢰성 있고, 안전하고, 빠름
    -시스템 목표: 설계, 구현, 유지 보수가 쉽고 유연성, 신뢰성, 무오류, 효율적이어야 한다
    -요구 조건은 애매하고 다양하게 해석될 수 있으며, 일반적으로 합의된 사항은 없다.
  • 운영체제의 설계 및 구현
    -모든 요구 조건을 해결하는 완전한 해결책은 없지만, 성공이 입증된 접근법은 있다.
    -소프트웨어 공학에서 개발된 일반적인 원칙을 사용
    -내부 구조는 운영체제마다 다를 수 있다.


운영체제 구조
  • Microkernel
    -필수적이 아닌 구성 요소를 커널에서 모두 제거하고 시스템 및 사용자 수준 프로그램으로 구현함
    @장점: 확장이 용이 - 새로운 서비스는 사용자 공간에 추가
              높은 신뢰성과 보안성-> 커널 모드에서 수행되는 코드가 적고 대부분 사용자 프로세스로 실행
    @단점: 시스템 함수 오버헤드 - 사용자 공간과 커널 공간 간의 통신 오버헤드
  • Simple Structure
    -monolithic 구조 : 많은 기능들이 하나의 계층으로 구현됨
    -monolithic 구조의 장단점
    @장점: 성능(커널 내부 통신 오버헤드가 거의 없음)
    @단점: 구현과 유지보수가 어려움
  • -많은 상용 운영체제가 잘 정의된 구조를 갖지 않음



  • Layered Structure
    -운영체제가 여러 계층으로 구분됨
    -각 계층은 하위 계층 위에 구축됨






운영체제 생성

  • 운영체제 구성
    -운영 체제는 다양한 구성을 가진 모든 종류의 시스템에서 실행되도록 설계되었다.
    -운영 체제는 특정 컴퓨터를 위해 구성 되어야 함
  • 운영체제 생성
    -운영체제 배포: 디스크, CD-ROM, DVD-ROM, ISO image 형태
    -하드웨어 구성 정보: 파일을 읽거나, 직접 하드웨어를 검사하여 얻음(CPU type, memory size, OS option)
    -운영체제 3가지 생성 방법
        -소스코드 수정 후 완전히 다시 컴파일
        -구성 테이블 생성->미리 컴파일된 라이브러리에서 필요한 모듈 선택 후 링크
        -완전한 테이블 방식 - 모듈 선택이 실행 시에 일어남



시스템 부트

  • Bootstrapping(booting)
    -커널을 적재하여 컴퓨터를 시작하는 절차
  • Bootstrap loader
    -커널을 찾아서 메모리에 적재하고 수행을 시작하는 일을 하는 ROM에 저장된 코드
    -대개 시스템을 진단하는 작업을 수행하고, 시스템 전체를 초기화 한 후에 운영체제를 시작시킴
  • Firmware
    -bootstrap 코드의 변경이 가능하도록 ROM대신 EPROM에 저장함
    -하드웨어와 소프트웨어의 중간 특성을 가져서 firmware라고 부름


'CS > 운영체제' 카테고리의 다른 글

보안  (0) 2019.04.09
주 메모리 & 가상 메모리  (0) 2019.03.29
보안 Security  (0) 2019.03.29
운영체제 서론2  (0) 2019.01.11
운영체제 서론1  (0) 2019.01.10
Comments