운영체제 = 사용자가 실행하는 프로그램을 위한 프로그램
how? 사용자가 실행하는 응용 프로그램의 올바른 실행을 돕고 자원을 할당
운영체제에 도움을 요청한다는 것은 운영체제 코드를 실행한다는 말과 동일하다.
ex. 하드디스크에 데이터 저장하는 응용프로그램 실행하고자하면, OS에게 부탁해야한. 이 말은 OS 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행한다는 것이다.
cpu가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식이다.
사용자 모드
커널 영역의 코드를 실행할 수 없는 모드로, 일반적인 응용 프로그램의 실행 방식이다.
자원에 접근할 수가 없다.
커널 모드
커널 영역의 코드를 실행할 수 있는 모드로 운영체제가 커널 모드로 실행된다.
자원에 접근할 수 있다.
사용자 모드로 실행되는 응용프로그램은 OS가 제공하는 인터페이스인 시스템콜을 통해서 커널모드로 전환하여 자원을 사용할 수 있다.
출처: https://cloudstudying.kr/lectures/189
예시)
1) 하드디스크에 데이터를 저장하는 응용프로그램을 실행하면 사용자 모드로 실행되어 직접 하드디스크에 접근할 수 없다.
2) 시스템 콜을 발생시켜 커널모드로 전환한다.
3) 운영체제 내의 하드디스크에 데이터를 저장하는 코드를 실행한다.
4) 3)과정이 끝나면 다시 사용자 모드로 복귀한다.
1) 프로세스 관리
프로세스: 실행 중인 프로그램
메모리에는 여러 프로세스가 적재되지만, CPU는 한 번에 하나의 프로세스만 실행할 수 있다. 그래서 여러 프로세스를 동시에 실행하기 위한 관리가 필요하다.
2) 자원 접근 및 할당
모든 프로세스는 실행을 위한 자원(CPU, 메모리, I/O)이 필요하다.
3) 파일 시스템 관리
보조기억장치 속 데이터를 어떻게 파일과 디렉토리로 관리하는지
OS가 제공하는 서비스 중 UI는 커널에 포함되지 않음.
cpu의 실행모드가 사용자모드인지 커널모드인지는 플래그 레지스터 내의 슈퍼바이저 플래그를 보면 확인할 수 있다.
커널이란
커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분이다.
하드웨어와 응용 프로그램 사이의 인터페이스 역할을 하며 컴퓨터 자원들을 관리하는 역할이다.
하이퍼바이저 모드
가상화를 지원하는 CPU는 커널모드와 사용자모드 이외에 하이퍼바이저모드를 지원한다.
왜? 가상머신에서 실행하는 프로그램은 사용자 모드로 작동하고, 가상머신에 설치된 운영체제 역시 사용자 모드로 작동하면 커널 모드로의 전환이 어렵다.