본문 바로가기
Computer Science/OS (운영체제)

[OS] 컴퓨터 시스템의 발전

by SIXXXX_ 2022. 3. 18.
728x90

역사

수작업 → 단일프로그래밍 → 다중프로그래밍 & 시분할 시스템 → 모바일 OS & 실시간 시스템

 

종류

일괄처리시스템

일괄처리 시스템(Batch System)

  • 초기의 컴퓨터가 동작하는방식, 물리적으로 콘솔에서 수행을 하던 방식에 사용하던 시스템.
  • 운영체제에 도입됨으로서 비슷한 것은 주기적으로 한 번에 묶어서 처리할 수 있게 되었다.
  • 처리 속도를 향상시키기 위해 유사한 요구를 가지는 작업들을 함께 모아서 이들을 하나의 그룹으로 수행한다.
  • 다만 기계적인 입출력 장치의 속도가 CPU 와 같은 전자적인 장치의 속도보다 느리기 때문에 CPU가 계속해서 쉬는 상태인 경우(idle)가 많다.
  • 일괄처리 시스템은 상호작용이 필요없는 큰 단위의 작업들을 수행할 때 사용된다.
  • CPU가 효율적이게 만들려면 계속 일을 해야된다. → 다중 프로그램으로 발전

 

 

단일프로그래밍(Uni-Programming)

  • CPU연산 → 입출력을 반복하는 형태
  • Wait 상태를 CPU idle 상태
  • I/O 상태이거나 다른 동작을 하고 있기 때문에 CPU가 일을 하고 있는 건 아니다.

 

다중프로그래밍(Multi-Programming)

  • CPU가 idle 상태일때 CPU 연산을 다른 프로그램에게 넘겨주는 것을 의미한다.
  • 처리량이 높다(Trought)
  • 활용도가 높다(Utillization)
  • Degree of multiprogramming이 높을수록 처리량과 활용도가 높다.

 

 

다중프로그램시스템

다중프로그램 시스템(Multi-Programmed System)

  • CPU가 수행할 작업을 항상 가지도록 하는 방식
  • 쉴때 다른 프로그램이 작동
  • 메모리에 여러 개의 프로그램을 상주시켜 하나의 CPU로 동시에 여러 프로그램을 실행하는 것처럼 처리하는 시스템
  • HDD나 SSD에서 여러 개의 프로그램을 선택해 메인 메모리(RAM)에 적재
  • 이후 메모리 내에 있는 작업 중 하나를 선택해 차례대로 실행
  • 이때 수행 중인 작업이 입출력 때문에 기다리는 상태에 도달하면 CPU는 다른 작업으로 넘어가서 수행을 계속한다.
  • 이후 첫작업이 끝나면 현재의 작업을 중단하고 다시 첫작업이 CPU를 차지하게 되는 방식
  • 어떤 프로그램 수행할지 ? 스케줄링을 통해 해결
  • 가능해짐에 따라 여러 프로그램에서 출력이 산발적으로 발생함. 이에 대한 문제를 Buffering 과 Spooling을 통해 해결

 

 

 

 

시분할 시스템

시분할 시스템(Time-Sharing System)

  • 다중 프로그래밍의 장점+확장한 시스템
  • 프로그램이 수행되고 있을때 아주 짧은 주기로 CPU를 각각의 프로그램에 할당해주는 방법
  • 다중프로그래밍 방식은 입출력이 일어날때만 스케줄링 일어남, 한 프로그램의 입출력 작업이 완료되더라도 해당 프로그램의 작업을 다시 시작할 수 없는 단점이 있는데 이를 보완하기 위해 등장한 것이 시분할 시스템
  • 사용자는 프로그램이 수행되고 있는 동안에도 상호작용할 수 있다.
  • 아주 짧은 주기로 전환이 이뤄져 사용자는 모든 프로그램이 동시에 작동하고 있다고 느낀다.
  • 하나의 CPU는 하나의 작업만 한번에 실행할 수 있기 때문(여러개의 작업을 동시에 수행할 수 없기 때문에) CPU의 전체 사용 시간을 작은 작업 시간량(Time Slice, Quantum)으로 나누어서 시간량 동안만 번갈아가면서 CPU를 할당해 각 작업을 처리한다.
  • 라운드 로빈(Round Robin) 방식

ex. 리눅스와 같은 운영체제는 여러 명의 사용자가 동시에 한 대의 컴퓨터에 접속해서 서로 다른 처리를 할 수 있도록 해주는데 이는 시분할 시스템을 적절하게 반영한 사례

 

 

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

실시간 시스템은 CPU의 동작이나 작업이 즉시적인 처리를 요할때 채택되는 시스템.

엄격한 마감시간(DEAD LINE)이 요구되었고 이를 만족하는 시스템을 실시간 시스템.

