이 글을 한국외국어대학교 이윤석 교수님의 운영체제 수업을 스스로 복기하고자 작성한 글 입니다.
프로세서(Processor)
- 기본적인 명령어들을 처리하는 논리회로를 의미한다.
- 종류
- CPU : 기억, 연산, 제어 기능을 총괄하는 장치, 컴퓨터가 동작하는 데 필요한 모든 계산 처리
- 보조 프로세서 : CPU의 기능을 보조하는 프로세서
- 마이크로 프로세서 : 소형 디바이스에 장착된 프로세서
- 시간이 흐를 수록 CPU라는 말이 프로세서를 대체하여 “프로세서 == CPU” 라고 봐도 무방하다.
하드웨어 구성 요소(Computer Hardware Organization)

- 크게 CPU, Memory, IO 장치로 이루어짐
- 각 IO 장치마다 Controller 지니고 이를 Simple Bio Processor(단순한 기능을 가진 프로세서)라고도 부른다.
- 주로 IO 장치와 데이터를 주고 받는 기능을 수행
- 프로세서가 IO 장치에 직접 접근하는 것이 아닌 각 장치의 cotroller에 명령, 데이터 등을 보내고 controller가 이를 처리한다.
- Bus
- 하드웨어 구성 요소들 간 신호를 주고 받을 수 있는 회로선
- 128bit, 256bit와 같이 많은 회로선(multiple line)으로 이루어져 있다.
- 종류
- Data Bus : 데이터를 실어 나름
- Adddress Bus : 주소를 실어 나름
- Control(Command) Bus : 제어(명령) 신호를 실어 나(ex. read, write, io status check…)
- Interrupt
- IO 장치에서 어떤 사건이 일어났다는 걸 CPU에게 알려주는 방법
- 하드웨어가 프로세서에게 자신에게 일어나는 사건을 알려주는 방법이다
- Interrupt Handling
- CPU가 특정 프로그램 실행 중 Interrupt가 일어나면 Interrupt로 부터 데이터를 읽어와 이를 처리하는 것
컴퓨터 시스템 구성요소(Computer System Components)

- Hardware
- 기본적인 컴퓨팅 자원을 제공
- CPU, Memory, IO 장치, 통신(Communication) 장치
- Operating System
- 하드웨어 위에 존재하는 소프트웨어
- 하드웨어 자원을 관리하는 관리자(하드웨어의 사용을 제어) 역할 수
- 하드웨어 자원을 OS위에 존재하는 어플리케이션들이 공평하고 효과적으로 사용할 수 있도록 하는 제공자 역할 수행
- 유저들이 컴퓨팅 환경을 자기 혼자 독점해서 사용하는 것과 같은 환상을 제공
- System & Application Programs
- Application Program : 일반 사용자가 자신을 위해 사용하는 프로그램(ex. 한글, 반디집…)
- System Program : 다른 어플리케이션을 도와주는 프로그램(ex. IntelliJ, Pycharm, DBMS…)
- OS 입장에서는 시스템 프로그램이나 어플리케이션 프로그램이나 똑같은 프로세스이다.
- User
1. 사람이 될 수도 있고 기계(통신하는 상대편 컴퓨터)가 될 수도 있다.
OS란?
- Application View

- 하드웨어 자원을 추상화 한 모습(왼쪽 : 하드웨어, 오른쪽 : 추상화 된 객체)
- 어플리케이션이 돌아가기 위한 환경을 제공하는 시스템(like virtual machine)
- 하드웨어 자원들을 논리적인 객체로 어플리케이션에게 제공, 이를 abstract view(추상화)라고 부른다.
- System View
- 하드웨어 자원들을 잘 관리하도록 한다.
- 기능
- Sharing : 여러 프로세스들에게 하드웨어 자원을 제공
- Protection : 프로세스들에게 독립적인 실행 환경을 제공하여 간섭 받지 않도록 한다.
- Fairness : 프로세서들에게 자원을 공정하게 나눠 주는 것
- Efficency : 시스템 전체 자원들이 공평하게 사용되도록 하는 것(ex. CPU만 많이 사용되고 Memory는 사용하지 않는 걸 방지)
- Concurrency(병행성) : 여러 하드웨어 자원들이 동시에 병행해서 수행되는 것(ex. CPU가 연산을 잘 수행하는 동시에 IO장치에서도 디스크 자원을 잘 읽고 있고 Network도 패킷을 잘 주고 받는 환경을 제공하는 것)
- Implementation View

