본문 바로가기
컴퓨터 구조 + 운영체제

[쉽게 배우는 운영체제] Ch2 연습문제

by TMrare 2025. 3. 27.

컴퓨터 구조 2장 연습문제 해설

컴퓨터 시스템의 기본 구조와 자료구조에 대한 연습문제와 자세한 해설

📚 객관식 문제 (1-10번)

문제 01

데이터의 이동 통로를 나타내는 것은?

  1. 입력장치
  2. CPU
  3. 출력장치
  4. 버스
정답 버스

📌 해설

버스(Bus)는 컴퓨터 내부에서 데이터가 이동하는 통로입니다.

  • 버스는 CPU, 메모리, 입출력 장치 등의 컴퓨터 구성 요소 간에 데이터를 전송하는 역할을 합니다.
  • 주요 버스 유형으로는 주소 버스, 데이터 버스, 제어 버스가 있으며, 이들을 합쳐 시스템 버스라고 부릅니다.
  • 컴퓨터 내부의 데이터는 이 버스를 통해 각 장치 간 이동하므로 데이터의 이동 통로라고 할 수 있습니다.
문제 02

CPU와 메모리 등 다양한 부품을 연결하고 전원을 공급해 주는 커다란 판을 나타내는 것은?

  1. 메인메모리
  2. USB 드라이브
  3. 메인보드
  4. SSD
정답 메인보드

📌 해설

메인보드(Mainboard)는 컴퓨터의 모든 하드웨어 구성요소를 연결하는 중앙 회로판입니다.

  • 메인보드는 CPU, 메모리(RAM), 그래픽 카드, 저장 장치 등 모든 주요 구성 요소가 연결되는 기본 판입니다.
  • 내부에는 시스템 버스, 칩셋, 슬롯 등 다양한 연결 장치가 포함되어 있습니다.
  • 전원 공급 장치(PSU)를 통해 각 구성 요소에 전력을 분배하는 역할도 합니다.
  • 마더보드(Motherboard)라고도 불립니다.
문제 03

First In, First Out의 자료구조는?

  1. 큐(queue)
  2. 배열(array)
  3. 연결 리스트(linked list)
  4. 스택(stack)
정답 큐(queue)

📌 해설

큐(Queue)는 First In, First Out(FIFO) 원칙을 따르는 자료구조입니다.

  • 큐는 먼저 들어온 데이터가 먼저 나가는 구조로, 일상에서 줄서기와 유사한 방식으로 작동합니다.
  • 기본 연산으로는 enqueue(삽입)와 dequeue(제거)가 있습니다.
  • 큐는 프린터 스풀링, 프로세스 스케줄링, 네트워크 패킷 전송 등 순서가 중요한 다양한 시스템에서 활용됩니다.
  • 반면, 스택(Stack)은 Last In, First Out(LIFO) 원칙을 따릅니다.
문제 04

Last In, First Out의 자료구조는?

  1. queue
  2. array
  3. linked list
  4. stack
정답 stack

📌 해설

스택(Stack)은 Last In, First Out(LIFO) 원칙을 따르는 자료구조입니다.

  • 스택은 가장 나중에 들어온 데이터가 가장 먼저 나가는 구조로, 쌓아올린 접시나 책과 같은 방식으로 작동합니다.
  • 기본 연산으로는 push(삽입)와 pop(제거)이 있습니다.
  • 스택은 함수 호출 관리, 괄호 검사, 수식 계산, 웹 브라우저의 뒤로가기 기능 등 다양한 알고리즘과 시스템에서 활용됩니다.
  • 문제 3의 큐(Queue)는 First In, First Out(FIFO) 원칙을 따르는 것과 대조적입니다.
문제 05

동적 메모리 할당을 사용하여 공간 관리가 편리한 자료구조는?

  1. 배열
  2. 연결 리스트
  3. 스택
정답 연결 리스트

📌 해설

연결 리스트(Linked List)는 동적 메모리 할당을 사용하여 구현되는 자료구조입니다.

  • 연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터로 구성됩니다.
  • 메모리를 필요에 따라 동적으로 할당하고 해제할 수 있어 크기가 가변적이며 메모리 관리가 효율적입니다.
  • 노드의 삽입과 삭제가 배열보다 효율적으로 이루어집니다(O(1) 시간 복잡도).
  • 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트 등 다양한 형태로 구현할 수 있습니다.
  • 반면 배열은 정적인 크기를 가지며, 큐와 스택은 연결 리스트나 배열을 이용해 구현할 수 있는 추상적인 자료구조입니다.
문제 06

폰노이만 구조에서 모든 프로그램은 ( )에 올라와야 실행할 수 있다.

  1. 하드디스크
  2. 메인메모리
  3. 마우스
  4. 키보드
정답 메인메모리

📌 해설

폰노이만 구조(von Neumann architecture)에서는 모든 프로그램이 실행되기 전에 메인메모리에 로드되어야 합니다.

  • 폰노이만 구조는 프로그램과 데이터를 같은 메모리에 저장하는 저장 프로그램 방식을 특징으로 합니다.
  • 프로그램은 보조 기억 장치(하드디스크, SSD 등)에 저장되어 있다가 실행을 위해 반드시 메인메모리(RAM)로 로드되어야 합니다.
  • CPU는 메인메모리에서 명령어를 가져와 해석하고 실행하는 사이클을 반복합니다.
  • 이것이 "프로그램 적재(program loading)"의 기본 원리이며, 현대 컴퓨터 아키텍처의 핵심 개념입니다.
문제 07

요리사 모형의 도마(작업 공간)와 가장 관련이 높은 것은?

  1. 프로세스
  2. CPU
  3. 저장장치
  4. 메모리
정답 메모리

📌 해설

요리사 모형에서 도마(작업 공간)는 컴퓨터의 메모리(Memory)에 해당합니다.

  • 요리사 모형은 컴퓨터 시스템을 이해하기 위한 비유적 모델로, 여기서 요리사는 CPU에 해당하고 도마는 메모리에 해당합니다.
  • 도마(메모리)는 요리사(CPU)가 재료를 준비하고 작업을 수행하는 공간으로, 현재 처리 중인 데이터와 명령어가 위치합니다.
  • CPU가 작업을 수행하기 위해서는 필요한 데이터와 명령어가 메모리에 로드되어 있어야 합니다.
  • 요리 재료(데이터)는 냉장고나 저장 공간(저장 장치)에서 가져와 도마(메모리)에 올려놓고 작업을 합니다.
문제 08

1초당 변화를 나타낼 때 사용되는 단위는?

  1. Hz
  2. TB
  3. PB
  4. GB
정답 Hz

📌 해설

Hz(헤르츠)는 1초당 진동 또는 사이클의 횟수를 나타내는 단위입니다.

  • Hz는 주파수를 측정하는 국제 단위로, 1Hz는 1초에 한 번의 진동이나 사이클이 발생함을 의미합니다.
  • 컴퓨터에서는 클럭 속도를 측정하는 데 사용되며, 이는 CPU가 1초에 몇 번의 사이클을 실행할 수 있는지를 나타냅니다.
  • 현대 CPU는 보통 GHz(기가헤르츠, 10^9 Hz) 단위로 클럭 속도를 표현합니다.
  • 반면, TB(테라바이트), PB(페타바이트), GB(기가바이트)는 데이터 저장 용량을 나타내는 단위입니다.
문제 09

CPU의 구성 요소와 거리가 먼 것은?

  1. 산술논리 연산장치(ALU)
  2. 제어장치(control unit)
  3. 레지스터(register)
  4. 시스템 버스(FSB)
정답 시스템 버스(FSB)

📌 해설

시스템 버스(FSB, Front Side Bus)는 CPU의 구성 요소가 아니라 CPU와 다른 구성 요소를 연결하는 통로입니다.

  • CPU의 주요 구성 요소는 산술논리 연산장치(ALU), 제어장치(Control Unit), 레지스터(Register)입니다.
  • ALU는 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR, NOT 등)을 수행합니다.
  • 제어장치는 명령어를 해석하고 CPU의 다른 부분에 필요한 제어 신호를 보냅니다.
  • 레지스터는 CPU 내에서 데이터를 임시로 저장하는 고속 메모리입니다.
  • 반면, 시스템 버스(FSB)는 CPU와 메인 메모리 및 다른 시스템 구성 요소 간의 데이터 전송 통로로, CPU의 외부에 위치합니다.
문제 10

CPU의 구성 요소 중 연산을 담당하는 것은?

  1. ALU
  2. control unit
  3. register
  4. FSB
정답 ALU

📌 해설

ALU(Arithmetic Logic Unit, 산술논리 연산장치)는 CPU 내에서 모든 수학적, 논리적 연산을 수행하는 부분입니다.

  • ALU는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산을 수행합니다.
  • AND, OR, NOT, XOR 등의 논리 연산도 ALU에서 처리됩니다.
  • 비교 연산(크다, 작다, 같다 등)도 ALU의 중요한 기능 중 하나입니다.
  • 데이터 이동 연산(shift, rotate)도 ALU에서 담당합니다.
  • 제어장치(Control Unit)는 명령어 해석과 제어 신호 생성을, 레지스터(Register)는 데이터의 임시 저장을 담당하며, FSB는 CPU 구성 요소가 아닙니다.

📚 객관식 문제 (11-20번)

문제 11

실행할 주소를 가진 레지스터는?

  1. IR
  2. PC
  3. MBR
  4. MAR
정답 PC

📌 해설

PC(Program Counter)는 다음에 실행할 명령어의 주소를 가리키는 레지스터입니다.

  • PC는 명령어 포인터(Instruction Pointer, IP)라고도 불립니다.
  • CPU는 PC가 가리키는 주소에서 다음 실행할 명령어를 가져옵니다.
  • 일반적으로, 명령어가 실행된 후 PC는 자동으로 다음 명령어 위치로 증가합니다.
  • 분기나 점프 명령어가 실행되면 PC 값이 새로운 주소로 변경됩니다.
  • 다른 레지스터들의 역할:
    • IR(Instruction Register): 현재 실행 중인 명령어를 저장
    • MBR(Memory Buffer Register): 메모리에서 가져온 데이터를 임시 저장
    • MAR(Memory Address Register): 메모리 접근 시 사용할 주소를 저장
문제 12

현재 실행 중인 명령어를 저장한 레지스터는?

  1. IR
  2. PC
  3. MBR
  4. MAR
정답 IR

📌 해설

