본문 바로가기
CS 지식/Operating System

운영체제 - 2 (운영체제 개요)

by 눈오는1월 2024. 7. 10.
728x90

해당 정리는 youtube HPC Lab. KOREATECH의 OS 강의를 듣고 정리한 내용이다.

강의 자료는 https://hpclab.tistory.com/1?category=887083 해당 링크에 있다.

 

운영체제는 컴퓨터 하드웨어를 효율적으로 관리해서 사용자 or 응용 프로그램에게 서비스를 제공하는 시스템이다.

운영체제의 역할은 크게 4가지가 있다.

  • User Interface(편리성)
  • Resource management(효율성)
  • Process and Thread management
  • System management(시스템 보호)

컴퓨터 시스템의 구성에 대해서 알아보자

위 그림은 컴퓨터 시스템 구성의 그림이다.

OS는 (System call Interface , Kernel)을 의미한다.

OS는 Application Process와 HardWare사이에 존재하면서 HardWare를 관리하고 Application Process에 필요한 서비스를 제공한다.

System call Interface와 Kernel에 대해서 간략하게만 설명해 보자면

  • System call Interface : Application Process가 Kernel에 요청하는 통로(함수 형태)이다. 좀 더 구체적으로 정의하자면, 커널 기능 중에 사용자가 사용할 수 있는 인터페이스 모음이라고 보면 된다.
  • Kernel : OS의 핵심 부분으로 가장 비번하게 사용되는 기능

Sysem call Interface가 필요한 이유는 사용자가 직접커널을 액세스 할 경우 문제가 생기기 때문에 위와 같이 System call Interface를 둬서 문제를 해결한다.

 

운영체제는 3가지 관점에서 구분할 수 있다.

  • 동시 사용자 수
  • 동시 실행 프로세스 수
  • 작업 수행 방식

3가지 관점에서 운영체제를 어떻게 구분하는지 알아보자

동시 사용자 수

동시 사용자 수로 운영체제를 구분했을 때, 단일 사용자, 다중 사용자로 구분할 수 있다.

 

단일 사용자

  • 한 명의 사용자만 시스템 사용 가능
    • 한 명의 사용자가 모든 시스템 자원 독점한다.
    • 자원관리 및 시스템 보호 방식이 간단하다는 특징이 있다.
  • 개인용 장비에서 사용
    • window, android, mac 등

다중 사용자

  • 동시에 여러 명이 시스템 사용
    • 각종 시스템 자원들에 대한 소유 권한 관리가 필요하다.
    • 기본적으로 Multi-tasking 기능이 필요로 하다.
    • os의 기능 및 구조가 복잡하다.
  • 서버, 클러스터 장비 등에 사용
    • Unix, Linux, Window Server 등

동시 실행 프로세스 수

즉 동시 프로그램을 기준으로 구분했을 때, 단일 작업, 다중작업으로 구분할 수 있다.

 

단일작업

  • 시스템 내의 하나의 작업만 존재한다(이때 작업은 프로세스를 의미)
    • 하나의 프로그램 실행을 마친 뒤에 다른 프로그램을 실행
  • 운영체제 구조가 간단하다.
  • ex) MS-DOS

다중작업

  • 동시에 여러 작업의 수행이 가능하다.
    • 작업들 사이의 동시 수행, 동기화 등을 관리해야 한다.
  • 운영체제의 기능 및 구조가 복잡하다.
  • ex) Unix/Linux, window 등

작업 수행 방식

작업 수행의 방식에 따라 일괄처리 시스템, 시분할 시스템, 분산처리 시스템, 실시간 시스템 4가지로 구분이 가능하다.

(컴퓨터 역사를 기준으로 수행방식의 발전이다.)

 

순차 처리(~ 1940s)

  • 운영체제 개념이 존재하지 않았을 때 순차 처리 방식으로 진행했다(컴퓨터가 막 생겨났을 시점)
    • 사용자가 기계어로 직접 프로그램을 작성한다.
    • 이때 컴퓨터에 필요한 모든 작업 프로그램을 포함한다(명령어 저장방법, 계산 대산, 결과 저장 위치 등등)
  • 실행하는 작업 별 순차적으로 처리했다.
    • 각 작업에 대한 준비 시간이 소요됐다(A언어를 사용하다 B언어로 바꿀 때 컴퓨터 시스템 전체를 바꾸는 거 와 같은 행위)

여담으로 천공카드를 사용했다고 한다.

 

위 방식을 예를 들어서 설명하면 (그때당시에는 c, python, java이 없었지만, 예를 들어서 설명하자면) 어떤 사람이 c언어를 프로그래밍해서 컴퓨터에 실행시키려면 c언어에 맞춰서 환경 설정을 싹 다 진행한 후 컴퓨터에 천공카드를 넣는다 이후 다른 사람이 java를 사용하기 위해 환경 설정을 java로 세팅하는 비효율적인 방식이다.

 

Batch Systems(일괄처리 시스템)(1950s ~ 1960s)

  • 모든 시시스템을 중앙에서 관리 및 운영했다. (중앙 = 전자계산소)
  • 사용자의 요청을 일정시간 모아 두었다가 한 번에 처리하는 방식이다.

