1.1 What Operating Systems Do
- Intro
Computer System = Hardware + Operating System + Application Programs + User
HardWare = CPU + memory + I/O devices
Application Programs = Processors + spreadsheets + compilers + web browsers
그런데 컴퓨터라는 하드웨어 프로그램을 사용하려면 어떤 중간의 소통 수단(인터페이스)이 필요한데, 이 중간 인터페이스를 운영체제라고 생각하면 된다.

- Operating Systems
운영체제는 다른 프로그램이 일을 잘 할 수 있도록 환경을 제공해주는 역할을 한다.
(컴퓨터의 하드웨어를 관리하고, 하드웨어/사용자/소프트웨어를 매개하는 시스템 소프트웨어라고 보자)
운영체제를 바라보는 2가지 관점 : User & System
1.1.1 User View
사용자 한 명이 독점적으로 컴퓨터에 앉아 키보드와 마우스로 조작하는데, 이러한 경우에 운영체제는 사용자가 컴퓨터 자원 사용을 신경쓰지 않게 해주고, 컴퓨터를 쉽게 이용할 수 있도록 해준다.
만약 여러 사용자가 연결된 터미널을 사용하는 경우, 운영체제는 컴퓨터의 자원을 공평하게 나눠쓸 수 있도록 돕는다.
1.1.2 System View
시스템에게 운영체제는 자원 할당자의 역할이다. (resource allocator)
CPU 시간, 메모리 공간 할당, 파일 저장소 공간, 입출력 장치 등 다양한 문제를 해결하며, 이러한 컴퓨터 자원들을 관리하는 **제어 프로그램(Control Program)**으로서 동작한다.
이제, 컴퓨터 시스템이 어떻게 작동하는지 3가지 관점에서 살펴본다!! (follow me~)
→ 인터럽트 + storage structure + I/O structure
1.2 Computer System Organization
- Device Driver : Device Driver는 운영체제와 하드웨어 장치 간의 인터페이스 역할다양한 하드웨어 입출력 장치를 제어하기 위해 각 입출력 장치에 맞는 드라이버가 필요하므로 존재한다.
- 새로운 하드웨어를 추가할 때 운영체제 코드를 수정하지 않고도 새 드라이버를 설치하여 사용할 수 있게 해준다.
- 특정 H/W, device를 제어하기 위한 프로그램으로, 마우스나 키보드 연결 시 설치되는 Driver이다.
- Device Controller : 하드웨어의 일부로, CPU와 I/O 장치 사이의 통신을 관리하고 데이터 전송을 조정한다.
- I/O 장치를 관리하는 일종의 작은 CPU이다. 제어 정보를 위한 status register, control register, local buffer(for data)를 가지고 있기 때문에 CPU라고 볼 수 있다.
정리 : Device Driver는 소프트웨어로 운영체제에서 실행되고, Device Controller가 이해할 수 있는 명령을 생성한다. Device Controller는 이 명령을 받아 실제 하드웨어를 제어한다.
1.2.1 Interrupts
인터럽트란?
CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉘며, Device Controller와 Hardware의 faults로 발생한다.
- 하드웨어 인터럽트 & 소프트웨어 인터럽트
- 하드웨어 인터럽트
- : CPU가 아닌 다른 하드웨어 장치가 발생시키는 인터럽트다. (키보드나 마우스같은 I/O device)
- 소프트웨어 인터럽트
- : 소프트웨가 스스로 인터럽트 라인을 발생시킨다. (System call, 예외상황 등)
기본적인 인터럽트의 작동 매커니즘
- 인터럽트 발생 (시스템 호출(모니터 호출)이라 불리는 특별한 연산 실행하여 인터럽트 발생시킴)
Device Controller가 인터럽트가 발생했다는 신호를Interrupt Request Line에 Raise한다.CPU가 인터럽트를 catch해서Interrupt Handler에 해당 인터럽트를 Dispatch한다.Interrupt Handler가 인터럽트를 처리하고 clear한다.
Interrupt Request Line
nonmaskable Interrupt & maskable interrupt
- Nonmaskable Interrupt
- CPU가 인터럽트 처리를 중단하거나 지연시킬 수 없다.
- 높은 우선순위를 가지고 있다. 따라서 다른 인터럽트 처리 중에도 즉시 중단하고 실행된다.
- 중요한 시스템 이벤트를 처리한다. 복구 불가능한 메모리 오류나, 하드웨어 오작동, 시스템 리셋 등 치명적이 문제에 사용된다.
- Maskable Interrupt
- 인터럽트 마스크 레지스터를 통해 비활성화하거나 우선순위 조정이 가능하다.
- 키보드, 마우스와 같은 I/O나 주변 장치 이벤트 처리에 사용된다.
- 다중 인터럽트가 발생하는 경우, 소프트웨어/하드웨어 적으로 처리 순서를 결정한다.
❓인터럽트 체이닝이란?
인터럽트 체이닝은 하나의 인터럽트 벡터에 여러 인터럽트 핸들러를 연결하는 기법이다. 동일한 인터럽트 번호를 공유하는 여러 장치가 있을 때 유용하며, 인터럽트 발생 시 연결된 모든 핸들러가 순차적으로 실행됩니다. 이 방식은 시스템의 확장성을 높이고 새로운 장치를 쉽게 추가할 수 있게 해주지만, 모든 핸들러를 순차적으로 호출하므로 성능 저하가 발생할 수 있습니다. 인터럽트 체이닝은 복잡한 시스템에서 인터럽트 관리를 효율적으로 할 수 있게 해주는 중요한 기법이다.
❓인터럽트 핸들러란?
운영체제의 코드 영역에 인터럽트별로 처리해야 할 내용이 이미 프로그램되어 있다.
실제 인터럽트를 처리하기 위한 루틴으로, 인터럽트 서비스 루틴이라고도 부른다.
❓인터럽트 벡터란?
인터럽트 발생 시, 처리해야 할 인터럽트 핸들러의 주소를 인터럽트 별로 보관하고 있는 테이블
❓PCB (Process Control Block) 란?
커널의 데이터 영역에 존재하며 각각의 프로세스마다 고유 PCB가 있다. 인터럽트 발생 시 프로세스의 어느 부분이 수행 중이었는지 저장한다.
1.2.2 Storage Structure (저장장치 구조)
CPU는 오로지 메모리에서만! 명령어를 가져올 수 있다.
→ 프로그램 실행을 원한다면 프로그램이 반드시 메모리에 있어야 한다.
메모리의 종류
컴퓨터는 여러 형태의 메모리를 사용한다.
- 메인 메모리 (RAM)(Dynamic Random Access Memory라는 (DRAM) 반도체 기술로 구현됨)용량이 매우 적다.
- Volatile(휘발적임) : 전원을 끄면 저장된 데이터가 사라진다. 그래서 RAM에서 부트스트랩 프로그램을 관리하지는 않는다.
- 재기록 가능한 메모리로 대부분의 프로그램이 여기에 적재된다.
- 읽기 전용 메모리 (ROM)Non-Volatile
- 데이터 읽기만 가능, 변경은 불가능 → 부트스트랩 프로그램과 같은 정적 프로그램을 저장함.
- 전기적으로 소거 가능한 프로그램을 읽기만 할 수 있는 메모리 (EEPROM)
메모리의 구조와 형태
모든 형태의 메모리는 바이트 배열을 제공한다.
각 바이트는 자신의 주소를 가지고 있으며, 특정 메모리 주소에 대한 load, store 명령을 통해서 전송이 이뤄진다.
- Load
- 메인 메모리 → CPU 내부 레지스터로 1바이트 또는 1 word를 옮긴다.
- Store
- 레지스터의 내용 → 메인메모리로 옮긴다.
폰노이만 구조
instruction-execution cycle (명령-실행 구조 : Fetch - Decode - Execute)
- 명령-실행 구조 instruction-execution cycle : Fetch - Decode - Execute
- 메모리로부터 명령을 fetch해서 → 명령 레지스터 (IR : Instruction Register)에 저장
- 명령 decode 후, 필요 시 피연산자를 내부 레지스터에 저장
- 피연산자에 대한 명령 execute
- 연산 결과를 레지스터에 store
메모리는 단순히 연속적인 메모리 주소에만 관심을 갖는다. (=들어온 연산이나 데이터가 무엇인지에 관계없이 그냥 연속적으로 메모리를 사용한다.)
→따라서 우리도 실행 중인 프로그램에 의해 생성된 일련의 메모리 주소에만 관심을 가지면 된다!
보조 저장장치
메인 메모리의 확장 관점으로 ‘대량의 데이터를 영구히 보존할 수 있어야 한다!’
- HDD (하드디스크 드라이브)대부분의 시스템 및 응용 프로그램이 메모리에 적재되기 전까지 디스크에 저장된다. 프로그램들이 처리할 데이터의 출처와 목적지로도 디스크를 사용한다.
- 비휘발성이며 대용량의 데이터를 저장할 수 있다.
- 가장 일반적인 보조 저장장치로, 프로그램과 데이터를 모두 저장할 수 있다.