IR(Instruction Register)는 현재 실행 중인 명령어를 저장하는 레지스터입니다.

  • CPU가 메모리로부터 명령어를 가져온 후, 해당 명령어는 IR에 저장됩니다.
  • IR에 저장된 명령어는 제어장치(Control Unit)에 의해 해석되고 실행됩니다.
  • IR은 명령어 실행 사이클의 가져오기(Fetch) 단계에서 중요한 역할을 합니다.
  • PC(Program Counter)가 다음에 실행할 명령어의 주소를 가리키는 반면, IR은 현재 처리 중인 명령어 자체를 포함합니다.
문제 13

데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용하는 레지스터는?

  1. IR
  2. PC
  3. MBR
  4. MAR
정답 MAR

📌 해설

MAR(Memory Address Register)는 메모리 접근 시 사용할 주소를 저장하는 레지스터입니다.

  • CPU가 메모리에서 데이터를 읽거나 쓸 때, 접근하려는 메모리의 주소를 MAR에 저장합니다.
  • MAR은 주소 버스와 직접 연결되어 있어, MAR에 저장된 주소가 주소 버스를 통해 메모리로 전송됩니다.
  • 메모리 읽기 연산에서 MAR에 지정된 주소의 데이터가 데이터 버스를 통해 CPU로 전달됩니다.
  • 메모리 쓰기 연산에서는 MAR에 지정된 주소에 MBR의 데이터가 저장됩니다.
문제 14

메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장하는 레지스터는?

  1. IR
  2. PC
  3. MBR
  4. MAR
정답 MBR

📌 해설

MBR(Memory Buffer Register)는 메모리와 CPU 사이에서 데이터를 임시 저장하는 레지스터입니다.

  • 메모리 읽기 연산에서 메모리로부터 읽어온 데이터는 MBR에 임시 저장됩니다.
  • 메모리 쓰기 연산에서 CPU가 메모리에 저장하려는 데이터는 먼저 MBR에 저장된 후 메모리로 전송됩니다.
  • MBR은 데이터 버스와 직접 연결되어 있어, 데이터의 입출력 통로 역할을 합니다.
  • MBR은 MDR(Memory Data Register)이라고도 불립니다.
문제 15

분기를 위한 연산 결과를 저장하는 레지스터는?

  1. PSR
  2. PC
  3. MBR
  4. AR
정답 PSR

📌 해설

PSR(Program Status Register)는 CPU의 현재 상태와 연산 결과의 상태 정보를 저장하는 레지스터입니다.

  • PSR은 플래그 레지스터(Flag Register) 또는 상태 레지스터(Status Register)라고도 불립니다.
  • PSR에는 연산 결과의 부호(Sign), 영(Zero), 오버플로우(Overflow), 캐리(Carry) 등의 상태 플래그가 포함됩니다.
  • 이러한 상태 플래그는 조건부 분기 명령어(conditional branch)의 조건 평가에 사용됩니다.
  • 예를 들어, '결과가 0이면 점프'와 같은 명령어는 PSR의 Zero 플래그를 참조하여 분기 여부를 결정합니다.
문제 16

단방향 버스는?

  1. 후면버스
  2. 데이터버스
  3. 제어버스
  4. 주소버스
정답 주소버스

📌 해설

주소버스(Address Bus)는 CPU에서 메모리나 I/O 장치로 주소 정보를 전송하는 단방향 버스입니다.

  • 주소버스는 CPU에서 메모리로 항상 단방향으로만 주소 정보를 전송하기 때문에 단방향 버스입니다.
  • 반면, 데이터버스(Data Bus)는 CPU와 메모리 간에 데이터를 주고받는 양방향 버스입니다.
  • 제어버스(Control Bus)도 일반적으로 양방향으로 작동하며, 읽기/쓰기 신호, 인터럽트 등의 제어 신호를 전달합니다.
  • 주소버스의 폭(width)은 CPU가 접근할 수 있는 메모리의 크기를 결정합니다. 예를 들어, 32비트 주소버스는 2^32(4GB)의 메모리 공간에 접근할 수 있습니다.
문제 17

32bit CPU에서 같은 크기가 아닌 것은?

  1. MBR의 크기
  2. MAR의 크기
  3. 버스의 대역폭
  4. 메모리에 저장할 수 있는 양
정답 메모리에 저장할 수 있는 양

📌 해설

32비트 CPU에서 MBR, MAR, 버스의 대역폭은 모두 32비트의 크기를, 메모리에 저장할 수 있는 양은 이와 다른 크기를 가집니다.

  • 32비트 CPU에서 MBR(Memory Buffer Register)은 일반적으로 32비트의 크기를 가집니다.
  • MAR(Memory Address Register)도 32비트로, 이는 CPU가 최대 2^32(4GB)의 메모리 주소 공간에 접근할 수 있음을 의미합니다.
  • 버스의 대역폭(데이터 버스 폭)도 보통 32비트입니다.
  • 그러나 메모리에 저장할 수 있는 양은 실제 컴퓨터에 설치된 물리적 메모리(RAM)의 용량에 따라 달라지며, 32비트 주소 버스가 접근할 수 있는 최대 4GB보다 작을 수도, 64비트 시스템에서는 훨씬 클 수도 있습니다.
문제 18

나머지 3개와 종류가 다른 것은?

  1. 플래시 메모리
  2. SDRAM
  3. DRAM
  4. EPROM
정답 EPROM

📌 해설

EPROM(Erasable Programmable Read-Only Memory)은 다른 세 가지와 달리 비휘발성 메모리(ROM)의 한 종류입니다.

  • EPROM은 전원이 꺼져도 데이터가 유지되는 비휘발성 메모리이며, 특수한 장비(UV 소거기)를 사용해 내용을 지우고 다시 프로그래밍할 수 있습니다.
  • 반면, SDRAM(Synchronous Dynamic Random Access Memory)과 DRAM(Dynamic Random Access Memory)은 모두 휘발성 메모리(RAM)의 종류로, 전원이 꺼지면 데이터가 사라집니다.
  • 플래시 메모리는 비휘발성 메모리이지만, 일반적으로 보조 저장장치로 사용되며 쓰기/지우기가 EPROM보다 훨씬 용이합니다.
  • SDRAM과 DRAM은 주기적인 리프레시가، 필요하다는 공통점이 있지만, SDRAM은 시스템 클럭에 동기화되어 동작하는 발전된 형태의 DRAM입니다.
문제 19

운영체제를 실행하기 위한 작은 코드를 나타내는 것은?

  1. bootstrap
  2. master boot record
  3. control unit
  4. BIOS
정답 bootstrap

📌 해설

부트스트랩(Bootstrap)은 컴퓨터 시스템이 시작될 때 운영체제를 로드하기 위한 초기화 과정과 그에 필요한 작은 코드를 의미합니다.

  • 부트스트랩 코드는 컴퓨터가 전원을 켰을 때 가장 먼저 실행되는 작은 프로그램으로, 운영체제를 메모리에 로드하고 실행하는 역할을 합니다.
  • 이 과정은 종종 "컴퓨터를 부팅한다"라고 표현되며, 부트스트랩이라는 용어는 "신발끈을 스스로 묶다"라는 의미의 관용구에서 유래했습니다.
  • 부트스트랩 과정은 일반적으로 다음 단계를 포함합니다:
    1. BIOS/UEFI 초기화 및 하드웨어 검사(POST)
    2. 부팅 장치 확인
    3. 마스터 부트 레코드(MBR) 또는 GUID 파티션 테이블(GPT) 로드
    4. 부트로더 실행
    5. 운영체제 커널 로드 및 초기화
문제 20

입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼는?

  1. BSB
  2. spool
  3. CPU cache
  4. Web cache
정답 spool

📌 해설

스풀(SPOOL, Simultaneous Peripheral Operation On-Line)은 입출력 장치와 CPU 간의 속도 차이를 보완하기 위한 소프트웨어적 버퍼링 기법입니다.

  • 스풀링은 주로 프린터와 같은 느린 입출력 장치를 효율적으로 사용하기 위해 도입되었습니다.
  • 스풀링 시스템에서는 출력할 데이터를 디스크의 특정 영역(스풀 영역)에 임시 저장한 후, 백그라운드에서 천천히 실제 출력 장치로 전송합니다.
  • 이를 통해 CPU는 입출력 작업이 완료될 때까지 기다리지 않고 다음 작업을 처리할 수 있어 시스템 효율성이 향상됩니다.
  • 프린터 스풀링이 가장 대표적인 예로, 인쇄 명령이 내려진 문서는 스풀 영역에 저장되었다가 프린터가 준비되면 인쇄됩니다.
  • 반면, CPU 캐시는 CPU와 메인 메모리 간의 속도 차이를 줄이기 위한 하드웨어적 버퍼입니다.

📚 객관식 문제 (21-28번)

문제 21

앞으로 사용할 것을 미리 가져와 속도를 향상하는 장치는?

  1. BSB
  2. spool
  3. cache
  4. FSB
정답 cache

📌 해설

캐시(Cache)는 자주 접근하거나 앞으로 사용할 가능성이 높은 데이터를 미리 가져와 빠르게 접근할 수 있는 고속 메모리입니다.

  • 캐시는 CPU와 메인 메모리 사이의 속도 차이를 줄이기 위해 사용되는 고속의 임시 저장소입니다.
  • 데이터 지역성(Locality) 원리에 기반하여, 최근에 접근한 데이터나 인접한 데이터는 곧 다시 접근할 가능성이 높다는 점을 활용합니다.
  • 캐시는 여러 레벨(L1, L2, L3 등)로 구성될 수 있으며, CPU에 가까울수록 더 빠르지만 용량이 작습니다.
  • 웹 브라우저 캐시, 디스크 캐시, DNS 캐시 등 다양한 환경에서 캐시 개념이 적용됩니다.
  • 반면, 스풀(spool)은 느린 입출력 장치를 위한 버퍼링 기술이며, FSB(Front Side Bus)는 CPU와 메모리를 연결하는 버스입니다.
문제 22

캐시에 원하는 데이터가 있는 경우를 나타내는 것은?

  1. cache hit
  2. cache miss
  3. cache hit ratio
  4. cache size
정답 cache hit

📌 해설

캐시 히트(Cache Hit)는 CPU가 요청한 데이터가 캐시 메모리에 이미 존재하는 상황을 의미합니다.

  • 캐시 히트가 발생하면 CPU는 상대적으로 느린 메인 메모리에 접근할 필요 없이 빠른 캐시에서 데이터를 가져올 수 있습니다.
  • 캐시 히트는 시스템 성능 향상에 직접적인 영향을 미치며, 캐시 히트율(Cache Hit Ratio)이 높을수록 시스템 성능이 향상됩니다.
  • 반면, 캐시 미스(Cache Miss)는 요청한 데이터가 캐시에 없어 메인 메모리에서 데이터를 가져와야 하는 상황을 의미합니다.
  • 캐시 히트율은 전체 메모리 접근 중 캐시 히트가 발생한 비율을 나타내며, 시스템 성능을 평가하는 중요한 지표입니다.
