Introduction to OS
What happens when a program runs?
- A running program executes instructions.
- 프로세서는 메모리로부터 명령어를 fetch한다.
- 어떤 명령어인지 Decode한다.
- 명령어에 적혀있는 Opcode 및 Operands를 기반으로 Execute한다.
- 프로세서는 다음 명령어(PC + 4)로 이동하여 동일한 수행을 반복한다.
Von-neunmann의 CPU Architecture (Fetch & Execution Cycle)
Operating System is
Responsible for
- 프로그램을 실행하기 쉽게 (run)
- 프로그램들이 메모리를 잘 활용하도록 (Share)
- 디바이스와 통신할 수 있도록 (Interact)
OS는 시스템이 올바르고 효율적으로 동작하도록 한다.
What is OS?
- 하드웨어를 손쉽게 그리고 효율적으로 사용할 수 있는 Abstraction을 제공한다.
- CPU : Process
- Memory : Address Space
- Disk : File
- Network : Port
- 자원의 공유 및 분배를 위한 Policy를 결정한다.
Policy : FIFO, LRU 등... 설계 결정 (Design Decisions)이 중요
(데이터 센터, 스마트폰에 사용되는 Policy가 다르다.)
Abstraction : Process
Program
- 컴퓨터를 실행 시키기 위한 일련의 순차적으로 작성된 명령어의 모음
- 컴퓨터 시스템의 Disk와 같은 Secondary Storage에 바이너리 형태로 저장되어 있다.
Process
- 실행되고 있는 프로그램의 추상화 (Abstraction)
- PC, Stack, Data Section으로 구현된다.
왜 필요할까?
CPU와 같은 H/W Component로 하여금, 각 Program을 구분하여 인식/실행할 수 있도록 하기 위함

Abstraction : Address Space
Address Space
왜 필요할까?
- Protection Domain : 서로의 공간을 침범할 수 없음 (멀티 프로세스는 예외지만...)

- I/O Device의 관리를 위해서
Abstraction : File
File
- Process에서 읽고 쓸 수 있는 Persistent Storage(비휘발성의, 영구적인)
- 실제 저장되는 위치를 Process는 알지 않음
왜 필요할까?

어디까지가 Process의 Binary Data인지, 해당 Binary Data가 어디에 저장되어 있는지 관리/유지 필요
Abstrcation : Port
Port
- 컴퓨터 시스템이 메시지를 주고 받는 Communication Endpoint
왜 필요할까?
어떤 Process(또는 User)가 통신의 대상인지 구분 필요
- Privacy Issue 포함 (특정 프로세스만 패킷을 볼 수 있다)
Policy
왜 필요할까?
현재 운영체제가 사용되는 영역은 다양하지만, 해당 영역에 따라서 요구되는 것들이 다르다. (ex. 성능, 배터리 소모, 안전 등등)
Software 구분
-
System Software
: 컴퓨터 시스템을 구동시키는 SW (Low-level)
Compiler/Assembler
-
Application Software (High-level)
: 특정 용도로 사용됨
word, Internet Explorer, etc.
운영체제의 특징 (Application과 비교)
OS는 항상 동작
통제 기능으로서, 항상 자원에 대한 관리/감시 활동
- Supervisor Mode == Kernel Mode (<-> User Mode)
eg.
어떤 Process가 어떤 자원을 사용하고 있는지
어떤 Process에 어떤 자원을 할당해 줄 것인지
하드웨어에 대한 제어 기능
- Device Driver
eg.
그래픽 카드를 메인보드에 꽂았을 때, Driver를 설치하여 OS가 H/W를 제어한다. (해당 H/W를 효율적으로 사용)
OS / Kernel
OS와 Kernel에 대한 두 가지 관점
- OS = Kernel
- OS = Kernel + GUI + Library
Kernel
- 운영체제의 핵심 부분으로, 자원 할당, 하드웨어 인터페이스, 보안 등을 담당
GUI
- 그래픽 사용자 인터페이스
eg.
iOS vs Android
Library
- 자주 사용되는 함수들의 집합
eg.
libc, win32.dll
