Computer Science/Operating System

[운영체제] 운영체제의 여러 종류 | Batch, Multi-programming, Time-Sharing, Distributed, Real Time OS 등

brong 2023. 9. 6. 00:37
728x90

이전 포스팅

 

[운영체제] 운영체제의 역사 (feat. 컴퓨터의 역사)

이 포스팅에서 다루는 내용운영체제의 역사, 컴퓨터의 역사, 배치시스템, resident monitor (상주모니터), spooling, multiprogramming 들어가며...지금의 운영체제들이 왜 이러한 모습을 갖추게 되었는지는

thisisphysis.tistory.com

 

 이번 포스팅에서 다루는 내용

운영체제의 여러 종류

배치 시스템, 멀티 프로그래밍 시스템, 멀티 프로세싱 시스템, 멀티 테스킹 시스템, 
분산 시스템, 시분할 시스템, 네트워크 시스템, 실시간 시스템

 

+ (나름 운영체제의 발전 순서대로 나오기 때문에 참고,,) 예전에는 하나의 컴퓨터를 여러 명이 사용하는 것이 일반적이었다

 

 

 

 

배치 시스템 Batch Operating System 


-> 여러 작업을 묶어서 일괄적으로 처리하는 시스템!

batch operating system

 

 

배치 시스템은 컴퓨터와 직접 상호 작용하지 않고, 운영자(operator)가 존재한다. 

운영자는 동일한 요구사항을 가지는 비슷한 작업(job)들을 모아 하나의 배치로 그룹화한다. 

어떤 순서로 잡들을 실행시킬지 결정하는 것은 운영자의 몫이다. 

 

예를 들어, 하루 종일 주문을 수신하는 전자 상거래 시스템을 생각해보자. 계속해서 들어오는 주문들을 그떄그때 처리하는 대신 정해진 시간에 여러 주문들을 하나의 배치로 묶어 일괄적으로 처리하는 것이 배치 시스템이다. 

 

배치 시스템은 비슷한 작업들을 일괄적으로 처리하기 때문에 대량의 반복적인 작업을 하는 경우에 유용하겠다.

 

 

장점

  • 작업이 완료되는데 걸리는 시간을 알 수 있다. 
  • 많은 사용자들이 배치 시스템을 공유할 수 있다. 
  • CPU를 쉬지 않고 활용할 수 있다.
  • 대량 작업들을 관리할 수 있다.

 

단점

  • 컴퓨터 운영자가 배치 시스템에 대해 잘 알고 있어야 한다.
  • 디버그가 어렵다. 
  • 설치와 유지 비용이 비싸다.
  • 만약 특정 작업이 완료에 실패하면, 그 뒤의 다른 작업들은 계속 기다려야 한다. backlog

 

 

멀티 프로그래밍  시스템  Multi-Programming Operating System


-> 메모리 상에 여러 프로그램을 로드해서 번갈아 수행하는 시스템 ! 

 

원래 단일 프로그래밍 시스템에서는...

메모리 상에는 하나의 작업만 로드하고 해당 작업이 완료된 다음에야 다음 작업을 메모리 상에 로드 할 수 있었다.

현재 수행할 프로그램 하나가 메모리 상의 유저 프로그램 영역과 CPU를 독점하는 구조였다. 즉 한번에 하나의 프로그램만 실행이 가능했다. 

 

그러나 이러한 시스템이 비효율적인 이유! 

작업을 수행하는 과정 중에는 자기 테이프나 디스크로부터 데이터를 읽고 쓰는 입출력 과정도 있다. 다시 말해 작업을 수행하는 시간 내내 CPU가 필요한 것은 아니다. CPU가 필요없는 시간에도 하나의 잡이 CPU를 독점하게 되므로 비효율적이다. 

 

잡의 종류는 크게 두 가지로 나눌 수 있다. 

 

1. CPU-bound jobs : 입출력보다는 거의 연산을 하는 잡으로, CPU 이용률이 높다. (과학, 공학 계산 프로그램 등)

2. I/O-bound jobs : CPU 연산보다 거의 입출력을 하는 잡으로, CPU 이용률이 낮다. (상업적 데이터 처리 프로그램 등) 

 