문제 23

캐시에 원하는 데이터가 없는 경우를 나타내는 것은?

  1. 캐시 히트
  2. 캐시 미스
  3. 캐시 적중률
  4. 캐시 크기
정답 캐시 미스

📌 해설

캐시 미스(Cache Miss)는 CPU가 요청한 데이터가 캐시 메모리에 존재하지 않는 상황을 의미합니다.

  • 캐시 미스가 발생하면 CPU는 원하는 데이터를 메인 메모리에서 가져와야 하므로, 추가적인 시간이 소요됩니다.
  • 일반적으로 메인 메모리 접근은 캐시 접근보다 수십 배 이상 느리기 때문에, 캐시 미스는 성능 저하의 주요 원인이 됩니다.
  • 캐시 미스가 발생하면 요청한 데이터를 메모리에서 가져오면서, 해당 데이터 및 주변 데이터를 캐시에 저장하여 향후 접근을 위해 준비합니다.
  • 캐시 미스는 강제적 미스(Compulsory Miss), 용량 미스(Capacity Miss), 충돌 미스(Conflict Miss) 등으로 분류됩니다.
문제 24

저렴한 가격으로 속도를 레지스터처럼, 용량은 하드디스크처럼 시스템을 구성해 주는 것은?

  1. 저장장치의 계층 구조
  2. 인터럽트
  3. 직접 메모리 접근
  4. 메모리 맵 입출력
정답 저장장치의 계층 구조

📌 해설

저장장치의 계층 구조(Memory Hierarchy)는 다양한 속도와 용량의 저장장치를 계층적으로 구성하여 비용 효율적으로 성능을 최적화하는 구조입니다.

  • 저장장치 계층 구조는 일반적으로 다음과 같은 단계로 구성됩니다(위에서 아래로 속도 감소, 용량 증가, 비용 감소):
    1. 레지스터(Registers): CPU 내부의 초고속 저장소
    2. 캐시 메모리(Cache): L1, L2, L3 등의 고속 버퍼 메모리
    3. 메인 메모리(Main Memory, RAM): 프로그램과 데이터의 주 저장소
    4. 보조 저장장치(Secondary Storage): SSD, HDD 등
    5. 아카이브 저장소(Archive Storage): 테이프, 광학 미디어 등
  • 이러한 계층 구조를 통해 상위 계층의 빠른 속도와 하위 계층의 큰 용량을 조합하여, 경제적인 비용으로 높은 성능을 제공합니다.
  • 각 계층 간에는 데이터 이동이 발생하며, 데이터 지역성(Locality) 원리를 활용하여 자주 사용되는 데이터는 상위 계층에 유지됩니다.
문제 25

CPU 작업과 입출력 작업을 분리하여 효율을 높이는 기법은?

  1. 저장장치의 계층 구조
  2. 인터럽트
  3. 직접 메모리 접근
  4. 메모리 맵 입출력
정답 인터럽트

📌 해설

인터럽트(Interrupt)는 CPU가 프로그램을 실행하는 도중에 예외 상황이나 입출력 작업 완료와 같은 외부 이벤트가 발생했을 때, 현재 실행 중인 작업을 일시 중단하고 해당 이벤트를 처리하는 메커니즘입니다.

  • 인터럽트 방식에서는 입출력 장치가 작업을 시작한 후, CPU는 다른 작업을 수행할 수 있어 시스템 효율성이 향상됩니다.
  • 입출력 작업이 완료되면 장치는 인터럽트 신호를 발생시켜 CPU에게 알립니다.
  • CPU는 현재 작업의 상태를 저장하고(문맥 전환), 인터럽트 처리 루틴으로 제어를 이동하여 해당 이벤트를 처리합니다.
  • 인터럽트는 하드웨어 인터럽트, 소프트웨어 인터럽트(트랩), 예외 등으로 분류될 수 있습니다.
  • 인터럽트 방식은 폴링(polling) 방식에 비해 CPU 시간을 효율적으로 사용할 수 있게 해줍니다.
문제 26

메모리의 일정 공간을 입출력에 할당하는 기법은?

  1. 사이클 훔치기
  2. 인터럽트
  3. 직접 메모리 접근
  4. 메모리 맵 입출력
정답 메모리 맵 입출력

📌 해설

메모리 맵 입출력(Memory-Mapped I/O, MMIO)은 입출력 장치의 레지스터를 메모리 주소 공간의 일부로 할당하여 접근하는 기법입니다.

  • MMIO에서는 CPU가 입출력 장치에 접근할 때 특별한 입출력 명령어를 사용하지 않고, 일반 메모리 읽기/쓰기 명령어를 사용합니다.
  • 각 입출력 장치는 메모리 주소 공간의 특정 범위에 매핑되며, 해당 주소에 대한 읽기/쓰기 동작은 실제로 해당 장치에 대한 접근으로 처리됩니다.
  • 이러한 방식은 입출력을 위한 별도의 명령어 세트가 필요 없어 CPU 설계가 단순해지는 장점이 있습니다.
  • 대부분의 현대 컴퓨터 시스템에서는 메모리 맵 입출력과 별도의 I/O 포트를 사용하는 방식을 함께 채택하고 있습니다.
문제 27

입출력 관리자에게 CPU의 허락 없이 메모리에 접근할 수 있게 하는 권한은?

  1. cycle stealing
  2. interript
  3. DMA
  4. MMIO
정답 DMA

📌 해설

DMA(Direct Memory Access)는 CPU의 개입 없이 입출력 장치가 메모리에 직접 접근할 수 있게 하는 기술입니다.

  • DMA는 대용량 데이터 전송 시 CPU 부담을 줄이기 위해 사용됩니다.
  • DMA 컨트롤러는 CPU 대신 메모리 제어를 담당하여 입출력 장치와 메모리 간의 데이터 전송을 관리합니다.
  • DMA 작동 과정:
    1. CPU가 DMA 컨트롤러에 전송할 데이터의 시작 주소, 크기, 방향 등을 설정
    2. CPU는 다른 작업을 계속 수행
    3. DMA 컨트롤러가 메모리와 입출력 장치 간 데이터 전송을 처리
    4. 전송 완료 후 DMA 컨트롤러가 CPU에 인터럽트 신호 발생
  • DMA는 디스크 I/O, 네트워크 패킷 전송, 그래픽 처리 등 대용량 데이터 전송이 필요한 작업에서 시스템 성능을 크게 향상시킵니다.
문제 28

CPU가 메모리 사용 권한을 장치 관리자에게 양보하는 것을 나타내는 용어는?

  1. 사이클 훔치기
  2. 인터럽트
  3. 직접 메모리 접근
  4. 메모리 맵 입출력
정답 사이클 훔치기

📌 해설

사이클 훔치기(Cycle Stealing)는 DMA 동작 중에 CPU와 DMA 컨트롤러가 메모리 버스 사용 권한을 번갈아 가면서 사용하는 기법입니다.

  • CPU와 DMA 컨트롤러는 메모리에 동시에 접근할 수 없기 때문에, DMA 작동 시 CPU의 메모리 사이클 일부를 '훔쳐서' 사용합니다.
  • CPU가 메모리에 접근하지 않는 시간(예: 캐시에서 데이터를 처리하는 동안)에 DMA 컨트롤러가 메모리 접근을 수행합니다.
  • 이 방법은 CPU와 DMA 간의 메모리 접근 충돌을 방지하고, CPU 성능 저하를 최소화합니다.
  • DMA 전송량이 많을 경우 CPU 성능이 일부 저하될 수 있지만, CPU가 모든 입출력 작업을 직접 처리하는 것보다는 훨씬 효율적입니다.

📚 주관식 문제 (29-61번)

문제 29

컴퓨터의 필수장치는 CPU와 ( )다.

정답 메인메모리

📌 해설

컴퓨터의 기본 구성에서 가장 필수적인 두 요소는 CPU메인메모리(Main Memory)입니다.

  • CPU(중앙처리장치)는 컴퓨터의 '두뇌' 역할을 하며 명령어를 해석하고 실행하는 핵심 구성 요소입니다.
  • 메인메모리(RAM)는 프로그램과 데이터를 저장하는 공간으로, CPU가 직접 접근할 수 있는 주기억장치입니다.
  • 폰노이만 구조에 따르면, 프로그램은 실행되기 위해 반드시 메인메모리에 로드되어야 합니다.
  • CPU와 메모리가 없다면 컴퓨터로서의 기본적인 기능을 수행할 수 없으며, 다른 장치들(입출력 장치, 저장 장치 등)은 이 두 요소에 비해 상대적으로 부가적인 요소로 볼 수 있습니다.
문제 30

( ) 컴퓨터에서 데이터의 이동 통로다.

정답 버스

📌 해설

버스(Bus)는 컴퓨터 내부에서 데이터가 이동하는 통로입니다.

  • 버스는 CPU, 메모리, 입출력 장치 등 컴퓨터의 다양한 구성 요소 간에 데이터가 전송되는 경로입니다.
  • 주요 버스 유형에는 다음이 포함됩니다:
    • 주소 버스(Address Bus): CPU가 메모리나 입출력 장치에 주소 정보를 전송하는 버스
    • 데이터 버스(Data Bus): 실제 데이터가 이동하는 양방향 버스
    • 제어 버스(Control Bus): 읽기/쓰기 신호 등 제어 신호를 전송하는 버스
  • 버스의 대역폭(width)은 한 번에 전송할 수 있는 데이터의 양을 결정하며, 컴퓨터 성능에 중요한 영향을 미칩니다.
문제 31

( )는 CPU와 메모리 등 다양한 부품을 연결하고 전원을 공급해주는 커다란 판이다.

정답 메인보드

📌 해설

메인보드(Mainboard)는 컴퓨터의 모든 핵심 구성 요소가 장착되고 연결되는 주요 회로판입니다.

  • 메인보드는 마더보드(Motherboard) 또는 시스템보드(System Board)라고도 불립니다.
  • 메인보드는 다음과 같은 주요 구성 요소들이 연결되는 플랫폼 역할을 합니다:
    • CPU 소켓: 프로세서를 장착하는 공간
    • 메모리 슬롯: RAM 모듈을 장착하는 공간
    • 확장 슬롯: 그래픽카드, 사운드카드 등의 확장 카드를 장착하는 공간
    • 칩셋: CPU와 다른 구성 요소 간의 통신을 관리
    • BIOS/UEFI 칩: 기본 입출력 시스템을 저장
    • 저장 장치 커넥터: SSD, HDD 등을 연결
  • 전원 공급 장치(PSU)와 연결되어 각 구성 요소에 적절한 전원을 분배합니다.
