참고 교재: Operating System Concepts (10th Ed) - A.Silberschatz, P.Galvin, and G.Gagne
운영체제의 목표
- 사용자 프로그램을 실행하고, 사용자의 문제 해결을 쉽게 만든다.
- 사용자가 직접 하드웨어를 다루지 않고 운영체제를 통해 쉽게 프로그램을 실행할 수 있도록 해줌.
- 예: Windows에서 클릭 한 번으로 프로그램을 실행
- 컴퓨터 시스템을 편리하게 사용할 수 있도록 한다.
- GUI(그래픽 인터페이스), 파일 탐색기, 작업 관리자 같은 기능 제공
- 컴퓨터 하드웨어를 효율적으로 사용한다.
- CPU, 메모리, 디스크 등의 자원을 최적화하여 빠르고 안정적인 성능 제공
- 멀티태스킹(여러 프로그램을 동시에 실행), 메모리 관리, 디스크 스케줄링 등을 통해 성능 극대화
Computer system - 4 components
- Hardware (CPU, memory, I/O devices)
- Operating system (controls & coordinates use of hardware)
- Application programs (Word processors, compilers, web browsers, database systems, video games)
- Users (people, machines, other computers)
- 컴퓨터 시스템 계층구조

운영체제 역할
- resource allocator
- manages all resources
- conflicting requests 중에서 efficient and fair resource를 결정
- control program
- 에러나 improper use 를 막기 위해 execution of programs을 control
운영체제 구성
- kernel : 운체 핵심! 항상 실행되는 프로그램
- Windows NT 커널, Linux 커널, macOS XNU 커널
- system programs : 운영체제와 관련 - 운영체제 기능 확장, 시스템 관리
- 명령어 인터프리터(Shell, 터미널)
- 시스템 설정 도구(Control Panel, 설정 앱)
- 디스크 관리 프로그램
- 파일 탐색기
- application programs (응용 프로그램) : 사용자가 실행 - 운영체제의 직접적인 일부는 아니지만, 운영체제 위에서 동작
- 웹 브라우저(Chrome, Firefox)
- 오피스 프로그램(MS Word, Excel)
- 미디어 플레이어(VLC, Windows Media Player)
- 게임
- 사용자가 응용 프로그램 실행 (ex. 웹 브라우저 실행)
- 운영체제가 프로그램을 로드하고 CPU, 메모리, 디스크 자원을 할당
- 응용 프로그램이 동작하면서 사용자의 입력을 처리
- 사용자가 프로그램을 종료하면 운영체제가 메모리에서 프로그램 제거
Computer System Organization
공유 버스 (Common Bus) & 공유 메모리 (Shared Memory)
- CPU와 I/O 장치가 데이터를 주고받기 위해 사용하는 통로
- CPU와 디바이스 컨트롤러가 공유된 메모리에 접근할 때 경쟁이 발생할 수 있음

Computer Startup
- bootstrap program : 컴퓨터가 처음 켜질 때 실행되는 프로그램. 운영체제를 로드하고 시스템을 초기화. → 운영체제 불러올 준비
- 저장 위치: ROM / EEPROM - firmware, 전원이 꺼져도 유지됨
- 시스템 하드웨어 초기화
- OS kernel을 로드하고 운영체제 실행 시작
- 부트로더 → 운영체제 RAM으로 로드
- 커널 실행 → 운영체제 시작!
Computer-System Operation
- I/O 와 CPU는 독립적으로 실행 가능
- CPU는 프로그램 실행 중
- I/O 장치는 데이터를 주고받음
- 디바이스 컨트롤러
- 특정 I/O 장치(예: 키보드, 마우스, 하드디스크)를 관리하는 전용 하드웨어
- 각 디바이스 컨트롤러마다 "로컬 버퍼(Local Buffer)"를 가짐
- I/O 장치와 메모리 사이의 데이터 전송을 담당
- CPU는 데이터를 주 메모리 ↔ 로컬 버퍼로 이동시킴
- I/O 는 장치에서 컨트롤러의 로컬 버퍼로 데이터를 전송
- I/O 장치가 작업 완료 시 interrupt를 발생시켜 CPU에게 알려줌
- interrupt : 현재 작업을 멈추고 특정 작업을 하도록 함
Common Functions of Interrupts
- Interrupt : CPU가 특정 이벤트(예: I/O 완료, 오류 발생, 사용자 입력 등)에 의해 현재 실행 중인 작업을 중단하고 즉시 특정 작업(인터럽트 서비스 루틴)을 수행하는 메커니즘 → CPU가 불필요하게 대기 X
- 인터럽트 발생 → CPU는 현재 작업을 중단하고 인터럽트 처리 시작
- CPU는 현재 실행 중이던 명령어의 주소를 저장하고, 인터럽트 서비스 루틴(ISR)의 주소로 점프
- 인터럽트 서비스 루틴(ISR) 실행
- 인터럽트에 대한 처리를 수행 (예: 키보드 입력 처리, I/O 완료 알림 등)
- 인터럽트 서비스 완료 → 원래 작업 복귀
- CPU는 저장된 주소를 다시 불러와 원래 실행 중이던 작업을 재개
- 마치 인터럽트가 발생하지 않은 것처럼 정상적으로 작업이 이어짐
- 트랩(Trap) : 사용자가 의도적으로 요청하는 소프트웨어 인터럽트
- 예: 시스템 호출(System Call) (파일 열기, 프로세스 생성 등)
- 운영체제가 사용자 요청을 처리하기 위해 발생
- 예외(Exception) : 오류 발생으로 인해 자동으로 생성되는 인터럽트
- 예: 0으로 나누기 오류(Divide by Zero), 페이지 폴트(Page Fault)
- 프로그램 실행 중 오류가 발생하면 즉시 인터럽트가 발생하여 문제를 해결하거나 종료
- 운영체제는 interrupt를 기반으로 동작!
Interrupt Timeline