단일 프로그래밍 시스템에서는 잡이 입출력 연산을 수행하는 중에는 CPU는 아무 것도 안하고 놀았기 때문에, I/O-bound 잡이 수행되고 있었다면 CPU의 80-90%까지 낭비하는 것이었다. 게다가 입출력 연산은 CPU 연산에 비해 느리기 때문에 성능은 더 떨어질 수 밖에 없었다. 이러한 이유로 멀티 프로그래밍이 등장하게 된 것이다. 

 

멀티 프로그래밍은 두 개 이상의 독립된 프로그램을 메모리 상에 인접하지 않게 배치하여 실행하는 것이다. 작업별로 메모리 파티션에 분리하여 로드된다. 

현재 실행중인 작업이 I/O 연산을 하게 되면, 운영 체제는 CPU를 메모리 상에 존재하는 다른 프로그램에게 할당해 주었다. 이렇게 되면 CPU 자원을 낭비하지 않고 계속 작업을 수행할 수 있다.

multiprogramming operating system

만약 job1이 CPU 연산을 수행하다가 I/O 연산을 하면, 운영체제는 job2에게 CPU를 할당해줄 수 있다. 

 

멀티 프로그래밍 시스템의 조건

멀티 프로그래밍 시스템이 구현되기 위해서는 몇 가지 조건이 존재한다. 

  1. 큰 메모리 공간이 필요하다 : 여러 사용자를 수용하려면 여러 잡들을 메모리 상에 로드해야 하니까
  2. 메모리 보호 : 잡이 다른 잡의 프로그램이나 데이터를 변경하는 것을 막아 잡에 대한 데이터를 보호해야 한다. 
  3. 잡의 상태 보존 : 수행 중이던 작업이 입출력 연산에 의해 CPU 연산이 중단되었다가 이후에 다시 실행되기 위해서 운영체제는 반드시 잡의 상태 정보를 저장해야 한다. CPU를 다른 잡에게 넘겨주기 전에 상태를 저장해야 한다. 잡의 실행 정보를 저장하기 위해서 운영체제는 각 메모리 파티션별로 프로세스 컨트롤 블록 (PCB; process control block)을 유지한다. 
  4. 적절한 잡 믹스 : CPU와 I/O 장치를 같이 효율적으로 활용하기 위해서 CPU-bound, I/O-bound job을 적절히 잘 섞어야 한다.
  5. CPU 스케쥴링 : 멀티프로그래밍 시스템에서는 여러 개의 잡들이 준비 상태에 있게 된다. CPU를 새로 할당해줄 때, 준비 상태의 잡 중 누구에게 할당해줄 지 결정해야 했다. CPU를 최대한 활용할 수 있게 스케쥴링을 위해서 CPU 스케쥴링 알고리즘도 필요했다.

 

 

장점

  • 시스템의 Throughput(시간당 처리량)을 증가 시킴
  • 응답 시간을 줄임

단점

  • 유저에게 시스템 자원에 대한 기능을 제공하지 않음 

 

 

 

 

멀티 프로세싱 시스템 Multi-Processing Operating System 
(멀티 프로세서 시스템, 병렬 시스템 Parallel Operating System)


-> 여러 개의 CPU로 한 번에 여러 개의 프로그램을 수행하는 시스템!

멀티 프로그래밍 시스템이 하나의 CPU를 가진 시스템이었다면, 멀티 프로세싱 시스템은  하나 이상의 CPU(프로세서)를 탑재하여 동시에 여러 프로그램이 수행되는 시스템이다. 

 

 

장점

  • 시스템의 Throughput을 증가 시킴
  • 여러 개의 프로세서를 가지므로, 하나의 프로세서가 실패하더라도 다른 프로세서가 수행을 완료할 수 있음

단점

  • 여러 개의 CPU가 존재하므로, 더 복잡해지고 이해하기 어려워졌다. 

 

 

멀티 테스킹 시스템 Multi-Tasking Operating System


 

멀티 테스킹 시스템은스케쥴링 알고리즘을 사용하여 여러 개의 프로그램을 동시에 수행시키는 멀티 프로그래밍 시스템이다.

프로세서는 기본적으로 한번에 하나의 프로그램만 실행시킬 수 있는데, 여러 프로그램을 번갈아 가며 수행하여 마치 여러 프로그램이 동시에 수행되는 것처럼 보이게 하는 시스템이다. 

 

multitasking operting system