문제 32

폰노이만 구조에서 모든 프로그램은 ( )에 올라와야 실행할 수 있다.

정답 메모리

📌 해설

폰노이만 구조(von Neumann architecture)에서는 모든 프로그램이 실행되기 위해 반드시 메모리(Memory)에 로드되어야 합니다.

  • 폰노이만 구조는 1945년 수학자 존 폰 노이만이 제안한 컴퓨터 아키텍처로, 현대 대부분의 컴퓨터가 따르는 기본 설계입니다.
  • 이 구조의 핵심 개념은 '저장 프로그램 방식(Stored Program Concept)'으로, 프로그램 코드와 데이터를 동일한 메모리에 저장합니다.
  • 프로그램은 하드 디스크와 같은 보조 기억 장치에 영구적으로 저장되어 있다가, 실행을 위해 메인 메모리(RAM)에 로드됩니다.
  • CPU는 메모리에서 명령어를 순차적으로 가져와(fetch) 해석(decode)하고 실행(execute)하는 사이클을 반복합니다.
  • 이 구조가 채택되기 전에는 프로그램을 실행하기 위해 물리적으로 회로를 재구성해야 했습니다(하드와이어링 방식).
문제 33

( )는 컴퓨터가 이해할 수 있는 숫자로만 이루어진 언어다.

정답 기계어

📌 해설

기계어(Machine Language)는 컴퓨터가 직접 이해하고 실행할 수 있는 이진수(0과 1)로 구성된 프로그래밍 언어입니다.

  • 기계어는 CPU가 직접 해석하고 실행할 수 있는 가장 저수준의 프로그래밍 언어입니다.
  • 모든 프로그램은 최종적으로 기계어로 변환되어 실행됩니다.
  • 기계어는 CPU 아키텍처에 따라 다르며, 특정 프로세서 계열에 맞게 설계됩니다(예: x86, ARM, RISC-V 등).
  • 기계어는 사람이 직접 작성하고 이해하기 매우 어렵기 때문에, 어셈블리어나 고급 프로그래밍 언어를 통해 프로그램을 작성한 후 컴파일러나 어셈블러를 통해 기계어로 변환합니다.
  • 예를 들어, x86 아키텍처에서 "10110000 01100001"는 "AL 레지스터에 97(ASCII 코드로 'a')을 저장하라"는 명령어입니다.
문제 34

( )는 기계어를 사람이 이해할 수 있는 문자 형태로 바꿔놓은 프로그래밍 언어다.

정답 어셈블리어

📌 해설

어셈블리어(Assembly Language)는 기계어의 명령어와 1:1로 대응되는 기호(니모닉)를 사용하여 표현한 저수준 프로그래밍 언어입니다.

  • 어셈블리어는 기계어보다 사람이 이해하기 쉽도록 설계되었지만, 여전히 하드웨어에 매우 밀접한 저수준 언어입니다.
  • 예를 들어, 기계어 "10110000 01100001"는 어셈블리어에서 "MOV AL, 61h"와 같이 표현될 수 있습니다.
  • 어셈블리어 프로그램은 어셈블러(Assembler)를 통해 기계어로 변환됩니다.
  • CPU 아키텍처마다 고유한 어셈블리어를 가지고 있습니다(예: x86 어셈블리, ARM 어셈블리 등).
  • 어셈블리어는 시스템 프로그래밍, 디바이스 드라이버, 실시간 시스템, 임베디드 시스템 등 하드웨어 제어가 중요한 영역에서 여전히 사용됩니다.
문제 35

( )은 프로그래밍 언어로 작성된 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역하여 실행 파일을 만든 후 한꺼번에 실행하는 것이다.

정답 컴파일

📌 해설

컴파일(Compile)은 고급 프로그래밍 언어로 작성된 소스 코드를 기계어 또는 중간 코드로 변환하는 과정입니다.

  • 컴파일 과정은 다음과 같은 단계를 포함합니다:
    1. 어휘 분석(Lexical Analysis): 소스 코드를 토큰으로 분해
    2. 구문 분석(Syntax Analysis): 토큰을 구문 트리로 변환
    3. 의미 분석(Semantic Analysis): 코드의 의미 검사
    4. 중간 코드 생성(Intermediate Code Generation): 최적화를 위한 중간 형태 생성
    5. 코드 최적화(Code Optimization): 실행 속도나 메모리 사용량 개선
    6. 목적 코드 생성(Target Code Generation): 최종 기계어 코드 생성
  • 컴파일된 프로그램은 실행 파일 형태로 저장되며, 이후 실행 시에는 별도의 변환 과정 없이 바로 실행됩니다.
  • 컴파일 방식을 사용하는 프로그래밍 언어로는 C, C++, Fortran, COBOL 등이 있습니다.
  • 이와 대조적으로, 인터프리터(Interpreter) 방식은 소스 코드를 한 줄씩 해석하며 바로 실행합니다.
문제 36

( )는 First In, First Out의 자료구조다.

정답 큐(queue)

📌 해설

큐(Queue)는 First In, First Out(FIFO) 원칙을 따르는 자료구조입니다.

  • 큐는 데이터가 들어온 순서대로 처리되는 구조로, 일상생활의 대기줄(줄서기)과 유사한 개념입니다.
  • 큐의 주요 연산:
    • Enqueue: 큐의 뒤쪽(rear/tail)에 요소를 추가
    • Dequeue: 큐의 앞쪽(front/head)에서 요소를 제거
    • Peek/Front: 제거하지 않고 앞쪽 요소를 확인
    • IsEmpty: 큐가 비어있는지 확인
  • 큐의 응용 분야:
    • 프로세스 스케줄링(CPU 스케줄링의 FCFS 알고리즘)
    • 비동기식 데이터 전송(파일 I/O, 소켓 통신 등)
    • 대기열 관리(프린터 큐, 메시지 큐 등)
    • 너비 우선 탐색(BFS) 알고리즘
  • 큐의 구현 방법으로는 배열, 연결 리스트, 원형 큐 등이 있습니다.
문제 37

( )은 Last In, First Out의 자료구조다.

정답 스택(stack)

📌 해설

스택(Stack)은 Last In, First Out(LIFO) 원칙을 따르는 자료구조입니다.

  • 스택은 가장 최근에 추가된 항목이 가장 먼저 제거되는 구조로, 접시 더미나 책 더미와 같은 개념입니다.
  • 스택의 주요 연산:
    • Push: 스택의 맨 위에 요소를 추가
    • Pop: 스택의 맨 위에서 요소를 제거
    • Peek/Top: 제거하지 않고 맨 위 요소를 확인
    • IsEmpty: 스택이 비어있는지 확인
  • 스택의 응용 분야:
    • 함수 호출 관리(호출 스택)
    • 수식 계산 및 괄호 검사
    • 웹 브라우저의 뒤로가기 기능
    • 실행 취소(Undo) 기능
    • 깊이 우선 탐색(DFS) 알고리즘
  • 스택의 구현 방법으로는 배열, 연결 리스트 등이 있습니다.
문제 38

( )는 동적 메모리 할당을 사용하여 공간 관리가 편리한 자료구조다.

정답 연결 리스트

📌 해설

연결 리스트(Linked List)는 동적 메모리 할당을 사용하여 구현되는 자료구조입니다.

  • 연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터로 구성됩니다.
  • 메모리를 필요에 따라 동적으로 할당하고 해제할 수 있어 크기가 가변적이며 메모리 관리가 효율적입니다.
  • 연결 리스트의 주요 특징:
    • 데이터의 삽입과 삭제가 효율적 (O(1) 시간 복잡도)
    • 임의 접근이 불가능하여 특정 위치의 데이터 접근에 O(n) 시간 소요
    • 포인터를 사용하여 데이터 간의 논리적 순서 유지
    • 메모리 공간이 연속적일 필요가 없음
  • 연결 리스트의 종류:
    • 단일 연결 리스트: 각 노드가 다음 노드만 가리킴
    • 이중 연결 리스트: 각 노드가 이전 노드와 다음 노드 모두 가리킴
    • 원형 연결 리스트: 마지막 노드가 첫 번째 노드를 가리켜 원형을 형성
문제 39

( )는 1초당 변화를 나타낼 때 사용하는 단위다.

정답 Hz

📌 해설

Hz(헤르츠)는 주파수의 국제 단위로, 1초당 진동 또는 사이클의 횟수를 나타냅니다.

  • Hz는 독일의 물리학자 하인리히 헤르츠(Heinrich Hertz)의 이름에서 유래되었습니다.
  • 1Hz는 1초에 한 번의 진동이나 사이클이 발생함을 의미합니다.
  • 컴퓨터 분야에서의 Hz 활용:
    • CPU 클럭 속도: CPU가 1초에 수행할 수 있는 기본 연산 주기 (예: 3.2GHz)
    • 메모리 클럭 속도: 메모리의 데이터 전송 속도 측정
    • 모니터 주사율: 화면이 1초에 갱신되는 횟수 (예: 144Hz)
    • 네트워크 기기의 주파수: 무선 라우터 등이 사용하는 주파수 대역 (예: 2.4GHz, 5GHz)
  • 일반적으로 더 높은 Hz 값은 더 빠른 처리 속도나 더 매끄러운 표시를 의미합니다.
문제 40

( )는 메인보드의 시스템 버스를 나타내는 단어다.

정답 FSB

📌 해설

FSB(Front Side Bus)는 CPU와 메모리 컨트롤러 허브(MCH) 또는 노스브리지(Northbridge)를 연결하는 시스템 버스입니다.

  • FSB는 전통적인 컴퓨터 아키텍처에서 사용되던 용어로, CPU와 메인 메모리 및 기타 주요 구성 요소 간의 통신을 처리하는 주요 데이터 경로였습니다.
  • FSB의 중요한 특성:
    • 클럭 속도: FSB의 동작 주파수 (예: 1066MHz)
    • 대역폭: 버스 폭(비트 수)과 클럭 속도의 곱으로 결정되는 데이터 전송 속도
    • 버스 폭: 한 번에 전송할 수 있는 데이터 비트 수 (예: 64비트)
  • 현대 컴퓨터 시스템에서는 FSB가 대부분 QPI(Quick Path Interconnect), DMI(Direct Media Interface), 또는 HyperTransport와 같은 더 고속의 포인트-투-포인트 연결 방식으로 대체되었습니다.
  • 새로운 아키텍처에서는 메모리 컨트롤러가 CPU 내부로 통합되어 메모리와의 통신에 별도의 메모리 버스를 사용합니다.
