[OS] Kernel, System call
CS/OS

[OS] Kernel, System call

커널이란?

운영체제는 현재 소스코드의 수가 천만줄이 넘는 가장 규모가 큰 프로그램 입니다.

규모가 큰 만큼 프로그램에 제공하는 서비스가 매우 다양한데 그중에서도 가장 중요한 부분이 있습니다.

  • 프로세스 관리
  • 자원에 접근 및 할당
  • 파일 시스템 관리
  • 프로그램이 올바르고 안전하게 실행되게 하는 기능

이러한 핵심 서비스를 담당하는 부분을 커널이라 합니다.

 

* 사용자 인터페이스는 운영체제가 제공하는 서비스이지만, 커널에 속한 기능은 아닙니다.


커널은 문지기 역할이다

운영체제는 응용 프로그램이 하드디스크 등 지원에 접근하려 할 때 자신을 통해서만 접근하도록 하여 자원을 보호합니다.

즉, 문지기 역할을 담당합니다.

 

응용 프로그램이 하드디스크에 접근하여 데이터를 저장하려면

1. 우선 운영체제에 도움을 요청해야 하고

2. 운영체제는 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행해 줍니다.

사용자 모드와 커널 모드

사용자 모드는 운영체제 서비스를 사용하지 못하는 실행 모드입니다.

커널 모드는 운영체제 서비스를 제공받아 사용할 수 있는 실행 모드입니다.

 

System call

사용자 모드는 운영체제 서비스를 제공받기 위해서 시스템 호출(System call)을 통해서 커널 모드로 전환할 수 있습니다.

 

응용 프로그램이 하드 디스크에 데이터를 저장하려 합니다.

1. 사용자 모드에서 커널 모드로 전환하기 위해 "하드 디스크에 데이터를 저장"하는 시스템 호출을 발생시켜 커널 모드로 전환합니다.

2. 운영체제는 요청한 해당 명령을 실행함으로써 하드 디스크에 직접 접근합니다.

3. 수행이 끝난 운영체제는 다시 사용자 모드로 복귀합니다.

응용 프로그램의 실행 흐름입니다.

시스템 호출이 발생하면 kernel 영역으로 들어가서 수행하고 다시 사용자 영역으로 복귀한 후 이어서 수행합니다.


참조

 

혼자 공부하는 컴퓨터 구조+운영체제

어려운 컴퓨터 구조와 운영체제의 원리를 누구나 쉽게 이해할 수 있도록 용어와 개념은 한 번 더 풀어쓰고, 적절한 예시와 이해하기 쉬운 그림으로 재미있게 구성했다. 또한 일상 소재를 활용한

m.hanbit.co.kr

'CS > OS' 카테고리의 다른 글

[OS] Process  (0) 2022.10.27