본문 바로가기

CS/기술면접

[기술면접] 6. 컴퓨터 구조 : CS 기술면접 대비 자료와 예상 문답

컴퓨터의 기본 구성 요소

중앙처리장치(CPU)

컴퓨터 구조에서 CPU는 컴퓨터의 두뇌로, 프로그램 명령어를 해석하고 실행하는 역할을 합니다. 연산장치(ALU), 제어장치(CU), 레지스터로 구성되며, 데이터를 계산하고 명령을 제어합니다.

예상 질문

Q1. 중앙처리장치(CPU)는 어떤 장치들로 구성되어 있나요?
A1. CPU는 연산장치(ALU), 제어장치(CU), 레지스터로 구성됩니다. ALU는 연산을 담당하고, CU는 명령어의 해석과 실행을 제어하며, 레지스터는 데이터를 임시 저장합니다.

Q2. 제어장치(CU)의 역할은 무엇인가요?
A2. 제어장치는 프로그램의 명령어를 해석하고, 해당 명령어에 따라 다른 장치들이 작업을 수행하도록 제어하는 역할을 합니다.

기억장치

컴퓨터에서 데이터를 저장하는 장치로 주기억장치(RAM)보조기억장치(HDD, SSD)로 나뉩니다. 주기억장치는 현재 사용 중인 데이터를 저장하고, 보조기억장치는 영구적으로 데이터를 보관합니다.

예상 질문

Q1. 주기억장치와 보조기억장치의 차이점은 무엇인가요?
A1. 주기억장치는 일시적인 데이터 저장 공간으로, 컴퓨터가 켜져 있을 때만 데이터를 유지하며 빠르게 접근할 수 있습니다. 보조기억장치는 영구적인 저장 공간으로, 컴퓨터가 꺼져도 데이터를 유지합니다.

Q2. RAM과 HDD의 차이는 무엇인가요?
A2. RAM은 주기억장치로 데이터를 빠르게 처리하는 반면, HDD는 보조기억장치로 데이터 접근 속도는 느리지만, 더 많은 데이터를 영구 저장할 수 있습니다.

입출력장치

컴퓨터와 사용자 간의 상호작용을 위한 장치로, 키보드, 마우스, 모니터 등이 포함됩니다.

예상 질문

Q1. 입출력장치의 역할은 무엇인가요?
A1. 입출력장치는 컴퓨터가 외부 환경과 데이터를 주고받을 수 있도록 도와주는 장치입니다. 입력 장치는 컴퓨터가 정보를 받도록 하고, 출력 장치는 결과를 보여줍니다.

Q2. 입출력장치는 주기억장치와 어떻게 연결되나요?
A2. 입출력장치는 시스템 버스를 통해 주기억장치 및 CPU와 연결되어 데이터를 주고받습니다.

코어와 스레드

컴퓨터의 CPU는 여러 코어로 구성되어 있으며, 각 코어는 논리적 스레드를 실행할 수 있는 능력을 가지고 있습니다. 다중 코어 CPU는 여러 스레드를 병렬로 처리할 수 있어 멀티태스킹 성능이 향상됩니다.

예상 질문

Q1. CPU 코어와 스레드의 차이점은 무엇인가요?
A1. 코어는 CPU의 물리적인 처리 단위이며, 스레드는 코어가 실행하는 논리적 작업 단위입니다. 다중 코어는 여러 스레드를 동시에 처리할 수 있어 성능을 높입니다.

Q2. 다중 코어 CPU가 성능을 높이는 이유는 무엇인가요?
A2. 다중 코어 CPU는 병렬 처리가 가능하여 여러 작업을 동시에 수행할 수 있으므로, 멀티태스킹 환경에서 성능이 크게 향상됩니다.

하드웨어 가속기

GPU와 같은 하드웨어 가속기는 특정 작업(예: 그래픽 렌더링, AI 연산)에서 CPU의 부담을 줄여 성능을 향상시키는 장치입니다. 이 가속기는 CPU와 함께 병렬 작업을 수행하여 전반적인 시스템 효율성을 높입니다.