문제 41

CPU의 구성 요소는 산술논리 연산장치, ( ),( )다.

정답 레지스터, 제어장치

📌 해설

CPU(중앙처리장치)의 세 가지 주요 구성 요소는 산술논리 연산장치(ALU), 레지스터(Register), 제어장치(Control Unit)입니다.

  • 산술논리 연산장치(ALU, Arithmetic Logic Unit):
    • 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산 수행
    • AND, OR, NOT, XOR 등의 논리 연산 수행
    • 비교 연산과 데이터 이동 연산 처리
  • 레지스터(Register):
    • CPU 내부의 고속 임시 저장소
    • 현재 처리 중인 데이터, 명령어, 주소 등을 저장
    • 다양한 종류의 레지스터가 존재: PC(Program Counter), IR(Instruction Register), MAR, MBR, 범용 레지스터 등
  • 제어장치(Control Unit):
    • CPU의 모든 동작을 지휘하고 제어
    • 명령어를 해석하고 필요한 신호를 생성
    • 명령어 실행 사이클(인출-해석-실행-저장) 관리
    • 메모리와 I/O 장치 간의 데이터 이동 제어

이 세 가지 구성 요소가 함께 작동하여 CPU의 기본 기능인 명령어 실행과 데이터 처리를 수행합니다.

문제 42

( )는 CPU의 구성 요소 중 연산을 담당한다.

정답 ALU

📌 해설

ALU(Arithmetic Logic Unit, 산술논리 연산장치)는 CPU 내에서 모든 수학적, 논리적 연산을 담당하는 구성 요소입니다.

  • ALU의 주요 기능:
    • 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈 등의 수치 계산
    • 논리 연산: AND, OR, NOT, XOR 등의 논리 게이트 연산
    • 비교 연산: 두 값의 크기 비교 (등호, 부등호 관계)
    • 시프트 연산: 비트 단위의 이동 연산 (좌/우 시프트)
    • 회전 연산: 비트 단위의 순환 이동
  • ALU는 제어장치로부터 수행할 연산 종류와 피연산자를 전달받아 연산을 수행한 후, 그 결과를 레지스터에 저장합니다.
  • 연산 결과에 따라 상태 플래그(Zero, Carry, Overflow, Sign 등)를 설정하여 제어장치가 다음 동작을 결정하는 데 사용합니다.
  • 현대 CPU에서는 여러 개의 ALU를 포함하여 병렬 처리 능력을 향상시키기도 합니다.
문제 43

( )는 다음에 실행할 주소를 가진 레지스터다.

정답 PC

📌 해설

PC(Program Counter)는 다음에 실행할 명령어의 메모리 주소를 저장하는 CPU 내의 특수 레지스터입니다.

  • PC는 명령어 포인터(Instruction Pointer, IP)라고도 불립니다.
  • PC의 주요 기능:
    • CPU의 명령어 인출(fetch) 단계에서 다음에 가져올 명령어의 주소를 지정
    • 명령어가 실행된 후 자동으로 증가하여 다음 명령어를 가리킴
    • 분기 명령(branch)이나 점프 명령(jump) 실행 시 새로운 주소로 갱신됨
    • 프로그램의 순차적인 실행 흐름을 제어
  • 프로그램 실행 과정에서 PC의 역할:
    1. PC가 메모리의 특정 주소를 가리킴
    2. CPU는 해당 주소에서 명령어를 인출(fetch)
    3. 인출된 명령어는 명령어 레지스터(IR)에 저장됨
    4. PC는 다음 명령어의 주소로 자동 증가 (명령어 길이에 따라)
    5. 분기나 점프 명령이 실행되면 PC 값이 해당 목적지 주소로 변경됨
문제 44

( )는 현재 실행 중인 명령어를 저장한 레지스터다.

정답 IR

📌 해설

IR(Instruction Register)는 현재 실행 중인 명령어를 저장하는 CPU 내의 특수 레지스터입니다.

  • IR의 주요 기능:
    • 메모리에서 인출(fetch)된 명령어 코드를 저장
    • 제어장치가 해당 명령어를 해석(decode)하는 동안 명령어 유지
    • 명령어의 연산 코드(opcode)와 피연산자(operand) 정보 포함
  • 명령어 실행 사이클에서 IR의 역할:
    1. PC가 가리키는 메모리 주소에서 명령어를 인출
    2. 인출된 명령어를 IR에 저장
    3. 제어장치가 IR의 내용을 해석하여 수행할 작업 결정
    4. 명령어 실행에 필요한 제어 신호 생성
    5. 명령어 실행 완료 후 다음 명령어를 위해 과정 반복
  • IR은 명령어 실행 사이클의 인출(fetch) 단계와 해석(decode) 단계 사이의 중요한 연결 고리 역할을 합니다.
문제 45

( )는 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용하는 레지스터다.

정답 MAR

📌 해설

MAR(Memory Address Register)는 메모리 접근 시 사용할 주소를 저장하는 CPU 내의 특수 레지스터입니다.

  • MAR의 주요 기능:
    • CPU가 접근하려는 메모리 위치의 주소를 저장
    • 메모리 읽기/쓰기 연산 시 대상 주소 지정
    • 주소 버스와 직접 연결되어 메모리 시스템에 주소 정보 전달
  • 메모리 접근 과정에서 MAR의 역할:
    1. CPU는 접근하려는 메모리 주소를 MAR에 로드
    2. MAR의 주소가 주소 버스를 통해 메모리 시스템으로 전송
    3. 메모리 읽기 연산의 경우, 해당 주소의 데이터가 데이터 버스를 통해 MBR(Memory Buffer Register)로 전송
    4. 메모리 쓰기 연산의 경우, MBR의 데이터가 MAR이 지정한 주소에 저장
  • MAR의 크기(비트 수)는 CPU가 접근할 수 있는 메모리 공간의 크기를 결정합니다. 예를 들어, 32비트 MAR은 2^32(4GB)의 메모리 주소 공간에 접근할 수 있습니다.
문제 46

( )는 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장하는 레지스터다.

정답 MBR

📌 해설

MBR(Memory Buffer Register)는 메모리와 CPU 사이에서 데이터를 임시 저장하는 레지스터입니다.

  • MBR은 때로 MDR(Memory Data Register)이라고도 불립니다.
  • MBR의 주요 기능:
    • 메모리에서 읽어온 데이터를 CPU로 전달하기 전에 임시 저장
    • 메모리에 쓸 데이터를 임시 저장
    • 데이터 버스와 직접 연결되어 메모리 시스템과 데이터 교환
  • 메모리 접근 과정에서 MBR의 역할:
    1. 메모리 읽기(Memory Read) 연산:
      • MAR이 지정한 메모리 주소의 데이터가 데이터 버스를 통해 MBR로 전송
      • MBR에 저장된 데이터가 CPU의 다른 레지스터나 ALU로 전달
    2. 메모리 쓰기(Memory Write) 연산:
      • CPU가 메모리에 저장할 데이터를 MBR에 로드
      • MBR의 데이터가 데이터 버스를 통해 MAR이 지정한 메모리 주소로 전송
  • MBR의 크기(비트 수)는 일반적으로 CPU의 데이터 버스 폭과 일치하며, 한 번에 전송할 수 있는 데이터의 양을 결정합니다.
문제 47

시스템 버스(FSB)는 제어 버스, ( ), ( )로 구성된다.

정답 주소 버스, 데이터 버스

📌 해설

시스템 버스(FSB, Front Side Bus)는 제어 버스(Control Bus), 주소 버스(Address Bus), 데이터 버스(Data Bus)로 구성됩니다.

  • 제어 버스(Control Bus):
    • CPU가 다른 하드웨어 구성 요소에 제어 신호를 보내는 데 사용
    • 읽기/쓰기 신호, 인터럽트 신호, 클럭 신호 등 전송
    • 양방향으로 작동하며, CPU와 다른 장치 간의 통신을 조정
    • 예: 메모리 읽기/쓰기 신호, I/O 읽기/쓰기 신호, 인터럽트 요청, 승인 신호 등
  • 주소 버스(Address Bus):
    • CPU가 메모리나 I/O 장치의 특정 위치를 지정하는 데 사용
    • CPU에서 메모리나 I/O 장치로 단방향으로 작동
    • 버스 폭(비트 수)에 따라 접근 가능한 메모리 공간 결정 (예: 32비트 주소 버스 → 2^32 바이트 주소 지정 가능)
  • 데이터 버스(Data Bus):
    • CPU와 다른 하드웨어 구성 요소 간에 실제 데이터를 전송
    • 양방향으로 작동하여 데이터 읽기/쓰기 모두 지원
    • 버스 폭에 따라 한 번에 전송할 수 있는 데이터 비트 수 결정 (예: 64비트 데이터 버스 → 한 번에 64비트 데이터 전송 가능)
    • 대역폭(bandwidth)은 버스 폭과 클럭 속도에 비례

이 세 가지 버스 유형이 함께 작동하여 CPU와 다른 하드웨어 구성 요소 간의 모든 데이터 및 제어 정보 교환을 처리합니다.

문제 48

( )는 시스템 버스(FSB) 중 단방향 버스다.

정답 주소버스

📌 해설

주소 버스(Address Bus)는 시스템 버스 중 유일하게 단방향으로 작동하는 버스입니다.

  • 주소 버스의 단방향 특성:
    • CPU에서 메모리나 I/O 장치로만 데이터(주소 정보)가 전송됨
    • 항상 CPU가 주소를 지정하는 주체이기 때문에 단방향 통신만 필요
    • 이와 달리, 데이터 버스와 제어 버스는 양방향으로 작동
  • 주소 버스의 주요 기능:
    • CPU가 접근하고자 하는 메모리 위치나 I/O 장치의 주소 전달
    • MAR(Memory Address Register)의 내용이 주소 버스를 통해 전송됨
    • 메모리 읽기/쓰기 및 I/O 연산에서 모두 사용됨
  • 주소 버스의 폭(비트 수)이 시스템의 메모리 주소 지정 능력을 결정합니다:
    • 8비트 주소 버스: 최대 2^8(256) 바이트 주소 지정 가능
    • 16비트 주소 버스: 최대 2^16(64KB) 주소 지정 가능
    • 32비트 주소 버스: 최대 2^32(4GB) 주소 지정 가능
    • 64비트 주소 버스: 최대 2^64(16EB) 주소 지정 가능
