컴퓨터 부품들은 전기를 공급한다고 바로 움직이는 것이 아니다!
운영체제라는 특별한 프로그램을 통해 움직인다 🤖
: 프로그램 실행에 있어서 마땅히 필요한 요소
단순히 하드웨어만 이야기 하는 것이 아니다. 패킷 같은 요소들도 자원에 속한다.
모든 프로그램은 자원을 필요로 한다!
: 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램. 유저와 하드웨어 간의 인터페이스 역할을 한다.
프로그램이 실행되려면 반드시 메모리에 적재되어 있어야 한다. 운영체제도 프로그램이기 때문에 메모리에 적재되어야 한다.
➡️ 운영체제는 특별한 프로그램이라서 커널 영역에 따로 적재되어서 실행된다.
: 메모리 관리
: CPU 관리
: 입출력 장치 관리
응용 프로그램과 하드웨어 사이에서 관리하는 역할을 한다고 할 수 있다 👌
운영체제는 프로그램을 위한 프로그램 😊
운영체제가 제공하는 서비스 중에서도 핵심 서비스들이 존재한다. 운영체제의 핵심 서비스를 담당하는 부분을 커널이라고 한다.
유저 인터페이스(GUI, CLI)는 운영체제에 속하지만 커널에 속하지는 않는다.
응용 프로그램은 자원에 직접 접근해서는 안된다!
응용 프로그램이 조금만 실수해도 컴퓨터 전체에 영향을 줄 수 있기 때문이다.
➡️ 운영체제는 응용 프로그램이 자원에 접근하려고 하면 오직 자신을 통해서만 접근하도록 해 자원을 보호한다. (일종의 문지기 💂)
응용 프로그램이 자원에 접근하기 위해서는 운영체제에 도움을 요청한다.(운영체제 코드를 실행)
운영체제의 문지기 역할은 이중모드로 구현된다.
이중모드
: CPU가 명령어를 실행하는 모드
사용자 모드
: 운영체제 서비스를 제공받을 수 없는 실행 모드
응용 프로그램은 기본적으로 사용자 모드로 실행된다.
커널 모드
: 운영체제 서비스를 제공받을 수 있는 실행 모드
자원에 접근 할 수 있다.
언제 사용자 모드, 커널 모드로 바뀌지? 🤔🤔
=> 시스템 호출
시스템 호출(system call)
: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 것
하이퍼바이저 모드
컴퓨터에 가상머신을 설치하게 되면, 가상머신 또한 응용 프로그램이기 때문에 사용자모드로 작동한다.But, 가상머신 속의 응용프로그램이 운영체제 서비스를 사용하려면 커널모드로 전환되어야 하는데, 가상머신의 운영체제도 사용자모드이기 때문에 제공받기 어렵다.
➡️ 하이퍼바이저모드를 두어 운영체제 서비스를 제공 받을 수 있다.