예상 질문

Q1. 하드웨어 가속기의 예시와 역할은 무엇인가요?
A1. GPU는 그래픽 처리를, TPU는 AI 연산을 가속화하는 장치로, CPU의 특정 작업을 분담하여 시스템 성능을 향상시킵니다.

Q2. 하드웨어 가속기를 사용하는 이유는 무엇인가요?
A2. 특정 연산을 가속기에서 처리하면 CPU의 자원이 절약되고, 성능이 요구되는 작업을 빠르게 처리할 수 있습니다.

시스템 버스

데이터 버스

데이터 버스양방향 버스로, CPU와 메모리 간의 데이터 전송을 담당합니다.

예상 질문

Q1. 데이터 버스는 어떤 역할을 하나요?
A1. 데이터 버스는 CPU와 메모리 또는 장치 간의 데이터를 전달하는 통로 역할을 하며, 양방향으로 데이터를 주고받을 수 있습니다.

Q2. 데이터 버스의 양방향 통신이 중요한 이유는 무엇인가요?
A2. 양방향 통신을 통해 데이터의 읽기와 쓰기가 가능해, CPU가 메모리와 효율적으로 상호작용할 수 있습니다.

주소 버스

주소 버스단방향 버스로, CPU가 특정 메모리 주소에 접근할 때 해당 주소 정보를 전달합니다.

예상 질문

Q1. 주소 버스와 데이터 버스의 차이점은 무엇인가요?
A1. 주소 버스는 CPU가 접근할 메모리 주소를 전달하며 단방향으로만 통신합니다. 반면, 데이터 버스는 데이터를 주고받으며 양방향 통신이 가능합니다.

Q2. 주소 버스가 단방향인 이유는 무엇인가요?
A2. 주소 버스는 특정 메모리 위치에 접근하기 위한 주소 정보만을 전달하기 때문에 단방향으로 설계됩니다.

제어 버스

제어 버스제어 신호를 전달하는 버스로, 양방향 통신을 지원합니다. 이는 데이터 전송의 방향과 장치 활성화를 제어하는 신호입니다.

예상 질문

Q1. 제어 버스의 역할은 무엇인가요?
A1. 제어 버스는 CPU가 장치와 상호작용할 때 필요한 제어 신호를 전달하며, 데이터를 송수신하거나 특정 장치를 활성화하는 등의 제어 기능을 수행합니다.

Q2. 제어 버스의 양방향 통신이 중요한 이유는 무엇인가요?
A2. 양방향 통신을 통해 CPU가 장치의 상태를 파악하고, 필요한 제어 신호를 보낼 수 있어 유연한 시스템 제어가 가능합니다.

하이퍼트랜스포트(HT) 및 QPI(QuickPath Interconnect)

하이퍼트랜스포트(HT)와 QPI는 CPU와 메모리, 장치 간의 통신 속도를 높이기 위해 설계된 고속 인터커넥트 기술입니다. 이를 통해 전통적인 시스템 버스의 병목 현상을 줄이고, 고성능 컴퓨팅이 가능해집니다.

예상 질문

Q1. 하이퍼트랜스포트(HT)와 QPI의 역할은 무엇인가요?
A1. 이 기술들은 CPU와 메모리, 장치 간의 데이터 전송 속도를 높여 고성능 컴퓨팅 환경에서 시스템 성능을 향상시킵니다.

Q2. 전통적인 시스템 버스와 HT/QPI의 차이점은 무엇인가요?
A2. 전통적인 버스는 병목이 발생하기 쉬운 반면, HT/QPI는 고속 데이터 전송을 통해 병목 현상을 줄여줍니다.

메모리 버스와 PCIe 버스

메모리 버스는 CPU와 주기억장치 간의 데이터 전송을 담당하며, PCIe 버스는 GPU와 같은 확장 장치와의 고속 데이터 전송을 위해 사용됩니다.

