포스트

[OS] 운영체제 개요

1. 운영체제란?

운영체제(OS, Operating System)란 조직되어 통일된 전체(System)을 관리/운용해 나간다(Operating)는 의미로, 하드웨어(HW, Hardware)를 소프트웨어(SW, Software)로 추상화(Abstraction)1한 소프트웨어이다.

1.1. OS의 핵심 기능

  • 프로세스 관리
  • 메모리 관리
  • 입출력 및 파일 관리

1.2. 관련된 문제

OS는 여러 종류의 SW를 동시에 작동하게 하는 문제를 해결하는 과정에서 등장하였으며, OS를 개발하기 위해서는 다음과 같은 문제를 해결해야 했다.

  • 누가, 언제, 얼마나 CPU를 사용해야 하는가?
    1. 프로세스 작동 시기는 언제인가?
      • 프로세스는 어떻게 교체하는가?
    2. 프로세스의 메모리 로드 관리는 어떻게 하는가?
    3. CPU와 메모리를 어떻게 연결하는가?
    4. 내려간 프로세스는 어떻게 저장하는가?

그리고 아래와 같은 여러 가지 파생 문제가 생겨났다.

  • 프로세스 동기화
  • 교착상태, 기아상태
  • 저장장치 관리
  • 분산 시스템, 가상화 시스템

OS의 개념은 HW를 관리하는 소프트웨어에 국한된 것이 아니며, 컴퓨터공학에서 무엇인가를 관리하려 할 때 광범위하게 적용될 수 있다. 예를 들어, SW가 무수한 자원을 관리할 수도 있는데, 이 때 OS의 개념이 적용될 수 있다.

2. 운영체제 소개

2.1. 운영체제란?

  1. 가장 먼저 실행되는 소프트웨어
  2. 컴퓨터 자원을 독점/관리하는 소프트웨어
  3. 저장장치의 특정 영역에 저장되어 있음
  4. 컴퓨터 자원을 추상화하여 인터페이스를 제공

2.2. 운영체제의 목표

자원관리를 ‘잘’ 하기 위한 것으로, 아래의 기능을 갖춰야 한다.

  • 효율성(Efficiency)
  • 안정성(Robustness, Security)
  • 확장 가능성(Scalability, Extensibility, Portability)
  • 편리성(Usability, Interactivity)

운영체제 역할과 목표

2.3. 운영체제 기능, 하는 일

  • 보안 / 네트워크 / 장치 / 프로세스 / 메모리 / 파일시스템 관리
  • 그리고 기타 관리 (사용자 계정, 통계, 오류 발견/대응 등)

운영체제의 기능과 하는 일은 필요 시 지속적으로 확장되어 왔다.

운영체제 기능

  • 초기에는 장치 관리 기능밖에 존재하지 않았음
  • 그러다 여러 프로그램을 동시에 돌려야 되자 프로세스 관리 기능이 추가되고,
  • 메모리가 한정되었으므로 메모리 관리 기능이,
  • 작업 보관의 필요성이 생겨 파일 시스템 관리 기능이,
  • 이 모든 작업이 이상없이 돌아가는지 확인하기 위해 통계 등 기타 관리 기능이 생겨남
  • 그러다 네트워크가 등장하고, 장치 밖의 자원 관리 위해 네트워크 관리 기능이 생기고,
  • 외부 사용자 신뢰성 확보 위해 보안 관리 기능이,
  • 여러 사용자의 관리를 위해 사용자 계정 관리 기능 등이 생겨나게 되었음

2.4. 운영체제가 없다면?

작동은 가능하다. 하지만 한정된 기능제어가 쉽지 않다는 것 뿐이다.

  • 추가적인 장치연결 및 SW 설치가 불가능
  • 사용 불편, 대응 어려움
    • 공학용 계산기, 펌웨어 등
    • 회로 수준에서 구워져 나온 범위 내에서 작동하는 기기들