- CPU 상태:
- "User process executing" → 사용자 프로세스 실행 중
- "I/O interrupt processing" → I/O 인터럽트 처리 중
- I/O 장치 상태:
- "Idle" → I/O 장치가 대기 상태
- "Transferring" → I/O 장치가 데이터를 전송 중


- CPU가 I/O 요청을 보냄.
- I/O 컨트롤러가 I/O 작업을 수행.
- 작업이 완료되면 인터럽트가 발생.
- CPU는 인터럽트 핸들러를 실행하여 결과를 처리.
- CPU는 원래 하던 작업으로 복귀.
- IO가 종료되면서 interrupt
- CPU 중단되면서 interrupt (4와 다름)
Storage Structure
- 주기억장치(Main memory) : CPU가 직접 접근할 수 있는 유일한 대용량 저장 장치 (휘발성, 고속)
- 보조기억장치(Secondary storage) : 주기억장치를 확장한 개념으로, 대용량의 비휘발성(Non-volatile) 저장 공간을 제공
- 하드디스크(Hard disks) : 금속 또는 유리 플래터에 자성 기록 물질이 코팅된 저장 장치
- 디스크 표면은 트랙(tracks)으로 나뉘고, 트랙은 섹터(sectors)로 다시 분할됨.
- 디스크 컨트롤러(disk controller)는 장치와 컴퓨터 간의 논리적 데이터 교환을 담당함.
- 솔리드 스테이트 디스크(Solid-state disks, SSD) : 하드디스크보다 빠르고, 비휘발성 저장장치
- 다양한 기술이 사용됨.
- 점점 더 널리 사용되고 있음.
- 저장 → Storage (한번 저장하면 지속적으로 보존) / Memory (RAM) 구분
Storage-Device Hierarchy
- Speed / Cost / Volatility 기준에 의해 설정
- Caching : 자주 사용하는 데이터를 더 빠른 저장소에 저장하여 성능을 향상시킴

I/O Structure
- 일반적인 범용 컴퓨터 시스템은 CPU와 여러 개의 디바이스 컨트롤러(Device Controller-CPU와 I/O 연결)로 구성되며, 이들은 공통 버스(Common Bus)를 통해 연결된다.
- Device Controller
- 특정 I/O 장치(예: 키보드, 마우스, 하드디스크)를 관리하는 하드웨어
- CPU와 직접 연결되지 않고 공통 버스(Common Bus)를 통해 데이터를 주고받음
- 자체적인 로컬 버퍼(Local Buffer) 저장소와 특수 목적 레지스터(Special-Purpose Registers)를 가지있음 → 데이터 저장, 처리 가능
- 운영체제는 각 디바이스 컨트롤러에 대한 디바이스 드라이버(Device Driver)를 제공
- 운영체제(OS)가 각 디바이스 컨트롤러와 통신할 수 있도록 도와주는 "소프트웨어” (중개자)
- 디바이스 드라이버는 디바이스 컨트롤러를 이해
- 운영체제의 나머지 부분이 해당 장치를 일관된 방식으로 사용할 수 있도록 인터페이스를 제공
- I/O 처리 방식 - 동기식
- I/O 완료 후 사용자 프로그램 실행
- I/O 작업이 끝날 때까지 CPU가 기다림
- CPU는 다음 인터럽트가 발생할 때까지 대기(Wait Instruction) 상태가 됨.
- 한 번에 하나의 I/O 요청만 처리 가능 → 멀티태스킹 불가능
- CPU는 대기하는 동안 메모리에 대한 접근을 두고 다른 프로세스와 경쟁(Wait Loop) 할 수 있음.
- I/O 처리 방식 - 비동기식
- I/O 완료 전에 사용자 프로그램 실행
- I/O 작업이 시작되면 CPU는 즉시 사용자 프로그램 실행을 계속
- I/O가 끝나면 인터럽트(Interrupt)로 CPU에게 알림
- CPU는 I/O가 끝날 때까지 다른 작업을 수행 가능 → 멀티태스킹 가능!
- 운영체제(System Call)를 통해 사용자 프로그램이 I/O 완료를 기다릴 수 있도록 요청할 수 있음
- 장치 상태 테이블(Device-Status Table) 은 각 I/O 장치의 유형, 주소 및 현재 상태 정보를 저장
- 운영체제는 I/O 장치 테이블을 조회하여 장치 상태를 확인하고, 인터럽트를 처리할 때 테이블을 업데이트
Two I/O Methods

