운영체제 CH2

김영민·2022년 3월 18일
1

Chapter 2

1. Operating System Services → O/S는 서비스를 제공해주는 것임O/S는 프로그램을 실행하기 위한 환경을 제공함.

system call이라는 방식으로만 os를 사용 가능.


2. OS Services for user Support

유저를 도와주는 OS의 서비스들

1. user interface

  • os의 서비스로 볼 수 있습니다. (GUI, CLI 등)

2. program execution

  • 프로그램의 로딩, 시작, 끝, 가지치기 등등을 관리

3. I/O operation

  • USB를 꽂아서 사용하는 것들 따위

4. File system manipulation

  • 파일 읽고 쓰기, 만들고 지우기 등등 파일 시스템 조작

5. Communication

  • 프로세스(=실행되고 있는 프로그램) 간의 정보 교환
  • 인터넷 사이에서도 네트워킹

6. Error detection

  • CPU, memory, I/O devices, User program(div-by-0,illegal memory access) 등과 같은 에러 발생 가능
  • OS가 조치를 취함.

3. Services for Efficient Operation

효율적인 작동을 위한 OS services

1. resource allocation

  • 대역폭 나누기(속도), 공간 나누기 (메모리)
  • cpu, memory, file storage : 내부 커널에 코드로 박혀있음. (special allocation code)
  • I/O devices : 일반적인 표준 (일반적인 코드로 여러 devices 조절)

2. accounting (of resource usage) - 추적

  • capacity planning(용량의 규모를 결정하는 것)을 평등하게 사용할 수 있도록 billing

3. Protection and security

  • Protection은 다른 프로세스가 또 다른 프로세스나 OS를 간섭할 수 없도록 함
  • Security는 인증된 사용자의 system과 hardware에 저장된 정보를 보호하는 것
  • 비승인된 접근, 데이터의 악의적 파괴나 변형, 부정합 발생등이 있다.

4. System calls

  • 함수처럼 생겼음.

  • OS를 사용할 수 있는 유일한 방법.

  • 시스템 콜들은 간단한 작업에도 엄청나게 많이 사용됨.
    - thousands of system calls per second

  • 프로그래머는 API를 통해 간접적으로 system call을 사용

    • libc : c library for Unix/Linux environment

    • windows API, Posix API, java API

    • API on top of anothoer API

      • Java API는 이중 간접으로 systemcall을 부름 ( java API -> libc -> syscall )

  • API를 통해 간접적으로 system call을 사용하는 이유

    • 직접적으로 사용하기 너무 어려움
    • Portability(이식성) : 어떤 libc든 다른 곳에 가도 실행 가능
  • libc와 이름이 같은 systemcall로써 예를 들어 read -> read 인 것들을
    Wrapper function이라고 부름

  1. user application에서 open()function을 통해 syscall 호출 ( user mode )
  2. interrupt 발생 : 내 프로그램이 kernel mode로 바뀜 ( mode switch )
  3. kernel mode 에는 system call function의 주소들이 저장되어 있음.
  4. 작업이 끝난 후 user mode로 바뀐 후 return value를 함.

5. system call interface


6. System call types

Six major categories

  • Process control
  • File manipulation
  • Device manipulation
  • Information maintenance
  • Communications
  • Protection

7. System call types: Process Control -> 돌고있는 프로그램

Type of tasks

  • end,abort -> 종료
  • wait for time
  • load, executte -> 프로그램 띄우는 것
  • wait event, signal event
  • create or terminate process-> 프로세스와 프로세스 간 만듦과 종료
  • allocate and free memory
  • get/set process attributes -> 프로세스 성질