- noovolatile memory이 반도체 디스크라 보면 된다. 하드디스크보다 빠르고 비휘발성이다. 종류가 다양하다
ex. 플래시 메모리, NVRAM 등
1.2.3 입출력 구조 (I/O structure)
입출력 구조의 정의
- 입출력 구조: 컴퓨터 시스템에서 데이터가 외부 장치와 주고받는 과정을 관리하는 방식을 의미한다.
- 영향: 시스템의 신뢰성과 성능에 많은 영향을 미친다.
입출력 구조의 중요성
- 각 장치의 특징에 따라 운영체제가 적절히 관리해야 하므로, 운영체제 코드의 많은 부분들이 입출력 관리에 많은 부분을 할애한다
저장장치: 저장장치도 입출력 장치 중 하나로, 데이터를 읽고 쓰는 작업을 수행한다.
컴퓨터 시스템의 구성과 입출력 구조
컴퓨터 시스템은 여러 개의 장치 제어기와 CPU로 구성되며, 공통 버스를 통해 연결되어 있다.
장치 제어기는 CPU와 외부 장치 간의 데이터 전송을 중재하는 입출력 구조의 핵심 요소이다.
장치 제어기란?
컴퓨터의 CPU와 외부 장치 간의 통신을 관리하는 하드웨어 요소로 아래의 역할을 수행한다.
1. CPU와 장치 간의 통신 중재 역할
: 장치 제어기는 CPU의 명령을 받아 외부 장치와 데이터를 주고받는다.
2. 데이터 형식 변환 역할
: 장치 제어기는 CPU와 장치 간의 데이터 형식을 맞춘다.
3. 다중 장치 관리
: 한 장치 제어기가 여러 장치를 관리할 수 있다.
장치 제어기와 입출력 연산 매커니즘 예시
- 디바이스 드라이버 - 장치 제어기
- 디바이스 드라이버가 장치 제어기의 적절한 레지스터에 필요한 값 적재
- 장치 제어기가 레지스터의 내용 조사 후 로컬 버퍼로 데이터 전송
- 장치 제어기 - 디바이스 드라이버
- 장치 제어기의 연산 완료 인터럽트 생성하여 디바이스 드라이버에 알림
- 디바이스 드라이버 - 운영체제
- 제어권 반환한다. (입력이 완료된 경우, 데이터나 데이터에 대한 포인터도 같이 반환한다.)
디바이스 드라이버는 다른 동작에 대해서도 상태 정보를 반환한다.
DMA
Direct Memory Access
컴퓨터 시스템에서 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해준다.
DMA는 입출력 구조에서 데이터 전송을 최적화하는 방법으로 사용된다.
CPU가 다른 작업에 집중할 수 있도록 하여 시스템의 성능을 향상한다.
1바이트마다 인터럽트가 아니라 블록 전송이 완료될 때마다 인터럽트가 발생한다.
cf. 장치 제어기는 CPU와 장치 간의 데이터 전송을 중재하지만(CPU에 의존적임), DMA는 장치와 메모리 간의 데이터를 직접 전송한다.
📍장치 제어기 + DMA
DMA와 장치 제어기는 함께 사용될 수 있다. DMA는 CPU의 개입 없이 장치와 메모리 간의 데이터를 직접 전송하는 기능을 제공하며, 장치 제어기는 CPU와 외부 장치 간의 데이터 전송을 중재하는 역할을 한다.
장치 제어기 : CPU와 외부 장치 간의 데이터 전송을 관리하며, DMA의 작업을 설정하고 모니터링
DMA: 장치와 메모리 간의 데이터를 블록 단위로 직접 전송하여 CPU의 부담을 줄인다.
'공부기록 > CS' 카테고리의 다른 글
| [OS] Operating System Intro 2 (0) | 2025.05.18 |
|---|---|
| [디자인패턴] 생성패턴 (1) - 빌더 패턴 / Builder Pattern (0) | 2025.05.13 |
| [디자인패턴] 책임패턴 (3) : 중재자(Mediator) 패턴 (0) | 2025.04.12 |
| [디자인패턴] 책임패턴 (2) : 옵서버(Observer) 패턴 (0) | 2025.04.11 |
| [디자인패턴] 책임패턴 (1) : 싱글톤(Singleton) 패턴 (0) | 2025.04.11 |