- Synchronous(동기식) : 시간적인 바운드 개념을 갖고 있음 (메세지 전송 → 특정 시간 내에 reponse 받음) → 비효율적일수 있음.
- Asynchronous(비동기식) : 시간 X (보내고 response 기다리지 않고 control 넘김)
Computer-System Architecture
- 단일 프로세서 시스템(Single-Processor Systems)
- 하나의 메인 CPU가 존재하며, 사용자 프로세스의 명령어를 포함한 일반적인 명령어 세트(instruction set)를 실행할 수 있음.
- 독립적인 시스템들이 하나로 연결
- 다중 프로세서 시스템(Multiprocessor Systems)
- Parallel Systems / Tightly Coupled Systems
- 장점:
- 처리량 증가(Increased throughput): 더 많은 작업을 더 적은 시간에 수행할 수 있음.
- 규모의 경제(Economy of scale): 같은 성능을 내는 여러 개의 단일 프로세서 시스템보다 비용이 절감됨.
- 신뢰성 증가(Increased reliability): 한 프로세서가 고장 나도 시스템이 중단되지 않음. (문제가 발생했을때 대체할 수 있는 것이 있음)
- Fault tolerance : 특정 프로세서가 고장 나더라도 시스템이 계속 작동할 수 있음. → 네트워크, db, 서버…
- 결국 이를 지원하기 위해선 동일한 내용이 똑같이 존재해야됨. 즉 여러개 존재할수록 좋겠지만 cost가 많이 나가겠지.
- 비대칭 멀티프로세싱(Asymmetric Multiprocessing)
- 마스터 프로세서(Master Processor)가 시스템을 제어하고,
- 슬레이브 프로세서(Slave Processor)들에게 작업을 할당함.
- scheduling을 담당하는 processor 존재
- 대칭 멀티프로세싱(Symmetric Multiprocessing, SMP)
- 모든 프로세서가 동등한 관계(Peer-to-Peer 관계)를 가짐.
- 마스터-슬레이브 구조가 없으며, 모든 프로세서가 작업을 균등하게 나눠 처리함.

레지스터(Registers)
- CPU 내부에서 가장 빠른 저장 공간
- 연산에 필요한 데이터를 저장하고 즉시 사용 가능
캐시(Cache)
- RAM보다 빠른 임시 저장 공간
- 자주 사용하는 데이터를 저장하여 CPU가 빠르게 접근 가능
Dual-Core Design

- Multi-chip
- 여러 개의 CPU 칩이 함께 연결된 형태.
- 예: 듀얼 프로세서(서로 다른 두 개의 CPU가 하나의 시스템에서 동작).
- Multicore
- 하나의 CPU 칩 안에 여러 개의 코어가 들어 있는 구조.
- 코어마다 자신의 레지스터(registers)와 캐시(cache)를 가짐, 하지만 공유된 메모리(memory)를 사용함.
- 그림을 보면 CPU core_0, CPU core_1 각각이 자신만의 레지스터와 캐시를 가지고 있음.
*참고
구분 레지스터(Register) 캐시(Cache) RAM (주기억장치)
| 속도 | 가장 빠름 (CPU 클록 속도) | 빠름 (L1, L2, L3 캐시) | 비교적 느림 |
| 위치 | CPU 내부 | CPU 내부 또는 가까운 위치 | 메인 메모리 (메인보드) |
| 용량 | 매우 작음 (몇 바이트~KB) | 중간 (몇 MB~GB) | 큼 (GB~TB) |
| 목적 | CPU 연산을 위한 임시 데이터 저장 | 자주 사용하는 데이터를 저장하여 속도 향상 | 실행 중인 프로그램과 데이터를 저장 |
Clustered Systems
클러스터 구조 : system(독립적)들이 서로 모여있고 연결되어있음 → 하나의 network로 연결!
- storage-area network (SAN) : 저장 공간을 공유
- high-availability : 장애 발생시에도 시스템 계속 운영
- 비대칭 클러스터(Asymmetric Clustering)
- → 한 대의 컴퓨터가 대기 모드(hot-standby mode) 로 대기하면서, 장애 발생 시 시스템을 takeover함.
- 대칭 클러스터(Symmetric Clustering)
- → 여러 개의 노드가 동시에 애플리케이션을 실행하며, 서로를 모니터링함.
- high-performance computing (HPC) : 고성능 컴퓨팅, 병렬 처리(parallelization)를 지원하는 애플리케이션이 필요
- distributed lock manager (DLM) : 분산 락 매니저, 여러 개의 노드에서 동시에 같은 데이터에 접근하는 충돌을 방지하기 위해 사용
- ↔ 다중 프로세서 시스템 : 하나의 시스템 내 여러 개의 CPU

