참고 : https://ko.wikipedia.org/wiki
"kernel"은 운영체제의 핵심 부분으로, 시스템의 모든 부분을 통제한다.
< 통신 조절 >
하드웨어와 소프트웨어 사이 정보 교환을 관리 한다.
여기서 소프트웨어는 운영체제의 커널을 포함한 다양한 프로그램을 의미한다. 하드웨어는 CPU,Memory,Disk,Network 장치 등을 포함한다. 프로그램이 실행되면서 발생하는 다양한 요청을 하드웨어로 전달하고, 그에 따른 하드웨어의 반응을 다시 프로그램에 전달하는 것이 통신 조절의 핵심이다. 예를 들어, 프로그램이 파일을 저장하려고 할 때,이 요청은 커널을 통해 디스크에 전달되고, 디스크에서 쓰기 작업이 완료되면 커널이 다시 프로그램에 결과를 알려준다.
< 커널의 자원 관리 기능 >
컴퓨터 시스템의 여러 부분을 관리하고 최적화하는 역할을 한다. 이를 통해 컴퓨터가 원활하게 작동할 수 있도록 한다.
프로세스 스케줄링: 컴퓨터에서 여러 프로그램이 동시에 실행될 때, 커널은 어떤 프로그램에 CPU(중앙처리장치)의 시간을 할당할지 결정합니다. 이것을 '스케줄링'이라고 합니다. 예를 들어, 웹 브라우저를 열고 동시에 음악을 듣는다면, 커널은 CPU 시간을 두 프로그램 사이에서 공정하게 분배합니다.
CPU 시간은 컴퓨터에서 프로그램이 CPU(중앙 처리 장치)를 사용하여 작업을 처리하는 데 소비하는 시간을 의미한다.
컴퓨터에서 여러 프로그램이 동시에 실행되면, CPU는 이들 모든 프로그램에게 시간을 할당해야 한다. 이를 '시분할'이라고 부르며, 이것이 가능하게 해주는 것이 운영체제의 커널이다. 커널은 스케줄러를 통해 CPU의 시간을 어떤 프로그램에게 할당할지 결정한다.
예를 들어, 워드프로세서와 웹 브라우저를 동시에 실행하면 커널은 CPU의 시간을 두 프로그램 사이에서 나누어 준다. 이로 인해 사용자는 두 프로그램이 동시에 실행되는 것처럼 느끼게 된다. 이런 방식을 통해 컴퓨터는 여러 작업을 동시에 처리하는 것처럼 보이는 '멀티태스킹'을 수행한다.
< 메모리 관리 >
커널은 컴퓨터의 메모리를 관리한다. 프로그램이 실행되면, 커널은 해당 프로그램에 필요한 메모리 공간을 할당하고, 프로그램이 종료되면 그 메모리를 회수한다. 이것은 컴퓨터의 메모리를 효율적으로 사용하도록 도와준다.
< 디바이스 드라이버와의 통신 >
커널은 하드웨어(예: 프린터, 마우스, 키보드 등)와 소프트웨어 사이에서 통신을 중개한다. 이를 위해 커널은 디바이스 드라이버라는 특별한 프로그램을 사용한다. 디바이스 드라이버는 특정 하드웨어 장치를 제어하는 방법을 알고 있는 소프트웨어이다.
따라서, 커널의 자원 관리는 컴퓨터 시스템에서 여러 작업이 원활하게 진행될 수 있도록 돕는 중요한 역할을 한다.
< 보안 >
커널은 시스템의 보안을 책임지며, 하드웨어와 프로세스 사이에서 발생할 수 있는 보안 위협을 관리한다.
< 추상화 >
커널은 운영 체제의 복잡한 내부를 감추고, 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇 가지 하드웨어 추상화를 구현한다. 이를 통해 프로그램은 복잡한 하드웨어 세부 사항을 걱정할 필요 없이 자신의 작업에 집중할 수 있다.
Docker 컨테이너는 이러한 커널을 호스트 운영체제와 공유한다.
즉, 컨테이너 내에서 실행되는 프로그램이 하드웨어와의 통신을 요구하면, 이 요구는 호스트 운영체제의 커널을 통해 처리된다. 이로 인해 Docker 컨테이너는 가상 머신과는 달리, 각각의 컨테이너에 별도의 운영체제를 설치할 필요가 없게 되어 자원을 훨씬 더 효율적으로 활용할 수 있다. 결국 Docker 컨테이너는 호스트 운영체제의 커널을 공유함으로써, 각 컨테이너가 독립적인 환경을 유지하면서도 필요한 자원을 최소화하는 데 도움을 준다. 이러한 특성은 Docker 컨테이너가 높은 성능과 효율성을 가질 수 있게 된다.
'Docker' 카테고리의 다른 글
01.Docker Image와 Container (0) | 2023.05.12 |
---|---|
Docker란? (0) | 2023.05.12 |
Devops가 걸어온 길 (0) | 2023.05.11 |
기존 인프라와 차이점/글로벌 인프라/AWS 리전 (0) | 2023.05.11 |