운영체제 개요

운영체제의 전체적인 내용을 간략히 정리합니다.

운영체제의 개요, 기능, 분류, 예, 자원관리 기능에 대해서 알아봅니다.


운영체제의 정의

운영체제란 하드웨어 바로 윗단에 설치되는 소프트웨어

  • 영문 명칭은 Operating System
  • 소프트웨어가 어떻게 System 이라고 불릴 수 있을까?
    • 컴퓨터는 운영체제가 없다면 고철덩어리에 불과하다.
    • 컴퓨터를 돌리기 위한 최소한의 소프트웨어

운영체제도 소프트웨어

  • 전원이 켜진후 메모리에 올라간다.
  • 항상 메모리에 상주하는 필수적인 부분을 Kernel (뜻 : 핵심) 이라고 한다.
  • Kernel은 컴퓨터가 꺼지기 전까지 메모리에 올라가 있다.
  • Kernel보다 더 빠른 실행이 필요하다면?
    • 칩인 ROM에 올라가는 Firmware를 이용한다.

운영체제의 기능

환경 제공

사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공

  • 사용자는 파일이 어떻게 저장되는지 모른다
    • 운영체제가 인터페이스를 제공하고, 사용자가 파일을 손쉽게 저장, 관리 할 수 있다.
    • 인터페이스 : 사용자가 기기를 쉽게 동작 시키는데 도움을 주는 시스템

자원관리

시스템 내의 자원을 효율적으로 관리

  • OS의 핵심적 기능
  • OS는 자원관리자 (resource manager) 라고도 불린다.
  • 한정된 자원 (cpu , 메모리, 소프트웨어 자원) 을 관리한다.
    • 효율적으로 분배한다.
    • 형평성을 고려해서 분배한다.

네트워킹

네트워크 프로토콜을 지원하여 인터넷 연결을 하게 도와줌.

  • 운영체제에서 프로토콜을 지원하여야 응용 프로그램이 네트워크에 접근할 수 있음.

시스템 보호

OS 자신과 사용자를 보호

  • 악의적인 프로그램이 다른 프로그램이 영향을 주지 않게함.
    • HOW : 메모리 접근 제한 등등..

운영체제의 분류

단일 작업 (single tasking)

한개의 프로그램만 처리

  • DOS 환경
    • 하나의 프로그램이 동작하는 동안 다른 프로그램이 사용 불가능

다중 작업 (multi tasking)

두개 이상의 프로그램을 처리

  • 현대 OS의 대부분.
  • CPU가 시분할 시스템을 이용하여, 여러 프로그램을 동시에 동작하는것처럼 보여줌
    • 시분할 시스템 : CPU의 작업 시간을 여러 프로그램이 나누어 씀.
    • 시분할 방식 : 컴퓨터의 처리능력을 일정한 시간 단위로 분할해 사용함.

다중 프로그래밍 (multi programming)

여러 프로그램이 동시에 메모리에 올라가는것

  • 메모리를 분할하여, 여러 프로그램을 메모리에 올려놓고 처리하는것.

다중 처리기 (multi processor)

CPU가 여러개 있는것

  • 처리가 빠르다
  • CPU관리 매커니즘이 복잡해 진다.

일괄처리 (Batch processing)

작업 요청의 일정량을 한번에 처리

  • 작업이 종료되어야 결과를 얻는다
  • 응답시간이 매우 길다.

실시간 (Realtime)

정해진 시간내에 반드시 종료되어야 하는 시스템에서 사용

Hardtime

지키지 못하면 위험한 결과

  • 로켓, 원자로 시스템

Softtime

시간내 전송되어야 올바른 기능 수행

  • 동영상 스트리밍

운영체제의 예

MS, Unix

MS

편리한 인터페이스

  • 사용자가 이용하기 용이함
  • Plug & Play 지원
    • 새로운 하드웨어를 장착하면 설정을 자동으로 해줌.

Unix

프로그램 개발 환경을 위해 설계된 운영체제

  • 커널이 아주 작음
  • 이식성이 높음
    • 이식성 : 다른 기종의 기계로 옮길때 소요되는 노력
    • 커널이 작은것과 연관성이 있음.
  • C언어로 제작되어짐
  • 오픈 소스.

운영체제의 자원관리 기능

운영체제의 핵심적 기능은 효율적인 자원 관리

CPU 관리

FCFS (First Come First served)

먼저 들어온 작업을 처리함

  • 줄서기

RR (Round Robin)

CPU 사용 시간을 고정적으로 두고 제한함

  • FCFS 의 단점 보완
    • 너무 오래걸리는 상황을 해결하기 위해 등장한 기법

Priority

우선순위 맞춰 진행

  • 우선순위가 낮은 프로세스가 무한정하게 밀리지 않게
    • 우선순위를 높이는 aging 기법을 사용.

메모리 관리

Fixed Partition

메모리를 고정된 크기로 분할함

  • 메모리 크기 보다 큰 프로그램 적재 불가능
  • 최대 프로그램의 수는 분할된 개수의 크기만큼으로 제한
  • 내부 단편화 발생

Variable Partition

메모리를 프로그램의 크기에 맞춰 분할

  • 메모리 크기 보다 큰 프로그램 적재 불가능
  • 메모리를 관리하는 기술적 관리 기법이 추가적으로 필요함
  • 외부 단편화 발생

단편화

Virtual memory

프로그램마다 가상의 메모리를 제공

  • 메모리 크기 보다 큰 프로그램 적재 가능
    • HOW : 현재 사용되는 부분만 메모리에 적재
    • 프로그램의 모든 부분이 메모리에 올라갈 필요가 없음.
    • 일정한 크기로 자르고 paging 기법, 보조기억 장치 swap 영역에 사용되지 않는 부분을 내려둠
  • 가상의 메모리는 물리적 메모리와 서로 매핑되어있음.
    • 주소 변환을 통해 물리적 메모리에 접근함.
    • 프로그램은 물리적 메모리를 혼자 다 쓰는것처럼 보고 있음.
    • 즉 가상메모리의 크기에 의해 프로그램이 실행 가능한 프로그램의 크기가 결정 되어짐.

주변, 입출력 장치 관리

interrupt 이용

  • iterrupt : 주변장치가 CPU의 서비스가 필요할때 서비스를 요청하는 신호.
  • 인터럽트가 발생하면, 이전의 정보를 다른곳에 저장시키고, 인터럽트 요청을 처리하러감.
  • WHY 왜 이것이 필요한가?
    • polling : 일이 끝났는지 계속 확인하는 방식
    • CPU의 자원낭비. 필요할때만 서비스를 요청하자.
  • 주변장치들은 각자 작은 CPU인 controller를 가지고 있음
  • 이것을 이용해 CPU에게 인터럽트를 신호를 발생시킴.
    • CPU가 필요할때, CPU가 시킨 작업을 완료했을때

Reference