본문 바로가기

Computer Science/운영체제

반효경 운영체제 - 0. 운영체제란?

운영체제의 정의


  • 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
    • 협의의 운영체제 (커널) : 운영체제의 핵심 부분으로 메모리에 상주하는 부분
    • 광의의 운영체제 : 커널을 포함한 주변 시스템 유틸리티를 포함한 개념(ex, 파일 탐색기 등)

운영 체제의 목적


  • User 측면 : 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공.
    • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공함.
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행.
  • Hardware 측면 : 컴퓨터 시스템의 자원을 효율적으로 관리
    • 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리
      • 실행 중인 프로그램에게 짧은 시간 씩 CPU를 번갈아 할당
      • 실행 중인 프로그램에 메모리 공간을 적절히 분배
    • CPU와 메모리를 어떻게 할당할 것인가?
      • 효율성의 관점 : 1/N으로 분할이 좋은 방법이 아니다.
      • 형평성의 관점 : 특정 프로그램이 지나치게 리소스를 못받아선 안된다.

운영 체제의 분류


  1. 작업 처리 가능 수
    • 단일 작업 : 한 번에 하나의 작업만 처리 (MS-DOS)
    • 다중 작업 : 동시에 두 개 이상의 작업 처리 (UNIX, MS Windows)
  2. 사용자의 수
    • 단일 사용자 : 한 명의 사용자 ex) MS-DOS, MS Windows
    • 다중 사용자 : 동시 접속을 할 수 있는지? 사용자 간 보안 기능과 형평성 있는 자원 관리 기능 필요 ex) UNIX, NT server
  3. 처리 방식
    • 일괄 처리
      • 작업 요청의 일정량 모아서 한꺼번에 처리
      • 작업이 완전 종료될 때까지 기다려야함
    • 시분할(time sharing)
      • 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할하여 사용
      • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 ex) UNIX
      • interactive하다.
    • 실시간(Realtime OS)
      • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간시스템을 위한 OS, ex) 원자로/공장 제어, 미사일 제어 등

용어


  • Multitasking : 여러 작업을 동시 수행
  • Multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조
  • Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
  • Multiprocess
  • Multiprocessor : 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미

운영체제의 예


  • UNIX
    • 대형 컴퓨터를 위한 운영 체제
    • 유닉스 운영체제를 만들기 위한 언어를 개발, C언어
    • 높은 이식성
    • 최소한의 커널 구조 (메모리에 상주하는 부분이 적다)
    • 다양한 버전
  • MS Windows
    • 다중 작업용 GUI 기반 운영 체제
    • 풍부한 지원 소프트웨어

운영체제 최적화


  • CPU 스케줄링
    • 누구에게 CPU를 줄까?
      • CPU를 짧게 쓰는 프로그램에게 주면 전체 기다리는 시간이 감소됨
  • 메모리 관리
    • 한정된 메모리를 어떻게 쪼개어 쓰지?
      • 모든 프로그램을 메모리 상에 올리는 것은 불가능
      • 과거의 사용 데이터를 기반으로 메모리를 최적화함
  • 파일 관리
    • 디스크에 파일을 어떻게 보관하지?
      • 디스크는 헤드를 통해서 메모리를 읽고 쓰기 때문에 디스크 스케쥴링이 필요하다.
      • 디스크의 헤드의 이동을 줄이는 스케쥴링을 통해 성능 개선 가능(엘리베이터 작동 로직과 비슷하다)
  • 입출력 관리
    • 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고받게 하지?
      • I/O device의 속도가 상대적으로 매우 느림
      • 인터럽트를 기반으로 관리
      • I/O와 CPU는 독립적으로 작동하다가 I/O가 인터럽트를 발생시키면 처리
  • 프로세스 관리
    • 프로세스의 생성과 삭제
    • 자원 할당 및 반환
    • 프로세스 간 협력
  • 그 외
    • 명령어 해석기