Operating-System Structure
- Multiprogramming : CPU가 1개든 n개든 상관X → 각각의 유저들이 자신의 작업이 수행되는 것으로 느낄 수 있음! (여러 개의 작업이 동시에 실행되는 것처럼 보이게 함)
- Job scheduling : 메모리 내에 적재되는 작업의 수를 control. (job Queue에서 선택)
- ↔ multiprocessing : 코어의 개수에 따라! 여러 개의 CPU를 활용하여 여러 작업을 물리적으로 동시에 실행
- Timesharing (multitasking) : 시분할 시스템
- CPU가 여러 작업을 빠르게 전환하면서 사용자가 동시에 여러 개의 프로그램을 실행하는 것처럼 보이게 함.
- 사용자와 상호작용(Interactive Computing) 가능
- 응답 시간(Response Time)이 1초 이내여야 함
- 각 사용자는 적어도 하나의 프로세스를 메모리에 유지해야 함.
- CPU scheduling : CPU가 현재 main memory에서 대기하는 작업 중 어떤 작업을 수행할지 decision을 내리는 과정 (빠르게, 자주, 메모리에 올라온 작업 중 선택)
- swapping : 메인메모리에 당장 필요한 기능을 집어넣기 위해 그 안에 있던 것들 중 일부가 빠져나감. (replacement)
- → 필요 없는 프로세스를 디스크로 내보내고, 새로운 프로세스를 메모리에 로드
- Virtual memory : 가상 메모리 - 메모리 자체는 한정되어있는데 메모리 확장한것처럼, 더 크게 사용하는 것처럼 느껴짐. (물리적 - 있는걸 빼고 새로운걸 추가했을 뿐)→ 필요한 부분만 메모리에 적재하고 나머지는 디스크에서 가져오는 방식 (페이징 기법)
- → 실제로 메모리가 부족할 때 디스크 공간을 RAM처럼 사용
*참고
구분 멀티프로그래밍 (Multiprogramming) 시분할 시스템 (Time-sharing)
| 목적 | CPU가 항상 작업을 실행하도록 함 | 여러 사용자가 동시에 시스템을 사용 가능하도록 함 |
| 작업 전환 | 한 작업이 I/O를 기다릴 때 다른 작업을 실행 | CPU가 짧은 시간마다 여러 작업을 빠르게 전환 |
| 응답 속도 | 사용자와의 상호작용 필요 없음 | 빠른 응답 시간 (< 1초) 필요 |
| 주 사용 환경 | 배치 처리 시스템 (Batch System) | 현대적인 OS (Windows, Linux, macOS) |
Operating-System Operations
- 운영체제는 Interrupt 기반으로 동작
- Software error / request에 의해 exception / trap이 발생할 수 있음 (division by zero, request for operating system service)
- 다른 프로세스에서 발생할 수 있는 문제들 : infinite loop, 다른 process 또는 OS를 수정하려는 시도
- Dual-mode
- User mode / kernel mode → 넘나들음
- 하드웨어에서 Mode Bit를 제공하여 현재 실행중인 코드가 사용자 코드인지 운영체제 코드인지 구별 가능
- Privileged Instructions (특정 명령어) : 일반적인 instruction X (커널 모드에서만)
- System Call이 발생하면 커널 모드로 변경, 작업이 끝나면 다시 유저 모드로 복귀
Transition from User to Kernel Mode
Timer
- infinite loop/process hogging resources 방지
- 타이머 설정 → 운영체제가 주기적으로 카운터 감소 → 카운터 값이 0이 되면 인터럽트 발생 → OS가 인터럽트 처리하여 프로세스 제어
- Timeout → 강제 종료 / 추가 실행 시간 부여

