[OS] 운영체제 개요
운영체제의 정의와 목적, 컴퓨터 시스템 구조, 인터럽트 메커니즘, I/O 구조, DMA, 스토리지 계층, OS 주요 기능, 컴퓨팅 환경 발전까지 정리
1. 운영체제의 의미
- 일반 사용자, 사용자 프로그램과 컴퓨터 하드웨어 사이의 인터페이스
2. 운영체제의 목적
- 사용자 프로그램을 실행시켜 사용자의 문제를 쉽게 해결할 수 있도록 지원
- 컴퓨터 시스템을 효율적이고 편리하게 사용할 수 있도록 하드웨어 자원을 관리
3. 컴퓨터 시스템의 구조
사용자 → 애플리케이션 → 시스템 프로그램 → 운영체제 → 하드웨어
- 하드웨어: CPU, 메모리, I/O 장치 등 눈에 보이는 물리적 자원 전체
- 운영체제: 다양한 애플리케이션 및 사용자들 사이에서 하드웨어를 제어·관리하는 인터페이스
- 시스템 프로그램: 컴파일러, 어셈블러, 텍스트 에디터 등 프로그램 개발·실행 도구
- 애플리케이션 프로그램: 워드 프로세서, 웹 브라우저, 데이터베이스, 비디오 게임 등
- 사용자: 사람, 기계, 다른 컴퓨터 등
4. 운영체제의 정의
- 자원 할당자 (Resource Allocator)
- 모든 자원들을 관리하고, 공평하고 효율적으로 사용하게 한다.
- 프로그램 제어 (Control Program)
- 프로그램의 에러를 방지하고 부적절한 사용을 통제한다.
- 관점에 따른 정의
- 넓은 의미: 운영체제를 주문할 때 공급 업체가 제공하는 모든 것
- 좁은 의미: 컴퓨터를 켰을 때 항상 돌아가고 있어야 하는 것 → 커널
- 이 외의 프로그램은 시스템 프로그램 또는 애플리케이션 프로그램
5. 컴퓨터 스타트업 (Bootstrap)
컴퓨터의 전원이 켜지는 순간부터 운영체제가 메모리에 로드되어 사용자가 입력 장치를 사용할 수 있게 되기까지의 과정을 부팅(booting)이라 한다.
부트스트랩 프로그램:
- ROM 또는 EEPROM에 저장된 펌웨어(firmware)
- 마더보드(motherboard)에 탑재되어 공장 출하 시 이미 내용이 기록되어 있음
부팅 순서:
- 전원 버튼 입력 → 부트스트랩 프로그램 실행
- 컴퓨터 시스템의 모든 구성 요소 초기화(initialization)
- 디스크에서 커널을 메모리에 로딩
- 로딩 완료 후 사용자가 마우스·키보드로 작업 가능한 상태로 전환
6. 컴퓨터 시스템의 하드웨어 구성
CPU, 공유 메모리, 디스크·USB·그래픽 컨트롤러가 버스로 연결된 구조
주요 구성 요소:
| 구성 요소 | 역할 |
|---|---|
| CPU | 메모리에서 명령어·데이터를 가져와 실행 |
| 공유 메모리 | 하나 이상의 CPU가 공동으로 사용 |
| 디스크 컨트롤러 | 디스크↔메모리 간 데이터 전송, 로컬 버퍼 보유 |
| USB 컨트롤러 | USB 장치 제어, 로컬 버퍼 보유 |
| 그래픽 어댑터 | 모니터 출력 담당 |
CPU 작업 vs. I/O 작업의 동시 실행:
- CPU 작업: 메모리 ↔ CPU 사이에서 명령어·데이터 처리
- I/O 읽기: 디스크 → 디스크 컨트롤러 로컬 버퍼
- I/O 쓰기: 로컬 버퍼 → 디스크
- 두 작업은 독립적으로 동시에 진행 가능
7. Interrupt 메커니즘
I/O 완료 시 CPU에 신호를 보내 현재 작업을 중단시키는 과정
인터럽트는 I/O 작업 완료, 오류 발생, 사용자 요청 등 다양한 이벤트를 CPU에 알리는 핵심 메커니즘이다. 현대 운영체제는 인터럽트 드리븐(interrupt-driven) 방식으로 동작한다.
인터럽트 처리 절차
- 인터럽트 발생 → CPU가 모든 레지스터 값 및 PC(프로그램 카운터) 값 저장
- 인터럽트 벡터 테이블을 참조하여 해당 ISR(인터럽트 서비스 루틴) 위치 파악
- ISR 실행 (인터럽트 처리)
- 저장해 둔 PC 값으로 복귀 → 중단된 프로그램의 다음 명령어부터 재개
프로그램 카운터(PC): 다음 실행할 명령어의 주소를 저장하는 레지스터. 인터럽트 처리 후 복귀 주소로 활용된다.
인터럽트 벡터 (Interrupt Vector)
- 시스템 부팅 후 메모리 앞부분에 위치하는 테이블
- 각 인터럽트 유형(ID)과 해당 ISR의 메모리 주소를 쌍으로 저장
인터럽트 유형 식별 방식
| 방식 | 설명 |
|---|---|
| 폴링 (Polling) | CPU가 각 I/O 디바이스에 순서대로 질의 |
| 벡터드 인터럽트 | 인터럽트 벡터 테이블을 직접 조회 (더 효율적) |
기타 개념
- 트랩(Trap): 소프트웨어적으로 발생하는 인터럽트 (0으로 나누기, 사용자 요청 등)
- 인터럽트 중첩 처리: 우선순위(priority) 기반으로 더 높은 인터럽트를 먼저 처리
인터럽트 타임라인
- CPU: 사용자 프로세스 실행 → 인터럽트 감지 → ISR 실행 → 사용자 프로세스 재개 반복
- I/O 디바이스: 유휴(idle) → I/O 전송 → 완료 시 인터럽트 발생 반복
8. I/O Structure
Synchronous I/O (동기식)
- I/O 작업 시작 후 CPU가 완료될 때까지 대기
- 대기 방법 ①:
wait명령어로 다음 인터럽트까지 CPU 정지 - 대기 방법 ②: 웨이트 루프로 인터럽트 발생까지 대기
- 단점: CPU가 다른 작업 불가 → 동시에 최대 1개의 I/O만 진행 가능
Asynchronous I/O (비동기식)
- I/O 시작 후 CPU는 즉시 다른 프로세스 실행으로 전환
- I/O를 요청한 프로세스는 결과가 올 때까지 대기 상태
- 장점: 여러 I/O 작업 동시 진행 가능
- 동일 디바이스 대상 요청은 큐에서 순차 처리
디바이스 상태 테이블
- 카드 리더, 프린터, 디스크 유닛 등 각 장치가 개별 작업 정보를 관리
- 현재 작업 완료 후 다음 작업을 대기 큐에서 순차 처리
- 모든 디바이스는 유휴/작업 중 상태 정보를 개별적으로 유지
디바이스 드라이버
- 특정 I/O 디바이스를 구동하는 커널 레벨 프로그램
- 사용자 프로세스 → 커널 → 디바이스 드라이버 → 인터럽트 핸들러 → 하드웨어 순으로 처리
9. Direct Memory Access (DMA)
DMA 컨트롤러가 CPU 개입 없이 메모리에 직접 접근하는 구조
DMA는 디바이스 컨트롤러 내부의 DMA 칩이 CPU를 거치지 않고 메모리에 직접 접근하는 구조이다.
- 과거: 한 바이트씩 전송 후 매번 인터럽트 발생
- 현재: 블록 단위 전송 후 블록당 1개의 인터럽트만 발생
- 인터럽트 빈도 감소 → 시스템 성능 향상
- DMA 컨트롤러 내의 IC 칩이 CPU 개입 없이 독립적으로 메모리↔디스크 간 데이터 이동 관리
10. Storage Hierarchy
CPU에 가까울수록 빠르고 비싸며, 멀수록 느리고 저렴하다
스토리지 계층 구조는 삼각형 형태로 표현되며, 핵심 특성은 휘발성(volatility)이다.
| 특성 | 위쪽 (레지스터·캐시) | 아래쪽 (디스크·테이프) |
|---|---|---|
| 속도 | 나노초(ns) 단위 | 밀리초(ms) 단위 |
| 비용 | 비트당 단가 높음 | 동일 비용으로 대용량 |
| 휘발성 | 전원 차단 시 소멸 | 비휘발성, 보존 |
계층 구성 (위→아래): 레지스터 → 캐시 → 메인 메모리 → 전자식 디스크 → 마그네틱 디스크 → 옵티컬 디스크 → 마그네틱 테이프
- Level 3(메인 메모리) vs Level 4(디스크): 접근 시간 수천 배, 대역폭 수십~수백 배 차이
- 디스크는 기계적 동작을 수반하기 때문에 접근 시간이 크게 차이남
- CPU가 원하는 데이터를 메모리 수준에서 만족시키면 성능이 좋다
캐시 (Cache) 개념
캐시는 두 가지 의미를 가진다:
고유 명사 — 하드웨어 캐시:
- CPU 내부 L1 캐시(1차)와 외부 L2 캐시(2차)
- 컴퓨터 사양 표기 시 캐시 크기를 명시
일반 명사 — 캐싱:
- 느린 저장 매체의 데이터를 빠른 매체에 미리 올려두는 개념
- 메인 메모리 → 마그네틱 디스크의 캐시 역할
- 마그네틱 디스크 → 마그네틱 테이프의 캐시 역할
캐시 일관성 문제 (Cache Coherency):
- 멀티태스킹: 한 프로세스가 데이터를 변경했으나 다른 프로세스는 이전 값을 참조
- 멀티프로세서: 버스를 통해 변경 사항을 브로드캐스트하여 일관성 유지
- 분산 환경: 일관성 유지가 훨씬 복잡
11. Storage Structure
마그네틱 디스크 구조:
| 구성 요소 | 설명 |
|---|---|
| 플래터 | 유리/금속 표면에 자성 코팅, 스핀들 축에 고정 |
| 트랙 | 플래터당 1만 개 이상의 동심원 |
| 섹터 | 각 트랙을 분할한 단위 |
| 실린더 | 모든 플래터의 동일 번호 트랙 집합 |
| 헤드 | 암(arm)에 연결, 모든 헤드 동기화 이동 |
- 데이터 표현: 자기장 수직(90°) → 1, 수평 → 0
- 헤드 크래시: 헤드와 플래터 사이에 먼지 유입 시 발생하는 오류
옵티컬 디스크:
- 초기: 레이저로 표면을 태워 반사 여부로 1/0 구분 (1회 쓰기)
- 발전: 레이저로 온도를 높여 자기장 형성 → 읽기·쓰기 반복 가능, 밀도 향상
12. Migration of Data (Disk → Register)
- 큰 저장매체부터 순차적으로 해당 섹터를 호출하여 점차 작은 단위로 데이터를 CPU에 전송
- 각 프로세스의 여러 복사본이 존재하며, 최신본을 유지하기 위해 복사본 간 업데이트 필요
- 멀티프로세서: CPU마다 각각의 Cache를 가지고 Bus를 통해 공유
- 데이터 변경 시 Bus를 통해 변경된 값을 브로드캐스트
- 분산 환경: 여러 서버가 연동되어 데이터 처리를 분담, 복사본도 여러 곳에 존재
13. OS Structure
운영체제는 자원 이용률을 극대화하기 위해 멀티프로그래밍과 타임셰어링 기법을 사용한다.
멀티프로그래밍
- 디스크의 다수 프로그램 중 일부를 작업 스케줄링으로 선정하여 메모리에 적재
- CPU는 I/O 발생 시 다른 프로세스로 전환 → CPU·I/O 이용률 향상
- 프로그램(수동적 개체, 디스크에 설치) vs 프로세스(능동적 개체, 실행 중)
타임셰어링 (시분할)
- CPU 시간을 극히 짧은 단위(μs~ms)로 분할하여 다수 사용자에게 순차 할당
- 응답 시간 목표: 1초 이내 (사용자가 전용 사용 느낌을 받음)
- 스왑(Swap): 메모리 부족 시 프로세스를 디스크로 내보내고 새 프로세스를 적재
- 가상 메모리: 실제 메모리보다 큰 주소 공간을 제공, 스왑과 연계
유저 모드 vs 커널 모드
| 모드 비트 | 상태 | 설명 |
|---|---|---|
| 1 | 유저 모드 | 사용자 프로세스 실행 |
| 0 | 커널 모드 | 시스템 콜 처리 중 |
- 시스템 콜: 사용자 프로세스가 운영체제에 서비스를 요청하는 인터페이스
- 하드웨어 인터럽트, 소프트웨어 인터럽트(트랩), 타이머 인터럽트(무한 루프 방지)
14. 운영체제 주요 기능
프로세스 관리
- 프로세스·스레드 생성·제거·중지·재개
- 프로세스 간 통신(IPC), 동기화, 데드락 처리
- 싱글 스레드: PC 1개 / 멀티 스레드: 독립적인 PC 다수
메모리 관리
- 실행을 위해 모든 인스트럭션·데이터가 메모리에 적재되어야 함
- 메모리 할당·회수·점유 현황 관리
- CPU 이용률 및 응답 시간 최적화
스토리지 관리
- 파일 시스템: 파일·디렉토리 생성·삭제·접근 권한 관리
- 매스 스토리지: 빈 공간 관리, 디스크 스케줄링
- 백업: 주기적 실행이 중요, 주로 야간 수행
I/O 서브시스템
| 기법 | 설명 |
|---|---|
| 버퍼링 | 빠른 → 느린 디바이스 전달 시 임시 저장 |
| 캐싱 | 느린 디스크 데이터를 미리 읽어 빠르게 전달 |
| 스풀링 (SPOOL) | 한 작업의 출력을 다른 작업의 입력으로 연계 |
보호 vs 보안
- 보호(Protection): OS가 정의한 자원에 대한 접근 제어
- 보안(Security): DDoS, 바이러스, 악성 코드 등 내·외부 공격 방어
- 사용자 ID·그룹 ID 부여 및 Privilege Escalation 모델 적용
15. 컴퓨팅 환경의 발전
| 단계 | 특징 |
|---|---|
| 배치 처리 | 작업 제출 후 완료까지 사용자 개입 불필요 |
| 타임셰어링 | 메인프레임에 다수 사용자 동시 접속 |
| 클라이언트-서버 | 파일/DB/컴퓨트 서버 등 역할 분리 |
| P2P | 동등한 피어 간 통신, 중앙 서버 불필요 |
| 웹 기반 | 로드 밸런싱, 웹 서버 다중화 |
| 클라우드 | 공유 자원을 사용한 만큼 비용 지불 |
클라우드 컴퓨팅
- SaaS (Software as a Service): 소프트웨어를 온라인으로 사용
- PaaS (Platform as a Service): SaaS 개발을 위한 플랫폼·툴 제공
- IaaS (Infrastructure as a Service): 서버·인프라 자원 임대
- XaaS (Everything as a Service): 모든 것을 서비스로 제공