예상 질문

Q1. 메모리 버스와 PCIe 버스의 차이점은 무엇인가요?
A1. 메모리 버스는 CPU와 주기억장치 간 통신을 담당하고, PCIe 버스는 CPU와 확장 장치 간의 고속 데이터 전송을 위한 통신 역할을 합니다.

Q2. PCIe 버스를 사용하는 이유는 무엇인가요?
A2. PCIe 버스는 고속으로 데이터를 전송하므로 GPU나 SSD와 같은 장치와의 통신에 적합합니다.

프로세스와 스레드

프로세스

프로세스는 실행 중인 프로그램의 인스턴스로, 각 프로세스는 독립적인 메모리 공간을 가집니다.

예상 질문

Q1. 프로세스와 스레드의 차이는 무엇인가요?
A1. 프로세스는 독립적인 메모리 공간을 가지는 반면, 스레드는 같은 프로세스 내에서 메모리를 공유하면서 실행됩니다.

Q2. 프로세스를 사용하는 이유는 무엇인가요?
A2. 프로세스는 독립된 메모리 영역을 가지므로 서로 간섭하지 않고 안전하게 실행할 수 있습니다.

스레드

스레드는 프로세스 내에서 실행되는 작업 단위로, 같은 프로세스 내에서 자원을 공유합니다.

예상 질문

Q1. 스레드의 장점은 무엇인가요?
A1. 스레드는 프로세스 자원을 공유하므로 프로세스 간 통신 오버헤드가 줄어들고, 메모리 사용이 효율적입니다.

Q2. 스레드를 사용하는 예시는 무엇인가요?
A2. 멀티스레드 프로그램에서는 각 스레드가 독립적으로 작업을 수행할 수 있어, 동시 작업이 필요한 게임이나 서버 프로그램에서 많이 사용됩니다.

뮤텍스(Mutex)

뮤텍스는 멀티스레드 환경에서 자원에 대한 동시 접근을 제어하는 메커니즘입니다. 하나의 스레드만 자원에 접근할 수 있도록 자원을 잠그고, 작업이 끝나면 잠금을 해제하여 다른 스레드가 접근할 수 있도록 합니다. 이를 통해 데이터 일관성 문제를 방지할 수 있습니다.

예상 질문

Q1. 뮤텍스란 무엇이며, 언제 사용되나요?
A1.
뮤텍스는 멀티스레드 환경에서 공유 자원의 동시 접근을 제어하기 위해 사용됩니다. 한 번에 하나의 스레드만 자원에 접근할 수 있도록 하여, 데이터의 일관성을 보장합니다.

Q2. 뮤텍스와 스핀락의 차이점은 무엇인가요?
A2. 뮤텍스는 자원이 사용 중이면 대기 상태에 들어가며, 스핀락은 대기 중 자원 접근이 가능할 때까지 반복적으로 자원을 확인하는 점이 다릅니다. 뮤텍스는 시스템 자원을 효율적으로 사용하지만, 스핀락은 빠른 자원 회수가 필요한 경우 유리할 수 있습니다.

세마포어(Semaphore)

세마포어는 여러 스레드가 동시에 자원에 접근할 수 있도록 허용하면서도 제어할 수 있는 메커니즘입니다. 세마포어 값은 자원 접근 가능 횟수를 나타내며, 특정 임계값을 초과하지 않도록 제한합니다. 이로써 여러 스레드가 자원을 사용하되, 자원의 과도한 사용을 방지할 수 있습니다.

예상 질문

Q1. 세마포어와 뮤텍스의 차이점은 무엇인가요?
A1. 세마포어는 여러 스레드가 동시에 접근할 수 있도록 허용하되, 자원 사용 횟수를 제한하는 메커니즘입니다. 반면, 뮤텍스는 단일 스레드만 자원에 접근할 수 있게 합니다.