Process Management
- program : passive entity!! storage에 저장되어 있는 것 (정적으로)
- process : active entity!! (실행되고있는) - 시스템에서 작업 단위로 동작
- process의 resources : CPU, memory, I/O, files, Initialization data
- 프로세스가 종료되면 사용했던 리소스를 OS가 회수 (X→메모리누수/시스템 과부하)
- 메모리로 로딩이 되었다고 해서 실행중인것은 x, 실행할 준비가 된 것.
- Thread : light (process-heavy) 하나의 프로세스 내에서 여러개 생성 가능 → 공유할 수 있는 부분을 최대한 많이 공유함으로써 메모리 용량 자체를 적게 만듦, 빠른 실행&병렬 처리 가능 ↔ process는 독립적
- Single-threaded Process : 하나의 프로그램 카운터(PC)만 존재, 순차적으로 실행되고 하나의 작업이 끝날때까지 다른 작업 X
- Multi-threaded Process : 각 스레드는 개별적인 프로그램 카운터를 가짐 → 병렬 처리 가능
- Concurrency(동시성) : CPU가 여러 프로세스를 빠르게 전환하여 동시에 실행되는 것처럼 보이게 함
- 운영체제는 process를 관리함
- 프로세스 생성(create) 및 종료(delete)
- 프로세스 일시 정지(suspending) 및 재개(resuming)
- 프로세스 동기화 (process synchronization)
- 프로세스 간 통신 (process communication)
- deadlock handling
Memory Management
- paging 기법
- 사용하지 않는 메모리 페이지를 하드디스크(SSD)로 이동 (Page Out)
- 필요할 때 SSD에서 다시 RAM으로 불러옴 (Page In)
- 이 과정에서 하드디스크를 사용하는 공간 = "스왑 영역(Swap Space)" / "페이지 파일(Page File)”
- 프로그램에 필요한 데이터는 메모리에 있어야 됨!
- 언제, 무엇이 메모리에 있을지 결정!
- 메모리의 어떤 부분이 누구에 의해 최근 사용되었는지 tracking
- 어떤 process와 data가 메모리에 move into or out 되어야 하는지 결정
- allocating / deallocating memory space as needed
Storage Management
저장한다는 개념은 같지만 규모 차이가 있음. (Storage→Tera…같이 겁나 큼)
- File System : 운영체제가 제공하는 논리적 저장 구조
- 저장 장치의 물리적 특성을 논리적으로 추상화
- OS는 다양한 저장매체(디스크, 테이프 등)의 물리적 차이를 숨기고, 파일 단위로 접근할 수 있도록 제공
- 각 저장 매체는 다른 속성을 가짐 (access speed, capacity, data transfer rate, access method-sequential access vs random access)
- File-System → directories 단위로 묶어서!
- 디렉토리는 계층적 구조를 가질 수 있음
- 파일 시스템에는 사용자별 접근 권한 존재
- 누가 어떤 파일에 접근할 수 있는지 결정 (read, write, execute)
- 운영체제의 파일 시스템 관리 역할
- 파일 및 디렉토리 생성, 삭제
- 파일 조작 기능 (읽기, 쓰기, 변경) 제공
- 파일을 보조 저장장치(디스크)와 매핑하여 저장/검색
- 파일 백업 및 복구 기능 제공
Mass-Storage Management
대규모 스토리지 (제타...)
- disks : 메인 메모리에 맞지 않거나 긴 시간동안 유지되어야 하는 데이터를 store
- RAM의 한계를 보완
- 주 메모리는 휘발성(Volatile)이라 전원이 꺼지면 데이터가 사라짐 → 데이터를 영구 저장하려면 디스크가 필요!
- RAM보다 저장 용량이 크고, 전원이 꺼져도 데이터를 유지 가능(Non-Volatile)
- 디스크 성능은 컴퓨터 전체 속도에 큰 영향을 줌
- 디스크의 속도가 컴퓨터 성능의 병목(Bottleneck)이 될 수 있음
- 디스크 서브시스템과 관련된 알고리즘(디스크 스케줄링, 저장 공간 관리 등)이 매우 중요!
- OS activities
- Free-space management
- Storage allocation
- Disk scheduling
- Some storage need not be fast
- Tertiary Storage(3차 저장 장치) : 속도는 느리지만 대용량 데이터를 장기간 보관하는 용도로 사용
- Optical Storage(광학 저장장치) : CD, DVD, Blu-ray
- Magnetic Tape(자기 테이프) : 데이터 백업 및 아카이브
- WORM(Write-Once, Read-Many) & RW(Read-Write) 로 다양함
- Tertiary Storage(3차 저장 장치) : 속도는 느리지만 대용량 데이터를 장기간 보관하는 용도로 사용
Caching
- hardware, OS, software 등 다양한 레벨에서 사용
- slower → faster storage temporarily(일시적)
- CPU, OS, 소프트웨어는 데이터를 먼저 캐시에서 찾음
- 캐시에 데이터가 있으면(캐시 히트, Cache Hit) → 즉시 빠르게 사용 가능
- 캐시에 없으면(캐시 미스, Cache Miss) → 느린 저장소에서 데이터를 가져와 캐시에 저장한 후 사용
- 원본 저장 장치보다 작음
*참고 (Performance of Various Levels of Storage)
registers(1kb) < cache(16mb) < main memory(64gb) < solid state disk(1tb) < magnetic disk(10tb)
Migration of Integer A from Disk to Register
activation 되면 메인 메모리 가져옴
각각의 코어마다 로컬 메모리(캐시)를 갖고 있음
- Multitasking environments는 위계 상관 없이 항상 최신 값을 가져야 함!
- cache coherency 캐시 일관성
- → 여러 CPU가 동시에 같은 데이터를 수정할 때, 모든 CPU가 항상 최신 데이터를 유지해야됨
- Distributed environment (분산환경) 에서는 더 복잡
- 여러 컴퓨터(노드)가 동일한 데이터를 복제하여 저장 가능
- 여러 컴퓨터가 같은 데이터를 공유할 때, 모든 복사본이 동일한 최신 상태를 유지해야 함!!!
- → 싱크로가 요구됨 (분산 데이터 동기화)
I/O systems
- 하드웨어 장치의 복잡성을 사용자로부터 숨김
- 사용자가 하드웨어의 세부 사항을 몰라도 쉽게 입출력(I/O)을 처리 가능!
- transparacy 제공 (투명성)
<I/O 서브시스템 구성 요소>
- 메모리 관리 컴포넌트 (Memory-Management Component)
- 버퍼링(Buffering): 데이터가 전송되는 동안 일시적으로 저장하는 방식
- 캐싱(Caching): 데이터를 빠르게 접근할 수 있도록 빠른 저장소에 저장하는 방식
- 스풀링(Spooling): 하나의 작업이 출력을 하는 동안, 다른 작업이 입력을 받을 수 있도록 겹쳐서 처리하는 방식
- 범용 장치 드라이버 인터페이스 (General Device-Driver Interface)
- 운영체제는 모든 장치 드라이버가 공통적으로 사용할 수 있는 인터페이스를 제공
- 예) Windows의 HAL(Hardware Abstraction Layer)
- 특정 하드웨어 장치를 위한 드라이버 (Drivers for Specific Hardware Devices)
- 각 하드웨어(프린터, 마우스, 키보드 등)별로 필요한 드라이버가 존재
- 운영체제는 장치 드라이버를 통해 하드웨어와 통신
Protection and Security
- Protection : access control
- 리소스 접근 권한을 갖는 유저들만! → 테이블 형태로 유지
- Security : internal, external attack을 막아줌
- 서비스 거부 공격(Denial-of-Service, DoS), 웜(Worms), 바이러스(Virus), 신원 도용(Identity Theft), 서비스 도용(Theft of Service)
- 사용자 ID (User ID, UID)와 보안 ID (Security ID, SID)
- 각 사용자는 고유한 이름과 번호(User ID)를 가짐
- 사용자 ID는 해당 사용자가 소유한 모든 파일 및 프로세스와 연결 → 운영체제는 사용자의 접근 권한을 결정
- 그룹 식별자 (Group ID, GID)
- 여러 사용자를 그룹으로 정의하고, 동일한 권한 부여 가능
- 그룹 ID는 각 프로세스와 파일에도 연결 가능
- 예) 개발자 그룹(Developers)만 특정 소스 코드 파일을 수정할 수 있도록 설정.
- 권한 상승 (Privilege Escalation)
- 사용자가 더 높은 권한을 가진 ID로 변경할 수 있는 기능.
- 일시적으로 추가 권한을 얻어 특정 작업을 수행 가능.
- 예) Linux의 sudo 명령어를 사용하여 일반 사용자가 관리자(root) 권한을 획득.
Kernel Data Structures
- Linked list