장점

  • 동시에 여러 프로그램이 수행될 수 있다. 
  • 적절한 메모리 관리를 한다. 

단점

  • 무거운 프로그램들이 연속적으로 수행되다 보면 발열 문제가 발생 

 

 

 

시분할 시스템 Time-Sharing Operating System


-> 하나의 컴퓨터 시스템을 복수의 사용자가 동시에 대화식으로 사용하는 시스템

Time sharing operating system

 

모든 사용자들의 task들을 실행시키기 위해 각각의 task는 실행을 할 수 있는 시간을 할당받는다.

즉, 각각의 프로그램들은 CPU등의 자원을 사용할 수 있는 시간을 가지게 된다. task는 한 명의 사용자 혹은 여러 명의 사용자의 것일 수 있다. 

 

위에서 다룬 multi-tasking system과 거의 유사한데, 시분할 시스템은 여러 명의 사용자가 하나의 대형 컴퓨터를 사용하는 시스템이고, 멀티 테스킹 시스템은 한 명의 사용자가 여러 프로그램을 동시에 실행시킨다는 차이점이 있다. 

 

quantum : 각 task들이 할당받은 시간 

각 프로그램들은 정해진 quantum만큼 CPU 연산을 진행하고, 시간이 다하면 운영체제는 다음 프로그램을 실행시키기 시작한다. 

 

 

 

 

장점

  • 각각의 task는 공평한 기회를 가진다. 
  • CPU가 낭비되는 시간을 줄힐 수 있다.
  • 자원 공유 : 여러 명의 사용자들이 하나의 하드웨어 (CPU, 메모리 등)을 공유할 수 있다.
  • 생산성 향상 : 여러 사용자들의 프로그램을 동시에 돌아가게 하여 사용자들이 컴퓨터 사용을 위해 기다리는 시간이 없어지기 때문에, 더 많은 일을 할 수 있다.
  • 사용자 경험의 향상 : 사용자들이 컴퓨터와 실시간으로 통신할 수 있는 상호적인 환경을 제공하기 때문에, 배치 시스템보다 좋은 사용자 경험을 제공한다. (배치 시스템 - 실시간 처리 x 일괄 처리)

 

단점

  • 안정성 문제
  • 사용자들의 프로그램과 데이터의 보안과 무결성에 대해 각별히 주의해야 함
  • 높은 오버헤드 : 여러 사용자를 관리하기 위해 스케쥴링, 문맥 교환 등을 위한 오버헤드가 다른 시스템에 비해 크다. 
  • 복잡성 : 동시에 여러 사용자를 관리해야 하기 때문에 복잡하고 더 발전된 형태의 소프트웨어가 필요하다.
  • 보안 위험 : 여러 사용자가 같은 자원을 공유하기 때문에, 보안 문제가 발생한다. 따라서 사용자 접근, 인증 등에 신경 써야 함. 

 

 

분산 시스템 Distributed Operating System


Distributed operating system

최근 발전된 형태의 시스템으로, 전세계적으로 널리 퍼지고 있다. 서로 자율적으로 상호 작용하며 독립되어 있는 여러 컴퓨터들이 하나의 네트워크를 통해 통신한다.  독립된 컴퓨터들은 독립된 메모리, CPU 등의 부품을 가지고 있다. 

사용자는 네트워크로 연결되어 있는 다른 시스템에 접근하는 것이 가능하다. 

 

 

장점

  • 하나의 컴퓨터에 에러가 발생해도 다른 컴퓨터에 영향을 주지 않음. (다른 시스템들도 그러하지만)
  • 자원들을 공유하기 때문에, 빠른 연산 속도를 가진다. 
  • 호스트 컴퓨터의 부하가 줄어든다.
  • 다른 시스템을 네트워크 상에 추가만 하면 쉽게 규모를 키울 수 있다.
  • 데이터 처리 딜레이가 줄어든다.

 

단점

  • 메인 네트워크가 망가지면 전체 시스템이 멈춘다.
  • 분산 시스템을 구축하기 위한 언어가 아직 잘 정의 되지 않았다.
  • 매우 비싸다

 

 

 

 

 

네트워크 시스템 Network Operating System (NOS)


Network operating system

 

