SY 개발일지
article thumbnail

운영체제란 무엇인가?

운영체제(Operating System, OS)란?

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

따라서 사용자가 컴퓨터 하드웨어를 직접 사용하는 것이 아니라 운영체제, 그리고 각종 소프트웨어를 통해 컴퓨터 하드웨어를 다루게 된다.

 

협의의 운영체제(커널) - 좁은 의미

운영 체제의 핵심 부분으로 메모리에 상주하는 부분. 전공자로서 운영체제라고 하면 보통 좁은 의미의 운영체제를 의미한다.

 

광의의 운영체제 - 넓은 의미

커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념. 광의의 운영체제에는 메모리에 상주하지 않는 별도의, 독립적인 프로그램이지만 운영체제의 범주에 포함시킨다.

운영체제의 목표

컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다. 운영체제는 동시 사용자 / 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것과 같은 환상을 제공한다. 또한 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행한다.

예를들어 Virtual Machine을 생각해보자. 커다란 컴퓨터가 하나가 있고, 그에 대한 virtual machine이 여러개가 있다. 여러명의 사용자는 자신의 프로그램을 돌릴 때 공통된 하나의 컴퓨터에서 프로그램을 실행하게 되는데, 마치 각각 다른 컴퓨터에서 실행하는 것과 같은 환상을 제공해준다.

운영체제의 가장 핵심적인 목표는 바로 컴퓨터 시스템의 자원을 효율적으로 관리(자원관리자)하는 것이다.

프로세서, 기억장치, 입출력 장치 등의 효율적 관리를 하여

  1. 사용자간의 형평성 있는 자원을 분배하고 (형평성)
  2. 주어진 자원으로 최대한의 성능을 내도록 (효율성)

한다.또한 사용자 및 운영체제 자신의 보호해주고, 프로세스, 파일, 메시지 등을 관리해준다.

 

이러한 자원들을 효율적으로 관리하여 사용자에게 위와 같이 각각 다른 컴퓨터에서 실행하는 것과 같은 환상을 제공해주는데, 예를 들면

  1. 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당하거나,
  2. 실행중인 프로그램들에 메모리 공간을 적절히 분배

함으로써 자원을 효율적으로 관리한다.

운영 체제의 분류

운영 체제는 여러 가지 기준을 통해 분류할 수 있다.

  1. 동시 작업 가능 여부
  2. 사용자의 수
  3. 처리 방식

동시 작업 가능 여부

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

사용자의 수

여러 명의 사용자가 동시에 접속해서 사용할 수 있는지

  • 단일 사용자(single user)
    • MS-DOS, MS Windows
  • 다중 사용자(multi user)
    • UNIX, NT server

처리 방식

  • 일괄 처리(batch processing)
    • 작업 요청의 일정량을 모아서 한꺼번에 처리. 현대 운영체제에서는 찾아보기 힘듦
    • 작업이 완전 종료될 때까지 기다려야 함
    • 예) 초기 Punch Card 처리 시스템
  • 시분할(time sharing)
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용. 현대 운영체제에서 사용하는 방법.
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐. 예) UNIX
    • interactive한 방식
    • 사람이 느끼기에 조금 느려도 주어진 빠르게 해주면서, 동시에 주어진 자원을 최대한 활용하는 것이 목적이다.
  • 실시간(Realtime OS)
    • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS. 즉 특정한 목표를 가진 시스템에서 그 작업이 반드시 처리되도록 하는 처리 방식이다.
    • 예) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
  • 실시간 시스템의 개념 확장
    • Hard realtime system(경성 실시간 시스템)
    • Soft realtime system(연성 실시간 시스템) - 반도체처럼 엄청 엄격하지는 않지만 데드라인이 존재.

스마트폰 어플리 케이션 등에서 예를들면 네비게이션 어플에서 우회전을 해야하는데 3초뒤에 알려줘서 엉뚱한 길로 가게 되는 등의 일이 발생할 수 있어 점점 실시간 os의 필요성이 증가하고 있다. 그래서 실시간성을 범용 프로그램이 어떻게 지원하게 되는가에 대해 많은 연구가 이루어지고 있다.

몇 가지 용어 정리

Multitasking

여러 작업이 동시에 실행되는 것. CPU 는 실제로 한번에 하나의 작업만을 실행하는데, 그 교체 간격이 매우 짧아 마치 여러개의 프로그램을 동시에 돌리는 것처럼 보인다.

Multiprogramming

메모리 측면을 강조하여, 여러 프로그램이 메모리에 올라가 있음을 강조한다.

Time sharing

CPU 측면을 강조. 

Multiprocess

여러 프로그램이 동시에 실행된다.

구분

  • 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
  • Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조한다.
  • Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조한다.

Multiprocessor

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

운영체제의 예

유닉스(UNIX)

초반 유닉스는 대형 컴퓨터를 위해 만들어진 운영체제이다.

  • 코드의 대부분을 C언어로 작성
    • 원래 유닉스를 만들 때에 어섬블리어(기계어)를 통해 만들었는데, 그러다 보니 코드가 너무 길고 복잡해져서 C언어(고급 언어)라는 프로그래밍 언어를 유닉스를 구현하기 위해 만들었다. 그래서 시스템 소프트웨어를 만들 때에는 지금도 기본적으로 C언어로 구현하고 있다.
  • 높은 이식성
    • 이식성이란 Portable하다는 것인데, 이것은 유닉스를 기계어 집합이 다른 전혀 다른 컴퓨터에 이식하기 쉽다는 것이다. 유닉스는 C언어로 만들어졌고, 그 C언어는 기계어와 독립적인 언어이기 때문에 이식성이 높다.
  • 최소한의 커널 구조
    • 운영체제의 모든 기능을 커널에 집어넣게 되면 커널의 상당부분을 운영체제가 차지하게 된다. 하지만 그렇게 하지 않고 대부분 밖으로 빼고, 핵심적인 부분만 커널에 넣는 구조로 구현되었다.
  • 복잡한 시스템에 맞게 확장 용이
  • 소스코드 공개
  • 프로그램 개발에 용이
  • 다양한 버전
    • System V, FreeBSD, SunOS, Solaris
    • Linux

DOS(Disk Operating System)

옛날에는 단일 컴퓨터가 주를 이루어 이를 위해 MS에서 DOS를 만들었다.

  • MS 사에서 1981년 IBM-PC를 위해 개발
  • 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억 장치 : 640KB)

MS Windows

개인용 컴퓨터(PC)를 위해 만들어진 운영체제이다.

  • MS 사의 다중 작업용 GUI 기반 운영 체제
  • Plug and Play, 네트워크 환경 강화
  • DOS용 응용 프로그램과 호환성 제공
  • 불안정성
  • 풍부한 지원 소프트웨어

Handheld device를 위한 OS

  • PalmOS, Pocket PC(WinCE), Tiny OS

운영체제의 구조

 

CPU는 어떤 프로그램에게 CPU를 할당할 것인가에 대한 이슈가 있다. 이를 CPU스케줄링이라고 한다. 

 

 

한정된 메모리에 어떤 프로그램에게 메모리를 얼마나 줄 것인가에 대한 이슈가 있다. 1/n이 효율적이지 않기 때문이다.

 

 

디스크에 파일을 어떻게 보관하는 지에 대한 이슈가 존재한다.

 

각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고받을지 입출력 관리에 대한 이슈가 있다.

 

 

 

모든 경우에 FIFO가 효율적이지 않기 때문에 이러한 것들을 어떻게 처리하고, 어떻게 보관하는지에 대한 방법론들이 존재한다. 

profile

SY 개발일지

@SY 키키

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!