Notice
Recent Posts
Recent Comments
05-18 00:26
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

1.3 Computer-System Architecture 본문

OS/OS Design

1.3 Computer-System Architecture

알 수 없는 사용자 2024. 4. 1. 15:37

 이 전에서는 컴퓨터 시스템의 구조에 대해 소개하고 요약했는데, 여기서는 다양한 장치들을 통해서 컴퓨터 시스템은 일반적인 프로세서의 사용량에 따라 여러가지 방식으로 컴퓨터 시스템을 구성할 수 있음을 볼 것이다. 다양한 컴퓨터 아키텍쳐들이 있기 때문에 이는 사용하면서 익숙해지는 것이 좋고 그런것이 있구나 정도로만 이해하길 바란다.

 

1.3.1 Single-Processor Systems

 과거에는 대부분의 컴퓨터 시스템이 하나의 CPU와 단일 처리 코어를 가진 단일 프로세서를 사용했었다. 이러한 시스템은 일반 목적의 CPU와 함께 특수 목적의 장치별 프로세서가 포함되어 있었고, 특수 목적 프로세서는 주 CPU와 별개로 작동하며, 주로 운영체제에 의해 관리되었다. 여기서 코어라는 것은 CPU 내부의 실제 처리 단위를 말하는데, 코어는 독립적으로 명령을 실행할 수 있는 프로세서이다. 즉, 이 코어가 직접 명령을 처리한다는 것이다. 싱글 프로세서 시스템은 두 개를 동시에 처리할 수 는 없고 오직 하나의 명령만 순차적으로 실행할 수 있다.

 

1.3.2 Multiprocessor Systems

 최근에는 모바일 장치부터 서버까지 다중 프로세서 시스템이 대다수 이용되어지고, 보통 두 개 이상의 프로세서를 가지게 된다. 각 프로세서는 단일 코어를 가지고 있으며, 이 프로세서들은 컴퓨터 버스를 공유하고 때로는 클럭, 메모리, 주변장치도 공유한다. 다중 프로세서 시스템의 주요 이점은 당연히 Throughput(처리량)이 증가한다는 것을 의미한다. 프로세서의 수를 증가시킴으로써 더 많은 작업을 더 적은 시간에 처리할 수 있다.

 하지만, n개의 프로세서를 가졌다고 해서 속도를 n배 증가시키는 것은 아니다. 여러 프로세서가 작업을 협력할 때 모든 부분이 올바르게 작동되도록 유지하는 데 일정한 오버헤드가 발생하기 때문에 이 오버헤드와 공유 리소스에 대한 경합으로 인해 추가 프로세서로부터 기대되는 이득이 감소하게 되는 것이다.

 가장 일반적인 다중 프로세서 시스템은 대칭 다중 처리(SMP, Symmetric Multi Processing)를 사용한다. 이는 동료 CPU 프로세서가 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업을 수행하는 구조이다.

 위는 전형적인 두개의 프로세서를 가지는 구조인데, 두 CPU는 각각 고유의 레지스터들과 캐시를 가지고 서로 주 메모리를 공유하는 것을 볼 수 있다. 장점은 많은 프로세스가 동시에 실행될 수 있으며, 이는 N개의 프로세스가 있다면 N개의 CPU가 있을때 성능이 크게 저하되지 않는 것을 말한다. 하지만 CPU가 분리되어 있기 때문에 한 CPU가 유휴 상태에 있을 수 있고, 다른 CPU가 과부하 상태라면 효율성이 떨어지게 될 것이다.

 

 이렇게 다중 프로세서의 정의는 시간이 지나면서 발전해와서 이제는 하나의 칩에 여러 개의 컴퓨팅 코어가 있는 멀티코어 시스템까지도 개념이 확장됐다. 멀티코어 시스템은 칩 내 통신이 칩 간 통신보다 더 빠르기 때문에 단일 코어 칩보다 효율적이고 훨씬 더 적은 전력을 사용하게 된다.

CPU: The hardware that executes instructions
Processor: A physical chip that contains one or more CPUs.
Core: The basic computation unit of the CPU
Multicore: Including multiple computing cores on the same CPU.
Multiprocessor: Including multiple processor.