Senarios

  • Error handling

    • 종료해야함 -> memory dump(오류를 하드 디스크에 저장)를 만듦 -> 메세지 출력
      -> 다음 command 실행
    • In GUI, pop-up window가 보여짐
    • In batch system, 모든 동작이 종료.
  • loading and executing another program

    • 프로세스가 종료되면 실행 지점을 어떻게 할 것인가를 정해야 함.
    • 원래와 새로운 프로그램을 concurrently하게 실행할 것인지 정해야 함.
  • In multiprogramming, we need tto control processes

    • Get/set process atttributes
    • Wait for the completion of execution
    • OS provides system calls for lokcing shared data
    • Selectively terminatttet unneeded processes

    8. System programs

  • system programs = system utilities -> 시스템에 도움을 주는

    • file management
    • status information - 정보 보기
    • file modifiicattion
    • programming language support
    • program loading and execution
    • communications
    • background services : ftpd, sshd, 등등 데몬들
      -> 사용자의 요청을 기다리며 죽지 않는 프로그램들
  • Application programs

    -web browsers, text editor, spreadsheet, database, compiler, plotting, statistics package ...

9. OS Design and Implementation

  • Desgin goals : 요구사항은 두개로 나뉘어진다.
    • User goals : 사용편리, 신뢰가능한, 배우기 쉬운, 빠른
    • System goals : 구현이 쉽고, 관리가 쉽고, 운영하기 쉽고, flexible,efficient, 고장을 견디는 능력이 좋아야 함 ( 고장은 나고 서비스를 돌리는 것)
  • Guildline : Mechanism and Policy
    • 메커니즘과 정책을 분리해라.
      • mechanism : how
      • policy : what
    • 정책의 변화가 메커니즘의 변화를 요구할 수 있기 때문에, 분리하는 게 이상적임.

10. OS Implementation -> 실제 코딩구현

  • assembly 언어로 구현
    • 힘듦, 어려움, 이식하기 어려움
  • high level 언어로 구현 (c, java, ...)
    • Advantages
      • 구현 시간이 빠름
        • Compact하고 이해/디버깅 하기 쉬움
        • 개선된 compiler는 generated code를 개선해줌
        • 다른 환경으로 이식하기 쉬움
          • MS-Dos는 emulator가 필요함
          • Linux는 C로 이루어져 있는데, emulate가 필요 없다.
    • Disadvantages
      • performance : 요즘은 그렇지도 않다.
        - compiler가 complex dependencies를 잘 핸들링함.
        • compromise : 작은 중요 코드는 처음엔 high-level 언어로 작성 후 나중에 최적화된 것으로 대체

11. OS 구조

  • Monolitthic VS modularized
    • component( module ) : system inputs, outputs, functions을 부분적으로 잘 정리함
  • Simple Structure
    • MS-DOS, Original UNIX
    • 간단히 시작해서 점점 커져서 out of control 상태가 됨.

12. OS 구조 : Layered Approach

  • 계층적 구조로의 접근

  • N번째 레이어는 N-1의 기능으로만 작동한다.

  • 장점 : 간단하다 -> 디버깅하기 쉽다. ( 오류가 나면 그 전 레이어꺼만 확인하면 됨 )

  • 단점 : 레이어가 많다 보면, 오버헤드 되는 시간 때문에 시간이 오래 걸린다.

13. Microkernels

  • 키포인트 : 커널을 최소한의 정말 필요한 기능만 넣어서 만들자.

  • 주요 기능이 아닌 것은 일반 프로그램으로 빼내자.

  • 일반 프로그램들끼리는 kernel을 통해 메세지를 주고 받는다.

  • 장점

    • 확장을 쉽게 할 수 있다 (옆에 이어 붙이면 되므로)
    • 커널이 작기 때문에 이동시키기 쉽다.
    • 커널이 작기 때문에 복잡하지 않아서 보안성이 좋다.
  • 단점

    • 메세지를 주고 받아야 하기 때문에 퍼포먼스의 지장을 준다.
  • 커널의 정말 필요한 기능들

    • 통신 기능 (interprocess Communication)
    • 메모리 관리 ( 공동으로 메모리를 쓰므로 관리가 필요함 )
    • CPU 스케줄링 ( 프로세스들을 관리 해야 하므로 )
이미지 출처 : operating system concepts 10th

0개의 댓글