Steady Blog

Chpater 02. Operation System Structures 본문

임시 자료/운영체제

Chpater 02. Operation System Structures

우유먹고쑥 2014. 9. 5. 05:46

1. Opertation System Services


  • 운영체제는 프로그램의 실행 환경을 제공하면서 프로그램과 프로그램 사용자에게 서비스를 제공한다.
    • 사용자 인터페이스 ( User Interface ) : 거의 모든 운영체제는 UI를 가지고 있으며, CLI(CommandLine Interface), GUI( Graphics User Interface ), Back Interface가 있다.
    • 프로그램 실행 ( Program execution ) : 시스템 프로그램을 메모리에 적재하여 실행할 수 있어야 하며 정상적이든 비정상적이든 실행을 끝낼수 있어야 한다.
    • 입출력 연산( I/O operation ) : 수행 중인 프로그램은 입출력을 요구할 수 있으며, 이러한 입출력에는 파일, 입출력 장치가 연관될 수 있다.
    • 파일 시스템 조작 ( File-System manipulation ) : 프로그램은 이름에 의해서 파일의 생성, 삭제 검색, 정보 조회가 가능해야 한다.
    • 통신 ( Communication ) : 동일한 컴퓨터 혹은 네트워크로 연결된 다른 시스템의 프로세스들 끼리 정보를 교환할 수 있다. 통신의 방법은 Message Passing 이나 Shared Memory 등이 있다.
    • 오류 탐지 ( Error detection ) : 운영체제는 발생 가능한 모든 오류를 의식하고 있어야 한다.


  • 운영체제는 사용자와 프로그램에게 제공되는 서비스 외에도 시스템의 효율적인 동작을 위한 서비스도 제공한다.
    • 자원 할당 ( Resource allocation ) : 다수의 사용자, 다수의 작업들이 동시에 시행될 때 그 동작들에게 자연을 적절하게 할당한다.
    • 회계 ( Accounting )  : 사용자들이 어떤 종류의 자원을 얼마나 많이 쓰고 있나 관리하고 기록, 통계를 낼 수 있다.
    • 보호와 보안 ( Protection and Security ) : 전체 시스템의 자원에 대한 모든 권한이 통제되는 것을 보호라고 하고 비밀번호를 기반으로 접근 권한을 인증하는 것을 보안이라 한다.


2.  User Interface

  • CLI (Command Line Interface ) : 

    • 명령어 해석기를 통해 사용자와 시스템간의 대화가 이루어 지는 방식으로 커널안에 명령어 해석기를 포함하고 있는 운영체제도 있고, 명령어 해석기를 시스템 시작시 명령어 실행되는 프로그램으로 취급하는 경우도 있다.

    • Unix의 명령어 해석기 : 다양한 명령어 해석기를 제공하는 운영체제로 이를 쉘 ( Shell ) 이라고 부른다.

  • GUI ( Graphics User Interface ) :

    • 마우스를 기반으로 하는 윈도우 메뉴 시스템을 제공한다.

    • 많은 시스템이 명령어 라인과 그래픽 인터페이스를 함께 제공한다.

3. System. Calls
  • System Calls : 운영체제에 의한 실행 가능한 서비스의 인터페이스를 제공한다. 어셈블리어나 고급언어로 작성된다.
    대부분의 사용자는 API를 통해 System Call 한다. -> API를 이용하기 때문에 프로그램의 호환성을 높일수 있다.

  • System Call Implementation


  •  System call 에는 번호가 할당되어 이 번호에 따른 Table을 유지한다.
  • User application 이 Open() 이라는 시스템 콜을 실행 할 경우, 해당 API를 실행한다. 그리고 이 API는
    해당 System Call을 실행하기 위해 System Call number를 저장하고 있는 Table을 찾아가 원하는 System Call number를 찾아 주소 정보를 얻는다. 이 주소를 찾아가 원래의 System Call을 실행하고 Return 값을 얻어서 이 값을 다시 API로 보낸다.
    이 API 또한 얻어낸 Return 값을 User Application에 return 한다.


  • Parameter passing of System Call Parameter
    • 파라미터 값을 레지스터로 바로 전달한다.
    • 파라미터를 메모리에 있는 테이블에 저장하고 이 테이블의 주소를 레지스터에 전달한다.
    • 프로그램이 Stack에 Push()하고 운영체제가 Pop()한다. (UNIX)
  • Type of System Call
    • 프로세서 제어  : 끝내기, 중지, 적재, 실행 등등
    • 파일 조작        : 생성, 삭제, 열기, 닫기, 읽기 등등
    • 장치관리         : 요구, 방출, 읽기, 쓰기
    • 정보유지         : 시간, 날짜
    • 통신               : 연결, 생성, 제거, 메세지 송수신


