운영체제의 역할
- 운영체제 - 컴퓨터 하드웨어를 관리하는 소프트웨어
- 애플리케이션/사용자와 하드웨어의 중간다리 역할
- 컴퓨터 시스템
- 하드웨어
- 운영체제
- 응용 프로그램
- compiler, assembler, text editor, database system ...
- 사용자
- 일반적인 정의
- 항상 실행되고 있는 프로그램
- 커널이라 부름
- 커널이 시스템 프로그램과 응용 프로그램 사이의 매개역할을 해줌
컴퓨터 시스템 구성
폰 노이만 구조의 컴퓨터 시스템
- CPU는 bus를 통해서 메모리, 외부 장치들과 연결
- RF, 블루투스 등 무선으로도 연결이 가능
- 운영체제가 제어를 해주어야 한다
bootstrap program
컴퓨터를 부팅한다 → bootstrap 한다는 의미
- 전원을 켜면 CPU가 제일 처음으로 로딩해야 할 명령어는 0x00 또는 ROM에 저장해 놓음
- 이 때 불러오는 프로그램이 bootstrap을 해주는 booting용 프로그램
- bootstrap program은 하드디스크에 있는 운영체제를 메모리에 로딩해주는 역할을 수행
Interrupts
- 키보드를 누르면 눌렀다는 것을 CPU에게 알려주어야 함
- 하드웨어가 언제든 interrupt를 트리거할 수 있고,
- I/O에서의 신호를 bus를 통해 CPU에 보내면, CPU가 이를 처리
- Interrupt는 주변 장치와 CPU가 통신하는 방법
von Neumann Architecture
- 명령어-실행 사이클을 가짐
- 명령어를 memory로부터 fetch하여
- 명령어 레지스터(instruction register)에 저장
- 이후, cpu에서 명령어를 처리
- 처리된 결과는 다시 메모리에 저장됨
저장매체
- RAM은 빠르지만, 레지스터와 RAM 중간에 속도가 훨씬 빠른 Cache가 존재
- main memory는 RAM을 의미
- 위로 올라갈수록 속도가 증가
- 아래로 내려갈수록 더 큰 용량의 데이터를 적은 비용으로 저장할 수 있음
I/O 구조
- CPU가 쓰레드를 갖고 있는 상태에서 cache를 통해서 RAM에 접근
- 주변기기는 CPU에 interrupt를 주고 데이터를 주고받음
- DMA(Direct Memory Access)
- CPU를 통하지 않고 디바이스와 디바이스가 직접 통신이 가능
- ex) CPU를 거치지 않고 네트워크에서 받은 동영상을 바로 LCD패널에 띄움
컴퓨터 시스템 구성요소
- CPU - 명령어를 실행하는 하드웨어
- Processor - 하나 이상의 CPU를 갖는 물리적 칩
- Core - 명령어 실행, 산술 및 논리 연산, 메모리 접근, 캐시 관리 등을 수행하는 다양한 기능 블록으로 구성
- Multicore - 여러 개의 core를 갖는 CPU
- Multiprocessor - 여러 개의 프로세서를 갖는 것
Symmetric MultiProcessing(SMP)
- 프로세서가 여러 개 존재
- 메모리는 한 개지만, CPU는 여러 개 존재
- 각 CPU는 각각의 register와 cache를 가짐
Multi-core design
CPU를 여러 개 사용하는 것은 비용적인 부담이 큼
→ CPU 안에 여러 개의 core를 가짐
Multi-programming
- program - 명령어의 집합
- 이전에는 한 개의 프로그램만을 로딩하여 사용, 모두 사용한 후 다른 프로그램을 올려서 사용했음
- Multi-programming은 여러 개의 프로그램을 메모리에 동시에 올리는 것을 의미함
- CPU 사용 효율을 높일 수 있음
Multi-tasking(Multi-processing)
- Multi-programming이 되면, 하나의 CPU를 이용해 여러 개의 작업을 처리할 수 있음
- CPU는 매우 빠른 속도로 작업을 교체하며 수행 → time-sharing, concurrency
CPU scheduling
- Multi-tasking을 하려면 scheduling이 필요
- CPU 효율을 높이는 방법이 무엇인지
operation mode
- 사용자 모드와 커널 모드를 가짐
- 사용자는 시스템 콜을 이용해 운영체제에게 작업을 요청
- 시스템 콜이 일어나면 커널 모드로 전환됨
- 시스템 콜이 처리되면 다시 사용자 모드로 돌아감
- 사용자 모드와 커널 모드를 분할하면 사용자가 하드웨어에 직접적으로 접근하지 못하기 때문에 잘못된 접근을 막을 수 있음
가상화
- 하나의 컴퓨터 위에서 여러 개의 운영체제를 사용할 수 있음
- VMM - Virtual Machine Manager
- 하드웨어와 운영체제 사이에 VMM을 두면 여러 개의 운영체제를 사용할 수 있음
컴퓨팅 환경
- 컴퓨터 및 소프트웨어 시스템의 구성 요소와 설정을 통합하여 컴퓨터에서 작업하는 환경을 의미
- 컴퓨터 및 네트워크 하드웨어, 운영 체제, 응용 프로그램, 라이브러리, 설정 및 사용자 환경과 관련된 모든 것을 포함
- 사용자가 작업을 수행하고 소프트웨어 프로그램을 실행하는 데 필요한 모든 것을 제공
- 종류
- 일반적인 컴퓨팅 환경
- 모바일 컴퓨팅 환경
- 클라이언트-서버 환경
- Peer-to-Peer 환경
- 클라우드 환경
- 실시간 임베디드 시스템 환경(Real Time Operating System, RTOS)
- ...
운영체제가 프로그램에 제공하는 기능
- UI
- 프로그램 실행 → process와 thread
- I/O 처리
- 파일 시스템
- 통신
- 에러 탐지
- 리소스 할당
- 로깅
- 보안
응용 프로그램과 운영체제가 상호작용하는가?
- 시스템 콜을 이용해 운영체제와 상호작용
- 시스템 콜 - OS의 API(Application Programming Interface)
- 하나하나 시스템 콜을 하기 힘들기 때문에 함수를 이용해 시스템 콜을 사용함
- Process Control, File Manipulation, Device Manipulation, ...