Q2. 세마포어를 사용하면 어떤 이점이 있나요?
A2. 세마포어를 사용하면 동시에 여러 스레드가 자원에 접근 가능해져, 특정 자원이 제한된 상황에서 스레드가 보다 효율적으로 작업을 처리할 수 있습니다.

컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭은 CPU가 현재 실행 중인 프로세스나 스레드를 중단하고 다른 프로세스로 전환하는 과정입니다. 이 과정에서 실행 상태 정보가 저장 및 복원되어야 하므로 일정한 오버헤드가 발생합니다.

예상 질문

Q1. 컨텍스트 스위칭이란 무엇인가요?
A1. 컨텍스트 스위칭은 CPU가 실행 중인 프로세스를 일시 중단하고 다른 프로세스로 전환하는 과정으로, 상태 정보를 저장하고 복원하는 작업이 필요합니다.

Q2. 컨텍스트 스위칭의 단점은 무엇인가요?
A2. 컨텍스트 스위칭에는 시간과 리소스가 소요되며, 빈번한 전환 시 성능에 영향을 줄 수 있습니다.

데드락과 교착 상태 해결 방법

데드락은 두 개 이상의 프로세스가 서로의 자원을 기다리며 무한 대기 상태에 빠지는 상황을 의미합니다. 데드락 해결 방법으로는 교착 상태 예방, 회피 등의 기법이 있으며, 시스템 안정성을 위해 매우 중요합니다.

예상 질문

Q1. 데드락이란 무엇인가요?
A1. 데드락은 여러 프로세스가 서로의 자원을 기다리며 무한 대기 상태에 빠지는 문제로, 프로그램이 멈추게 됩니다.

Q2. 데드락을 예방하는 방법에는 어떤 것들이 있나요?
A2. 교착 상태 예방, 자원 할당 방지 기법 등을 사용하여 데드락을 방지할 수 있습니다.

캐시 메모리

캐시 메모리의 역할

캐시 메모리는 CPU와 주기억장치 간의 속도 차이를 보완하기 위해 사용되는 고속 메모리로, 자주 사용되는 데이터를 저장하여 시스템 성능을 높이는 역할을 합니다. 일반적으로 L1, L2, L3의 여러 계층으로 나누어져 있으며, CPU에 가까울수록 빠른 접근이 가능합니다.

예상 질문

Q1. 캐시 메모리가 필요한 이유는 무엇인가요?
A1. 캐시 메모리는 CPU와 주기억장치 간의 속도 차이를 줄여 시스템 성능을 향상시키기 위해 사용됩니다. 자주 사용하는 데이터를 캐시에 저장하여 더 빠른 접근이 가능하게 합니다.

Q2. 캐시 메모리의 계층(L1, L2, L3) 간 차이는 무엇인가요?
A2. L1 캐시는 CPU에 가장 가까워서 접근 속도가 가장 빠르지만 용량이 작습니다. L2와 L3 캐시는 상대적으로 느리지만 용량이 크며, 각각의 계층이 CPU의 요청을 더 효율적으로 처리하도록 돕습니다.

캐시 일관성(Coherency)

캐시 일관성은 멀티코어 CPU에서 각 코어가 가진 캐시의 데이터가 일관성을 유지하도록 하는 메커니즘입니다. 이를 통해 CPU 간의 데이터 불일치를 방지하며, 대표적으로 MESI 프로토콜이 사용됩니다.

예상 질문

Q1. 캐시 일관성이란 무엇인가요?
A1. 캐시 일관성은 멀티코어 시스템에서 각 코어의 캐시가 동일한 데이터 값을 유지하도록 보장하는 메커니즘입니다.

Q2. MESI 프로토콜의 역할은 무엇인가요?
A2. MESI 프로토콜은 각 캐시의 상태를 관리하여 데이터의 일관성을 보장하고, 불필요한 데이터 갱신을 방지합니다.

캐시 메모리의 교체 알고리즘

