시스템을 초기화하기 위한 간단한 코드입니다. kernel을 로드합니다. 일반적으로 ROM 또는 EEPROM 에 저장되어 있습니다.
디스크에 있는 커널 코드를 메모리로 이동시킵니다.
커널 밖에서 제공되는 서비스들을 시작합니다.
한 번에 여러 개의 프로그램을 실행하는 것을 지원하는 것 입니다. CPU와 I/O 디바이스는 항상 바쁜 상태여야 합니다. 하지만 하나의 유저만으로는 충족시키기 어렵습니다. 이를 보안하기 위해 Multiprogramming은 jobs(코드와 데이터)는 작업을 정리하여 CPU가 항상 실행 중인 상태로 유지할 수 있도록 도와줍니다.
모든 job은 메모리에 존재해야 합니다. 그리고 하나의 job을 선택하여 실행하는데, 이걸 job scheduling 이라고 합니다.
메모리 최상부에는 커널이 존재하고, 이 후로 프로세스가 들어있는 메모리 구조를 가지고 있습니다.
시간을 아주 짧게 나누고 빠르게 전환하는 것을 의미합니다. 즉, 여러 개의 프로그램이 동시에 실행되는 것처럼 보이도록 하는 것을 말합니다.
실행 중인 프로세스의 메모리 합이 물리적 메모리 합보다 클 경우, swapping을 통해 가상 메모리(virtual memory)를 오가며 실행됩니다.
OS와 다른 시스템 요소들을 보호합니다. User mode
와 Kernel mode
로 나뉩니다. 두 모드는 모드 비트로 구분할 수 있습니다. 모드 비트는 하드웨어가 제공합니다.
시스템 콜을 사용합니다. privileged 명령어는 kernel 모드에서만 실행 가능하게 미리 지정되어 있는 명령어입니다. 시스템 콜을 사용한 모드 전환 과정은 다음과 같습니다.
최대 실행 시간을 지정해두어서 무한 루프에 걸려 자원을 독점하는 상황을 막습니다. 물리적 clock을 사용하여 시간을 카운트 합니다. 카운터와 관련된 명령어는 privileged instruction 입니다. 카운터가 0이 되면 인터럽트를 발생시킵니다.