티스토리 뷰
단일 처리기 시스템
: 코어를 가진 메인 CPU가 하나 있을 경우
코어란? : 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성 요소
코어를 가진 하나의 메인 CPU는 프로세스 명령어를 포함하여 범용 명령어 세트를 실행할 수 있다.
단일 처리기 시스템에는 메인 CPU의 오버헤드를 줄이기 위해 다른 특수 목적 프로세서(처리기)가 존재한다. 이 처리기들은 프로세스를 실행하지 않고 제한된 명령어 집합을 실행한다. 운영체제는 보통 특수 목적 프로세서는 운영체제와 통신하지 않고 독립적으로 자신의 작업을 처리하지만, 가끔씩 운영체제는 이 처리기들이 수행할 다음 태스크에 대한 정보를 보내고 처리기들의 상태를 감시한다.
다중 처리기 시스템
: 단일 코어 CPU가 있는 프로세서가 두 개 이상있을 경우
장점 : 처리량 증가 -> 더 적은 시간에 더 많은 작업을 수행
*처리량의 증가는 프로세서 개수 증가와 정비례하지 않는다. 일정량의 오버헤드가 발생하기 때문이다. 이 오버헤드와 공유 자원에 대한 경합은 추가 프로세서의 예상 이득을 낮춘다.
SMP (Symmetric MultiProcessing)
다음은 각각 자체 CPU를 가지는 두 개의 프로세서가 있는 일반적인 SMP 구조이다.
각 CPU 처리기에는 로컬 캐시, 자체 레지스터 세트가 있다. 모든 프로세서는 시스템 버스를 통해 물리 메모리를 공유한다.
💚 장점 : 많은 프로세서를 동시에 실행할 수 있다.
🩶 단점 : 하나는 유휴 상태이고 다른 하나는 과부하가 걸릴 경우 비효율적이다.
Dual-Core Design (이중 코어 시스템)
다중 코어 시스템 : 여러 개의 컴퓨팅 코어가 단일 칩에 상주
💚 장점 : 칩 내 통신이 칩 간 통신보다 빠르기 때문에 훨씬 적은 전력을 사용한다. -> 모바일 장치에서 유리
아키텍쳐 대부분은 좌측 그림과 같이 로컬 및 공유 캐시를 결합한 방식을 채택한다. 로컬 하위 레벨 캐시는 일반적으로 상위 레벨 공유 캐시보다 작고 빠르다. N개의 코어를 가지는 다중 코어 프로세서는 운영체제에 N개의 CPU처럼 보일 수 있다.
🩶 단점 : CPU를 너무 많이 추가할 경우 시스템 버스에 대한 경합이 병목 현상이 되어 성능이 저하된다.
<Cache>
📌 L1 Cache: 프로세서와 가장 가까운 캐시. 속도를 위해 I$와 D$로 나뉜다.
* Instruction Cache (I$): 메모리의 TEXT 영역 데이터를 다루는 캐시.
* Data Cache (D$): TEXT 영역을 제외한 모든 데이터를 다루는 캐시.
📌 L2 Cache: 용량이 큰 캐시. 크기를 위해 L1 캐시처럼 나누지 않는다.
📌 L3 Cache: 멀티 코어 시스템에서 여러 코어가 공유하는 캐시.
(상위) L1 - L2 - L3 (하위)
NUMA(Non-Uniform Memory Access)
병목 현상을 줄이기 위해 CPU에 작고 빠른 로컬 버스를 통해 액세스 되는 자체 로컬 메모리를 제공하는 방법이다. 모든 CPU가 공유 시스템으로 연결되어 하나의 물리 주소 공간을 공유한다.
💚 장점 : CPU가 로컬 메모리에 액세스 할 때 빠를 뿐만 아니라 시스템 상호 연결에 대한 경합도 없다. 더 많은 프로세서가 추가될수록 더 효과적으로 확장될 수 있다.
🩶 단점 : CPU가 시스템 상호 연결을 통해 원격 메모리에 액세스해야할 때 지연시간이 증가하여 성능 저하가 발생할 수 있다. 운영체제는 신중한 CPU 스케줄링 및 메모리 관리를 통해 NUMA의 단점을 최소화할 수 있다.
Blade Server
다수의 처리기 보드 및 입출력 보드, 네트워킹 보드들이 하나의 섀시(chassis) 안에 장착되는 형태이다. 블레이드-철기 보드는 독립적으로 부팅될 수 있고 자신의 운영체제를 수행한다.
클러스터형 시스템
클러스터형 시스템은 여러 CPU를 가진 시스템의 또다른 유형으로 둘 이상의 독자적 시스템 또는 노드들을 연겨하여 구성한다는 점에서 다른 다중 처리기들과 차이점이 있다. 각 코어는 통상 다중 코어 시스템으로 약결합(loosely coupled)이라고 간주된다. 일반적으로 클러스터 컴퓨터는 저장장치를 공유하고 근거리 통신망(local area network, LAN), InfiniBand와 같은 고속의 상호 연결망(interconnect)로 연결된다.
< 클러스트링 = 높은 가용성 >
각 노드들은 하나 이상의 다른 노드들을 감시한다. 만약 감시받던 노드가 고장 나면 감시하던 노드가 고장 난 노드의 저장장치에 대한 소유권을 넘겨받고, 그 노드에서 실행 중이던 응용 프로그램을 다시 시작한다. 사용자와 클라이언트는 잠깐의 서비스 중단만을 느낀다. -> 고장나도 잘 안 끊어짐!!!!
높은 가용성
= 클러스터 내 하나 이상의 컴퓨터 시스템이 고장 나더라도 서비스는 제공한다.
= 중복 기능을 추가함으로써 얻어진다.
= 우아한 성능 저하 (graceful degradation) : 남아 있는 하드웨어 수준에 비례하여 서비스를 계속 제공하는 기능
= 걸함허용 시스템 : 단일 구성요소에 오류가 발생하여도 계속 작동할 수 있도록하는 시스템
< 비대칭형 클러스터링 vs 대칭형 클러스터링 >
비대칭형 클러스터링 = 다른 컴퓨터들이 응용 프로그램을 실행하는 동안 한 컴퓨터는 긴급대기(hot-standby) 모드 상태를 유지한다. 긴급 대기 모드의 호스트는 활성 서버들을 감시하는 작업만을 수행한다.
대칭형 클러스터링 = 둘 이상의 호스트들이 응용 프로그램을 실행하고 서로를 감시한다.
대칭형이 더 효율적이다. 왜냐하면, 가용한 하드웨어를 모두 사용하기 때문이다.
대칭형을 효율적으로 사용하기 위해서는 하나 이상의 응용 프로그램들이 실행 가능해야한다.
< 병렬화와 고성능 계산 환경 >
병렬화 : 프로그램을 컴퓨터의 개별 코어에서 혹은 클러스터의 각 컴퓨터에서 수행되는 분리된 요소로 나누는 작업
-> 보통 각 계산 노드가 문제 일부를 해결한 후 모든 노드의 결과를 결합해서 최종 해답을 얻는다.
한 클러스터는 네트워크로 연결된 다수의 컴퓨터 시스템으로 구성되어있다. 클러스터 컴퓨터에서 응용 병렬을 수행할 수 있기 때문에 고성능 계산이 가능하다.
<병렬 클러스터, WAN을 이용한 클러스터링>
병렬 클러스터 : 여러 호스트가 공유 저장장치상의 동일한 데이터에 접근 가능하도록함
-> 운영체제의 대부분이 여러 호스트에 의한 동시 접근을 허용하지 않는다. 따라서 병렬 클러스터는 특수 소프트웨어 버전과 특별히 발매된 응용에 사용된다.
ex) Oracle Real Application Cluster
: 병렬 클러스터에서 수행하도록 설계된 Oracle의 데이터베이스
: 각 기계는 Oracle을 수행하고 하나의 소프트웨어 층이 공유 디스크에 대한 접근을 관리
: 데이터에 대한 공유 접근을 제공하기 위하여 DLM(Distributed Lock Manager, 분산 잠금 관리자)를 사용한다.
*DLM(Distributed Lock Manager, 분산 잠금 관리자) : 접근 간의 충돌이 발생하지 않는 것을 보장하기 위해서 접근 제어와 잠금 기법을 제공하는 기능
*스토리지 전용 네트워크(Storage-area network, SAN)
-> 여러 호스트를 여러 저장장치에 부착 가능하게 한다.
-> 호스트가 고장 나면 다른 호스트가 그 응용을 넘겨 받는다.
-> 수 킬로미터 떨어진 클러스터 노드들뿐 아니라 한 클러스터 안에서 수천개의 노드를 지원할 수도 있다.
'👩🏻💻개발공부 > 운영체제' 카테고리의 다른 글
[🦖운영체제 1.7, 1.8] 가상화, 분산 시스템 (0) | 2024.04.15 |
---|---|
[🦖운영체제 1.5] 자원관리 - 프로세스 관리, 메모리 관리, 파일 시스템 관리, 대용량 저장장치 관리, 캐시 관리, 입출력 시스템 관리 (3) | 2024.04.14 |
[🦖운영체제 1.4] 운영체제의 작동 - 다중 프로그래밍, 모드, 타이머 (0) | 2024.04.13 |
[🦖운영체제 1.2] 컴퓨터 시스템의 구성 - 인터럽트, 저장장치, 입출력 구조 (0) | 2024.04.02 |
[🦖운영체제 1.1] 운영체제가 할 일 (0) | 2024.03.28 |
- Total
- Today
- Yesterday
- MySQL
- 개발일지
- 백엔드 개발
- Linux
- 혼공학습단
- JS
- 깃 예제
- 프로젝트
- 백준
- Signal
- 개발
- 해커톤
- 혼공단
- C++
- SQL
- AWS
- 공룡책
- Process
- JavaScript
- 리눅스
- 혼공
- nodejs
- 혼공단 SQL
- 스페인
- 스페인 교환학생
- 교환학생
- 자바스크립트
- 혼공단 9기
- googleapis
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |