마농의 개발 일지

1. 운영체제란 무엇인가? 본문

운영체제

1. 운영체제란 무엇인가?

마농.. 2022. 8. 4. 18:38

  컴퓨터가 알아들을 수 있는 건 0과 1밖에 없다고 한다. 그렇다면 우리가 입력한 내용을 컴퓨터가 어떻게 처리하는 걸까? 이런 물음들에 한 번에 답하기는 어렵다. 우선 하드웨어 장치가 동작하는 원리는 제쳐두도록 하고, 완제품 컴퓨터가 배달된 상태에서부터 시작해 보도록 하자. 당신은 프리도스 노트북을 구매했다. 가장 먼저 하는 일은 무엇일까? 운영체제를 설치해야 한다! 

 

  • 운영체제란? 

  운영체제는 하드웨어란 위에 가장 가까이 설치되는 소프트웨어다. 컴퓨터 시스템 자원을 효율적으로 관리할 수 있게 '도와주는' 소프트웨어. (말이 도와주는 거지 운영체제느님...... 개발자느님들......감사합니다)  만약 내가 바이너리 코딩(0과 1만을 사용한 코딩)을 할 줄 알았다면 무수한 시간과 노력을 들여서 시스템 자원을 사용할 수도 있었겠다. 시스템 자원(리소스)이란, 컴퓨터 시스템을 구성하는 하드웨어인 CPU, 메모리, 입출력장치들을 말한다. 그러나 이만한 비효율이 있을까. 이미 사용자가 편리하게 컴퓨터 시스템을 사용할 수 있게 해주는 환경을 제공하는 소프트웨어, 운영체제가 존재하고 있는데.

 

  • 운영체제의 역할

  대표적 운영체제 중 하나인 마이크로소프트사의 윈도우를 설치했다고 생각해보자. 이 윈도우는 컴퓨터 메모리에 저장된다. 메모리에 상주하게 되는 운영체제를 가리킬 때 우리는 커널(kernel)이라는 용어를 사용한다. 운영체제는 다양한 역할을 수행한다. 첫째, 위 언급했던 것처럼 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해준다. 둘째, 하드웨어 및 소프트웨어 자원을 효율적으로 관리한다. 우리가 유튜브를 틀어 놓고 다른 소프트웨어 작업을 할 수 있는 건, 여러 프로그램을 동시에 작동시킬 수 있도록 CPU의 시간을 스케줄하여 명령하는 운영체제 덕분이다. (운영체제가 보스다. CPU는 그의 오른팔.) 또한, 운영체제는 인터넷 메모리 및 디스크에 저장된 많은 데이터가 유출되지 않도록 쉴드 역할을 한다. 

 

  • 운영체제의 분류

  물론 이것은 현대 보편화된 PC 내에 설치되는 운영체제에 대한 설명이다. 이외에도 다양한 운영체제가 존재하며, 여러 기준으로 분류가 가능하다. 먼저 동시 작업 가능 여부로 분류해보자. 이때 운영체제는단일 작업만을 지원하는 운영체제와  멀티프로세싱을 지원하는 운영체제로  나눌 수 있다. 후자는 PC뿐만 아니라 스마트폰 그리고 스마트티비 등 다양한 사물 내에 내장되기 위하여 점점 발전 중이다.

 

  사용자의 수로도 운영체제를 분류할 수 있다. MS-DOS MS-Windoows 등은 한 명의 사용자만 접근이 가능한, UNIX의 경우 다중 사용자 시스템을 지원한다. 마지막으로 프로세싱 방식에 따라 분류할 수 있다. 위에서 언급했던 것처럼 CPU 스케줄링을 하는 처리 방식을 시분할(Time sharing)이라고 한다. 상용 컴퓨터처럼 인터랙션이 많이 일어나며, 전체 프로그램 수행시간에 대한 데드라인이 없는 상황에서 사용된다.

 

  그렇다면 정해진 시간 안에 어떤 프로그램이 반드시 종료됨이 보장되어야 하는 시스템엔 다른 운영체제가 필요하지 않을까? 예를 들어 원자로나 공장 제어 시스템, 미사일 시스템, 반도체 생산 시스템 같은 경우 말이다. 이런 시스템에 사용되는 운영체제는 실시간 운영체제(Real Time OS)다. 리얼타임 OS는 다시 한 번, 데드라인이 정확히 지켜지지 않으면 치명적 결과를 초래할 수 있는 상황에 대한 Hard Real Time OS와 치명적인 결과를 초래하지는 않으나 데드라인은 존재해야하는 상황에 대한 Soft Real Time OS로 나눌 수 있다. 

  최근에는 데드라인이 없더라도 실시간성을 필요로 하는 어플리케이션이 늘어나면서(블랙박스, 내비게이션 등)  Real Time OS 분야에서 활발한 연구 및 개발 활동이 진행되고 있다.

 

  앞으로 포스팅에서 중점적으로 살펴볼 운영체제의 종류는 상용화된 PC에 탑재되는 운영체제, 즉 다중작업을 지원하며 시분할 처리방식을 사용하는 운영체제이다.

 

  • 운영체제의 구조

   운영체제는 소프트웨어다. 그냥 소프트웨어가 아니라, 컴퓨터 시스템 자원을 진두지휘하는 소프트웨어! 그렇기 때문에 운영체제의 구조 및 작동을 이해하기 위해서는 컴퓨터 하드웨어 시스템 구조를 이해하는 일이 필수적이다. 그 구조는 다음 포스팅에서 자세히 살펴보도록 하고, 운영체제, 다시 말해 커널 안에 어떤 내용의 코드가 작성될 지 다음을 보며 예측해 보는 건 어떨까? 운영체제의 입장이 되어 생각해보자.

 

    ♪  "가장 빠르게 일을 잘 하는 CPU ! 참 일꾼 CPU를 이번엔 어떤 프로세스에게 줘야 하지?   ----> CPU 스케줄링

    ♪  "기억에도 한계가 있음 ! 한정된 메모리를 어떻게 쪼개서 써야할까?" -----> 메모리 관리

    ♪  "키보드, 모니터, 프린터(입출력장치)와 다른 애들(메모리, CPU 등)이 어떻게 소통하게 할까?" ---- > 입출력 관리

    ♪  "디스크에 파일을 어떻게 저장하지?" ---- > 디스크 관리

 

 

Photo by Claudio Schwarz on Unsplash

'운영체제' 카테고리의 다른 글

프로그램 실행  (0) 2022.08.27
CPU 스케줄링  (0) 2022.08.25