운영체제 따라잡기

운영체제의 개념과 구조

meellon 2026. 6. 19. 05:00

학습 목표

전통적인 컴퓨터 시스템 구조(CPU, 메모리, 버스, 장치)를 설명할 수 있다.

부팅 과정과 인터럽트가 OS에 왜 필요한지 설명할 수 있다.

저장 장치 계층DMA의 역할을 설명할 수 있다.

SMP, 멀티태스킹, 유저 모드·커널 모드를 설명할 수 있다.

문제 상황

  • 서버를 재부팅하면 30초 뒤 SSH가 열린다
    • 그 사이 무엇이 실행되는지 모른다
  • 디스크 I/O 중에도 다른 요청을 처리한다
    • CPU가 디스크 끝날 때까지 멈춰 있지 않은 이유는?
  • M1 맥은 8코어, htop에는 CPU 0~7
    • 코어·프로세서·SMP가 어떻게 연결되는지 헷갈린다
  • 앱 버그가 커널을 죽이면 전체가 다운된다
    • 유저 모드와 커널 모드 구분이 왜 있는지 실감한다

오리엔테이션에서 OS의 역할을 봤다. 이번 편은 OS가 올라가기 전·위의 하드웨어 구조와 OS가 맡는 기본 작업을 정리한다.

1. 컴퓨터 시스템 구조

현대 PC·서버는 대략 이렇게 구성된다.

  • CPU — 명령 fetch·실행, 연산
  • 메모리(RAM) — 실행 중인 프로그램·데이터
  • 장치 컨트롤러 — 디스크, USB, NIC, GPU 등을 CPU·메모리와 연결
  • 시스템 버스 — 주소·데이터·제어 신호 전달
용어 의미
CPU 명령을 실행하는 연산 장치
Core CPU 안의 독립 실행 단위
Processor 코어 하나 이상을 담은 물리 칩
Multicore 한 칩에 코어 여러 개 (듀얼·쿼드코어)
Multiprocessor 프로세서(칩)가 여러 개
  • OS는 이 하드웨어 위에서 모든 장치를 통합 관리한다
  • 응용은 디스크 컨트롤러 레지스터를 직접 건드리지 않고 OS API만 쓴다

2. 부팅(Booting)

전원을 켜면 OS가 바로 실행되지 않는다.

전원 ON → 펌웨어(UEFI/BIOS) → 부트로더 → 커널 로드 → init/systemd → 서비스·셸
  • 부트스트랩(Bootstrap)
    • ROM/펌웨어에 있는 첫 프로그램
    • 하드웨어 점검, 부트로더 위치 탐색, 커널을 메모리에 적재
  • 부트로더 (GRUB 등)
    • 커널 이미지·initramfs 로드, 커널에 제어권 넘김
  • 커널
    • 장치 드라이버 초기화, 스케줄러·메모리 관리자 기동
    • 유저 프로세스(보통 init/systemd) 생성
  • 클라우드 VM도 동일한 흐름
    • 하이퍼바이저가 가상 하드웨어에 커널을 넘겨줄 뿐, 게스트 안에서는 같은 부팅 모델

3. 인터럽트(Interrupt)

CPU는 명령을 순차 실행하지만, 외부 이벤트에 반응해야 한다.

  • 인터럽트: 하드웨어·소프트웨어가 CPU에 보내는 비동기 신호
    • 디스크 전송 완료, 네트워크 패킷 도착, 타이머 만료, 키보드 입력
  • CPU는 현재 작업을 잠시 멈추고 인터럽트 벡터에 등록된 핸들러 실행
    • 대부분 커널 코드 — OS가 장치 상태를 갱신하거나 대기 중인 프로세스를 깨움
종류 발생 주체
하드웨어 인터럽트 장치 디스크 I/O 완료
타이머 인터럽트 OS/하드웨어 스케줄링 tick
소프트웨어 인터럽트 명령어 시스템 콜, 예외
  • 인터럽트 없으면 OS는 디스크를 폴링(polling) 해야 한다
    • CPU 낭비 — I/O 대기 동안 다른 프로세스를 돌릴 수 없음
  • 인터럽트 + 멀티태스킹이 맞물려 CPU 활용률이 올라간다

4. Fetch-Execute와 OS

