Reporting Date: March. 14, 2025
클러스터형 컴퓨터에 대해 다루고자 한다.
목차01 클러스터형 컴퓨터
02 구성형태
03 다중 프로그래밍
04 프로세서
05 주기억장치
06 파일 시스템 관리
07 캐시 관리
08 I/O 시스템 관리
09 가상화
01 클러스터형 컴퓨터
(Clustered System)
여러 개의 독립적인 컴퓨터 시스템을 네트워크로
연결하여 하나의 시스템처럼 동작하도록 구성한 구조이다.
이 시스템은 공유 저장장치를 사용하며,
LAN(Local Area Network)이나 Infiniband와 같은
고속 근거리 통신망을 통해 상호 연결되며,
주로 병렬 처리, 부하 분산, 고장 대비를 목적으로 사용된다.
병렬 처리를 통해 여러 대의 컴퓨터가
협력하여 대량의 연산을 수행할 수 있으며,
부하 분산을 통해 작업을 여러 시스템에
나누어 처리함으로써 성능을 최적화할 수 있다.
또한, 일부 시스템이 고장 나더라도 전체 서비스가
중단되지 않도록 설계되어 높은 가용성과 신뢰성을 제공한다.
이러한 시스템은 단일 메모리와 CPU를
공유하는 전형적인 다중처리기 시스템과는 달리,
각 컴퓨터가 독립적으로 동작하면서도
하나의 시스템처럼 기능하도록 구성된다는 점에서 차이가 있다.
이를 통해 가변적인 업무 부하를 효율적으로 처리할 수 있으며,
장애 발생 시에도 지속적인 운영이 가능하다.
베오울프 클러스터
(Beowulf Cluster)
최초의 클러스터형 컴퓨터.
비교적 간단한 형태로 개인이 집에서
구축할 수 있는 방식으로 시작되었다.
이 개념은 이후 미 항공우주국(NASA)이
도입하면서 더욱 발전하게 되었다.
초기에는 16대의 개인용 컴퓨터(PC)를 네트워크로
연결하여 클러스터를 구성하는 실험이 이루어졌으며,
이를 통해 병렬 컴퓨팅을 효과적으로 수행할 수 있음을 입증했다.
이후 클러스터 기술이 발전하면서 여러 슈퍼컴퓨터가 등장하였고,
현재는 전 세계적으로 슈퍼컴퓨터의 성능을 평가하는
랭킹(예: TOP500)이 존재한다.
각국은 자국 내 보유한 슈퍼컴퓨터의 수와 성능을
중요한 기술력의 지표로 삼고 있으며,
현대의 슈퍼컴퓨터 대부분은
클러스터형 구조를 기반으로 구축되고 있다.
① Silicon Graphics Cluster (SGI)
고성능 컴퓨팅(HPC)과
그래픽 워크스테이션을 전문으로 했던 기업.
이는 과학 계산, 시뮬레이션, 데이터 분석 등의 분야에서 활용되었으며,
특히 대규모 병렬 컴퓨팅 환경을 지원하는 데에 강점을 보였다.
2016년 HPE에 인수되었다.
⌎ (Hewlett Packard Enterprise)
② 독일 켐니츠 기술대학교의 대규모 클러스터
(Technische Universität Chemnitz)
고성능 컴퓨팅 환경을 갖춘 연구 중심 대학.
이 대학은 대규모 클러스터 시스템을 보유하고 있으며,
과학 및 공학 분야의 복잡한 연산 작업을 수행하는 데 활용되고 있다.
병렬 컴퓨팅 및 슈퍼컴퓨터 연구에 적극적으로 참여하고 있으며,
독일 내에서 HPC 기술을 발전시키는 주요 기관 중 하나로 꼽힌다.
③ 리눅스 클러스터
2대의 서버와 4대의 사용자 시스템으로
구성된 작업 부하 분산용 시스템.
서버들은 사용자 요청을 분배하여 효율적으로 처리하며,
하나의 서버가 고장 나더라도 다른 서버가 계속 작동하도록 설계되어 있다.
이를 통해 시스템 성능을 최적화하고 안정성을 높이며,
웹 서비스나 데이터 연산 등 다양한 분야에서 활용된다.
<클러스터형 시스템의 일반적인 구조>
1 . 컴퓨터 (노드)
(Computer)
클러스터를 구성하는 핵심 단위.
각 노드는 일반적으로
CPU, 메모리, 로컬 저장장치를 갖춘 독립적인 컴퓨터이며,
작업을 분산하여 처리함으로써 성능 향상과 고가용성을 달성한다.
2 . 인터커넥트
(Interconnect)
클러스터 내 노드 간의 통신을 담당하는 네트워크.
빠른 데이터 전송을 위해
InfiniBand, 10GbE 등 고속 네트워크를 사용하며,
이는 효율적인 병렬 처리와 데이터 동기화를 위함이다.
3 . SAN
(Storage Area Network)
클러스터의 공유 저장소를 구성.
여러 노드가 동일한 데이터에 접근할 수 있도록 해준다.
주로 대용량 데이터를 저장하고 백업하거나,
고가용성(HA) 시스템에서 중요한 역할을 한다.
02 구성형태
1 . 비대칭형 클러스터링
(Asymmetric Clustering)
한 대의 서버가 애플리케이션을 실행하는 동안,
다른 서버는 긴급 대기(Hot-Standby) 모드로 유지되는 구조를 의미한다.
만약 실행 중인 서버가 고장 혹은 장애가 발생하면,
대기 중이던 서버가 즉시 활성화되어 운영을 이어간다.
이러한 구조는 Active/Standby 환경이라고도 하며,
고가용성(HA, High Availability)을 보장하는 방식으로 주로 사용된다.
2 . 대칭형 클러스터링
(Symmetric Clustering)
둘 이상의 서버(호스트)가 동시에 애플리케이션을
실행하면서 서로를 감시하는 구조이다.
각 서버는 작업을 독립적으로 수행하며, 한 서버의
부하 증가 시 다른 서버가 일부 작업을 분담 처리한다.
이 방식은 클러스터 내 모든 하드웨어 자원을 적극적으로 활용하므로,
비대칭형 클러스터링보다 더 효율적이며 고가용성과
부하 분산(Load Balancing)을 동시에 제공할 수 있다.
3 . 병렬 클러스터
(Parallel Clustering)
여러 대의 호스트(서버)가 공유 저장장치(shared storage)에
동시에 접근하여 동일한 데이터를 병렬로 처리할 수 있도록
구성된 클러스터 방식이다.
이를 통해 고성능 처리와 병렬 연산이 가능하며,
데이터의 일관성과 동기화 관리가 핵심 과제 중 하나다.
4 . WAN 클러스터
(Wide-Area Network Clustering)
LAN보다 더 넓은 범위인 WAN(광역 통신망)을 통해
지리적으로 떨어진 여러 시스템을 연결하여 구성하는 클러스터이다.
재해 복구(DR, Disaster Recovery)나 지역 간 부하 분산 등의 목적으로 사용되며,
네트워크 지연(latency) 및 데이터 동기화 기술이 중요한 고려 사항이다.
<전형적인 베오울프 구성>
1 . 서버
(Server)
클러스터의 마스터 노드 역할을 수행하며,
작업을 스케줄링하고 노드 간 통신을 조정한다.
2 . 인터넷
(Internet)
필수는 아니지만,
소프트웨어 업데이트 및 원격 관리에 유용하다.
3 . 네트워크 디스크 스토리지
(Networked Disk Storage)
각 계산 노드(Compute Node)가
데이터를 공유할 수 있도록 지원한다.
마스터 노드(서버) 하단에 저장 장치(NFS, NAS)를 두고,
이를 컴퓨팅 노드들과 공유하는 구조가 일반적이다.
NAS (Network Attached Storage)
NFS (Network File System)
3 . 10/100 MB/s 이더넷 스위치
(Ethernet Switch)
노드 간 통신을 담당하는 네트워크 장비로,
모든 노드를 연결하는 역할을 한다.
현대적인 베오울프 클러스터에서는
1 Gbps 이상을 사용하는 것이 더 적합하다.
4 . 계산 노드
(Compute Nodes)
실제 연산을 수행하는 다수의 일반적인
x86 기반 등의 컴퓨터로 구성된다.
5 . 추가 사항
위 구성 요소들만으로도
기본적인 베오울프 클러스터를 구축하는 것은 가능하며,
추가적으로 MPI 또는 PVM 같은
병렬 처리 프레임워크를 고려할 수도 있다.
Message Passing Interface
Parallel Virtual Machine
또한, OS로는 리눅스(Linux)를 주로 사용한다.
03 다중 프로그래밍
(Multiprogramming)
OS의 가장 핵심적인 기능 중 하나로,
여러 개의 작업(프로세스)을 동시에 주기억장치에 적재한 뒤,
CPU가 이 작업들을 번갈아 가며 실행함으로써
CPU의 유휴 시간을 줄이고 전체 시스템 성능을 향상시킨다.
이는 특히 입출력(I/O) 작업 중 CPU가 놀지 않도록,
다른 작업을 수행하게 하여 자원을 효율적으로 활용하는 방식이다.
과거에는 한 번에 하나의 작업만 수행하는
싱글 태스킹(single-tasking) 방식이 일반적이었고,
이로 인해 CPU가 자주 유휴 상태가 되어
시스템 성능이 저하되는 문제가 있었다.
1 . OS에 요구되는 주요 기능
① 시스템 제공 I/O 루틴
OS는 입출력 장치를 효율적으로 제어할 수 있도록
표준화된 I/O 루틴(함수)을 제공해야 한다.
사용자는 하드웨어 세부사항을 몰라도
입출력을 사용할 수 있게 된다.
② 메모리 관리
시스템은 여러 작업에 메모리를 적절히 할당해야 하며,
이는 어떤 작업을 주기억장치에 적재하고
제거 혹은 교체할지를 결정하는 과정을 의미한다.
③ CPU 스케줄링
실행 준비 상태(Ready queue)에 있는 여러 작업 중에서,
어떤 작업을 CPU에 할당할지 선택하는 알고리즘이 필요하다.
이는 시스템 자원 활용률과 응답 시간에 직접적인 영향을 준다.
④ 저장장치(디스크) 할당
각 작업이 필요로 하는
보조기억장치 자원을 적절하게 할당해야 한다.
작업의 데이터 입출력이나 스와핑 등을
지원하기 위해 필수적인 기능이다.
이 배치도에서는 주소 0에서
512MB까지의 메모리 공간이 표현되어 있다.
가장 낮은 주소인 0번지에는 OS가 위치하며,
그 위로 job1 ~ job4 순으로 사용자 작업들이 메모리에 적재되어 있다.
가장 마지막 작업인 job4는 메모리의 끝 주소인 512MB 부근에 배치되어 있다.
이런 구조는 연속 메모리 할당 방식에서 주로 사용되며,
각 작업은 고정된 메모리 공간을 차지하고, OS는 그 할당을 관리한다.
실제 시스템에 따라 OS가 꼭 주소 0에 위치하지 않을 수도 있으며,
메모리 보호 등을 위해 커널 영역이 고주소(high address)에
배치되는 경우도 있다 (예: 현대의 x86 시스템 등).
2 . 시분할
(Time-sharing)
사용자 수가 많아지면서 동시에 여러 사용자가 컴퓨터 시스템에
접속하여 자신의 작업을 처리해 달라고 요청하는 상황이 발생했다.
이러한 환경에서는 서버가 여러 명의 클라이언트 요청을 처리해야 하며,
응답이 지연되면 시스템 전반의 효율성이 떨어질 수 있다.
따라서 시스템은 사용자 요청에 즉각적으로 반응해야 하며,
대화식(인터랙티브) 방식으로 동작하여 응답 시간이 짧아야 한다.
일반적으로 1초 이내의 응답 시간이 요구된다.
이러한 문제점을 해결하기 위한 방법으로
다중 프로그래밍의 논리적 확장인 시분할 시스템이 등장했다.
사용자와 컴퓨터 간의 직접적인 통신을 가능하게 하며,
동시에 여러 사용자가 컴퓨터를 공유할 수 있도록 설계되어 있다.
각 사용자는 CPU를 독점하는 것처럼 느낄 수 있을 정도로,
시스템은 짧은 시간 간격으로 CPU를 빠르게
전환(Switching)시켜 작업을 처리한다.
이는 특정 사용자 하나만이 시스템을 점유하지 못하게 하고,
다른 사용자들도 지속적으로 응답을 받을 수 있도록 한다.
시분할 OS는 이러한 기능을 제공하기 위해
CPU 스케줄링과 다중 프로그래밍을 결합하며,
단순한 다중 프로그래밍 OS보다 훨씬 더 복잡한 구조를 가진다.
특히, 각 사용자에게 시스템의 작은 일부를 제공하기 위해
가상 메모리(Virtual Memory)와 같은 기술을 도입하고,
전체적으로 적절한 응답 시간을 보장하는 것이 핵심이다.
3 . 인터럽트 구동식
(Interrupt-driven)
OS에서 작업을 수행할 때, 단순히 명령을 순차적으로
처리하는 방식만으로는 안정성과 효율성을 보장할 수 없다.
특히, 입출력(I/O) 작업처럼 시간이 오래 걸리는 작업이 있을 경우,
OS가 이를 직접 기다리는 방식은 매우 비효율적이다.
이를 해결하기 위해 인터럽트 구동 방식이 도입되었다.
어떤 사건(Event)이 발생했을 때,
시스템이 자동으로 그 사실을 감지하고 인터럽트를 발생시킨다.
이 인터럽트는 현재 실행 중인 작업을 일시 중단시키고,
해당 이벤트를 처리하는 OS의 루틴으로 제어를 넘긴다.
대표적인 예로는 0으로 나누기, 유효하지 않은 메모리 접근,
시스템 호출(System Call) 등이 있으며,
이러한 사건들은 트랩(Trap)이라 불리는 형태의
S/W 인터럽트를 유발한다.
트랩은 주로 프로그램 오류나 예외 상황에서 발생하며,
OS가 이를 감지하고 적절하게 처리할 수 있도록 한다.
만약 이러한 예외나 인터럽트를 처리할 수 있는 보호 장치가 없다면,
시스템은 단 한 개의 프로세스만 안전하게 실행해야 할 것이고,
여러 프로그램이 동시에 동작하는 환경에서는
출력 결과를 신뢰하기 어려운 상황이 생길 수 있다.
과거에는 시스템 보호 기능이 없었으므로,
사용자의 실수나 악의적인 행동으로
OS의 핵심 영역을 손상시킬 수 있었다.
심할 경우, 컴퓨터를 다시 사용하려면
OS를 재설치해야 하는 상황도 벌어져
이를 방지하기 위해 도입된 것이 바로 이중 모드와 모드 비트다.
① 이중 모드
(Dual-mode)
OS와 사용자 프로그램을 구분하여,
시스템을 보다 안전하게 운영하기 위한 보호 기법이다.
잘못된 사용자로부터 OS를 보호하고,
사용자 간에도 상호 침해가 일어나지 않도록 해준다.
이를 위해 하드웨어는 두 가지의 동작 모드,
즉 사용자 모드(User Mode)와 커널 모드(Kernel Mode)를 제공한다.
커널 모드는 '수퍼바이저 모드', '시스템 모드', '특권 모드'라고도 불린다.
② 모드 비트
(Mode Bit)
이러한 이중 모드를 하드웨어적으로 구현하기 위한 장치다.
보통 1비트로 구성되며, 1은 사용자 모드, 0은 커널 모드를 의미한다.
시스템이 부팅되면 커널 모드로 시작하며,
사용자 프로그램이 실행되면 사용자 모드로 전환된다.
사용자가 OS의 서비스를 요청할 경우,
단순히 직접 접근하는 것이 아닌 System Call을 요청해야 한다.
시스템 콜이 호출되면 모드 비트가
1 → 0으로 변경되어 커널 모드로 진입하고,
OS가 요청을 처리한 후에는
다시 0 → 1로 변경되어 사용자 모드로 복귀한다.
이 과정을 통해 시스템은 사용자가 임의로 커널 기능에 접근하거나
시스템 자원을 손상시키는 것을 막을 수 있다.
<듀얼 모드 오퍼레이션>
Dual-Mode Operation
아래는 사용자 모드 ↔ 커널 모드 전환 과정이며,
이는 듀얼 모드 오퍼레이션의 실제 동작 예시에 해당된다.
① User Process 실행 중
현재 사용자 모드 (mode bit = 1)
② System Call 호출
사용자 프로그램이 운영체제의 서비스를 요청한다.
예: 파일 읽기, 메모리 요청 등
③ Trap 발생 (예외 인터럽트)
시스템 콜을 통해 Trap이 발생함에 따라
mode bit → 0으로 전환되고 커널 모드로 진입한다.
④ Kernel Mode에서 System Call 처리
OS가 파일 열기, 디스크 접근 등의
요청을 받아 처리한다.
⑤ System Call 처리 완료 및 복귀
처리 후 원래의 사용자 프로세스로 돌아가기 위해
mode bit → 1로 전환하며 사용자 모드 복귀된다.
04 프로세스
(Process)
실행 중인 프로그램을 의미하며, 하나의 작업
또는 시분할 시스템에서 하나의 작업 단위로 생각할 수 있다.
시스템 내에서 작업 단위로 사용되며,
CPU 시간, 메모리, 파일, 입출력 장치 등 여러 자원을 필요로 한다.
이를 통해 프로세스는 자신의 작업을 수행할 수 있다.
프로그램과의 차이
(Program)
디스크에 저장된 파일로 수동적인 개체(Passive Entity)이다.
반면, 프로세스는 실행 중인 프로그램을 의미하며,
능동적 객체(Active Entity)이다.
즉, 프로그램 카운터(Program Counter, PC)를
포함하고 있어 현재 실행 중인 명령을 추적하며 진행된다.
하드디스크에 설치된 응용 프로그램은 프로그램일 뿐,
실제 프로세스는 메모리에 적재되어 실행 중인 상태여야 한다.
다중 스레드 프로세스는 복수 개의 프로그램 카운터를 가진다.
각 스레드는 자신이 실행할 명령어를 가리키는
프로그램 카운터를 유지하여 병렬로 작업을 수행할 수 있다.
1 . 프로세스의 종류
① 사용자 프로세스 (User Process)
사용자 코드를 실행하는 프로세스이다.
일반적으로 사용자가 작성한 응용 프로그램,
실행 파일을 실행할 때 생성된다.
이 프로세스는 OS의 사용자 영역에서 실행되며,
시스템 자원을 요청할 때는 시스템 호출을 통해
커널 모드로 전환하여 OS의 서비스를 받는다.
② OS 프로세스 (OS Process)
시스템 코드를 실행하는 프로세스로,
OS의 커널에 해당하는 부분을 담당한다.
OS 프로세스는 운영체제의 중요한 기능을 수행하며,
예를 들어 파일 시스템 관리, 메모리 관리, 프로세스 스케줄링 등을 처리한다.
OS 프로세스는 커널 모드에서 실행되며,
사용자 프로세스와 구분되어 시스템 자원에 대한 직접적인 접근 권한을 가진다.
2 . 프로세스 관리 활동
프로세스 관리는 하나의 CPU를
여러 프로세스 간에 다중화하여 병행 수행하는 과정이다.
OS는 이러한 프로세스를 효율적으로 관리하고,
자원을 공유하는 프로세스들이 충돌하지 않도록 조정한다.
① 프로세스의 생성과 제거
(Creation/Deletion)
새 사용자 프로세스, 시스템 프로세스가 생성되고,
더 이상 필요하지 않은 프로세스가 제거된다.
② 프로세스의 일시 중지와 재수행
(Suspension/Resumption)
프로세스를 일시적으로 중단하거나,
중단된 프로세스를 다시 실행한다.
③ 프로세스 동기화를 위한 기법
(Process Synchronization)
여러 프로세스가 자원을 공유하는 환경에서
일관성을 유지하기 위해 동기화 기법을 사용한다.
이는 프로세스들이 서로 간섭하지 않도록 조정하는 데 필요한 기술이다.
④ 프로세스 간 통신 기법
(Process Communication - IPC)
프로세스 간에 정보 교환 및 자원 공유를 위해
인터프로세스 커뮤니케이션(IPC)을 사용한다.
예를 들어, 메시지 전달, 세마포어 등을 활용한 기법이 포함된다.
⑤ 교착 상태 처리 기법
(Deadlock Handling)
교착 상태는 여러 프로세스가 서로
자원을 기다리며 무한 대기 상태에 빠지는 현상이다.
이를 방지하거나 해결하기 위한 기법들이 OS에 의해 적용된다.
05 주기억장치
CPU가 직접 주소를 지정하고
접근할 수 있는 유일한 대량의 메모리이다.
프로그램을 작성할 때, 일반적으로 상대주소를 사용하며,
이 주소는 0번 주소부터 시작한다.
실행 중인 프로그램은 반드시
절대 주소로 변환되어 메모리에 적재되어야 한다.
이를 위해서는 주소 매핑(Mapping) 기법이 필요하다.
프로그램이 원활하게 수행되기 위해서는
메모리에 여러 개의 프로그램을 동시에 적재하고 실행해야 하므로,
CPU의 이용률과 응답 속도를 개선하기 위해 효율적인 메모리 관리가 필수적이다.
이때, 메모리 관리 기법이 중요한 역할을 한다.
① 메모리 사용 추적
OS는 메모리의 어느 부분이 현재 사용되고 있으며,
누가 사용하고 있는지 추적한다.
이를 통해 사용 가능한 메모리 공간을 파악할 수 있다.
② 프로세스 적재 결정
메모리 공간이 사용 가능해지면,
OS는 어떤 프로세스를 메모리에 적재할지 결정한다.
즉, 적재할 프로세스를 관리 및 결정하는 역할을 한다.
③ 메모리 할당 및 회수
필요한 경우 메모리 공간을 할당하고,
프로세스가 종료되면 메모리 공간을 회수하는 기능을 수행한다.
OS는 정보 저장장치에 대해 동일한 논리적 관점을 제공한다.
저장장치의 물리적 특성은 추상화되어
파일(File)이라는 논리적 저장 단위로 제공된다.
각 저장 매체는 디스크 드라이브,
테이프 드라이브 등의 장치에 의해 제어된다.
이들 장치마다 접근 속도, 용량, 자료 전송률,
접근 방식(순차적, 임의적) 등 독특한 특성이 존재한다.
OS는 이러한 특성들을 고려하여
효율적인 자원 관리와 접근 방식을 결정한다.
06 파일 시스템 관리
(File-System Management)
파일 시스템은 파일을 추상적인 단위로 사용하며,
파일 이름만 제시하면 접근이 가능합니다.
파일은 파일 생성자에 의해 정의된 관련 정보의 집합으로,
사용 편의를 위해 일반적으로 디렉토리로 구성됩니다.
이러한 디렉토리 구조를 통해 파일 접근성이 용이해집니다.
파일 관리를 위한 운영 체제의 기능은 다음과 같다:
- 파일 생성 및 제거, 디렉토리 생성과 제거
- 파일과 디렉토리를 조작하기 위한 프리미티브 제공
- 파일을 보조 저장장치로 매핑(Mapping)
- 파일의 안정적인(비 휘발성) 저장 매체에 백업(Backup)
파일이 많아지면 디렉토리 구조를 만들어
보관하는 방식으로 관리가 용이해진다.
현대 컴퓨터 시스템에서 디스크는
프로그램과 자료를 저장하는 주된 온라인 저장 매체로 사용된다.
대부분의 프로그램은 주기억장치에 적재될 때까지 디스크에 저장되며,
디스크는 프로그램의 출발지와 목적지로서 중요한 역할을 한다.
따라서 디스크 저장장치의 적절한 관리는 컴퓨터 시스템에서 매우 중요하다.
디스크 관리를 위한 OS 기능
- 자유 공간(Free Space) 관리
- 저장장치 할당(Storage Allocation)
- 디스크 스케줄링(Disk Scheduling)
컴퓨터 시스템의 전체 동작 속도는 디스크 서브시스템과
그것을 조작하는 알고리즘의 속도에 의해 결정될 수 있습니다.
보조 저장장치는 속도가 느리지만,
비용이 적고 때로는 용량이 더 큰 장치를 사용할 때가 많다.
예를 들어, 자기테이프 드라이브, 자기테이프,
CD, DVD 드라이브, 플래터 등이 대표적인 보조 저장장치이다.
컴퓨터 시스템에서 저장장치 시스템의 넓은 다양성은
속도와 가격에 따라 계층적으로 구분될 수 있습니다.
상위 수준은 빠르지만 가격이 비싸고,
하위 수준은 속도는 느리지만 비트당 비용이 낮습니다.
예를 들어, 레지스터에 있는 내용을 접근하는 데 걸리는 시간은
1000만 배 이상 차이가 나며, 속도가 매우 느린 장치 간에도 큰 차이가 존재한다.
이처럼 저장장치의 다양한 특성을 조화롭게 관리하는 것이 중요
07 캐시 관리
속도 차이 문제를 해결하기 위한 중요한 기법이다.
이는 하드웨어, 운영체제, 소프트웨어 단계에서 모두 실행된다.
느린 저장장치로부터 빠른 저장장치로
데이터를 임시적으로 복사하는 방법이다.
캐시에서 정보를 찾기 위해서는
좀 더 빠른 저장장치(캐시)를 검사하여, 정보가 있는지 확인한다.
정보가 캐시에 존재하면
캐시에서 바로 정보를 사용할 수 있어 매우 빠르다.
정보가 캐시에 존재하지 않으면
데이터를 캐시로 복사한 후, 캐시에서 데이터를 사용하게 된다.
캐시 크기와 교체 정책을 잘 선택할 경우,
시스템은 80 ~ 99%의 데이터 접근을
캐시에서 얻을 수 있어, 높은 성능을 발휘한다.
그러므로, 시스템 설계에서 상당히 중요한 부분을 차지한다고 볼 수 있다.
캐시 일관성 문제
복사본이 여러 저장장치에 동시에
존재할 수 있는 멀티 테스킹 환경에서 발생한다.
예를 들어, A값이 갱신되면,
여러 저장장치에 존재하는 A의 복사본들이 불일치 상태가 된다.
이러한 불일치를 해결하려면,
A값의 변화가 모든 저장장치에 즉시 반영되어야 한다.
이를 위해 쓰기 스루(write-through)
또는 쓰기 백(write-back) 기법을 사용할 수 있다.
분산 시스템 환경에서는 이 문제가 더욱 복잡해진다.
여러 개의 데이터 복사본들이 존재하므로,
각 복사본이 최신 상태를 유지하도록 관리하는 것이 중요하다.
08 I/O 시스템 관리
(I/O Subsystem)
OS의 목적 중 하나는 사용자에게
특정 하드웨어 장치의 특성을 숨기는 것이다.
이를 통해 사용자는 하드웨어의 복잡한 세부사항을
알지 않고도 컴퓨터 시스템을 효율적으로 사용할 수 있다.
1 . 입·출력 서브시스템
버퍼링, 캐싱, 스풀링(spooling) 등
여러 메모리 관리 기법을 포함한다.
① 버퍼(Buffer)
송신자와 수신자 간의 데이터 이동이
완료될 때까지 임시로 데이터를 저장하는 영역이다.
즉, 데이터 전송을 효율적으로 관리하는 역할을 한다.
② 캐시(Cache)
더 빠르고 작은 저장장치로,
데이터 접근 시 우선적으로 캐시를 확인하고,
데이터가 없으면 다른 저장장치에서 데이터를 가져온다.
③ 일반적인 장치 드라이버 인터페이스(DAM)
특정 하드웨어 장치를 위한 드라이버로,
버퍼를 이용해 입출력 속도를 향상시키는 역할을 한다.
2 . 보안 및 보호
현대의 개인용 컴퓨터는 모두 인터넷에
연결되어 있으므로 외부 공격에 취약할 수 있다.
이를 해결하기 위해 두 가지 중요한 개념이 있다:
① 보호(Protection)
컴퓨터 시스템이 정의한 자원에 대해 프로그램,
프로세스 또는 사용자의 접근을 제어하는 기법이다.
② 보안(Security)
시스템 외부 또는 내부의 공격을 방어하는 개념으로,
바이러스, 웜, 서비스 거부 공격, 식별자 도용, 시스템 도용 등
다양한 위협으로부터 시스템을 보호하는 것이다.
보호와 보안을 제공하기 위해서는
시스템의 모든 사용자를 구분할 수 있어야 한다.
대부분의 OS는 사용자 이름과 연관된
사용자 식별자 리스트를 유지한다.
(User IDs, Security IDs)
이 식별자는 시스템에서 유일하며,
로그인 인증 단계에서 적절한 식별자를 결정한다.
그룹 기능은 시스템 내에 존재하는 그룹 이름과
그룹 식별자(Group ID) 리스트를 통해 구현된다.
OS는 사용자가 특권(Privilege)을
획득할 수 있는 다양한 방법을 제공한다.
예를 들어, UNIX에서는 setuid를 통해 특권을 설정할 수 있다.
OS는 다른 OS 내에서도 응용 프로그램을 실행할 수 있도록 지원하며,
이는 방대하고 성장하는 산업에서 중요한 역할을 한다.
09 가상화
(Virtualization)
하나의 시스템이 마치 여러 개의 시스템처럼 동작하는 기술이다.
이를 통해 하나의 물리적인 컴퓨터에서 여러 OS를 동시에 실행할 수 있다.
기본적으로 CPU 용으로 컴파일된 OS와
실행 중인 게스트 OS도 기본적으로 컴파일된다.
1 . 에뮬레이션 방식
(Emulation)
과거에는 에뮬레이션 방식을 사용하여,
소스 CPU 유형이 대상 CPU 유형과 다를 때,
예를 들어 PowerPC에서 Intel x86으로 변환할 때 사용되었다.
일반적으로 가장 느린 방법으로,
하드웨어를 소프트웨어로 시뮬레이션하므로 성능 저하가 발생한다.
이 기술은 한계가 있었고, 효율적이지 않았다.
또한, 컴퓨터 언어가 네이티브 코드로 컴파일되지 않은 경우,
해석(Interpretation) 방식을 통해 실행될 수 있다.
2 . VMware
기본 WinXP Host OS에서
WinXP Guest OS를 실행하는 방식이다
추가 설치가 가능하며,
이를 통해 여러 OS를 동시에 실행할 수 있다.
3 . VMM
가상 머신 관리자
가상화 서비스를 제공하는 소프트웨어로,
기본적으로 직접 실행 가능하며 호스트 OS는 필요 없다.
하나의 시스템에서 여러 OS를 실행할 수 있게 하며,
물리적 하드웨어와 가상 OS 간의 중재 역할을 한다.
예를 들어, VMware ESX
또는 Citrix XenServer와 같은 시스템이 해당되며,
이러한 시스템은 클라우드 컴퓨팅 환경에서 주로 사용된다.
4 . 사용 사례
- 탐색 및 호환성 테스트:
여러 OS를 실행하여 호환성 및 성능을 테스트하는 경우 - 랩톱 및 데스크탑에서 여러 OS를 실행하여
서로 다른 환경에서 S/W를 개발하는 경우 - Mac OS X 호스트에서
Windows를 게스트로 실행하는 Apple 노트북 - 여러 시스템 없이 여러 OS 용 앱 개발 및 테스트
- 데이터 센터 내 컴퓨팅 환경 실행 및 관리:
클라우드 컴퓨팅 환경 등에서 여러 가상 시스템을 관리하고 실행하는 경우
5 . 가상화 기술 시장 가치
2023년에는 가상화 기술의 시장 규모가
약 670억 달러에 달한 것으로 알려져 있다.
IT 인프라 관리, 클라우드 컴퓨팅,
서버 통합 등의 분야에서 중요한 역할을 하고 있다.
'2025 - 1학기 > 플랫폼OS' 카테고리의 다른 글
OS 명령어 처리 과정 (4) | 2025.04.13 |
---|---|
OS 서비스 (4) | 2025.04.11 |
커널의 자료구조 (5) | 2025.04.09 |
저장 장치 (4) | 2025.04.03 |
운영체제(OS) (6) | 2025.03.11 |