Operating System Ch 02

LeemHyungJun·2022년 9월 21일
0

Operating System

목록 보기
2/14
post-thumbnail

운영체제 수업 + Operating System Concepts 10E 정리 내용

Operating System Ch02 : Operaing System Structures

Operating System Services

1. Operating System Services

  • services : 컴퓨터가 제대로 작동하는데 필수적으로 필요한 것
  • system call : function 형태로 제공
    -> OS를 메모리 위로 올리는 작업
  • services + system call = kernel

2. User interface service

  • Command-Line Interpreter
    • shell : 유닉스 계열에서 CLI 부르는 이름 (kernel을 보호하는 역할)
    • bourne shell : 솔라리스
    • bash(bourne again shell) : 리눅스
  • Graphical user interface (GUI)
    • input이 키보드나 마우스
    • ex) Mac OS
  • Touch screen interface
    • input이 터치
    • ex) iPhone

3. System programs

  • system programs : 사용자가 개발자임을 가정하고 제공하는 것들
  • File manipulation: 파일과 디렉토리를 생성, 삭제, 복사, rename, 인쇄, 덤프, 리스트 실행 등
  • Status information somtimes stored in a file modification
  • Programming language support
    • compiler
      • unix계열의 OS는 기본 gcc컴파일러를 제공한다.
      • window는 없다.
  • Program loading and execution: 프로그램이 어셈블되거나 컴파일 된 후 실행되기 위해서 메모리에 올라가야 한다. (by system loader)
  • Communication: 프로그램은 프로세스, 사용자, 다른 컴퓨터 시스템들 사이에 가상 접속을 이루기 위한 기법 제공
  • Background services
  • General purpos OS : mac, window (application programs에 따라 다른 목적으로 사용된다)

4. Linkers and Loaders

  • cf) 컴파일 과정
    1) 텍스트 형식으로 소스코드를 작성
    2) 컴파일러에 소스코드를 집어 넣음
    3) 전처리기와, 컴파일러가 처리 : 소스코드 하나당 하나의 오브젝트 파일 생성
    4) 링커의 라이브러리 처리 : 실행가능한 exe를 만든다
    5) 운영체제의 loader가 메모리에 대한 요구를 하고 해당 프로그램을 로드한다.
  • Static linking : linking하고자 하는 동작의 body를 가지고 호출할 때(linkning해야 할 때마다) body가 직접 메모리를 차지하는 방식
    -> body가 클수록 메모리 낭비가 커진다.
  • Dynamic linking : system library를 os가 관리할 수 있는 형태로 바꾸어서 어딘가에 넣어두고, linking 이 필요한 경우 넣어둔 곳에 가서 처리한 후 돌아오는 방식
    -> 기본적으로 사용하는 linking
    -> window : .dll
    -> linux : .sa .so

5. System call service

  • 예시
    1) 웹 서버에서 요청이 들어옴
    2) 요청 처리를 위해서 파일을 read() 해야함
    3) trap 발동
    4) os가 cpu위로 올라옴
    5) read의 대응하는 handler 작동
    6) 처리
    7) 처리가 끝났음을 알려줌
  • system call의 파라메터 구성
    • fd (File descriptor) : 디스크 정보를 저장
    • *buf : 버퍼 사이즈
    • count : 정상적으로 읽은 데이터의 크기
  • Handling in OS
    • 많이 쓰는 IO관련 system call : open, read, write, close
    • 위의 system call들을 테이블로 만들어서 trap이 발동할 때 어떤 작업을 해야하는지 저장해둔다.
    • interrupt에 대한 테이블도 만들어서 handler가 사용하도록 한다.
  • Parameter passing
    • 매개변수를 레지스터 내에 전달하는 방식
    • 레지스터보다 매개변수가 많은 경우 메모리 내에 테이블에 저장해두고 테이블의 주소가 레지스터 내에 매개변수로 전달되는 방식
    • 스택에 넣어지고, 운영체제에 의해 꺼내지는 방식
  • Standard C library example
  • Examples of Windows and Unix system calls
    • 두번째 칸이 Unix, 세번째 칸이 Windows
    • Unix에는 있지만 Windows에 없는 것들이 많다.

6. Monolithic kernel

  • 운영체제의 모든 기능을 구현해서 한 덩어리로 만들어 넣어둔 구조
  • 동작하는데 별다른 추가 메커니즘이 필요 없어서 빠르다.
  • 소프트웨어의 수명동안 비용이 많이 발생(개발, 유지보수 등)하는데 그 중에서 유지보수가 비용의 80%를 넘게 차지한다.
  • Monolithic kernel은 한 덩어리로 만들어져 있기 때문에 유지보수 비용이 너무 많이 든다. (절차지향의 모든 단점을 가진다)

7. Micro kernel

  • 유지보수를 싸게 하기 위해서 발전시킨 방식

8. Simple structure

  • MS-DOS : 사실상 운영체제는 아니다
  • 유지보수의 어려움, 오류 있는 프로그램으로부터 보호가 취약

9. Monolithic structure

  • 특정 기능이 다른 기능들과 매우 복잡하게 얽혀 있다.

10. Layered approach

  • 유지보수를 개선하기 위해서 생각한 이상적인 구조
  • 계층을 만들어서 이산적으로 구성, 계층마다 따로 시스템 검증과 디버깅을 한다.
  • 여러 층을 적절하게 정의하는 것이 어렵고, 가장 바깥 층까지 가려면 순차적으로 안에서 밖으로 가야 하므로 비효율적이다.
  • 이상적인 방식이지만 실제로 구현한 것은 아니다

11. Microkernel structure

  • 가장 중요한 것들을 microkernel에 구성 (최소한의 프로세스와 메모리 관리)
  • 필요한 것들은 application으로 만들고 messages를 통해 왔다갔다 하면서 실행, 운영체제의 확장이 용이하다.
  • 커널이 최적화 되어있으므로 가볍고 높은 보안성과 신뢰성을 제공하지만, 매우 느리다는 단점이 존재

12. Modular approach

  • 가장 중요한 것들만 kernel로 만드는 것이 아니고 필요한 나머지 것들도 kernel로 만들고, 필요할 때마다 core kernel에 붙여서 kernel의 크기를 가변적으로 만드는 방식
  • 유지보수의 문제점을 해결함

13. Hybrid approach

  • Modular approach를 좀 더 발전시킨 모습
  • 가장 중요한(아래의) kernel은 제공하고 특정 인터페이스를 다운로드 해서 추가하는 방식
  • ex) Mac OS X, iOS, Android
  • Android는 linux 기반에 새로운 frame work를 올려서 OS라고 부른다.
    • Linux 커널 위에 platform 을 올린 구조
    • 정확하게 Android는 platform이다. (not OS)

Operating System

  • 전체 구조

0개의 댓글