- Highly-Concurrent : 동시에 여러 장치 및 어플리케션의 작업들을 처리한다.
- Event-driven : 이벤트가 발생하면 동작한다. (이벤트가 없으면 가만히 있음)
- Interrupt
- 하드웨어(IO 장치)에서 일어난 사건을 OS에게 알려줌
- Trap
- 어플리케이션이 필요한 OS의 기능을 호출하기 위해 사용하는 명령어
- OS를 보호하기 위해 기본적으로 어플리케이션이 OS를 직접 호출하지 못하도록 구성되어 있다.
- Interrupt와 유사하다.
💡 일상 생활 속 사용하는 모든 장치에는 OS가 들어간다!!
OS History
-
Early System
-
Batch Processing System

- Batch : 일괄 처리, 처리해야 할 작업을 모아뒀다가 한번에 처리, off
- off-line 처리 시스템이다.(실시간 처리와 반대되는 의미)
- Job : 하나의 작업(프로그램)을 프로세스라는 말 대신 job이라고 불렀다.
- 하드웨어(카드 리더기, 프린터)가 성능을 결정
-
Multi Programming System
- 메모리에 여러 개의 작업이 올라가 동시에 처리되는 것처럼 보이게 해준다.
- memroy segementation이 필요해 짐
- IO작업과 CPU 작업을 동시에 수행(overlap)할 수 있게 되었다.
- CPU 작업 중 IO 작업이 들어오게 되면 CPU가 다음 job을 수행
- CPU 활용도가 증가
- OS가 해야 할 일
- Job Scheduling
- Memory management
- CPU Scheduling
- Protection
- Spooling
- 동시에 입출력 장치의 operation이 가능한 것처럼 보여주는 환상
- 각 IO 장치마다 IO buffer를 두고 각각의 프로세스들은 buffer에 작업을 쓰기만 하면 작업을 완료했다가 인지하도록 하는
- 여전히 Batch Processing이었다.
- IC 회로 사용
-
Time Sharing Systems(Multi Tasking System)
- On-line processing이다. ⇒ 사용자와 실시간으로 상호작용
- 실제로는 여러 프로세스가 번갈아가며 cpu를 사용하지만 time-slice가 매우 짧기 때문에 사용자는 동시에 프로그램들이 수행되는 것처럼 인지한다.
- Time-Sharing

- 일정한 시간 단위로 메모리에 올라온 프로세스들이 cpu를 번갈아가며 사용하는 것
- 일정한 시간 단위(이미지의 네모 칸)을 time slice(quantum)이라고 부른다.
- 추가적으로 위 이미지는 round robin scheduling을 보여준다.
💡 Multi Programming Systemr과 Multi Tasking System의 차이는 응답성(사용자의 요청에 대해서 시스템이 반응하는데 까지 걸리는 시간)이다.
-
4세대 컴퓨터
- Microprocessor의 등장
- storage가 커지고 빨라짐
- cpu가 io 장치에도 일을 맡기게 된다.
- ex. 네트워크 패킷을 원래는 cpu가 혼자 처리했는데 현재는 네트워크 프로세서와 함께 처리
- GUI의 등장
- 인터넷과 웹을 지원
- 네트워크와 분산 시스템을 지원
Distributed System
- 네트워크(인터넷) 기반으로 여러 컴퓨터들이 연결된 걸 의미한다.
- 각각의 컴퓨터(노드)들은 자신의 독립적인 메모리를 지닌다.
- 특징
- Resource sharing : 원격에 있는 자원을 사용 가능하다.
- Parallel computing : 여러 프로세스가 동시에 여러 컴퓨터에서 수행된다.
- Reilability : 하나의 컴퓨터가 고장나도 다른 컴퓨터에서 작업을 이어 받아 수행할 수 있다. (백업 기능)
- 사용 예시
- Cloud
- NFS : 원격에 있는 디렉토리를 마치 내 로컬 디렉토리 처럼 사용할 수 있도록 해주는 것
Cloud Computing
- Distributed system의 한 일
- Hypervisor : 가상화를 지원하는 SW
- Virtual machine : Hypervisor가 만든 하나의 인스턴스
- 종류
- Saas : Ms office와 같이 원격에서 sw를 제공하는 것
- LaaS : 네이버 클라우드와 같이 원격의 저장소를 제공하는 것
- PaaS : 구름과 같이 원격 플랫폼을 제공하는 것
- Daas : 컴퓨터를 제공하는 것
Embedded System
- 특수한 장치에 들어있는 작은 OS
- real-time 시스템이다
- 환경에 잘 적응 해야한다.(ex. 온도) - 배터리가 좋아야 한다.
- IOT(Internet of Things)