캐시 메모리가 가득 찼을 때 오래된 데이터를 교체하는 LRU(Least Recently Used), LFU(Least Frequently Used) 등 교체 알고리즘이 사용됩니다. 각 알고리즘은 데이터 접근 패턴에 따라 다르게 적용됩니다.

예상 질문

Q1. 캐시 교체 알고리즘이란 무엇인가요?
A1. 캐시가 가득 찼을 때 오래된 데이터를 새로운 데이터로 교체하기 위한 알고리즘입니다. LRU, LFU 등이 있습니다.

Q2. LRU와 LFU의 차이점은 무엇인가요?
A2. LRU는 가장 오랫동안 사용되지 않은 데이터를 교체하고, LFU는 가장 적게 사용된 데이터를 교체합니다.

파이프라이닝(Pipelining)

파이프라이닝의 개념

파이프라이닝은 CPU의 명령어 처리 속도를 높이기 위해 여러 단계를 동시에 처리하는 기술입니다. 각 명령어를 여러 단계로 나누어 각 단계가 동시에 처리되므로 CPU의 효율이 극대화됩니다. 그러나 구조적 해저드, 데이터 해저드, 제어 해저드와 같은 문제가 발생할 수 있으며, 이를 해결하기 위한 다양한 기법이 존재합니다.

예상 질문

Q1. 파이프라이닝의 장점은 무엇인가요?
A1. 파이프라이닝은 명령어를 여러 단계로 나누어 동시에 처리하므로, CPU의 처리 효율을 높여줍니다. 이를 통해 프로그램 실행 속도가 빨라집니다.

Q2. 파이프라이닝에서 발생하는 해저드(hazard)란 무엇인가요?
A2. 해저드는 파이프라인에서 명령어가 정상적으로 진행되지 못하는 문제로, 구조적 해저드, 데이터 해저드, 제어 해저드가 있습니다. 각각의 문제에 따라 적절한 해결책이 필요합니다.

슈퍼스칼라 아키텍처(Superscalar Architecture)

슈퍼스칼라 아키텍처는 CPU가 여러 명령어를 동시에 실행하여 파이프라이닝 성능을 높이는 방식입니다. 이를 통해 CPU가 더 많은 작업을 병렬로 처리할 수 있습니다.

예상 질문

Q1. 슈퍼스칼라 아키텍처란 무엇인가요?
A1. 슈퍼스칼라 아키텍처는 CPU가 여러 명령어를 동시에 실행하여 파이프라이닝 효율을 높이는 구조입니다.

Q2. 슈퍼스칼라 아키텍처의 장점은 무엇인가요?
A2. 병렬 처리를 통해 더 많은 명령어를 동시에 실행하므로, CPU의 처리 속도가 크게 향상됩니다.

파이프라인 해저드와 해결 방법

파이프라인 해저드는 명령어가 동시에 실행되지 못하는 문제로, 구조적, 데이터, 제어 해저드가 있습니다. 해결책으로는 버블 삽입분기 예측 등의 기법이 사용됩니다.

예상 질문

Q1. 파이프라인 해저드란 무엇인가요?
A1. 파이프라인 해저드는 파이프라인에서 명령어 실행이 중단되거나 지연되는 문제로, 구조적, 데이터, 제어 해저드가 있습니다.

Q2. 파이프라인 해저드를 해결하는 방법은 무엇인가요?
A2. 버블 삽입, 분기 예측 등으로 해저드를 줄여 파이프라인이 정상적으로 실행되도록 할 수 있습니다.

RISC와 CISC

RISC와 CISC의 차이점

RISC(Reduced Instruction Set Computer)는 간단하고 고정된 길이의 명령어 세트를 사용하는 구조로, 파이프라이닝에 유리하여 고속 처리가 가능합니다. 반면, CISC(Complex Instruction Set Computer)는 다양한 명령어 세트를 제공해 프로그램의 길이를 줄일 수 있으나, 설계가 복잡해 파이프라이닝 효율이 낮을 수 있습니다.