CPU의 기본 사이클은 오리엔테이션과 같다. 여기서는 레지스터 관점만 보강한다.

  • PC(Program Counter) — 다음 명령 주소
  • IR(Instruction Register) — 가져온 명령
  • 범용 레지스터 — 연산 피연산자
  • 인터럽트 발생 시
    • PC·레지스터 등 컨텍스트 저장 → 핸들러 실행 → 복귀
    • 프로세스 전환 시에도 같은 컨텍스트 스위칭 개념 (이후 프로세스 편)

5. 저장 장치 계층

속도·용량·비용 트레이드오프. OS는 계층 전체를 관리한다.

계층 특징
레지스터 CPU 내부 가장 빠름, 바이트 단위
캐시 L1/L2/L3 CPU와 메모리 사이
메인 메모리 DRAM 실행 이미지·힙·스택
SSD/HDD 디스크 영속, 느림
원격 저장 NAS, S3 네트워크 지연
  • OS 메모리 관리자 — RAM 할당, 스왑, 페이지 캐시
  • OS 파일 시스템 — 디스크 블록을 파일·디렉터리로 추상화
  • "메모리는 빠르고 작다, 디스크는 크고 느리다" — 캐시·버퍼 설계의 출발점

6. I/O 구조와 DMA

디스크·NIC처럼 느린 장치와의 데이터 이동.

  • 프로그램드 I/O: CPU가 레지스터로 장치에 바이트 단위 전송 — 단순하지만 CPU 점유
  • DMA(Direct Memory Access)
    • DMA 컨트롤러가 메모리 ↔ 장치 전송을 CPU 없이 수행
    • 완료 시 인터럽트로 CPU에 알림
  • OS 장치 드라이버
    • 장치별 명령·버퍼·인터럽트 처리
    • 응용에게는 read()/write() 같은 균일한 인터페이스

7. SMP와 멀티코어

요즘 서버·노트북은 대칭 다중 처리(SMP) 가 기본이다.

  • SMP(Symmetric Multiprocessing)
    • 모든 CPU(코어)가 동일한 메모리·장치에 접근
    • 어느 코어든 커널·유저 작업 실행 가능
  • 멀티코어
    • 한 프로세서 칩 안에 코어 여러 개 — 캐시 공유(L3)로 통신 비용 절감
  • OS 역할
    • CPU 스케줄링 — 준비된 프로세스를 어느 코어에 올릴지
    • 동기화 — 여러 코어가 같은 데이터를 동시에 수정하지 않게 (락, 캐시 일관성)
구성 특징
단일 코어 스케줄링만으로 멀티태스킹
멀티코어 SMP 진짜 병렬 실행 + 스케줄링
NUMA 코어마다 로컬 메모리 — 원격 접근 느림 (확장 주제)

8. OS의 핵심 작업

하드웨어 위에서 OS가 매일 하는 일의 뼈대.

멀티프로그래밍(Multiprogramming)

  • 메모리에 여러 프로그램을 동시에 올려 둠
  • 한 프로세스가 I/O 대기면 CPU가 다른 프로세스 실행
  • CPU 사용률 ↑

멀티태스킹(Multitasking)

  • 멀티프로그래밍 + 빠른 전환
  • 타이머 인터럽트로 시간 할당량(time slice)마다 프로세스 교체
  • 사용자 입장에선 동시 실행처럼 보임 (concurrency)

CPU 스케줄링

  • 실행 준비(ready) 프로세스가 여러 개일 때 다음 실행 대상 선택
  • 알고리즘: FCFS, SJF, Round Robin, 우선순위 등 — 전용 편에서 상세

이중 모드(Dual Mode)

 

  유저 모드 커널 모드
권한 제한 — 자기 프로세스 메모리 전체 하드웨어·메모리
진입 일반 실행 인터럽트, 시스템 콜, 예외
목적 앱 격리·보호 OS·드라이버 신뢰 경계
  • 잘못된 유저 코드가 커널 메모리를 건드리면 안 됨
    • 하드웨어 보호 링(privilege level)으로 강제
  • 시스템 콜·커널 구조는 이어서 다룬다

해당 내용은 Operating System Concepts, 10/E (Avraham Silberschatz, Peter Baer Galvin, Greg Gagne) 의 내용을 기반으로 합니다.

'운영체제 따라잡기' 카테고리의 다른 글

스레드  (0) 2026.06.23
프로세스 생성과 종료  (0) 2026.06.22
프로세스란 무엇인가  (0) 2026.06.21
운영체제 구조와 시스템 콜  (0) 2026.06.20
운영체제 오리엔테이션  (0) 2026.06.15