개념 포함 관계: Core ∈ CPU ⊂ Processor

 다중 프로세서 시스템에 추가 CPU를 추가하면 컴퓨팅 파워가 증가하게 된다. 하지만 너무 많은 CPU를 추가하면 CPU간에 시스템 버스에 병목 현상이 일어나며, 성능이 저하가 될 수 있다. 이런 문제를 해결하기 위해서는 각 CPU에 작은 고속 로컬 버스를 통해 액세스되는 자체 로컬 메모리를 제공하는 것인데, CPU들은 공유 시스템 인터커넥트에 의해 연결되어 모든 CPU가 하나의 물리적 주소 공간을 공유한다. 이런 메모리 접근 방식을 비균일 메모리 액세스(NUMA)라고 한다. 자세한 설명은 검색해보길 바란다.

 이 NUMA 시스템의 잠재적 단점은 CPU가 시스템 인터커넥트를 통해 원격 메모리에 액세스해야 할 때 지연 시간이 증가하여 성능에 페널티를 줄 수 있다는 것이다. 즉, CPU0은 자신의 로컬 메모리에 액세스 하는 것보다 CPU3이 로컬 메모리를 이미 점유하고 있기 때문에 CPU0이 로컬 메모리에 액세스 하는 것이 느려진다는 얘기이다. CPU들끼리 시스템 버스를 장악하기 위해 서로 경쟁하게 되는데 이를 관리하기 위해 세심한 CPU 스케줄링 및 메모리 관리가 필요하게 되는 것이다.

  • 프로세서는 추상적인 개념이며 그 안에 CPU라는 물리적 장치가 있다.
  • CPU는 한 개 이상의 코어를 가지고 있다.
  • 여러 개의 CPU를 가지는 컴퓨터 아키텍처를 multiprocessor system이라고 한다.
  • 한 CPU에 여러개의 코어가 있는 경우 multicore라고 부른다.

 

1.3.3 Clustered Systems

 클러스터 시스템은 여러 CPU를 모아 놓은 시스템이며, 다중 프로세서 시스템과는 다르게 클러스터링 시스템은 두 개 이상의 개별 시스템 또는 노드가 함께 모여 구성된다. 각 노드는 일반적으로 멀티코어 시스템이고, 이러한 시스템은 일반적으로 느슨하게 결합된(노드가 독립적으로 작동하고, 자체 부팅을 가지고 OS를 실행하는) 것으로 간주된다.

 클러스터링은 일반적으로 High Availability 서비스를 제공하기 위해 사용된다. 클러스터 내의 하나 이상의 시스템이 실패하더라도 서비스가 계속되며, 일반적으로 우리는 시스템에 중복성을 추가하여 고가용성을 얻을 수 있다. 클러스터 노드에서 클러스터 소프트웨어 계층이 실행되고, 각 노드는 네트워크를 통해 다른 노드 중 하나 이상을 모니터링할 수 있다. 모니터링된 머신이 실패하면 모니터링 머신이 해당 저장소를 소유하고 실패한 머신에서 실행 중이던 응용 프로그램을 다시 시작할 수 있다. 물론 사용자와 클라이언트 관점에서는 서비스의 일시적인 중단만 보일 뿐이다.

 클러스터링은 비대칭적 또는 대칭적으로 구성할 수 있는데, 비대칭적 클러스터링에서는 하나의 머신이 핫 스탠바이 모드에 있으며 다른 하나가 응용 프로그램을 실행한다. 핫 스탠바이 호스트 머신은 활성 서버를 모니터링하는 것 외에는 아무 일도하지 않지만, 해당 서버가 실패하면 핫 스탠바이 호스트가 활성 서버를 대신하게 된다. 대칭적 클러스터링에서는 두 개 이상의 호스트가 응용 프로그램을 실행하고 서로를 모니터링 한다. 이 구조는 사용 가능한 모든 하드웨어를 사용하기 때문에 분명히 더 효율적이다. 하지만 두 개 이상의 응용 프로그램을 실행할 수 있어야 한다는 단점이 있다.

 클러스터는 네트워크를 통해 연결된 여러 컴퓨터 시스템으로 구성되어 있기 때문에, 클러스터는 고성능 컴퓨팅 환경을 제공하는 데 사용될 수도 있으며, 이러한 시스템은 단일 프로세서 또는 심지어 SMP 시스템보다 훨씬 더 많은 계산 능력을 제공할 수 있다. 왜냐하면 클러스터 내의 모든 컴퓨터에서 응용 프로그램을 동시에 실행할 수 있기 때문이다. 그러나 응용 프로그램은 클러스터를 활용하기 위해 특별히 작성되어야 하고, 이는 프로그램을 병렬로 나누는 parallelization이라는 기술을 포함한다. 이 기술은 프로그램을 개별 코어에서 병렬로 실행하거나 클러스터 내의 여러 컴퓨터에서 병렬로 실행하는 여러 구성 요소로 분할한다. 일반적으로 이러한 응용 프로그램은 클러스터 내의 각 컴퓨팅 노드가 자신의 문제 해결 부분을 해결한 후 모든 노드에서 결과를 조합하여 최종 솔루션을 생성하게 된다. 즉, Divide and Conquer을 하게 된다.

  • 클러스터링을 통해 고가용성(high availability)를 달성할 수 있다.
  • 각 컴퓨터는 노드라고 불린다.
  • 병렬로 처리하기 위해서는 parallelization의 기술을 포함해야 한다.

'OS > OS Design' 카테고리의 다른 글

1.6 Security and Protection  (0) 2024.04.06
1.5 Resource Management  (0) 2024.04.04
1.4 Operating-System Operations  (1) 2024.04.03
1.2 Computer-System Organization  (0) 2024.04.01
1.1 What Operating System Do  (0) 2024.03.05
Comments