4. Operating System Design and Implementation
    • 메커니즘과 정책을 분리해서 설계해야 한다. 정책이 나중에 바귀면 최대한의 유연성을 가지기 때문이다.
    • 메커니즘 : 어떤일을 어떻게 할것인가 ex) CPU보호기법은 Timer로
    • 정책       : 무엇을 할 것인가? ex) Timer Out 시간 결정
    • 정책은 변할 수 있지만 메커니즘은 바뀔 수 없다. ( 매개변수가 정책에 해당 )
5. System Structures
    • Simple Structures
      • MS - Dos : 단지 몇 사람들에 의해서 구현된 운영체제로 최소한의 하드웨어에서 최대의 성능을 가져야 하기 때문에 모듈로 분할 되지 않았다. -> 모놀리식( Monolithic )  구현
      • 하지만 이런 구성으로 인해 사용자가 커널에 접근이 가능하며 문제가 발생할 경우 시스템 전체에 영향을 줄수 있다.
    • Layered Approach Structures
      • 모듈화가 잘 되있어 내부 시스템의 변경이 자유롭다.
      • 자신보다 하위계층에 의해 제공되는 연산들만 사용가능하다.
        -> 디버깅이 단순화 된다. 정보 은폐가 용이하다.
      • 하지만 계층간의 오버헤드가 존재하므로 층을 효율적으로 나눠야 한다.
    • Micro kernel Structures
      • 커널의 중요하지 않은 요소를 시스템 및 사용자 수준 프로그램으로 구현해서 커널의 크기를 줄인다.
        -> Micro + Kernel의 의미
      • 클라이언트 프로그램과 사용자 공간에서 수행되는 서비스간의 통신은 Message Passing 을 통해 수행된다.
      • 장점 : 운영체제의 확장이 용이하다. 서비스의 확장은 사용자 공간에서 행해지기 때문에 용이하다.
         대부분의 서비스가 사용자 공간이기 때문에 신뢰성, 보안성이 있다.
      • 단점 : 오버헤드 발생, 새로운 모델 구축의 비용이 비싸다.


6. Moudles 의 최근

  • 객체 지향 프로그래밍 기법을 사용한다.
    -> 커널은 핵심적인 구성요소만 갖고 부팅 때 또는 실행중에 부가적인 서비스를 링크한다. ( Unix의 추세 )
  • 핵심 서비스를 제공할 수 있게 할 뿐 아니라 특정 기능을 동적으로 구현 가능하게 한다.
  • Layered Approach 와 유사 : 커널의 각부분이 정의되고 보호된 인터페이스를 가지는 점이 Layered Approach와 유사하지만 모듈이 다른 모듈을 호출 가능하다는 점이 더 유연하다고 볼 수 있다.


7. Hybrid Systems

  •  현대 운영체제는 실제로 하나의 순수모델을 갖고 있지 않고 다양한 접근방법을 경합한 형태이다.
  • Linux, Solaris : 커널이 Momonolithic이지만 모듈러 방식을 추가
  • Windows        : monolithic 이지만 Micro Kernel 방식을 추가


8. Virtual Machines

  •  일반적으로 하드웨어와 커널은 각기 다른 레벨에 있다. 하지만 시스템 프로그램이 다른 레벨로 구별하지 않고 사용할 수 있다면 시스템 프로그램은 하드웨어와 System Call을 같은 레벨에 있는 것처럼 다룰 수 있다. 가상머신은 하드웨어와 운영체제를 하드웨어처럼 다루며 인터페이스를 제공한다. 운영체제는 하나의 프로세스가 자신의 메모리와 프로세서를 가지고 있는 것과 같은 환상을 만들어 낸다.
  • 장점 :
        - 가상기계는 다른 모든 가상 기계로부터 완전히 격리되며 보안상 문제가 없다.
           => 자원 또한 직접 공유하지 않는다.
        - 연구와 개발의 완벽한 도구가 된다.
        - 비용이 절감된다.
  • 단점 :
        - 구현이 어렵다
  • VMWARE - 가상머신의 대표적인 툴 중의 하나이다.
    •  장점 :
          - 호환성  : x86 컴퓨터에서 실행할 수 있는 모든 소프트웨어를 실행 할 수 있다.
          - 격리     : 상호가 완전히 분리된 형태를 갖는다.
          - 캡슐화  : 이동성, 관리 용이성
          - 독립성  : 물리적 하드웨어와 완전 독립된다.



참조 및 출처 : http://gudghks0825.blog.me/140211262644