운영체제란 무엇인가?
하드웨어를 쉽고 효율적으로 사용하게하는 Abstraction을 제공한다.
CPU → Process
- Process별로 Address Space가 분리되어 있다.
Memory → Address Space
Disk → File
Network → Port
자원의 공유 및 분배를 위한 Policy를 결정한다.
- Policy의 예 : Paging의 페이지 교체 알고리즘
- 설계 결정 (Design Decisions)이 중요
- 데이터 센터, 스마트폰에 사용되는 Policy가 다르다.
Abstraction은 왜 필요한가?

Process
Program
- 컴퓨터를 실행시키기 위한 일련의 순차적으로 작성된 명령어의 모음
- 컴퓨터 시스템의 Disk와 같은 Secondary Storage에 바이너리 형태로 저장되어 있다.
- Primary memory(주기억장치)는 RAM처럼 CPU가 직접 접근 가능한 메모리를 말하며, Secondary memory(보조기억장치)는 HDD, SSD, USB, CD, DVD, 플래시 메모리 등을 포함한다.
Process
- 실행되고 있는 프로그램의 추상화(Abstraction)
- process는 Disk에 저장된 프로그램으로부터 변환되어 메모리로 로딩된다.
- Program Counter, Stack, Data Section으로 구현된다.
- PC(Program Counter)는 Process별로 몇번째 명령어에 접근하는지를 나타낸다.
- PC가 없으면 몇번째 명령어를 실행중인지 알 수 없고 동적으로 관리하기 어렵다.
흐름



필요한 이유
- CPU와 같은 Hardware Component로 하여금 각 Program을 구분하여 인식, 실행하게 한다.
- Program이 분리되어야 서로 데이터 유출이 안된다
Address Space
Process가 차지하는 메모리 공간
필요한 이유
- Protection Domain
- 운영체제가 Address space를 분리해 상관없는 Process가 접근하지 못하게 관리한다.(서로의 공간 침범 X)
- 실행 context의 보호
- privacy Issue
- I/O Device의 관리
File
Process에서 읽고 쓸 수 있는 Persistent Storage
- Persistent : 없어지지 않는, 남아있는

- 실제 저장되는 위치를 Process는 알지 않음
필요한 이유
- 어디까지가 Binary Data이고 해당 Binary Data가 어디에 저장되어 있는지 관리/유지 필요
Port
컴퓨터 시스템이 메시지를 주고 받는 Communication Endpoint

- Network를 통해 내부시스템, 외부시스템끼리 정보를 주고 받는다.
- 특정 Process와 통신할 수 있도록 Network를 제공한다.
필요한 이유
- 어떤 Process가 통신의 대상인지 구분해야 한다.
- Privacy Issue
Policy는 왜 필요한가?
현재 운영체제가 쓰이는 영역
- PC(Personal Computer) → 성능
- Server & Data Center → 성능
- Smartphone → 성능 + 배터리 소모
- 자동차 → 안전(시간안에 반드시 처리)
- 원자력 발전소 → 안전
- IoT Systems(TV, 냉장고, 청소기, …) → Privacy
필요한 이유
성능
- 빠른 Device에 고사양 Process 배치, 느린 Device에 저사양 Process 배치
성능 + 에너지
- 배터리 소모
- 사용하지 않는 Program 및 Hardware Resource 종료
안전
Software의 구분
System Software
- 컴퓨터 시스템을 구동시키는 SW
- OS, Compiler, Assembler, Interpreter
Application Software
- 특정 용도로 사용된다.
- Word, Internet Explorer, Game, …
- 매우 다양한 응용프로그램이 존재한다.
Application과 비교한 운영체제의 특징
OS는 항상 동작한다.
Supervisor Mode(통제 기능)으로서, 항상 자원의 관리, 감시 활동을 한다.
- 어떤 Process가 자원을 사용하고 있는지
- 어떤 Process에 어떤 자원을 할당할 것인지
하드웨어에 대한 제어 기능을 한다.
- Device Driver
- 하드웨어를 OS가 완전히 제어할 수 있게 한다.
OS와 Kernel에 대한 두 가지 관점
OS == Kernel
OS == Kernel + GUI + Library
-
Kernel
- 운영체제의 핵심 부분으로, 자원 할당, 하드웨어 인터페이스(스케줄링을 어떻게 할것인가), 보안(보안 단계를 어떻게 할것인가) 등을 담당한다.
- C, C++, 어셈블리어 코드로 이루어져 있다.
-
흐름
- 어플리케이션 요청
- 어플리케이션은 시스템 콜(System Call)을 통해 커널에 특정 작업(예: 파일 읽기, 데이터 출력)을 요청.
- 커널이 장치 드라이버 호출
- 커널은 요청받은 작업이 특정 하드웨어와 관련이 있다면, 해당 장치 드라이버에 요청을 전달.
- 예: 디스크 파일 읽기 → 디스크 드라이버 호출.
- 장치 드라이버가 하드웨어와 통신
- 장치 드라이버는 하드웨어의 레지스터를 직접 제어하거나, 입출력(I/O) 명령을 통해 하드웨어와 상호작용.
- 예: 데이터를 디스크에서 읽어 메모리로 전달.
- 결과 반환
- 장치 드라이버는 작업 결과를 커널로 전달.
- 커널은 해당 결과를 어플리케이션으로 반환.
-
GUI
-
Library
Relation of Hardware, OS, and Application
출처
- 숭실대학교 공영호 교수님 운영체제
- 숭실대학교 이정현 교수님 시스템 보안