운영체제 개요

운영체제(Operating System, OS)란 무엇인가

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.

  • 협의: 커널, 운영체제의 핵심 부분. 부팅 이후로 메모리에 상주하는 부분.
  • 광의: 커널 + 주변시스템 유틸리티 포함. 메모리에 상주하지 않는 별도의 프로그램들.

운영체제의 목표

  • 컴퓨터 시스템을 편하게 사용할 수 있는 환경 제공.
    • 운영체제는 동시 사용자/프로그램들이 각각 독자적인 컴퓨터에서 수행되는 것 같은 인상을 제공.
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행.
  • 컴퓨터 시스템의 자원(프로세서, 기억장치, 입출력 장치 등 하드웨어 자원)을 효율적으로 관리.
    • 효율적 + 형평성. 주어진 자원으로 최대한의 성능. 사용자간의 형평성 있는 자원 분배.
      • CPU를 짧은 시간씩 번갈아서 프로그램들에 할당.
      • 메모리 공간을 적절하게 실행중인 프로그램들에 할당.
    • 프로세스, 파일, 메시지 등을 관리. -> 소프트웨어 자원까지도 관리함.
    • 사용자 및 운영체제 자신을 보호.

=> 운영체제는 어떤 프로그램에 얼마만큼의 시간/공간을 어떻게 효율적으로 할당할 것인지 판단한다.

운영체제의 분류

동시 작업 가능 여부

  • 단일 작업(Single Tasking)
    • 한 번에 하나의 작업만 처리
    • MS-DOS. 특수목적으로 제작된 기계(엘리베이터 등). 한 명령의 수행을 끝내기 전에 다른 명령 수행 불가.
  • 다중 작업(Multi Tasking)
    • 동시에 두 개 이상의 작업 처리
    • UNIX, MS Windows 등. 하나의 수행이 끝나기 전에 다른 명령/프로그램 수행할 수 있음.

사용자 수

  • 단일 사용자(Single User)
    • MS-DOS, MS Windows
  • 다중 사용자(Multi User)
    • 하나의 컴퓨터에 복수의 사용자가 접근해 동시에 사용할 수 있는 운영체제. UNIX, NT server 등.

처리 방식

  • 일괄 처리(Batch Processing)
    • 작업을 모아서 한꺼번에 처리하는 방식.
    • 현대의 운영체제에서는 보기 드문 방식.
    • 초기 Punch Card 처리 시스템. 작업카드 적재 -> 작업 종료 후 출력하는 방식. Interactive하지 않음.
  • 시분할(Time Sharing)
    • 여러 작업을 작은 시간단위로 나누어 번갈아 분할하여 사용하는 방식.
    • Interactive한 방식.
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가진다. 그렇다고 정해진 시간 안에 무조건 되는 것은 아님. 단지, 사람에 특화된 시스템.
    • 각 사용자가 컴퓨터로부터 서비스를 제공받는 시간을 숫자로 표시.
    • UNIX 등 현대의 운영체제의 다수.
  • 실시간(Realtime OS)
    • 정해진 시간 안에 어떠한 일이 반드시 종료됨을 보장.
    • 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등 정교한 시간이 요구되는 때에 사용.
    • 개념 확장
      • Hard realtime system(경성 실시간 시스템): 데드라인을 못 지키면 치명적임.
      • Soft realtime system(연성 실시간 시스템): 데드라인은 존재하지만 못 지킨다고 치명적이진 않음. ex) 스트리밍 서비스

=> 지금 우리가 쓰고 있는 것은 다중 작업, 다중 사용자, 시분할 방식의 OS

몇 가지 용어

  • Multitasking
  • Multiprogramming : 메모리에 여러 프로그램이 올라가 있음을 강조.
  • Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.
  • Multiprocess

=> 네 가지 모두 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻함.

  • Multiprocessor : 하나의 컴퓨터에 CPU(Processor)가 여러 개 붙어 있음.

운영체제의 예

  • UNIX(유닉스)
    • 대형컴퓨터를 위함.
    • 코드의 대부분을 C언어로 작성.
    • 높은 이식성, 최소한의 커널 구조, 복잡한 시스템에 맞게 확장 용이, 소스코드 공개, 프로그램 개발에 용이.
    • System V, FreeBSD, SunOS, Solaris, Linux
  • MS
    • 개인 사용자 PC를 위함.
    • DOS(Disk Operating System)
      • 단일작업용 운영체제. 메모리 관리 능력의 한계(주기억장치: 640KB)
    • Windows
      • 다중작업용 GUI 기반 운영체제.
      • Plug and Play, 네트워크 환경 강화, DOS용 응용 프로그램과 호환성 제공, 풍부한 자원 소프트웨어.
  • MacOS, iOS 등
    • Apple에서 만든 컴퓨터/스마트폰 운영체제.

운영체제의 구조

  • CPU: 누구한테 CPU를 줄까? -> CPU 스케줄링
    • 시간 차를 최대한 줄이면서 가장 효율적으로 자원을 관리할 수 있는 원리.
  • 메모리: 한정된 메모리를 어떻게 쪼개지? -> 메모리 관리
    • CPU에서 원활하게 사용될 수 있을 최소한의 메모리는 보장해주는 원리.
    • Disk로 밀어낼 것이 무엇인지, 즉 미래에 어떤 프로그램이 쓰일지 예측.
  • Disk: 디스크에 파일을 어떻게 보관하지? -> 파일 관리
    • Disk에 들어온 요청 중 head가 이동하면서 처리할 수 있는 것들은 처리해가는 원리.
    • head의 움직임을 최소화하는 것.
  • I/O Device: 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지? -> 입출력 관리
    • 인터럽트. CPU는 워낙 빠르니 자기 일을 함. 그러다가 I/O 장치가 인터럽트를 걸면 CPU가 그를 처리.
  • 프로세스 관리
    • 프로세스 생성/삭제
    • 자원 할당/반환
    • 프로세스간 협력
  • 그 외
    • 보호 시스템
    • 네트워킹
    • 명령 해석기(command line interpreter)

출처

해당 내용은 KOCW 강의 중 이화여자대학교의 운영체제-반효경 강의의 내용을 정리한 것입니다.

댓글남기기