🖥️ Operating System

OS: Operating System

정의

컴퓨터 시스템을 운용하는 소프트웨어

협의

  • 커널: 운영체제의 핵심 부분으로 메모리에 상주하는 부분

광의

  • 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함

목적 및 특징

목적

  • 컴퓨터 시스템의 자원을 효율적으로 관리
    • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
      • 사용자 간 형평성 있는 자원 분배
      • 주어진 자원으로 최대한 성능
  • 사용자/프로그램들이 동시에 독자적으로 수행되는 것과 같은 환경 제공
  • 하드웨어를 직접 다루는 부분 대행
  • 사용자 및 운영체제 자신 보호
  • 프로세스, 파일, 메시지 등을 관리

특징

  • 시스템 서비스를 애플리케이션에 제공
    • 앱과 하드웨어 사이 API
  • 프로세스, 자원, 유저 인터페이스를 관리

분류

  • 동시 작업 가능 여부
  • 사용자의 수
  • 처리 방식

동시 작업 가능 여부

  • 단일 작업
    • 한번에 하나의 작업만 처리
  • 다중 작업
    • 동시에 두개 이상의 작업 처리

사용자의 수

  • 단일 사용자
  • 다중 사용자

처리 방식

  • 일괄 처리(Batch Processing)
    • 작업 요청의 일정량을 모아서 한꺼번에 처리
    • 작업이 완전히 종료될 때까지 기다려야 함
  • 시분할(Time Sharing)
    • 여러 작업 수행 시 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답 시간
    • Interactive
  • 실시간(Realtime)
    • 정해진 시간 안에 어떤 일이 종료됨이 반드시 보장되어야 함
    • 로봇 제어
    • 개념 확장
      • Hard Realtime System(경성 실시간)
        • 원자로/미사일 제어, 반도체 공장/장비
      • Soft Realtime System(연성 실시간)

예시

  • UNIX
    • 코드의 대부분을 C언어로 작성
    • 높은 이식성
    • 최소한의 커널 구조
    • 복잡한 시스템에 맞게 확장 용이
    • 소스 코드 공개
    • 프로그램 개발에 용이
    • 다양한 버전
      • System V, FreeBSD, SunOS, Solaris
      • Linux
  • DOS(Disk Operating System)
    • MS에서 1981년 IBM-PC를 위해 개발
    • 단일 사용자 운영체제, 메모리 관리 능력 한계(주 기억 장치 640KB)
  • MS Windows
    • MS의 다중 작업용 GUI 운영 체제
    • Plug And Play, 네트워크 환경 강화
    • DOS용 프로그램과 호환성 제공
    • 불안정
    • 풍부한 지원 소프트웨어
  • Mobile Device OS
    • iOS, Android

구조

  • CPU 스케쥴링
  • 메모리 관리
  • 입출력 관리
  • 파일 관리
  • 프로세스 관리
  • 보호 시스템
  • 네트워크
  • 명령어 해석기

Bootstrap

  • 컴퓨터를 켜면 실행되는 첫번째 프로그램
  • OS를 load

작동

프로그램의 실행

시작

notion image
  1. File System
  1. Virtual Memory
  1. Address Translation
  1. Physical Memory

Kernel Address Space

notion image
  • Kernel Code
    • System Call, Interrupt 처리 코드
    • 자원 관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • PCB: Process Control Block

사용자 프로그램이 사용하는 함수

  • Function
    • 사용자 정의 함수
      • 자신의 프로그램에서 정의한 함수
    • 라이브러리 함수
      • 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
      • 자신의 프로그램 실행 파일에 포함되어있다.
    • 커널 함수
      • OS 프로그램의 함수
      • 커널 함수 호출 == System Call

프로그램의 실행

notion image

Multi-Programming

notion image
  • 한번에 두개 이상의 프로그램을 돌린다.
  • 여러개의 프로세스를 동시에 메모리에 유지한다.
  • CPU 활용도를 높이기 위해

Multi-Tasking == Multi-Processing

  • Concurrency VS Parallelism
  • Multi-Programming의 논리적 연장선
    • CPU는 할 일을 빠르게 바꿀 수 있기 때문에
    • 유저는 각 작업이 돌아가는 동시에 상호 작용 가능
  • CPU 스케쥴링
    • 여러개 프로세스가 동시에 돌아갈 수
    • 시스템은 어떤 프로세스를 돌릴지 선택해야함

두개의 모드

정당하지 못한 프로그램이 다른 프로그램에 영향을 줄 수 없게 함
notion image
  • user mode
  • kernel mode

가상화

notion image
  • 한개의 컴퓨터 하드웨어를 추상화하여
  • 여러개의 다른 실행 환경을 사용할 수 있게 함

서비스

notion image
OS는 프로그램 실행을 위한 환경을 제공한다.
  • UI
  • 프로그램 실행
  • I/O 작업
  • 파일 시스템 조작
  • 통신
  • 오류 감지
  • 자원 할당
  • 로깅
  • 보호, 보안

출처