문제 49

시스템 버스(FSB) 중 제어 버스는 CPU의 ( )와 연결된다.

정답 제어장치

📌 해설

시스템 버스(FSB) 중 제어 버스는 CPU의 제어장치(Control Unit)와 연결됩니다.

  • 제어장치는 CPU 내부에서 모든 동작을 지휘하고 제어하는 부분으로, 외부 장치와의 통신을 조정하기 위해 제어 버스를 통해 신호를 주고받습니다.
  • 제어 버스와 제어장치의 관계:
    • 제어장치는 명령어를 해석하고 그에 따른 제어 신호를 생성
    • 생성된 제어 신호는 제어 버스를 통해 메모리, I/O 장치 등에 전달
    • 외부 장치에서 발생한 인터럽트 요청 신호도 제어 버스를 통해 CPU의 제어장치로 전달됨
    • 제어장치는 이러한 신호를 처리하여 시스템의 모든 구성 요소 간의 조화로운 작동을 조정
  • 제어 버스를 통해 전송되는 주요 신호들:
    • 메모리 읽기/쓰기 신호(Memory Read/Write)
    • I/O 읽기/쓰기 신호(I/O Read/Write)
    • 인터럽트 요청과 응답(Interrupt Request/Acknowledge)
    • 버스 요청과 승인(Bus Request/Grant)
    • 클럭 신호(Clock Signal)
    • 리셋 신호(Reset Signal)
문제 50

시스템 버스(FSB) 중 주소 버스는 CPU의 ( )와 연결된다.

정답 MAR

📌 해설

시스템 버스(FSB) 중 주소 버스는 CPU의 MAR(Memory Address Register)과 연결됩니다.

  • MAR은 CPU가 접근하려는 메모리 위치의 주소를 저장하는 레지스터입니다.
  • 주소 버스와 MAR의 관계:
    • CPU가 메모리나 I/O 장치에 접근할 때 해당 주소를 MAR에 저장
    • MAR의 내용(주소 정보)이 주소 버스를 통해 메모리 시스템이나 I/O 장치로 전송
    • 이를 통해 CPU가 접근하려는 정확한 메모리 위치나 I/O 포트가 식별됨
  • 메모리 접근 과정에서 MAR과 주소 버스의 역할:
    1. CPU가 접근하려는 메모리 주소를 MAR에 로드
    2. MAR의 내용이 주소 버스를 통해 메모리 시스템으로 전송
    3. 메모리 시스템은 해당 주소를 디코딩하여 정확한 메모리 셀 또는 I/O 장치를 활성화
    4. 메모리 읽기 연산의 경우, 해당 주소의 데이터가 데이터 버스를 통해 MBR로 전송
    5. 메모리 쓰기 연산의 경우, MBR의 데이터가 해당 주소에 저장
문제 51

시스템 버스(FSB) 중 데이터 버스는 CPU의 ( )와 연결된다.

정답 MBR

📌 해설

시스템 버스(FSB) 중 데이터 버스는 CPU의 MBR(Memory Buffer Register)과 연결됩니다.

  • MBR은 메모리에서 읽어온 데이터나 메모리에 쓸 데이터를 임시로 저장하는 레지스터입니다.
  • 데이터 버스와 MBR의 관계:
    • MBR은 데이터 버스와 직접 연결되어 메모리 시스템이나 I/O 장치와 데이터를 교환
    • 메모리 읽기 연산 시, 메모리에서 읽은 데이터가 데이터 버스를 통해 MBR로 전송
    • 메모리 쓰기 연산 시, MBR에 저장된 데이터가 데이터 버스를 통해 메모리로 전송
  • 데이터 전송 과정에서 MBR과 데이터 버스의 역할:
    1. 메모리 읽기(Memory Read) 연산:
      • MAR이 지정한 주소의 데이터가 메모리에서 데이터 버스로 전송
      • 데이터 버스를 통해 전송된 데이터가 MBR에 저장
      • MBR에 저장된 데이터가 CPU의 내부 레지스터나 ALU로 전달
    2. 메모리 쓰기(Memory Write) 연산:
      • CPU가 메모리에 저장할 데이터를 MBR에 로드
      • MBR의 데이터가 데이터 버스를 통해 MAR이 지정한 메모리 주소로 전송
문제 52

( )은 부팅 과정에서 운영체제를 실행하기 위한 작은 코드다.

정답 bootstrap

📌 해설

부트스트랩(Bootstrap)은 컴퓨터 시스템이 시작될 때 운영체제를 로드하기 위한 초기화 과정과 그에 필요한 작은 코드를 의미합니다.

  • 부트스트랩 과정의 주요 단계:
    1. 전원 공급 및 하드웨어 초기화: 컴퓨터에 전원이 공급되면 CPU, 메모리 등 기본 하드웨어가 초기화됨
    2. POST(Power-On Self-Test): 하드웨어 구성 요소의 동작 상태를 검사
    3. 부트 코드 실행: BIOS/UEFI가 부팅 장치(하드 디스크, SSD 등)에서 부트 코드를 읽어옴
    4. 부트로더 로드: 부트 코드가 부트로더(예: GRUB, Windows Boot Manager)를 메모리에 로드
    5. 운영체제 커널 로드: 부트로더가 운영체제 커널을 메모리에 로드
    6. 커널 초기화: 커널이 시스템 초기화를 수행하고 운영체제의 나머지 부분을 로드
  • 부트스트랩 코드의 특징:
    • 매우 작은 크기의 코드로 시작하여 점차 더 큰 프로그램을 로드하는 과정
    • ROM이나 펌웨어에 저장되어 있으며, 전원이 켜질 때 자동으로 실행됨
    • 하드웨어를 초기화하고 기본적인 입출력 기능을 설정
    • '스스로 신발끈을 묶다'라는 의미의 관용구에서 유래된 이름으로, 적은 초기 자원으로 더 복잡한 시스템을 시작하는 과정을 의미
문제 53

( )는 두 장치 사이에서 속도의 차이를 완화하는 역할을 한다.

정답 버퍼

📌 해설

버퍼(Buffer)는 속도가 다른 두 장치 또는 프로세스 사이에서 데이터를 임시 저장하여 속도 차이를 완화하는 메모리 영역입니다.

  • 버퍼의 주요 기능:
    • 속도가 다른 두 장치 간의 데이터 전송 효율성 향상
    • 빠른 장치가 느린 장치를 기다려야 하는 시간 감소
    • 데이터 처리 과정에서 일시적인 부하 변동 흡수
    • 입출력 작업의 효율성 증가
  • 컴퓨터 시스템에서 버퍼의 예:
    • 키보드 버퍼: 사용자가 입력한 키 값을 임시 저장하여 프로그램이 처리할 수 있게 함
    • 프린터 버퍼: 인쇄할 데이터를 임시 저장하여 CPU가 다른 작업을 수행할 수 있게 함
    • 디스크 버퍼: 디스크와 메인 메모리 간의 데이터 전송 속도 차이를 완화
    • 네트워크 버퍼: 네트워크를 통해 수신한 데이터를 임시 저장하여 처리 속도 차이 조정
    • 비디오/오디오 버퍼: 미디어 스트리밍 시 데이터를 미리 저장하여 재생 끊김 방지
  • 버퍼링 기법:
    • 단일 버퍼링: 하나의 버퍼를 사용
    • 이중 버퍼링: 두 개의 버퍼를 번갈아 사용하여 효율성 향상
    • 순환 버퍼(원형 버퍼): 여러 개의 버퍼를 순환적으로 사용
문제 54

( )은 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼다.

정답 스풀

📌 해설

스풀(SPOOL, Simultaneous Peripheral Operation On-Line)은 입출력 장치와 CPU 간의 속도 차이를 보완하기 위한 소프트웨어적 버퍼링 기법입니다.

  • 스풀의 주요 기능:
    • CPU와 입출력 장치의 작업을 분리하여 시스템 효율성 향상
    • 느린 입출력 장치가 작업을 완료할 때까지 CPU가 기다릴 필요 없이 다음 작업 수행 가능
    • 여러 사용자나 프로그램의 입출력 요청을 관리하고 순차적으로 처리
  • 스풀링의 작동 원리:
    1. 입출력 요청이 발생하면 해당 데이터를 디스크의 스풀 영역(임시 저장소)에 저장
    2. CPU는 데이터를 스풀 영역에 저장한 후 즉시 다른 작업 수행
    3. 별도의 스풀링 프로그램이 백그라운드에서 스풀 영역의 데이터를 입출력 장치로 전송
    4. 입출력 작업이 완료되면 해당 작업이 스풀 영역에서 제거됨
  • 스풀링의 응용 예:
    • 프린트 스풀링: 가장 대표적인 예로, 인쇄 데이터를 디스크에 임시 저장한 후 프린터가 준비되면 인쇄
    • 디스크 스풀링: 메인 메모리와 디스크 간의 데이터 전송 관리
    • 이메일 큐: 발송할 이메일을 임시 저장하고 순차적으로 처리
문제 55

( )는 버퍼 중 앞으로 사용할 것을 미리 가져와 속도를 향상하는 장치다.

정답 캐시(cache)

📌 해설

캐시(Cache)는 자주 접근하거나 앞으로 사용할 가능성이 높은 데이터를 미리 가져와 빠르게 접근할 수 있는 고속 메모리입니다.

  • 캐시의 주요 특징:
    • 주 메모리보다 빠르지만 용량이 작은 고속 메모리
    • 데이터 지역성(Locality) 원리를 활용하여 성능 향상
    • CPU와 주 메모리 사이의 속도 차이를 완화
    • 자주 사용되는 데이터를 저장하여 접근 시간 단축
  • 데이터 지역성의 종류:
    • 시간적 지역성(Temporal Locality): 최근에 접근한 데이터는 곧 다시 접근할 가능성이 높음
    • 공간적 지역성(Spatial Locality): 접근한 데이터 주변의 데이터도 곧 접근할 가능성이 높음
  • 캐시의 종류:
    • CPU 캐시: L1, L2, L3 등 CPU 내부나 근처에 위치한 고속 메모리
    • 디스크 캐시: 디스크에서 자주 사용하는 데이터를 메인 메모리에 저장
    • 웹 캐시: 웹 페이지, 이미지 등을 로컬에 저장하여 빠른 접근 제공
    • DNS 캐시: 자주 접속하는 웹사이트의 IP 주소를 저장
  • 캐시 동작 방식:
    1. CPU가 데이터 요청
    2. 캐시 확인(캐시 히트 또는 캐시 미스 발생)
    3. 캐시 히트 시 캐시에서 데이터 제공, 미스 시 주 메모리에서 데이터 로드
    4. 주 메모리에서 가져온 데이터는 캐시에 저장(캐시 라인 업데이트)