- Balanced Binary Search Tree
- avl, red-black, …
- binary tree가 O(n)되는 것을 막음 → O(lgn)
- Hash function
- 직접 접근이 됨
- 효율적인 function
- 키(Key)-값(Value) 쌍을 저장하고 빠르게 검색할 수 있는 자료구조
- 해시 함수를 사용하여 데이터를 특정 위치에 매핑
- 충돌

- Bitmap : 상태를 표현하기 위해 사용하는 비트 정보
- 페이징 기법 할 때 블럭 차있는지/비어있는지 0,1로 표현하는것처럼!!
자료구조 설명 커널 사용 예
| Linked List | 삽입/삭제가 빠름, 동적 크기 조절 가능 | 프로세스 리스트, I/O 큐 |
| Tree | 계층적 데이터 관리, 빠른 탐색 | 파일 시스템, 프로세스 계층 |
| Hash Table | 빠른 검색(O(1) 시간복잡도) | 시스템 콜 테이블, 페이지 캐시 |
| Bitmap | 비트 단위로 저장하여 공간 절약, 빠른 검색 | 메모리/디스크 할당, 동기화 |
Computing Environments
- Traditional Computing
- 독립적인 범용 컴퓨터(Stand-alone General-Purpose Machines)
- 대부분의 시스템이 인터넷 및 네트워크를 통해 연결됨
- 포털(Portal)을 통한 내부 시스템 접근
- 네트워크 컴퓨터(Network Computers, Thin Clients)는 Web terminals와 비슷
- 일부 컴퓨터는 로컬 저장 장치 없이, 인터넷을 통해 서버에 접속하여 필요한 데이터를 제공받는 방식
- 예) 크롬북(Chromebook), 클라우드 기반 컴퓨팅
- 모바일 컴퓨터(Mobile Computing-스마트폰, 태블릿, 노트북 등)가 무선 네트워크(Wireless Networks-와이파이, 5G 등)를 통해 상호 연결됨
- 네트워크 환경이 점점 더 보편화(Ubiquitous Computing)됨
- 가정에서도 네트워크를 사용하여 여러 장치를 연결함 (스마트홈, IoT 기기)
- 보안 문제로 인해 방화벽(Firewall) 을 사용하여 인터넷 공격으로부터 보호 필요
- Mobile Computing
- Handheld smartphones, tablets 등
- extra feature - more OS features (GPS, gyroscope)
- augmented reality와 같은 새로운 타입의 앱 허용
- IEEE 802.11 wireless 또는 cellular data networs 를 사용
- leaders : Apple iOS, Google Android
Distributed Systems
- 여러 개의 독립적인 컴퓨터가 네트워크를 통해 연결되어 하나의 시스템처럼 동작하는 구조
- 이기종(Heterogeneous) 시스템도 포함될 수 있음 → 서로 다른 하드웨어/소프트웨어를 가진 시스템들이 연결될 수 있음
- 사용자는 하나의 커다란 시스템처럼 느끼지만, 실제로는 여러 컴퓨터가 분산되어 동작함
- 네트워크 연결이 필수적
- LAN (Local Area Network, 근거리 통신망) → 같은 건물, 사무실 내의 네트워크
- WAN (Wide Area Network, 광역 통신망) → 장거리 네트워크 (인터넷 포함)
- MAN (Metropolitan Area Network, 도시권 네트워크) → 도시 내 네트워크 (예: 공공 Wi-Fi)
- PAN (Personal Area Network, 개인 네트워크) → 블루투스, NFC와 같은 근거리 개인용 네트워크
- 네트워크 운영체제(Network Operating System, NOS)
- 파일 공유, 네트워크 기반 프로세스 간 통신을 지원하는 운영체제
- 여러 대의 컴퓨터가 서로 데이터를 주고받고 협력할 수 있도록 함
- 대표적인 예: Linux, Windows Server, Unix 기반 시스템
Client-Server Computing
- Dumb Terminal(단순 터미널)이 smart PC에 의해 대체됨
- Dumb Terminal은 자체적인 계산 능력이 없고, 단순히 입력/출력만 수행 (모든 계산은 중앙 메인프레임이 담당)
- 스마트 PC(개인용 컴퓨터)가 등장하면서, 클라이언트가 일부 작업을 수행하고 서버에 요청하는 방식으로 발전
- clients로부터 받은 요청에 응답하는 server
- 계산 서버(Compute-Server)
- 클라이언트가 연산 작업(예: 데이터베이스 검색, 인공지능 연산 등)을 요청하면, 서버가 처리 후 결과를 반환
- 예) SQL 데이터베이스 서버(MySQL, PostgreSQL, Oracle DB)
- 파일 서버(File-Server)
- 클라이언트가 파일 저장 및 검색 요청을 하면, 서버가 해당 파일을 제공
- 예) Google Drive, Dropbox, 회사 내부 파일 서버(NAS)
- 계산 서버(Compute-Server)

