1-2에서는 전형적인 컴퓨터 시스템의 일반적인 구조를 살펴봤다. 컴퓨터 시스템은 사용된 범용 처리기(general-purpose processor)의 개수에 따라 분류할 수 있다.
1. 단일 처리기 시스템 (Single-processor Systems)
코어(core)
는 명령(instruction)을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함한 구성요소다.코어를 가진 하나의 메인 CPU
는 프로세스의 명령어를 포함한 범용 명령어 세트를 실행할 수 있다.
위와 같은 시스템에는 디스크, 키보드와 같은 장치별 프로세서 형태로 제공되는 특수 목적 프로세서도 포함
된다.
쉽게 말하면 한 번에 오직 하나의 프로세스만 실행할 수 있는 시스템이 단일 처리기 시스템
이다.
하지만, 현대 컴퓨터 시스템에서는 single-processor 시스템이 거의 없다.
2. 다중 처리기 시스템(Multi-processor Systems) - 현재 가장 많이 사용하고 있는 시스템
일반적으로 이러한 시스템에는 2개 이상의 프로세서
가 있고 각각의 프로세서는 단일 코어 CPU를 갖고 있다.
프로세서는 컴퓨터 버스 및 클록(clock), 메모리, 주변 기기들을 공유한다.
다중 처리기 시스템의 장점
은 처리량(throughput) 증가
이다. 즉, 프로세서의 개수를 늘리면 적은 시간에 많은 작업을 수행할 수 있다.
하지만, N개의 프로세서가 존재한다고 해서 N만큼 속도가 향상하는 건 아니다. 여러 프로세서가 하나의 작업을 수행하면서 모든 프로세서가 올바르게 동작하도록 하기 위해 일정 양의 overhead
가 발생하기 때문이다.
대부분의 다중 처리기(multi-processor) 시스템은 SMP(Symmetric MultiProcessing) 방식
을 사용한다.
SMP란 두 개 또는 그 이상의 프로세서가 한 개의 공유된 메모리를 사용하는 다중 프로세서 컴퓨터 아키텍처이다.
- SMP 구조
위 그림과 같이 각각의 CPU processor는 개별적으로 로컬 캐시 뿐만 아니라 자체 레지스트리 세트도 갖고 있다.
하지만, 모든 프로세서는 시스템 버스를 통해 물리 메모리를 공유한다.
장점
은 많은 프로세스를 동시에 실행할 수 있다는 것이다.
N개의 CPU가 있으면 성능을 크게 저하시키지 않으면서 N개의 프로세서를 실행할 수 있다.
다만, CPU가 서로 독립적이라 하나가 idle 상태일 때 다른 하나가 과부하가 걸리는 비효율적인 상황이 발생할 수 있다.
이러한 비효율성은 프로세서가 특정 자료구조를 공유
함으로써 피할 수 있다.
이런 형식을 사용하면 프로세스 및 메모리와 같은 자원들을 다양한 프로세서 간에 동적으로 공유하게됨으로써
프로세서 간의 작업 부하를 낮출 수 있다. 이러한 시스템은 5,6장에서 살펴보겠지만 신중히 작성해야 한다.
다중 처리기(Multi processor)의 정의는 시간이 지남에 따라여러 개의 컴퓨팅 코어
가 하나의 칩
에 존재하는 다중 코어
시스템을 포함하게 되었다.
하나의 칩 안에서 통신하는 게 각각의 칩 끼리 통신하는 것 보다 빠르므로 다중 코어(Multi core)
시스템은 단일 코어를 가지는 여러 개의 칩보다 효율적일 수 있고 훨씬 더 적은 전력을 사용한다.
- 이중 코어 설계
1) 각각의 코어 ⇒ 자제 레지스터 세트 + 레벨 1 캐시(L1 캐시) 를 갖고 있다.
2) L2 캐시 ⇒ 이 캐시를 통해 하나의 칩에 두 개의 processor core를 공유한다.
아키텍처의 대부분은 로컬 및 공유 캐시를 결합한 이러한 접근 방식을 사용하고 있다. 로컬 하위 레벨 캐시
는 일반적으로 상위 레벨 공유 캐시
보다 작고 빠르다. 캐시, 메모리, 버스 경합과 같은 아키텍처 상의 고려 사항 외에도 N개의 코어
를 가진 다중 코어 프로세서
는 OS에 N개의 CPU가 있는 것 처럼 보인다. 이에 대한 자세한 내용은 4장에서 다룰 것이다.
컴퓨터 시스템 구성요소의 정의
- CPU : 명령을 실행하는 하드웨어
- 프로세서(Processor) : 하나 이상의 CPU를 포함한 물리적인 칩
- 코어(Core) : CPU의 기본 계산 단위
- 다중 코어(Multi-Core) : 동일한 CPU에 여러개의 컴퓨팅 코어를 포함함
- 다중 처리기(Multi-Processor) : 여러 개의 프로세서를 포함함
사실상 거의 모든 시스템이 다중코어 시스템이지만,
컴퓨터 시스템의 단일 계산 단위를 지칭할 때는 일반적으로 CPU라는 용어를 사용하고
하나의 CPU에 존재하는 하나 이상의 코어를 구체적으로 언급할 때는 코어와 다중 코어 라는 용어를 사용한다.
- NUMA(Non Uniform Memory Access)
- 블레이드 서버
3. 클러스터형 시스템
여러 개의 CPU를 가진 시스템의 또 다른 유형은 클러스터형 시스템
이다.
다만, 둘 이상의 독자적 시스템 또는 노드들을 연결해서 구성한다는 점에서 multi-processor 시스템과 차이가 난다.
클러스터형의 정의는 분명하지 않다.
일반적으로 받아들여지는 정의에 의하면 클러스터 컴퓨터는 저장장치를 공유
하고 LAN이나 InfiniBand와 같은 고속 연결망
으로 연결된다.
클러스터는 대부분 높은 가용상(Availability)
을 제공하기 위해 사용된다. 즉, 클러스터 내의 하나 이상의 컴퓨터 시스템이 고장나더라도 서비스는 계속 제공된다. 이는 시스템이 중복 기능을 추가
함으로써 얻어진 기능이다.
각 노드는 하나 이상의 네트워크로 연결된 다른 노드들을 감시하고 ⇒ 감시받던 노드가 고장나면 감시하던 노드가 고장 난 노드의 저장장치에 대한 소유권을 넘겨받고 ⇒ 감시받던 노드가 실행하던 응용프로그램을 다시 시작한다.
이러한 높은 가용성(Availability)
은 안정성을 향상시켜준다.
(더 자세한 내용은 추후에) - p.20 ~ 22
'OS Concepts 10th' 카테고리의 다른 글
[OS] 1-10. 계산환경 (0) | 2023.08.06 |
---|---|
[OS] Chapter 1-4. 운영체제의 작동 (0) | 2023.08.01 |
[OS] Chapter 1-2. 컴퓨터 시스템의 구성 (0) | 2023.07.24 |
[OS] Chapter 1-1. 운영체제가 할 일 (0) | 2023.07.21 |
[OS] Chapter 1. 서론 (0) | 2023.07.21 |