커널(Kernel)
- 커널은 OS의 핵심, 운영체제의 다른 부분 및 응용프로그램 수행에 필요한 여러가지 서비스를 제공
- 커널은 보안, 자원 관리, 추상화의 역할을 한다.
- 자원을 효율적으로 관리하기 위해 CPU 스케줄링, 메모리관리, 입출력관리, 파일시스템 관리등의 업무를 수행
커널모드 / 유저모드
유저모드(User mode)
- 응용프로그램이 접근하는 영역을 제한적으로 두고, 프로그램의 자원에 침범하지 못하게 함
- 코드를 작성하고 프로세스를 실행하는 행동을 할 수 있다.
커널모드(Kernel mode)
- OS가 CPU를 쓸 때 사용하며, 모든 자원에 접근과 명령을 할 수 있다.
메모리는 코드를 담는 공간보다 코드를 실행시키는 공간이라 할 수 있다. 코드가 실행될 때 주소값이 할당이 되면서, 메모리 매핑을 하게 된다.
Q. Windows는 어떤 모드일까? 둘다 될 수 있다.
프로세스가 실행 될 때 필요할 때마다 유저모드와 커널모드를 오갈 수 있다.
ex) 어떤 코드에서 function을 실행할 때 system call을 이용해 커널에 요청을 하고, 커널이 그 요청에 대한 일을 수행한 후 결과값을 system call의 리턴값으로 전달한다.
프로그램의 구성 : OS + 어플리케이션
OS도 프로그램이다. 그러나 OS를 일반적인 프로그램과 동일시 하면 문제가 생긴다.
커널 영역의 대표 업무는? 스케줄러 동작, 프로세스 생성, 쓰레드 관리 등이 있다. 커널 영역에 커널 코드가 매핑이 되어서 주소가 할당되어서 메모리를 쓴다.
마찬가지로 유저 영역은 응용 프로그램의 코드에 메모리가 메핑된다. 이 때 유저 영역이 커널 영역의 메모리에 매핑이되면 문제가 생기기 때문에 메모리 접근을 제한한다.
참고
https://www.youtube.com/watch?v=4y5BgddMY7o
'CS지식' 카테고리의 다른 글
면접을 위한 개인적인 정리 (0) | 2022.07.02 |
---|---|
엔드 포인트 보안이란? (0) | 2022.07.02 |