Peer-to-Peer Computing (P2P)
- clients-servers 를 구분X
- 모든 노드는 동등한 관계(peers)
- client, server, or both 역할을 할 수 있음
- Node가 P2P 네트워크에 참여하는 방식
- 중앙 조회 서비스(Central Lookup Service) 사용 → 네트워크에 참여한 노드들이 자신의 서비스를 등록
- 브로드캐스트(Broadcast) 요청 방식 → 특정 데이터를 찾기 위해 네트워크 전체에 요청을 보내고 응답받는 방식
- 예) Napster, Gnutella, Voice over IP(VoIP) such as Skype

*참고
비교 항목 P2P 네트워크 클라이언트-서버 모델
| 중앙 서버 | 없음 (모든 노드가 동등) | 있음 (서버가 클라이언트 요청 처리) |
| 노드 역할 | 모든 노드가 클라이언트 & 서버 역할 수행 | 클라이언트가 요청, 서버가 응답 |
| 확장성 | 매우 높음 (노드 추가로 성능 증가) | 서버 성능이 한계점이 될 수 있음 |
| 예제 | Torrent, Gnutella, Skype | 웹 서버, 데이터베이스 서버 |
Computing Environments
Virtualization
- 하나의 운영체제 내에서 다른 운영체제를 실행할 수 있도록 함
- Host OS : 물리적인 하드웨어에서 실행되는 운영체제
- Guest OS : 가상 머신 안에서 실행되는 운영체제
- Emulation
- 서로 다른 CPU 아키텍처(예: PowerPC → Intel x86)를 변환하여 실행하는 방식
- 일반적으로 속도가 느림 (하드웨어 변환이 필요하기 때문)
- 프로그램이 원래 기계어(Native Code)로 컴파일되지 않을 땐 Interpretation! → 실행 시점에 해석되어 실행됨
- 가상화(Virtualization)
- 운영체제가 CPU용으로 네이티브(Natively) 컴파일되어 실행되며, Guest OS 또한 네이티브로 컴파일되어 실행됨.
- VMware에서 Windows XP Guest를 실행하고, 각각의 게스트 OS에서 애플리케이션을 실행하며, 이 모든 것이 네이티브 Windows XP Host OS에서 동작함.
- VMM(Virtual Machine Monitor, 가상 머신 모니터)이 가상화 서비스 제공 → VMM이 운영체제 간 자원을 분배하여 실행
- multiple OS를 사용하는 laptops, desktops
- Apple laptop : Mac OS X-host, Windows-guest
- multiple systems 없이 multiple OSes를 위한 앱을 만듦 (하나의 물리적 컴퓨터에서 여러 운영체제를 실행할 수 있기 때문)
- multiple systems 없이 QA testing applications(품질 보증 테스트)
- data centers 에서 여러가지 compute environments 실행, 관리
- VMM이 Natively 실행될 수 있음 → VMM이 직접 host 역할을 함
- 일반적인 범용 운영체제 필요 X
- VMware ESX and Citrix Xenserver → 운영체제 없이 직접 하드웨어에서 실행되는 하이퍼바이저(Hypervisor)

