컴퓨터 시스템 아키텍처
단일 프로세서 시스템
구조 개요
CPU 한 개가 메모리와 I/O 장치를 독점적으로 제어
모든 프로그램이 CPU를 차례로 사용
운영체제는 이 순차적 실행을 멀티프로그래밍과 **타임쉐어링(멀티태스킹)**으로 보이게 만들어, 마치 여러 프로그램이 동시에 실행되는 것처럼 사용자에게 투명하게 제공
운영체제 과제
스케줄링: 어떤 프로세스에 CPU를 언제, 얼마나 할당할 것인가
컨텍스트 스위칭: 프로세스 전환 시 레지스터·프로그램 카운터 등 상태 저장과 복원
응답성: 대화형 시스템의 반응 지연 최소화
대칭형 다중 프로세서
구조 개요
**여러 개의 CPU(코어)**가 단일 메모리 영역을 공유
모든 CPU가 동등한 권한으로 운영체제 코드와 사용자 코드를 실행
메모리 접근·I/O 제어도 모든 CPU에서 동일하게 수행 가능
운영체제 과제와 기회
병렬성 극대화: CPU 간 작업 분배 및 부하 균형(load balancing)
동기화: 공유 자원(메모리, I/O 장치)에 대한 상호 배제(Mutex), 세마포어, 모니터
캐시 일관성: 각 CPU의 로컬 캐시 간 데이터 동기화(Coherence Protocols, MESI 등)
스케줄링: 다중 큐, CPU Affinity(특정 코어 고정)
비대칭형 다중 프로세서
구조 개요
마스터/슬레이브 구조로, 특정 CPU(마스터)가 운영체제 핵심 기능(스케줄러, 인터럽트 처리 등)을 담당
나머지 CPU(슬레이브)는 사용자 프로세스 실행 전용
임베디드 시스템이나 실시간 OS에서 채택
운영체제 과제
마스터 병목: 마스터 CPU 과부하 방지
통신 오버헤드: 마스터↔슬레이브 간 메시지 교환
신뢰성: 마스터 장애 시 대체 메커니즘
비균일 메모리 접근
구조 개요
CPU마다 자기 전용 메모리 뱅크를 갖고, 다른 CPU 뱅크는 느리게 접근
대형 서버·워크스테이션에서 메모리 대역폭 확장 목적
운영체제 과제
메모리 배치 최적화: 프로세스가 주로 접근하는 데이터를 해당 CPU 가까운 메모리 뱅크에 배치
부하 분산: 메모리 접근 패턴 분석 후 스케줄링 조정
글로벌 vs 로컬 스케줄링: CPU 전체 자원 조율
클러스터
구조 개요
독립적인 다수의 노드(서버)를 네트워크로 연결
각 노드가 자체 CPU·메모리·I/O를 가지며, 전체가 하나의 대형 시스템처럼 동작
운영체제 과제
노드 간 통신: 메시지 패싱(MPI), 원격 프로시저 호출(RPC)
분산 파일 시스템: 데이터 일관성·중복 저장(GFS, HDFS 등)
자원 스케줄링: 클러스터 전체 작업 분산, 장애 복구(Failover)
확장성·가용성: 노드 추가/삭제의 투명성
아키텍처별 운영체제 설계 시 고려사항
단일 프로세서
설계 단순, 자원 관리 복잡도 낮음
멀티프로그래밍·스케줄링 오버헤드 필요
SMP
진정한 병렬 처리, 신뢰성↑
동기화·캐시 일관성 오버헤드, 스케줄링 복잡
AMP
실시간·임베디드에 유리, 제어 집중화
단일 마스터 병목, 확장성 제한
NUMA
대용량 메모리 시스템에 최적화
메모리 배치 최적화·부하 균형 어려움
클러스터
무한 확장성, 높은 가용성
네트워크 병목, 분산 관리 복잡
Last updated