커널의 개념과 구조

kmb·2022년 1월 1일
0

운영체제

목록 보기
4/5
post-thumbnail

컴퓨터는 크게 HW + SW로 구분되고 SW는 운영체재(OS) + 응용프로그램으로 구분된다.

운영체재(OS)는 커널 + 시스템프로그램 으로 구분 될 수 있는데 여기에서 커널은 다음과 같은 역할을 한다.

<커널 역할>

1) 컴퓨터 자원들을 관리하는 역할. (스케줄링과 연관)
이때 커널은 사용자와 상호작용을 지원하지 않으므로 사용자와의 직접적인 상호작용을 위해서는 시스템 프로그램이 필요로 된다. 대표적인 시스템 프로그램으로는 쉘(Shell) 이라는 명령어 해석기가 있다.

2) 추상화 자원 관리
응용프로그램이 실행되려면 컴퓨터 HW자원(CPU, Memory등)을 사용 할 수 있는 인터페이스가 필요로 되는데 커널이 이를 제공한다. HW자원의 종류가 다양함에도 응용프로그램에게 같은 서비스를 제공하는것을 하드웨어 추상화(HAL, Hardware Abstraction Layer) 라고 한다.

<커널을 구성하는 자원관리자 종류>

1) 태스크 관리자 : 물리적자원인 CPU를 --> 추상적자원인 태스크(task)로 제공
2) 메모리 관리자 : 물리적자원인 메모리를 --> 추상적자원인 페이지(page), 세그먼트(segment)로 제공
3) 네트워크 관리자 : 물리적자원인 네트워크 장치를 --> 추상적자원인 소켓(socket)으로 제공
4) 파일시스템 관리자 : 물리적자원인 디스크를 --> 추상적자원인 파일(file)로 제공
5) 디바이스 드라이버 관리자 : 커널과 HW의 인터페이스를 담당. 커널은 I/O의 기본부분만 제작하고 HW 특성을 반영한 디바이스 드라이버 SW를 HW제작자가 직접만들어서 커널이 실행될때 함께 실행되도록한다.

그런데 커널은 왜 이러한 자원들을 관리할까?

컴퓨터의 구성요소들은 컴퓨터만의 언어와 규칙으로 하드웨어에 접근하고 통신해야하는데 사람들은 컴퓨터 내부의 언어와 규칙을 모르므로 사용자가 HW에 접근하고 사용 할 수 있도록 커널이 중간 매개체 역할을 해준다.

User space의 프로세스가 커널이 관리하는 자원들에 접근하려면 System Call Interface가 Kernel space의 자원관리자에게 요청을 하고 각 자원관리자들은 사용자 요청에 알맞은 HW에 사용자 명령을 전달하고 작업을 수행한다.

<커널구조>

단일형 구조 커널 : 커널의 핵심기능을 구현하는 모듈이 하나로 구성되어있음.
ex) MS-DOS, VMS, 초기 유닉스

계층형 구조 커널 : 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 OS를 구현하는 방식
ex) window 및 오늘날의 대부분 OS

마이크로 구조 커널 : 각 모듈을 세분화하고 프로세스간 통신으로 모듈간의 데이터를 교환한다.
ex) 애플의 OS X , iOS

 

참조

  • 쉽게 배우는 운영체제 (책)
profile
꾸준하게

0개의 댓글