주로 의학 영상 시스템이나 무기 시스템에 실제로도 굉장히 많이 사용되고 있다.

ex. 핀테크, SaaS, 에너지, 미디어 및 커뮤니케이션

  • 경성 실시간 시스템(Hard Real-Time System) : 빠른 시간이 절대적으로 요구되는 시스템으로 단기 메모만 써서 시간 엄수를 최우선적으로 끌어올린다. ex. 미사일 발사 시스템(정밀, 신속 위치판별이 요구되는)
  • 연성 실시간 시스템(Soft Real-Time System) : 더욱 우선순위를 가지고 빠르게 계산이 되긴 해야하지만, 절대적으로 시간만을 중요시하지는 않는 시스템으로 일반 컴퓨터에도 많이 녹아있는 구조이다.  ex. 음악을 들을때 웬만하면 컴퓨터가 렉이 걸려도 끊이지 않는다.

 

다중처리 시스템(MultiProcessor System) = 병렬 시스템(Parallel System)

 

다중처리시스템

  • CPU가 여러 개인 시스템을 의미하며 각각의 CPU들이 아주 밀접하게 통신을 하는 구조
  • 대칭적 다중 처리 시스템(SMP)
    • 각 CPU가 하나의 OS 하에 작동한다.
    • CPU끼리 데이터를 효율적으로 공유하는 구조로 운용

 

MultiProcessing System

 

  • 비대칭적 다중처리시스템
    • 하나의 프로세서가 다른 프로세서의 주,종관계로서 종 프로세서가 주 프로세서의 명령을 처리, 주 프로세서는 종 프로세서로 작업을 할당
    • 각 처리기마다 특정한 작업이 정해져 있고 하나의 주요 CPU가 시스템을 제어하며 다른 CPU 들은 미리 정의된 작업 혹은 명령을 수행한다.

 

 

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

분산처리시스템

네트워크를 이용해 동시에 작업을 처리하는 시스템, 각각의 CPU 들은 메모리를 공유하지 않는다. 적절한 자원공유로 계산 속도가 증가하고 신뢰성이 증가

  • Client & Server System : 클라이언트가 서버로 어떤 작업 요청을 보내고 서버는 그 작업을 수행해 다시 클라이언트에게 응답을 보내는 구조 ex. 게임
  • P2P 시스템(Peer to Peer System) : 각 컴퓨터가 서버이자 클라이언트가 되는 시스템 ex. 토렌트서비스, 블록체인

Peer to Peer System

클러스터 시스템(Clustered System)

물리적으로 많은 CPU 를 한 곳에 모아 특정한 작업을 수행하는 시스템, LAN으로 서로 연결된 각각의 CPU는 다른 CPU와 상호작용하여 고속처리 서비스를 지원한다.

  • 대칭적 클러스터 시스템 : 각각의 CPU가 호스트가 되어 서로를 관리하는 구조로 둘 이상의 작업을 수행할 수 있다.
  • 비대칭적 클러스터 시스템 : 호스트 CPU가 다른 CPU를 관리하면서 특정한 CPU가 작동을 중지하면 호스트 CPU가 작업을 돕는 구조

Clustered System

 

 

 

 

 

 

 

용어정리

작업스케줄링

  • 보조기억장치에 프로그램에 저장되어 있고 그 중 일부를 선택해서 메모리에 적재하는 전략

CPU 스케줄링

  • 메모리에 올라온 작업들 중에서 무엇부터 실행할지 고르는 전략

Buffering

  • 입출력 시 CPU의 속도와 입출력 장치간의 속도 차이를 해소하기 위해 하드 디스크나 매모리 영역에 자료를 잠시 저장해놓는 것

Spooling

  • Buffering과 유사한 개념이지만 버퍼링은 속도의 차이를 해소하기 위한 것이었다면 Spooling은 순차적 사용장치(ex.프린터)를 병렬 수행 프로그램이 사용할 수 있도록 도와주는 방법이다. 속도가 빠르고 임의 접근이 가능한 디스크에 출력되는 자료를 임의도 모아놓고 처리한다.
  • SPOOL : Simultaneous Peripheral Operations On-Line의 약자

 

  • 프로그램1에서 1의 결과를 내고 프로그램2에서 2의 결과를 냈다. 그리고 다시 프로그램1에서 3의 결과를 냈다. 결과의 처리순서는 1-2-3으로 이루어 졌지만 올바른 순서로 프린트하려면 프로그램1에서 수행한 1,3이 프린트되고 프로그램2에서 수행한 2가 프린트되어야 할 것이다. 이를 도와주는 것이 Spooling이다. 디스크에 자료를 저장했다가 프린터로 그를 보냄으로서 이를 해결한다.

 

 

REFERENCE