예상 질문

Q1. RISC와 CISC의 차이점은 무엇인가요?
A1. RISC는 간단한 명령어 세트를 사용하여 처리 속도가 빠른 반면, CISC는 복잡한 명령어 세트를 사용하여 프로그램을 간결하게 하지만 설계가 더 복잡합니다.

Q2. RISC 아키텍처가 파이프라이닝에 유리한 이유는 무엇인가요?
A2. RISC는 단순한 명령어 세트와 고정된 명령어 길이를 사용하여 파이프라인의 각 단계를 효율적으로 처리할 수 있어, 파이프라이닝 성능이 향상됩니다.

명령어 세트 설계 철학

RISC와 CISC는 명령어 설계 철학이 다릅니다. RISC는 단순하고 빠른 명령어 실행을 목표로 하며, CISC는 복잡한 명령어 세트를 통해 코드 효율성을 높입니다.

예상 질문

Q1. RISC와 CISC의 설계 철학 차이점은 무엇인가요?
A1. RISC는 단순하고 짧은 명령어 세트를 사용해 빠른 실행을 목표로 하고, CISC는 복잡한 명령어를 사용해 코드 길이를 줄입니다.

Q2. 모바일 장치에서 RISC가 많이 사용되는 이유는 무엇인가요?
A2. RISC는 전력 효율성이 높아 모바일 장치의 배터리 소모를 줄이는 데 유리하기 때문입니다.

명령어 파이프라인 효율성

RISC 아키텍처는 명령어 길이가 고정되어 있어 파이프라인 효율이 높습니다. 반면 CISC는 명령어 길이가 가변적이라 파이프라인 효율이 떨어질 수 있습니다.

예상 질문

Q1. RISC가 파이프라인 효율이 높은 이유는 무엇인가요?
A1. RISC는 고정된 명령어 길이로 구성되어 파이프라인 단계마다 일관된 처리가 가능해 효율이 높습니다.

Q2. CISC의 복잡한 명령어가 파이프라인에 미치는 영향은 무엇인가요?
A2. CISC의 가변 길이 명령어는 파이프라인의 일관성을 저해해, 실행 속도가 느려질 수 있습니다.

인터럽트(Interrupt)

인터럽트의 개념

인터럽트는 프로세서의 정상적인 명령어 수행을 중단하고, 특정 이벤트를 처리하기 위해 사용되는 메커니즘입니다. 하드웨어 인터럽트는 외부 장치에 의해 발생하며, 소프트웨어 인터럽트는 프로그램 실행 중에 발생합니다. 이를 통해 긴급한 작업을 즉시 처리할 수 있습니다.

예상 질문

Q1. 인터럽트가 무엇인가요?
A1. 인터럽트는 CPU의 작업을 중단하고 긴급한 작업을 처리하기 위해 사용되는 메커니즘으로, 하드웨어와 소프트웨어 인터럽트로 구분됩니다.

Q2. 하드웨어 인터럽트와 소프트웨어 인터럽트의 차이점은 무엇인가요?
A2. 하드웨어 인터럽트는 외부 장치의 요청으로 발생하는 반면, 소프트웨어 인터럽트는 프로그램 내부의 특정 조건에서 발생합니다.

인터럽트 우선순위와 마스크

인터럽트 우선순위는 여러 인터럽트가 동시에 발생할 때 처리 순서를 결정하며, 마스크 인터럽트는 특정 인터럽트를 무시하여 CPU 자원을 확보하는 기능을 수행합니다.

예상 질문

Q1. 인터럽트 우선순위란 무엇인가요?
A1. 여러 인터럽트가 동시에 발생할 경우, CPU가 처리할 순서를 결정하는 기준입니다.

Q2. 마스크 인터럽트의 기능은 무엇인가요?
A2. 마스크 인터럽트는 특정 인터럽트를 무시하여, 중요한 작업이 중단되지 않도록 합니다.

