참고
https://www.youtube.com/watch?v=tPWBF13JIVk
리눅스(Linux)는 무엇이고 우분투(Ubuntu)는 무엇인가 - 하나몬
리눅스는 커널이다?!
커널이란?(한번 제대로 알아보자!)

- 컴퓨터는 하드웨어 + 소프트웨어
- 하드웨어 : 모니터, 데스크톱, cpu
- 소프트웨어 : 하드웨어와 반대로 눈에 보이지 않고 손으로 만질 수 없는 것들, 웹 브라우저, ppt 만들 수 있게 도와주는 MSoffice
- 소프트웨어는 응용 프로그램과 운영체제로 나뉜다

- 리눅스 커널은 OS의 중추 역할을 하며 주로 디바이스 관리, 프로세스 관리, 메모리 관리. 시스템 콜 제공과 같은 기능을 가지고 있다. → 컴퓨터 자원을 관리해준다
- 커널은 항상 컴퓨터 자원들만 바라보고 있으며 사용자와 직접적인 상호작용은 하지 않는다. 사용자와 상호작용 하기 위해 필요한 것 → 시스템 프로그램

리눅스 커널의 구조
- 커널의 사전적 의미는 알맹이, 운영체제에 있어 가장 핵심, 운영체제 맨 하층에서 작동되는 소프트웨어이다. 여러 개의 프로세스들을 관리하기 위해 스케줄링 또한 한다.
- 커널의 가장 큰 역할은 컴퓨터의 물리적 자원과 추상화 자원을 관리하는 것이다.
추상화
- 물리적으로 하나 뿐인 하드웨어를 여러 사용자들이 번갈아 사용하게 중재함으로써, 마치 한 개의 하드웨어가 여러개 인 것 처럼 보여지도록 하는 기술.
- 사용자가 하드웨어에 접근하기 위한 방법은 매우 복잡함, 이러한 물리적 자원을 추상화 하여 사용자가 보다 쉽게 접근할 수 있도록 도와주는 것이 커널
리눅스 커널의 주요 기능
- 디바이스 관리
- 프로세스 관리(Task 관리)
- 메모리 관리
- 시스템 콜 제공
디바이스 관리
리눅스 커널은 디바이스 드라이버라는 하드웨어 입출력을 제어하는 소프트웨어를 이용하여 장치를 관리한다.
프로세스 관리
리눅스에서는 프로그램을 실행할 때 파일 시스템 내 특정 디렉토리에 있는 프로그램의 파일을 읽어와 메모리에 적재한다. 이 프로그램이 메모리에서 실행되는 프로세스가 된다. 프로그램이 종료된다며 프로세스 역시 삭제된다.
사용자가 시스템에 로그인하게 되면 보통 약 100여개의 프로세스가 동시에 실행되는데, 프로세스가 이용할 수 있는 CPU는 하나이므로, 여러 프로세스를 동시에 이용할 수는 없다. 따라서 동시에 실행되는 프로세스 간 CPU를 이용할 수 있는 시간을 분해하게 된다. 각 프로세스에는 PID(process id)가 부여되며 커널은 이 PID를 통해 프로세스를 관리하게 된다.
메모리 관리
프로그램이 실행 될 때 메모리에는 프로그램뿐만 아니라 프로그램이 이용하는 데이터 영역 또한 메모리에 할당된다. 사용자 프로그램의 요구에 따라 메모리 영역을 분배하거나 이용이 끝난 메모리 영역 회수 등을 담당하는 것이 커널이 수행하는 메모리 관리이다.
메모리 관리에서는 가상 메모리 또한 지원한다. 가상 메모리라는 것은 이름에서 알 수 있듯이 실제로는 없는 메모리지만, 실제로 존재하는 것처럼 메모리를 사용할 수 있게 해준다. 가상 메모리는 실제 메모리가 아닌 HDD와 같은 보조 기억 장치의 일부도 프로세스가 볼 때에는 같은 메모리인 것처럼 보이게 하기 때문에 실제 내장된 메모리보다 더 큰 용량이 메모리 사용이 가능하다.
커널이 위와 같은 일을 하는 이유
사용자가 물리적인 하드웨어에 접근하고 사용할 수 있도록 매개하기 위해서이다. 컴퓨터만의 언어와 규칙으로 접근하고 통신해야 하는데 일반 사용자들은 하기 힘들다, 커널은 사용자와 컴퓨터 중간에서 상호작용 할 수 있도록 도와주는 번역가이다.
리눅스(커스텀 OS 만들기 가능)
- windows, mac과는 달리 Linux는 실제로 분리되고 잘 정의된 운영 체제가 아님
- linux는 커스터마이즈된 OS를 만들 수 있는 커널이다.
- linux 커널을 기반으로 한다.
- linux 커널을 기반으로 하는 운영 체제 시스템을 linux 배포판이라고 한다.]
- 리눅스는 운영체제이기보다는 커널이다
우분투(Ubuntu)란
- Linux의 배포판이며 개인용 컴퓨터에 적합하다.
- 즉 우분투는 리눅스 커널 기반의 운영체제이다.