운영체제가 없다는 것이 꼭 나쁜 것은 아닐 수도 있다!

  • 특수 하드웨어를 조작하는 것에는 적합할 가능성 有
  • 확장성이 결여되었다는 것 → 보안성 증가했다는 것일 수도…
  • 불편한 인터페이스라는 것 → 비전문가 접근에 대해 보호받는다는 것

3. 운영체제 역사

3.1. 고정 프로그램 방식(Fixed Program Computer)

  • 하나의 기계 = 하나의 기능을 의미
  • 기능 변경 = 기계를 새로 만듦을 의미
  • 하드 와이어링 사용
  • 회로 수정의 조금의 편의를 제공해주는 수준

3.2. 일괄 작업 시스템(Batch-Processing System)

= 내장 프로그래밍 방식(Stored Program Computer)

  • Reader: 천공 카드 / Printer: 라인 프린터였음
  • 전문 연산장치(CPU)와 로직 저장장치(RAM)의 분리
    • 폰 노이만 구조
  • 운영체제 기능 일부(장치 관리) 제공
  • 작업을 한번에 1개만 처리 가능
    • 중간에 입력값 제어하거나, 결과 확인 불가능

일괄 작업 시스템

3.3. 대화형 시스템(Interacive System)

  • 모니터/키보드 등장
  • 프로그램 실행 도중 사용자 입력 가능
    • 하나의 장치에서 어떻게 여러 개 작업하는 것인가? → 다중 프로그래밍

대화형 시스템

3.4. 다중 프로그래밍

  • 하나의 CPU로 여러 작업 동시 실행
    • CPU사용시간을 각 작업에 분할 할당, 동시에 실행하는 것처럼 보이게 함
  • 프로그램 실행 중 I/O 발생 → 다른 프로그램 실행
  • 오늘날 대부분의 시스템에서 채택

다중 프로그래밍

3.5. 요약

구분시기주요 기술특징
0기1940년대없음진공관 사용
1기1950년대카드 리더, 라인프린터일괄 작업 시스템
운영체제의 등장
2기1960년대키보드, 모니터대화형 시스템
3기1960년대 초반C언어다중 프로그래밍 기술 개발
시분할 시스템
4기1970년대 후반PC개인용 컴퓨터의 등장
분산 시스템
5기1990년대클라이언트/서버 시스템
6기2000년대스마트폰P2P 시스템
그리드 컴퓨팅
클라우드 컴퓨팅
사물 인터넷

4. 일괄 처리 시스템 VS 다중 프로그래밍

일괄 처리 시스템 VS 다중 프로그래밍

5. 기타 시스템

5.1. P2P(Peer-to-Peer) 시스템

  • 특정 서버의 과부화를 해결
    • 단일 장애점 (Single point of failure)
  • 서버 고치지 않고, 사용자를 직접 연결함
  • 그리드 컴퓨팅, 클라우드 컴퓨팅, 사물 인터넷, 네트워크 OS, 분산 운영체제 동기화(synchronization), 협의(consensus)

5.2. 가상화 시스템(Virtualization)

OS는 하드웨어에 대한 추상화: 컴퓨터도 추상화할 수 있다.

  • 퓨터 자체를 소프트웨어로 구현한 것
  • 독립공간(sandbox) 지원
  • Hypervisor(Virtual Machine Manager), Container(Docker)

5.3. 모바일 운영체제

  • 모바일 전화기나 스마트폰 등 휴대 장치에서 실행됨
  • Network, Power to performance ratio(전성비) 추구

5.4. 임베디드 운엉체제

  • 임베디드 컴퓨터에서 사용됨

5.5. 실시간 운영체제

실시간 애플리케이션 또는 태스크를 정해진 데드라인(deadline) 시간 이내에 처리되도록 보장하는 것을 목표로 한다.

  • 처리시간 예측 가능하고, 보장함 (Timing guarantee)
  • pSOS, VxWorks, VRTX, RT-Linux, Lynx






각주

  1. 추상화(abstraction)는 컴퓨터공학의 목표 중 하나이다. 

이 포스팅은 작성자의 CC BY-NC 4.0 라이선스를 준수합니다.