인터럽트 처리 과정과 ISR(Interrupt Service Routine)

CPU는 인터럽트가 발생하면 ISR을 호출하여 해당 인터럽트를 처리하고, 작업이 완료되면 원래 실행하던 작업으로 돌아갑니다.

예상 질문

Q1. ISR이란 무엇인가요?
A1. ISR은 인터럽트가 발생할 때 해당 요청을 처리하는 루틴으로, 처리 후 원래 작업으로 돌아갑니다.

Q2. 인터럽트 처리 후 CPU가 원래 작업으로 돌아가는 과정은 어떻게 되나요?
A2. CPU는 ISR 수행 후 원래 명령어 주소를 복원하여 기존 작업을 재개합니다.

메모리 계층 구조

메모리 계층의 구조와 역할

메모리 계층 구조는 속도와 용량의 차이에 따라 레지스터, 캐시 메모리(L1, L2, L3), 주기억장치, 보조기억장치로 구분됩니다. 상위 계층일수록 접근 속도가 빠르고 용량이 작으며, 하위 계층으로 갈수록 용량은 크지만 속도가 느려집니다.

예상 질문

Q1. 메모리 계층 구조의 각 계층 역할은 무엇인가요?
A1. 레지스터와 캐시는 CPU의 작업을 지원하는 고속 메모리입니다. 주기억장치는 프로그램 실행 중 데이터와 명령어를 저장하고, 보조기억장치는 데이터를 영구적으로 저장합니다.

Q2. 레지스터와 캐시 메모리의 차이점은 무엇인가요?
A2. 레지스터는 CPU 내부에 있는 초고속 메모리로, 직접 연산에 사용됩니다. 반면, 캐시 메모리는 CPU 외부에 있어 주기억장치보다 속도가 빠르며, 자주 사용하는 데이터를 저장하여 CPU 접근 시간을 줄입니다.

가상 메모리(Virtual Memory)

가상 메모리는 물리 메모리가 부족할 때 디스크 공간을 메모리처럼 사용하는 기술입니다. 이를 통해 프로그램은 물리 메모리보다 큰 공간을 사용할 수 있습니다.

예상 질문

Q1. 가상 메모리란 무엇인가요?
A1. 물리 메모리가 부족할 때 디스크 공간을 메모리처럼 사용하여, 더 큰 메모리 공간을 제공하는 기술입니다.

Q2. 가상 메모리가 시스템 성능에 미치는 영향은 무엇인가요?
A2. 디스크 접근 속도가 느려지면 성능이 저하될 수 있지만, 부족한 물리 메모리를 보완합니다.

페이지 폴트(Page Fault)

페이지 폴트는 가상 메모리 사용 시 요청한 데이터가 메모리에 없을 때 발생하며, 이 경우 데이터가 디스크에서 메모리로 로드됩니다.

예상 질문

Q1. 페이지 폴트란 무엇인가요?
A1. 가상 메모리에서 요청한 페이지가 메모리에 없을 때 발생하는 현상으로, 디스크에서 데이터를 불러옵니다.

Q2. 페이지 폴트가 발생하면 성능에 어떤 영향을 주나요?
A2. 디스크에서 데이터를 가져오는 동안 대기 시간이 길어져 시스템 성능이 저하됩니다.

CPU의 레지스터 종류

레지스터의 종류와 역할

  • 프로그램 카운터(PC): 다음 실행할 명령어의 주소를 저장합니다.
  • 명령어 레지스터(IR): 현재 실행 중인 명령어를 저장합니다.
  • 메모리 주소 레지스터(MAR): 접근할 메모리 주소를 저장합니다.
  • 메모리 버퍼 레지스터(MBR): 메모리에서 읽어온 데이터나 저장할 데이터를 임시로 저장합니다.

예상 질문

Q1. 프로그램 카운터(PC)는 어떤 역할을 하나요?
A1. 프로그램 카운터는 다음 실행할 명령어의 주소를 저장하여 CPU가 명령어를 순차적으로 실행할 수 있게 합니다.

