본문 바로가기

study/Operating System

[운영체제] 운영체제 수업 인트로 정리: 컴퓨터 구조와 OS의 만남

이번 포스팅부터는 본격적으로 운영체제 수업 내용을 정리해보려 합니다.
사실 교수님께서 오늘까지 수업한 내용은 모두 인트로라고 하셨지만, 그 안에 꼭 알아야 할 기본 개념들이 꽤 많았습니다.

운영체제뿐 아니라 컴퓨터 구조도 함께 언급되며, 앞으로의 본격적인 학습을 위한 기반이 되는 내용들이라 기억에 남기고 싶어 포스팅합니다.


폰 노이만 구조 다시 상기하기

폰 노이만 구조는 컴퓨터 구조나 마이크로프로세서 과목에서 꼭 한 번쯤 들어봤을 이름일 겁니다. 이 구조에서는 오직 프로세싱 유닛만이 메인 메모리에 접근할 수 있습니다.

구성 요소는 다음과 같습니다.

  • processing unit: 산술/논리 연산 장치(ALU), 프로세서 레지스터 포함
  • control unit: 명령어 레지스터(IR), 프로그램 카운터(PC) 포함
  • memory: 데이터와 명령어 모두 저장
  • I/O 장치
  • 외부 저장장치
  • 버스

이 구조에서 발생하는 병목 현상이 바로 Von Neumann Bottleneck입니다.
CPU는 빨라지는데 메모리 속도가 느려 전체 성능이 저하되는 문제가 발생합니다.

이를 해결하기 위한 기술로는 다음과 같은 것들이 있습니다.

  • 캐시 메모리
  • Modified Harvard Architecture
  • 온칩 스크래치패드 메모리
  • 메모리 계층 구조
  • DMA (Direct Memory Access)

word 크기에 대한 이해

word 크기는 시스템마다 다르며, 레지스터 크기와 항상 같지는 않습니다.

예시:

  • ARM 아키텍처: word 크기 4바이트, 레지스터 크기 4바이트
  • 인텔 64비트 아키텍처: word 크기 2바이트, 레지스터 크기 8바이트

word는 한 번에 처리할 수 있는 데이터의 크기를 나타내지만, 하드웨어 구조에 따라 반드시 레지스터와 일치하지는 않습니다.


Computer System 구성 요소

1. Mode Bit

운영체제는 두 가지 모드로 동작합니다.

  • Kernel Mode: OS의 코드와 데이터를 실행 중인 상태. CPU의 제어권이 운영체제에 있음.
  • User Mode: 사용자 프로그램이 실행되는 상태. CPU 제어권은 사용자에게 있지만, 제한된 영역만 접근 가능.

구분 기준은 프로그램 카운터(PC)가 가리키는 메모리 주소에 따라 결정됩니다.
OS 영역이면 커널 모드, 일반 메모리 영역이면 유저 모드입니다.


2. Timer

타임 쉐어링 시스템에서는 시간을 쪼개 사용자에게 배분하기 때문에, 하드웨어적으로 시간을 측정하는 장치가 필요합니다.
타이머 인터럽트는 현재 실행 중인 프로그램을 멈추고 컨텍스트 스위칭을 유도합니다.


3. I/O Device

입출력 장치는 I/O 컨트롤러를 통해 연결됩니다.

  • I/O 컨트롤러는 제어 레지스터, 상태 레지스터 등을 포함한 작은 CPU와 유사한 구조
  • 로컬 버퍼와 함께 작동
  • 장치 동작 완료 시 인터럽트를 발생시켜 CPU에게 알림
  • 디바이스 드라이버는 I/O 장치를 위한 운영체제 역할을 수행

4. Exception (Interrupt)

예외는 크게 두 가지로 나뉩니다.

비동기적 예외 (Asynchronous)

  • 외부 장치에 의해 발생
  • 예측 불가능한 타이밍
  • 예시: 타이머 인터럽트, I/O 인터럽트

처리 순서:

  1. 사용자 모드에서 이벤트 발생
  2. 인터럽트 발생
  3. OS가 커널 모드에서 처리
  4. 처리 후 다시 사용자 모드로 복귀

동기적 예외 (Synchronous)

CPU 내부에서 발생하며 종류에 따라 다음과 같이 구분됩니다.

  • Trap: 의도적으로 발생 (시스템 콜, printf 등)
  • Fault: 의도치 않게 발생했지만 회복 가능 (page fault 등)
  • Abort: 회복 불가능한 심각한 오류 (illegal instruction, parity error 등)

5. DMA (Direct Memory Access)

DMA는 I/O 장치가 CPU를 거치지 않고 메모리와 직접 데이터를 주고받을 수 있도록 하는 장치입니다.

기존에는 I/O 동작마다 인터럽트가 발생했지만, DMA가 있으면 CPU가 간섭하지 않아도 됩니다.
이는 인터럽트 과다 발생으로 인한 성능 저하를 줄여주며, 특히 타임 슬라이싱 환경에서 효율적입니다.

단점

  • 하드웨어 추가 비용 발생
  • 캐시 일관성(Coherence) 문제 발생 가능

DMA 동작 방식

  1. DMA가 CPU에 요청(HLQ) 전송
  2. CPU가 버스 양도(HLDA) 응답
  3. DMA가 I/O 장치에 메모리 주소와 데이터 크기 전달
  4. 데이터 전송 진행

DMA 모드 종류

모드 설명
Burst DMA가 버스를 독점하며 대용량 데이터를 한 번에 전송
Cycle Steal CPU와 DMA가 클럭을 나눠 버스를 교대로 사용
Transparent CPU가 버스를 사용하지 않을 때만 DMA가 사용
 

다음 포스팅 예고

다음부터는 운영체제의 본격적인 내부 구조와 CPU 스케줄링, 프로세스 관리 등으로 넘어갈 예정입니다.
앞으로도 수업 내용을 바탕으로 핵심만 정리해서 포스팅해보겠습니다.