CPU 스케줄링과 프로세스 관리
: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 지원 할당 및 반환을 관리한다.
메모리 관리
: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다.
디스크 파일 관리
: 디스크 파일을 어떠한 방법으로 보관할지 관리한다.
I/O 디바이스 관리
: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.

GUI, 시스템콜, 커널, 드라이버 부분이 운영체제를 지칭한다.
(GUI가 없고 CUI만 있는 리눅스 서버도 있음)
GUI
사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태.
단순 명령어 창이 아닌 아이콘을 마우스로 클릭하여 컴퓨터와 상호작용할 수 있다.
드라이버
하드웨어를 제어하기 위한 소프트웨어
CUI
그래픽이 아닌 명령어로 처리하는 인터페이스
시스템콜
: 운영체제가 커널에 접근하기 위한 인터페이스.
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 쓴다.
유저 프로그램이 I/O 요청으로 트랩(trap)을 발동하면 올바른 I/O 요청인지 확인한 후 유저 모드 -> 커널모드로 변환(시스템콜을 통한)되어 실행된다.
I/O 요청인 fs.readFile()이라는 파일시스템의 파일을 읽는 함수가 실행되었다고 가정
이때 유저 모드에서 파일을읽지 않고 커널 모드로 들어가 파일을 읽고 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램의 로직을 수행한다.

프로세스, 스레드에서 운영체제로 요청을 할 때
시스템콜이라는 인터페이스와 커널을 거쳐 운영체제로 전달된다.
시스템콜은 하나의 추상화 계층이다.
-> 장점: 네트워크 통신이나 데이터베이스 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경쓰지 않고 프로그램을 구현할 수 있다.
modebit
: 시스템 콜이 작동될 때 유저 모드와 커널 모드를 구분지어 주는 것.
modebit은 1 또는 0의 값을 가지는 플래그 변수이다.
I/O 디바이스는 운영체제를 통해서만 작동해야 한다.
카메라를 켜는 프로그램이 있다고 할때, 만약 유저 모드를 기반으로 카메라가 켜진다면 공격자가 카메라를 갑자기 켤 수 있는 등 공격에 취약하다.
커널 모드로 한다고 해서 완벽히 막을 수 있는 것은 아니지만 운영체제를 통해 작동하게 하는 것이 막기가 쉽다.
이를 위한 장치가 modebit이다.
0: 커널 모드 1: 유저 모드
유저 프로그램이 카메라를 이용하려고 할 때
1. 시스템콜 호출
2. modebit 1 -> 0
3. 카메라 자원을 이용한 로직 수행
4. modebit 0 -> 1
5. 이후 로직 수행
유저모드: 유저가 접근할수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
커널 모드: 모든 컴퓨터 자원에 접근할 수 있는 모드
커널: 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.