Q2. 명령어 레지스터(IR)의 역할은 무엇인가요?
A2. 명령어 레지스터는 현재 실행 중인 명령어를 저장하여 CPU가 해당 명령어를 수행할 수 있도록 합니다.

플래그 레지스터(Flags Register)

플래그 레지스터는 연산 결과에 따른 다양한 플래그 값(예: Carry, Zero, Overflow)을 저장하여 CPU의 조건부 명령 실행을 도와줍니다.

예상 질문

Q1. 플래그 레지스터의 역할은 무엇인가요?
A1. 연산 결과에 따라 조건을 설정하여 CPU가 조건부 명령을 실행할 수 있도록 합니다.

Q2. Overflow 플래그란 무엇인가요?
A2. 연산 결과가 표현 가능한 값을 초과했을 때, 이를 알리는 플래그입니다.

스택 포인터(Stack Pointer)와 베이스 포인터(Base Pointer)

스택 포인터와 베이스 포인터는 함수 호출 시 스택 프레임을 관리하는 데 사용되며, 각 함수 호출마다 메모리 공간을 할당하고 관리합니다.

예상 질문

Q1. 스택 포인터와 베이스 포인터의 차이점은 무엇인가요?
A1. 스택 포인터는 스택의 최상단을 가리키고, 베이스 포인터는 호출된 함수의 기준 주소를 가리킵니다.

Q2. 스택 프레임이란 무엇인가요?
A2. 함수 호출 시 스택에 할당되는 메모리 공간으로, 함수의 매개변수와 지역 변수를 저장합니다.

CPU의 동작 과정

CPU 동작의 주요 단계

CPU는 명령어 인출(Fetch), 해독(Decode), 실행(Execute), 쓰기(Writeback)의 네 단계를 반복하여 프로그램을 실행합니다. 이를 통해 각 명령어가 순차적으로 실행되며, 이러한 과정을 명령어 사이클이라고 부릅니다.

예상 질문

Q1. CPU의 명령어 사이클이란 무엇인가요?
A1. 명령어 사이클은 명령어를 인출, 해독, 실행, 결과 저장하는 일련의 과정으로, CPU가 프로그램을 실행하는 기본적인 절차입니다.

Q2. CPU가 명령어를 인출하고 해독하는 과정에서 어떤 일이 일어나나요?
A2. CPU는 프로그램 카운터(PC)가 가리키는 주소에서 명령어를 인출하고, 인출한 명령어를 해독하여 어떤 작업을 수행할지 결정합니다.

명령어 사이클의 세부 단계

CPU 명령어 사이클의 단계에는 Fetch, Decode, Execute 외에 주소 계산, 결과 기록 등의 세부 단계가 포함될 수 있습니다.

예상 질문

Q1. CPU 명령어 사이클의 주요 단계는 무엇인가요?
A1. 명령어를 인출(Fetch), 해독(Decode), 실행(Execute)하는 세 단계가 있으며, 경우에 따라 추가적인 주소 계산과 결과 기록도 포함됩니다.

Q2. 주소 계산 단계는 어떤 역할을 하나요?
A2. 주소 계산은 메모리 주소를 계산하여 데이터나 명령어를 올바른 위치에서 가져오는 역할을 합니다.

명령어 파이프라인의 효율성 개선

CPU의 파이프라인 효율성을 높이기 위해 분기 예측(branch prediction)투기 실행(out-of-order execution)과 같은 기술이 사용됩니다.

예상 질문

Q1. 분기 예측이란 무엇인가요?
A1. 분기 예측은 프로그램의 흐름을 예측하여 미리 다음 명령어를 준비함으로써 파이프라인의 중단을 방지하는 기술입니다.

Q2. 투기 실행의 장점은 무엇인가요?
A2. 명령어를 순서와 상관없이 미리 실행하여 CPU의 처리 효율을 높이는 효과가 있습니다.