라우터, 스위치, 방화벽 같은 네트워크 장치를 위해 특화된 시스템이다. 이 시스템은 서버에서 실행되며 데이터, 사용자, 그룹, 보안, 응용 프로그램, 네트워크 기능을 관리하는 기능을 제공해준다. 컴퓨터와 장치들이 인터넷에 연결될 수 있게 해준다. 

클라이언트(사용자)는 소규모 네트워크를 통해서 서버에 제공하는 기능을 이용할 수 있다. 여러 사용자들이 파일, 프린터, 보안, 네트워크 기능 등에 대한 접근이 가능하도록 한다.

 

서버와의 네트워크 연결을 통해 기능을 이용하므로 모든 사용자들은 네트워크 내의 모든 다른 사용자의 기본 구성, 개별 연결 등을 잘 알고 있어야 한다. 그래서 tightlu coupled system이라고 불린다.

 

장점

  • 안정적인 중앙 집중 서버
  • 서버를 통해 보안 기능이 관리된다.
  • 새로운 기술이나 하드웨어들을 쉽게 시스템에 통합시킬 수 있다.
  • 먼 거리에서도 서버에 접근이 가능하다.

 

 

단점

  • 서버가 비싸다.
  • 사용자들은 대부분의 기능들을 중앙 서버에 의존해야 한다.
  • 계속해서 유지 보수가 필요하다.

 

 

 

 

실시간 시스템 Real-Time Operating System (RTOS)


Real time operating system

실시간 시스템을 제공하는 운영체제이다. 사용자가 요청을 하면 운영체제는 즉각 처리해서 응답을 한다. 

 

응답 시간 : 입력을 처리하고 응답하는 데 필요한 시간 간격

실시간 시스템은 이 응답 시간이 매우 작다. 그렇기 때문에 실시간으로 입력을 처리한다고 하는 것이다. 

 

이 시스템은 바로바로 요청을 처리해야 하는 곳에 많이 사용된다. 매우 엄격한 시간 요구 사항이 있는 미사일 시스템, 항공 교통 관제 시스템, 로봇 등에서 사용된다. 

 

실시간 시스템에는 크게 두 가지 타입이 존재한다. 

  • Hard real-time system

시간 제약이 매우 엄격한 실시간 시스템. 약간의 지연도 허용하지 않는다. 사고가 발생했을 때 바로 사용할 수 있게 낙하산이나 에어백 같은 애플리케이션을 위해서 만들어졌다. 

 

  • Soft real-time system

시간 제약이 덜한 애플리케이션을 위한 운영체제 시스템이다. 

 

 

장점

  • 장치와 시스템을 최대로 활용할 수 있다. 모든 자원을 활용할 수 있기 때문에 더 많은 결과물을 낼 수 있다.
  • 빠르게 실행하는 task 를 바꾼다.
  • 실행 중인 애플리케이션에 집중할 수 있다.
  • 사이즈가 작기 때문에 임베디드 시스템에 탑재하기에 적합하다.
  • error free
  • 메모리 할당하기에 가장 유리한 시스템 (가상 메모리를 사용하지 않음)

 

단점

  • 동시에 실행할 수 있는 task의 개수가 제한적이다. 
  • 무거운 시스템 자원을 사용하고 비싸다. 
  • 복잡한 알고리즘
  • 특정한 디바이스 드라이버와 인터럽트 신호가 필요하다.
  • 스레드 우선 순위를 설정하기 어렵다. 

 

 

 

정리 ) Operating Systems ... 


배치 시스템 : 여러 job을 하나의 batch로 만들어 일괄 처리 

멀티 프로그래밍 시스템 : 메모리 상에 여러 개의 프로그램을 적재해 번갈아 실행

멀티 프로세싱 시스템 : 여러 개의 프로세서(CPU)를 가짐

멀티 테스킹 시스템 : 하나의 CPU로 여러 프로그램을 동시에 실행

시분할 시스템 : 하나의 컴퓨터를 여러 사용자들이 번갈아 사용

분산 시스템 : 분리되어 있는 컴퓨터들이 네트워크를 통해 서로 연결

네트워크 시스템 : 네트워크 장치를 위한 운영체제

실시간 시스템 : 요청에 즉각적으로 응답하는 운영체제

 

 

 


ref.

https://www.geeksforgeeks.org/types-of-operating-systems/

https://ecomputerconcepts.com/what-is-multiprogramming/