문제 56

( )는 저렴한 가격으로는 속도를 레지스터처럼, 용량은 하드디스크처럼 시스템을 구성해준다.

정답 저장장치 계층 구조

📌 해설

저장장치 계층 구조(Memory Hierarchy)는 다양한 속도와 용량의 저장장치를 계층적으로 구성하여 비용 효율적으로 성능을 최적화하는 구조입니다.

  • 저장장치 계층 구조의 특징:
    • 상위 계층일수록 속도가 빠르지만 용량이 작고 비용이 높음
    • 하위 계층일수록 속도가 느리지만 용량이 크고 비용이 낮음
    • 데이터 지역성 원리를 활용하여 자주 사용되는 데이터는 상위 계층에 유지
    • 경제적인 비용으로 높은 성능과 대용량 저장 공간을 모두 제공
  • 일반적인 저장장치 계층 구조(상위에서 하위 순):
    1. 레지스터(Register): CPU 내부의 초고속 저장소, 가장 빠르지만 매우 적은 용량
    2. 캐시 메모리(Cache): L1, L2, L3 등 여러 수준의 고속 버퍼 메모리
    3. 메인 메모리(Main Memory, RAM): 프로그램과 데이터의 주 저장소
    4. 보조 저장장치(Secondary Storage): SSD, HDD 등 비휘발성 저장 장치
    5. 아카이브 저장소(Archive Storage): 테이프, 광학 미디어 등 대용량 백업용 저장 장치
  • 저장장치 계층 구조의 작동 원리:
    • CPU는 먼저 가장 빠른 상위 계층(레지스터, 캐시)에서 데이터를 찾음
    • 상위 계층에서 찾지 못할 경우 다음 하위 계층으로 검색을 확장
    • 하위 계층에서 데이터를 찾으면 해당 데이터와 주변 데이터를 상위 계층으로 복사(캐싱)
    • 이후 동일한 데이터에 접근할 때 상위 계층에서 빠르게 찾을 수 있음
문제 57

저장장치의 계층 구조는 저장장치 사이에서 데이터의 ( )가 문제다.

정답 일관성 유지

📌 해설

저장장치 계층 구조에서 가장 중요한 문제 중 하나는 여러 계층에 걸쳐 있는 데이터의 일관성 유지(Consistency)입니다.

  • 데이터 일관성 문제의 발생 원인:
    • 동일한 데이터가 여러 계층(캐시, 메인 메모리, 디스크 등)에 동시에 존재할 수 있음
    • 한 계층에서 데이터가 변경되었을 때 다른 계층의 복사본도 업데이트되어야 함
    • 다중 프로세서 환경에서는 여러 CPU 캐시에 같은 데이터의 복사본이 존재할 수 있음
  • 일관성 유지를 위한 기법:
    • 쓰기 정책(Write Policy):
      • 쓰기 전파(Write Through): 캐시의 데이터가 변경될 때 즉시 하위 계층(메인 메모리)도 업데이트
      • 쓰기 후 기록(Write Back): 캐시의 데이터만 변경하고, 나중에 필요할 때 하위 계층에 업데이트
    • 캐시 일관성 프로토콜(Cache Coherence Protocol):
      • MESI, MOESI 등의 프로토콜을 사용하여 다중 캐시 환경에서 일관성 유지
      • 스누핑(Snooping), 디렉토리 기반(Directory-based) 방식 등 구현
    • 트랜잭션(Transaction): 데이터베이스 등에서 일관성 있는 상태 전환을 보장하는 작업 단위
  • 일관성 유지의 중요성:
    • 데이터 손실이나 손상 방지
    • 잘못된 데이터로 인한 연산 오류 방지
    • 다중 프로세서 또는 다중 코어 환경에서의 정확한 동작 보장
    • 시스템 안정성과 신뢰성 유지
문제 58

( )는 CPU와 작업과 입출력 작업을 분리하여 효율을 높이는 방식이다.

정답 인터럽트

📌 해설

인터럽트(Interrupt)는 CPU가 프로그램을 실행하는 도중에 예외 상황이나 입출력 작업 완료와 같은 외부 이벤트가 발생했을 때, 현재 실행 중인 작업을 일시 중단하고 해당 이벤트를 처리하는 메커니즘입니다.

  • 인터럽트의 주요 목적과 장점:
    • CPU와 입출력 작업을 분리하여 CPU 효율성 향상
    • 느린 입출력 장치가 작업을 수행하는 동안 CPU가 다른 작업 수행 가능
    • 실시간 이벤트에 빠르게 대응 가능
    • 하드웨어 자원의 효율적인 사용
  • 인터럽트 처리 과정:
    1. 인터럽트 신호 발생(하드웨어 장치 또는 소프트웨어에서)
    2. 현재 실행 중인 명령어 완료
    3. 현재 프로그램의 상태(PC, 레지스터 등) 저장
    4. 인터럽트 벡터 테이블을 참조하여 적절한 인터럽트 처리 루틴(ISR) 위치 확인
    5. 인터럽트 서비스 루틴(ISR) 실행
    6. 인터럽트 처리 완료 후 저장된 상태 복원
    7. 중단된 프로그램 계속 실행
  • 인터럽트의 종류:
    • 하드웨어 인터럽트: 외부 장치(키보드, 마우스, 타이머, 디스크 등)에 의해 발생
    • 소프트웨어 인터럽트(트랩): 프로그램에 의해 의도적으로 발생(시스템 호출 등)
    • 예외(Exception): 프로그램 실행 중 오류 상황(0으로 나누기, 페이지 폴트 등)으로 인해 발생
문제 59

( )은 메모리의 일정 공간을 입출력에 할당하는 기법이다.

정답 MMIO

📌 해설

MMIO(Memory-Mapped I/O, 메모리 맵 입출력)은 입출력 장치의 레지스터를 메모리 주소 공간의 일부로 할당하여 접근하는 기법입니다.

  • MMIO의 기본 원리:
    • 입출력 장치의 레지스터와 데이터 포트에 메모리 주소를 할당
    • CPU가 입출력 장치에 접근할 때 일반 메모리 접근 명령어(load/store)를 사용
    • 특정 메모리 주소 범위를 입출력 장치에 매핑하여 해당 주소로의 접근이 실제로 입출력 장치로 연결
  • MMIO의 장점:
    • 특별한 입출력 명령어가 필요 없어 CPU 설계가 단순해짐
    • 메모리 관련 모든 주소 지정 모드를 입출력에도 사용 가능
    • 캐시와 같은 메모리 관리 메커니즘을 입출력에도 적용 가능
    • 메모리와 입출력을 위한 단일 주소 공간 사용으로 프로그래밍 모델 단순화
  • MMIO의 단점:
    • 입출력 장치가 메모리 주소 공간의 일부를 차지하여 사용 가능한 메모리 공간 감소
    • 캐싱으로 인한 문제가 발생할 수 있어 특정 영역은 비캐시(non-cacheable)로 설정 필요
    • 일부 입출력 장치는 특수한 타이밍 요구사항이 있어 메모리 접근 방식과 맞지 않을 수 있음
  • 대안적 방식으로 포트 맵 입출력(Port-Mapped I/O, PMIO)이 있으며, 이는 별도의 입출력 주소 공간과 전용 입출력 명령어를 사용합니다.
문제 60

( )은 입출력 관리자가 CPU 허락 없이 메모리에 접근할 수 있는 권한이다.

정답 직접 메모리 접근(DMA)

📌 해설

직접 메모리 접근(DMA, Direct Memory Access)은 CPU의 개입 없이 입출력 장치와 메모리 간의 데이터 전송을 가능하게 하는 기술입니다.

  • DMA의 주요 목적:
    • 대용량 데이터 전송 시 CPU 부담 감소
    • 데이터 전송 작업을 전문화된 하드웨어(DMA 컨트롤러)에 위임
    • 시스템 전체의 성능 향상
  • DMA 작동 과정:
    1. CPU가 DMA 컨트롤러에 전송 작업 설정(소스 주소, 목적지 주소, 전송 크기 등)
    2. CPU는 DMA 컨트롤러에 전송 시작 신호를 보내고 다른 작업 수행
    3. DMA 컨트롤러가 메모리 버스 제어권을 획득(사이클 훔치기)
    4. DMA 컨트롤러가 데이터 전송 수행(메모리와 I/O 장치 간)
    5. 전송 완료 후 DMA 컨트롤러가 CPU에 인터럽트 신호를 보내 작업 완료 알림
  • DMA 전송 모드:
    • 단일 전송 모드: 한 번에 하나의 데이터 워드 전송
    • 블록 전송 모드: 버스를 획득한 후 데이터 블록 전체 전송
    • 요구 모드: 장치가 준비될 때마다 데이터 전송
    • 투명 모드: CPU가 메모리를 사용하지 않을 때만 DMA 전송 수행
  • DMA의 응용 분야:
    • 대용량 저장 장치(하드 디스크, SSD 등) 데이터 전송
    • 네트워크 인터페이스 카드의 패킷 송수신
    • 그래픽 카드의 프레임 버퍼 업데이트
    • 멀티미디어 스트리밍 데이터 처리
문제 61

( )는 CPU가 메모리 사용 권한을 장치 관리자에게 양보하는 것을 말한다.

정답 사이클 훔치기

📌 해설

사이클 훔치기(Cycle Stealing)는 DMA 작동 중에 CPU와 DMA 컨트롤러가 메모리 버스 사용 권한을 번갈아 가며 사용하는 기법입니다.

  • 사이클 훔치기의 기본 개념:
    • DMA 컨트롤러가 CPU의 메모리 사이클 중 일부를 '훔쳐서' 사용
    • CPU가 메모리에 접근하지 않는 사이클 동안 DMA 컨트롤러가 메모리 접근 수행
    • CPU와 DMA 컨트롤러가 메모리 버스를 시분할하여 사용
  • 사이클 훔치기의 장점:
    • CPU와 DMA의 병렬 작업 가능
    • CPU의 성능 저하 최소화
    • 메모리 버스 사용률 향상
    • 효율적인 시스템 자원 활용
  • 사이클 훔치기의 구현 방식:
    • CPU 유휴 사이클 활용: CPU가 내부 연산을 수행하거나 캐시에서 데이터를 처리할 때 메모리 버스 사용
    • 메모리 인터리빙: 여러 메모리 뱅크를 번갈아 접근하여 충돌 최소화
    • 우선순위 중재: 메모리 버스 접근 요청 충돌 시 우선순위에 따라 결정
  • 사이클 훔치기와 관련된 고려사항:
    • 많은 DMA 장치가 동시에 작동할 경우 CPU 성능 저하 가능성
    • 실시간 시스템에서는 최악의 경우 CPU 지연 시간 예측 필요
    • CPU와 DMA 컨트롤러 간의 효율적인 메모리 버스 중재 메커니즘 필요