위 순차처리에서의 문제점은 사용자가 바뀔 때 환경설정을 다시 해줘야 한다는 번거로움이 존재한다. 일괄처리 시스템은 그러한 번거로움을 해결하기 위해 같은 환경에서 동작하는 프로그램을 모아뒀다가 한 번에 처리하는 방식이다.

이러한 일괄처리 시스템은 시스템 지향적이라고 볼 수 있다.

  • 장점
    • 많은 사용자가 시스템 자원을 공유한다.
    • 처리 효율이 향상된다.
  • 단점
    • 생산성이 저하된다. → 같은 유형의 작업들이 모이기를 기다려야 하기 때문
    • 응답시간이 길어진다.

Time Sharing Systems(시분할 시스템)(1960s ~ 1970s)

위 그림과 같이 프로그램을 시간을 나눠서 사용하는 것을 의미한다 (요즘 방식의 초안)

  • 여러 사용자가 자원을 동시에 사용한다 ( os가 파일 시스템 및 가상 메모리 관리가 필요했다)
  • 사용자 지향적이다
    • 대화형 시스템(조금씩 프로그램을 해놓기 때문에 반응이 존재)
    • 단말기에 사용
  • 장점
    • 응답시간이 줄어들었다.
    • (사용자 측면에서) 생산성이 향상되었다.
  • 단점
    • 통신 비용이 증가했다.
    • 개인 사용자 체감 속도가 저하됐다. → 동시 사용자 수가 많아질 경우 그만큼 시스템 부하도 많아질 것이고 이는 곧 성능저하가 생긴다.

parallel Processing System(병렬 처리 시스템)

  • 단일 시스템 내에서 둘 이상의 프로세서가 사용되는 것을 의미함
  • 메모리등의 자원을 공유한다.
  • 분산처리 시스템을 사용하게 된 이유는 성능 향상, 신뢰성 향상을 목적으로 두고 있다. 신뢰성 향상이란 하나가 고장이 나더라도 정상적으로 동작이 가능하다는 것을 의미한다)
  • 각각의 프로세서간 관계 및 역할 관리가 필요하다.

Distributed Processing System(분산 처리 시스템)

네트워크를 기반으로 구축된 병렬 처리 시스템을 의미한다.

  • 물리적인 분산, 통신망을 이용한 상호 연결
  • 각각 운영체제 탑재한 다수의 범용 시스템으로 구성한다
  • 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능하다
  • 각 구성 요소들 간의 독립성유지, 공동작업이 가능하다.
  • 장점
    • 자원 공유를 통한 높은 성능
    • 고신뢰성 높은 확장성
  • 단점
    • 구축 및 관리가 어렵다

Real-time System(실시간 시스템)

  • 작업 처리에 제한 시간을 갖는 시스템

실시간 시스템의 작업 종류는 3가지로 나눌 수 있다

  • Hard real-time task
    • 시간 제약을 지키지 못하는 경우 시스템에 치명적인 영향을 끼치는 경우
    • 예, 발전소 제어, 무기 제어 등등
  • Soft real-time task
    • 동영상 재생
  • Non real-time task

운영체제 구조

운영체제는 크게 커널과 유틸리티로 이루어져 있다.

  • 커널
    OS의 가장 핵심적인 부분으로 항상 메모리에 올라와 있다.
    메모리에 상주하는 이유는 가장 빈번하게 사용되는 기능을 담당하기 때문이다(ex> 시스템 관리 등등)

 

  • 유틸리티
    메모리에 항상 올라와 있지 않는 비상주 프로그램을 의미한다(가끔씩 쓰이는 것)

운영체제는 단일구조, 계층구조, 마이크로 커널 구조 이렇게 3가지로 구분할 수 있다.

단일구조

운영체제 기능을 하나의 커널에 모아두는 구조

장점

  • 커널 내 모듈 간 직접적으로 통신이 가능하다.(효율적인 자원 관리 및 사용이 가능)

단점

  • 커낼이 거대해진다. 이는 곧 유지보수가 어려워진다.
  • 또한 하나의 커널에 모든 것이 있기 때문에, 한 모듈의 문제가 전체 시스템에 영향을 끼친다.

계층구조

계층적으로 영역을 나눈 구조

장점

  • 모듈화로 되어있어 계층 간 검증 및 수정이 용의 하다
  • 설계 및 구현이 단순하다(각각의 기능에만 초점을 맞추면 되기 때문)

단점

  • 단일구조 대비 성능이 저하된다. (이유 : 원하는 기능 수행을 위해 여러 계층을 거쳐야 하기 때문)

마이크로 커널 구조

커널 내 필수 기능만 포함한 구조

커널의 크기를 최소화한다.

필수 기능 왜 나머지 기타 기능은 사용자 영역에서 수행한다.

운영체제의 기능

운영체제 기능에 대해 추후 알아볼 예정이다.

운영체제는 컴퓨터 내 많은 것을 관리한다(프로세스, 프로세서, 메모리, 파일, 입출력, 보조 기억 장치 & 기타 주변 장치)

 

728x90