주니어 개발자 성장기

운영체제란? 목적과 분류(22/07/09) 본문

CS스터디/운영체제

운영체제란? 목적과 분류(22/07/09)

Junpyo Lee 2022. 7. 10. 21:13

운영체제란?


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

 

좁은 의미의 운영체제 "커널"

  • 운영체제의 핵심(core) 부분으로 메모리에 상주하는 부분

 

넓은 의미의 운영체제

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

 

 

 

 

목적


크게 2가지 단으로 볼 수 있다.
OS위에 올라가 있는 사용자 및 소프트웨어 계층 사이, 그리고 OS와 하드웨어 사이가 있다.

 

1. 사용자, 소프트웨어 & OS 간의 인터랙션

  • 동시의 사용자/ 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공한다.
  • 복잡한 하드웨어 조작을 OS가 대행해준다.

 

2. OS & 하드웨어 간의 인터랙션

  • 가장 핵심적인 기능 
  • 컴퓨터 시스템의 자원을 효율적으로 관리 <- 최우선적 목표
    • 프로세서, 기억장치, 입출력 장치 등(하드웨어 자원)의 효율적 관리
    • CPU 컨택스트 스위칭, 메모리 페이징 기법 등
  • 효율성외에도 형평성도 부차적으로 고려된다.
  • 사용자 및 운영체제 자신의 보호
  • 프로세스, 파일, 메시지(소프트웨어 자원) 등을 관리

 

분류


운영체제 분류의 기준 3가지이다.

 

1.동시 작업 가능 여부

  • 단일 작업 (single tasking)
    • 한 번에 하나의 작업만 처리
    • 예) MS-DOS -> 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
  • 다중 작업 (multi tasking)
    • 동시에 두 개 이상의 작업 처리
    • 예) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음

 

 

2. 사용자의 수

  • 단일 사용자(single user)
  • 예) MS-DOS, MS Windows

 

  • 다중 사용자(multi user)
    • 예) UNIX, NT server, 윈도우도 때에 따라 가능

 

 

3. 처리 방식

  • 일괄 처리(batch processing)
    • 역사속의 시스템으로 interactive하지 않다. 
    • 작업 요청의 일정량을 모아서 한꺼번에 처리
    • 작업이 완전 종료될 때까지 기다려야 함
    • 예)초기 Punch Card 처리 시스템
  • 시분할(time sharing)
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
      예) UNIX
    • interactive한 방식
    • 사용자 맞춤식 시스템 <- 사용자가 느낄 때는 동시에 빠르게 실행하면서 효율적으로 자원을 배분
    • 현대의 범용 컴퓨터의 방식
  • 실시간(Realtime OS)
    • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는(데드라인 존재) 실시간 시스템을 위한 OS
    • 예) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등 특수 목적 컴퓨터
  • 실시간 시스템의 개념 확장
    • Hard realtime system (경성 실시간 시스템) <- 데드라인을 반드시 지켜야함 (결과가 치명적)
    • Soft realtime system (연성 실시간 시스템) <- 데드라인이 있긴 하지만 어긴다고 해서 치명적이진 않다.

참고 용어들

*멀티 태스킹(Multitasking)은 일반적, 용어

멀티 프로그래밍(Multiprogramming)

타임쉐어링

멀티프로세스(Multiprocess)

=> 위 용어들은 컴퓨터에서 여러 작업을 동시에(concurrently) 수행하는 것을 뜻한다.

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

=> CPU 하나로 멀티 태스킹을하는 것

 

 

**Multiprocessor

   : 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미한다.

즉, 멀티프로세서는 이번 강의에서 주로 다루는 내용이 아니다.