📚 서술형 문제

문제 62

CPU의 기본 구성 요소를 설명하시오.

📌 해설

CPU(중앙처리장치)는 컴퓨터 시스템의 두뇌 역할을 하는 핵심 구성 요소로, 크게 세 가지 주요 부분으로 구성됩니다.

1. 산술논리 연산장치(ALU, Arithmetic Logic Unit)

  • 모든 수학적, 논리적 연산을 수행하는 CPU의 핵심 구성 요소입니다.
  • 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈 등의 수치 계산을 담당합니다.
  • 논리 연산: AND, OR, NOT, XOR 등의 논리 게이트 연산을 수행합니다.
  • 비교 연산: 두 값의 크기 비교(등호, 부등호 관계) 연산을 처리합니다.
  • 시프트/회전 연산: 비트 단위의 이동 및 순환 연산을 수행합니다.
  • 연산 결과에 따라 상태 플래그(캐리, 제로, 오버플로우, 부호 등)를 설정합니다.

2. 제어장치(Control Unit)

  • CPU의 모든 동작을 지휘하고 제어하는 부분입니다.
  • 명령어 인출(Fetch): 메모리에서 다음 실행할 명령어를 가져옵니다.
  • 명령어 해석(Decode): 인출된 명령어의 의미를 해석합니다.
  • 명령어 실행(Execute): 해석된 명령어에 따라 필요한 동작을 수행하기 위한 제어 신호를 생성합니다.
  • 메모리 접근(Memory Access): 필요시 메모리에서 데이터를 읽거나 쓰는 작업을 제어합니다.
  • 결과 저장(Write Back): 연산 결과를 적절한 위치에 저장하는 과정을 제어합니다.
  • 인터럽트 신호를 처리하고 적절한 서비스 루틴으로 제어를 이동시킵니다.

3. 레지스터(Register)

  • CPU 내부에 위치한 고속의 소용량 임시 저장소입니다.
  • 범용 레지스터: 데이터와 주소를 임시 저장하는 다목적 레지스터입니다.
  • 특수 목적 레지스터: 특정 기능을 위해 사용되는 레지스터입니다.
    • PC(Program Counter): 다음에 실행할 명령어의 주소를 저장합니다.
    • IR(Instruction Register): 현재 실행 중인 명령어를 저장합니다.
    • PSR(Program Status Register): 프로그램 상태 정보와 플래그를 저장합니다.
    • MAR(Memory Address Register): 메모리 접근 시 사용할 주소를 저장합니다.
    • MBR(Memory Buffer Register): 메모리와 CPU 간 데이터 교환을 위한 버퍼 역할을 합니다.
  • 레지스터는 CPU의 데이터 처리 속도를 높이는 데 중요한 역할을 합니다.

이 세 가지 구성 요소가 유기적으로 상호작용하며 CPU의 명령어 실행 사이클(인출-해석-실행-저장)을 수행합니다. 현대의 CPU는 이러한 기본 구성에 캐시, 파이프라인, 분기 예측기 등 다양한 성능 향상 요소가 추가되어 있지만, 기본적인 동작 원리는 이 세 가지 구성 요소의 기능에 기반합니다.

문제 63

사용자 불가시 레지스터들을 간단히 설명하시오.

📌 해설

사용자 불가시 레지스터(User-Invisible Registers)는 일반 프로그래머가 직접 접근할 수 없고, 주로 CPU의 내부 작동과 시스템 제어를 위해 사용되는 특수 목적 레지스터입니다. 이들은 CPU 내부 동작과 시스템의 효율적인 운영을 위해 필수적인 역할을 합니다.

1. PC(Program Counter) / 명령어 포인터(Instruction Pointer)

  • 다음에 실행할 명령어의 메모리 주소를 저장합니다.
  • CPU가 명령어를 순차적으로 실행할 수 있도록 프로그램의 실행 흐름을 추적합니다.
  • 명령어 실행 후 자동으로 증가하여 다음 명령어를 가리키며, 분기나 점프 명령어 실행 시 새로운 주소로 갱신됩니다.

2. IR(Instruction Register)

  • 현재 실행 중인 명령어 코드를 저장합니다.
  • 메모리에서 인출된 명령어가 이 레지스터에 저장되고, 제어장치가 이를 해석하여 필요한 연산을 수행합니다.
  • 명령어의 연산 코드(opcode)와 피연산자(operand) 정보를 포함합니다.

3. MAR(Memory Address Register)

  • 메모리 접근 시 사용할 주소를 저장합니다.
  • CPU가 메모리를 읽거나 쓸 때, 접근하려는 메모리 위치의 주소를 이 레지스터에 저장합니다.
  • 주소 버스와 직접 연결되어 있어, MAR의 내용이 주소 버스를 통해 메모리 시스템으로 전송됩니다.

4. MBR(Memory Buffer Register) / MDR(Memory Data Register)

  • 메모리와 CPU 사이에서 데이터를 임시 저장하는 레지스터입니다.
  • 메모리 읽기 연산에서 메모리로부터 읽어온 데이터가 이 레지스터에 저장됩니다.
  • 메모리 쓰기 연산에서는 CPU가 메모리에 저장하려는 데이터를 이 레지스터에 저장한 후 메모리로 전송합니다.
  • 데이터 버스와 직접 연결되어 메모리 시스템과 데이터를 교환합니다.

5. PSR(Program Status Register) / 플래그 레지스터(Flag Register)

  • CPU의 현재 상태와 연산 결과의 상태 정보를 저장하는 레지스터입니다.
  • 주요 상태 플래그:
    • Zero(Z) 플래그: 연산 결과가az 0인 경우 설정
    • Sign(S) 플래그: 연산 결과가 음수인 경우 설정
    • Carry(C) 플래그: 산술 연산에서 자리 올림이 발생한 경우 설정
    • Overflow(V) 플래그: 산술 연산 결과가 표현 가능한 범위를 초과한 경우 설정
    • Interrupt(I) 플래그: 인터럽트 허용/금지 상태를 나타냄
  • 조건부 분기 명령어의 조건 평가에 활용됩니다.

6. 기타 시스템 레지스터

  • 스택 포인터(Stack Pointer): 스택의 최상단 주소를 가리키는 레지스터로, 함수 호출과 반환 시 중요한 역할을 합니다.
  • 베이스 레지스터(Base Register): 메모리 접근 시 기준 주소를 저장하여 상대 주소 지정에 사용됩니다.
  • 인덱스 레지스터(Index Register): 배열이나 테이블 등의 요소에 접근할 때 오프셋 값을 저장합니다.
  • 세그먼트 레지스터(Segment Register): 세그먼트 주소 지정 방식에서 세그먼트의 시작 주소를 저장합니다.

이러한 사용자 불가시 레지스터들은 일반 프로그래머가 직접 조작할 수 없지만, 시스템 프로그래밍이나 운영체제 개발 시에는 특수한 명령어나 권한을 통해 간접적으로 접근하거나 제어할 수 있는 경우도 있습니다. 이들 레지스터는 CPU의 효율적인 작동과 메모리 관리, 프로그램 실행 흐름 제어 등에 필수적인 역할을 합니다.

문제 64

시스템 버스를 구성하는 세 가지 버스의 특징을 간단히 설명하시오.

📌 해설

시스템 버스(System Bus)는 CPU, 메모리, 입출력 장치 등 컴퓨터 내부의 주요 구성 요소 간에 데이터를 전송하는 통로로, 세 가지 주요 버스로 구성됩니다.

1. 주소 버스(Address Bus)

  • 기능: CPU가 메모리나 입출력 장치의 특정 위치를 지정하기 위해 사용합니다.
  • 방향성: 단방향(Unidirectional) 버스로, CPU에서 메모리/IO 장치로만 신호가 전송됩니다.
  • 특징:
    • 버스의 폭(width)이 CPU가 접근할 수 있는 메모리 공간의 크기를 결정합니다.
    • 예: 32비트 주소 버스는 2^32(4GB)의 메모리 주소 공간을 지정할 수 있습니다.
    • CPU의 MAR(Memory Address Register)과 직접 연결되어 있습니다.
    • 메모리나 입출력 장치는 주소 버스를 통해 전송된 주소를 디코딩하여 접근할 특정 위치를 결정합니다.

2. 데이터 버스(Data Bus)

  • 기능: CPU, 메모리, 입출력 장치 간에 실제 데이터를 전송하는 통로입니다.
  • 방향성: 양방향(Bidirectional) 버스로, 데이터가 양쪽 방향으로 이동할 수 있습니다.
  • 특징:
    • 버스의 폭이 한 번에 전송할 수 있는 데이터의 양(비트 수)을 결정합니다.
    • 예: 64비트 데이터 버스는 한 번에 64비트(8바이트)의 데이터를 전송할 수 있습니다.
    • CPU의 MBR(Memory Buffer Register)과 직접 연결되어 있습니다.
    • 데이터 버스의 폭은 CPU의 워드 크기와 관련이 있으며, 시스템의 데이터 처리 능력에 직접적인 영향을 미칩니다.

3. 제어 버스(Control Bus)

  • 기능: CPU가 메모리와 입출력 장치의 동작을 제어하고 조정하는 신호를 전송합니다.
  • 방향성: 양방향 또는 혼합 방향 버스로, 제어 신호의 종류에 따라 방향이 다를 수 있습니다.
  • 특징:
    • CPU의 제어장치(Control Unit)와 연결되어 있습니다.
    • 주요 제어 신호에는 다음이 포함됩니다:
      • 메모리 읽기/쓰기 신호(Memory Read/Write)
      • 입출력 장치 읽기/쓰기 신호(I/O Read/Write)
      • 인터럽트 요청 및 응답 신호(Interrupt Request/Acknowledge)
      • 버스 요청 및 허가 신호(Bus Request/Grant)
      • 클럭 신호(Clock Signal)
      • 리셋 신호(Reset Signal)
    • 각 신호선은 특정 제어 기능을 수행하며, 이들의 조합으로 복잡한 시스템 동작이 조정됩니다.