- 시스템 환경을 독립적으로 구성
- 서로 다른 환경을 경험해 볼 수 있음
- 속도가 느려짐 (계층이 두꺼워지기 때문)
Cloud Computing
- computing, storage, apps 등을 network를 통해 서비스 형태로 제공
- 분산 시스템의 비즈니스 모델 → 사용한 만큼 비용 지불
- virtualization 기반으로 동작
- 예) Amazon EC2(AWS의 가상 서버 서비스)는 수천 개의 서버, 수백만 개의 가상 머신(VM), 페타바이트(Petabyte) 단위의 스토리지를 제공
- 사용자는 직접 물리적 서버를 운영하지 않고도, 가상 머신(VM)이나 스토리지를 필요할 때만 사용할 수 있음
<클라우드 유형>
- Public / Private / Hybrid (대부분) + Multi
- Public Cloud
- 인터넷을 통해 누구나 이용할 수 있는 클라우드 서비스
- 사용자는 클라우드 제공업체(AWS, Google Cloud, Azure 등)에서 서비스를 사용하고, 사용한 만큼 비용을 지불
- 예: AWS, Google Cloud, Microsoft Azure
- Private Cloud
- 기업이나 조직이 자체적으로 운영하는 클라우드 환경
- 보안과 성능이 중요할 때 사용되며, 외부 사용자 접근 제한
- 예: 금융기관, 정부기관의 내부 클라우드
- Hybrid Cloud
- Public cloud + Private cloud
- 기업이 민감한 데이터는 내부(프라이빗)에 저장하고, 일반 서비스는 퍼블릭 클라우드에서 제공
- 예: 데이터 백업은 퍼블릭 클라우드(AWS S3)에 저장하고, 주요 데이터는 프라이빗 클라우드에 저장.
<클라우드 서비스 유형>
- SaaS(시스템) / PaaS(플랫폼) / IaaS(인프라 제공)
- SaaS (Software as a Service) – 소프트웨어 서비스 제공
- 인터넷을 통해 애플리케이션을 제공하는 모델
- 사용자는 소프트웨어를 설치할 필요 없이, 웹 브라우저에서 바로 사용 가능
- 예: Google Docs, Microsoft 365, Dropbox
- PaaS (Platform as a Service) – 개발 환경(플랫폼) 제공
- 개발자가 애플리케이션을 쉽게 배포할 수 있도록, 미리 구성된 개발 환경(운영체제, 데이터베이스, 미들웨어 등)을 제공
- 예: Google App Engine, AWS Elastic Beanstalk, Heroku
- IaaS (Infrastructure as a Service) – 서버, 스토리지 등 인프라 제공
- 필요한 서버, 네트워크, 저장 공간을 인터넷을 통해 제공하는 서비스
- 사용자는 직접 물리적 장비를 구매할 필요 없이, 가상 서버를 이용 가능
- 예: Amazon EC2(가상 서버), AWS S3(클라우드 스토리지)
- traditional OSes + VMMs + cloud management tools
- 인터넷 연결시 firewalls(방화벽)와 같은 보안 필요
- Load Balancing(부하 분산)을 통해 여러 애플리케이션 간 트래픽을 분산

Real-Time Embedded Systems
- 실시간 처리
- 가장 널리 사용되는 컴퓨터 형태
- Special Purpose 또는 Limited Purpose의 운영체제, 실시간 운영체제(Real-Time OS) 사용
- 사용 범위가 확장되고 있음
- 다양한 특수 컴퓨팅 환경(Special Computing Environments) 존재
- 일부 시스템은 운영체제를 사용하며, 일부는 운영체제 없이 작업 수행
- Real-Time OS는 명확하게 정의된 고정된 시간 제약(Fixed Time Constraints)을 가짐
- 반드시 정해진 시간 내에 처리가 완료되어야 함
- 시간 제약이 충족될 때만 올바르게 동작
Open-Source Operating Systems
- 큰 비용 없이
- Binary 형태의 Close-Source뿐만 아니라 Source Code 형태로도 제공될 수 있음
- Copy Protection 및 Digital Rights Management(디지털 저작권 관리, DRM) 운동에 반하는 개념
- Free Software Foundation(자유 소프트웨어 재단, FSF)이 시작했으며, "Copyleft" 개념을 적용한 GNU Public License(GPL)를 가짐
- 예. GNU/Linux와 BSD UNIX (MAC OS X의 핵심 포함) 등
- Virtual Machine Monitor(가상화 소프트웨어, VMM) 사용 가능
- VMware Player (Windows에서 무료)
- VirtualBox (오픈소스 및 무료, 다양한 플랫폼 지원)
- 이를 이용하여 게스트 운영체제 실행, 탐색 가능
'공부 > 컴퓨터' 카테고리의 다른 글
| [운영체제] 2. Operating-System Structures (0) | 2026.02.28 |
|---|