-S/w와 H/W가 있다.
- high level 언어로 쓰여졌다 ex)C, python, java
- H/W는 오직 low level 언어만 작동할 수 있다, 그럼 high level로 돌아간건 어캐 작동??
- Like OS, Compiler
- OS: H/W를 작동할 수 있게 다양한 추상화를 제공해준다.
- I/O 관리
- 메모리, 저장공간 관리
- 스케줄링
- Compiler
- High level 언어를 기계어로..
- 프로세서, 메모리, I/O 관리..
사용자 응용 프로그램과 컴퓨터 하드웨어 사이의 소프트웨어 계층이다.
Kernal이라고 생각하면 된다.
Single tasking System
multi tasking System
Monolithic kernel(Unix Linux)
Micro kernel (임베디드)
Hybrid kernel()
모든 종류의 프로그램 및 데이터를 일괄적으로 입수하여 처리한다.
모니터 -> 간단한 스케줄러
두개의 오버헤드(추가적으로 자원이 사용되는): 메모리 및 프로세서 시간(모니터를 위해)
여전히 single job => 종종 cpu 이용률이 안좋음
I/O를 하는 시간이 실제 CPU 이용률 보다 훨씬 많음
-> I/O를 어캐 줄일 수 없나??
파이프라인 기법과 같음, CPU활용의 극대화를 위해
I/O의 타입
Memory relocation
Base/Bound register
Memory protection
Concurrency and synchronization
==> Batch = 컴퓨터가 놀지 않게
Multi-programming = I/O할 때 CPU가 안 놀게
앞에서의 기법들을 논리적으로 확장한 것.
시스템 클럭이 인터럽트를 발생시킨다.
만약 프로세스가 메모리에 맞지 않는다면, Swapping이 실행가는하게 만든다.
=> 앞에선 실제 시간을 줄이기 위해서, 이번 기법은 유저에게 착각을 줘 빠르게 느낌
Real time System
시스템이 특정 시간 제약을 보장해야하거나, 지정된 데드라인을 충족해야함.
Hard real-time system
Soft real-time system