프로그램의 종류
- kernel: The operating system component running on the computer at all times after system boot
- system program: A program associated with the operating system but not necessarily part of the kernel.
- user program: User-level programs, as opposed to system programs.
- application program: OS와 연관되지 않은 모든 프로그램 (=user program)
<aside>
💡 operating system = kernel + system program + user interface
</aside>
kernel은 kernel mode에서만 실행된다. user program은 kernel mode와 user mode에서 모두 실행 가능하나 주로 user mode에서 실행된다. user program은 실행 도중에 system call을 호출하여 kernel 기능을 사용한다. 이때 user mode에서 kernel mode로 변경된다.
Mode bit
현재 OS가 제공하는 프로세스 실행 모드가 kernel인지 user인지 구분해주는 값이다. 모드에 따라 사용할 수 있는 기계어는 제한된다.
- 사용자 모드: 사용자 프로그램 수행
제한된 Instruction만 실행가능, 보안상의 목적, 메모리 접근은 가능해도 디바이스 접근은 불가능하다, 접근 가능한것도 제한이 있을 수 있다.
- 모니터 모드(커널모드): 커널 프로그램 수행
운영체제가 CPU에서 실행중일 때, 모든 명령어 허용, 메모리 접근, I/O 디바이스 접근 Instruction도 허용
즉 사용자 프로그램은 잘못된 수행이 가능할 수 있기에 이를 위한 보호 장치가 필요하다. 그게 모드비트이다. 그래서 항상 CPU는 Instruction 실행 전에 모드비트를 확인 후 실행 가능 여부를 판별한다.