OS
운영체제는 사용자와 컴퓨터 사이에서 하드웨어 사이에서 작동하는 시스템이다. 운영체제의 목표는 다음과 같다.
- Performance
- Throughput — jobs/sec
- Utilization — % of time busy
- Response time — sec / job
os는 크게 3개로 나누어진다.
- kernel
- memory resident part of OS, just plain C program
- utility
- command, disk resident part of OS (loaded on demand )
- job
- 유저가 요청하면 메모리에 올라감
- shell (CLI / GUI)
- A special utility. It’s mission is Job Control
- read keyboard input & excute command (interpreter)
- UNIX interface to user. Shell prompt & command
- File
- Sequence of bytes, no other restrictions
- I/O devices are treated as files in Unix, Linux ( /dev )
Kernel - Shell - Utilities
- 처음 컴퓨터가 부팅되면 kernel이 메모리에 올라온다.
- 유저가 터미널을 켜면 shell 이 메모리에 올라온다.
- 커맨드가 입력되면 utility가 메모리에 올라와 실행된다.
Multi-user
리눅스는 윈도우와 달리 multi-user 시스템이다.
이로 인해 리눅스는 자원을 최소화하는 형태를 보인다. 예로 CUI를 들 수 있다. 또한 유저 간 간섭이 되지 않도록 protection 이 중요해진다.
Protection & SystemCall
- 사용자 A의 프로그램이 B의 허용되지 않은 메모리에 접근하여 read, write를 못하게 막아야한다.
- 이를 해결하는 방법으로 응용프로그램 / utility 가 직접 I/O 를 못하게 만들었다.
- 즉 I/O instruction은 커널이 담당하며, systemcall이라는 요청을 통해 수행된다.
- 이때 kernel은 I/O 명령을 검사한 뒤에 실행한다.
응용프로그램과 커널 사이 인터페이스를 systemcall ,
커널과 하드웨어 사이 인터페이스는 driver가 담당한다.