강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터 2급 강좌 : 커널(Kernel)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터 2급 강좌 : 커널(Kernel)



커널(Kernel)


1) 커널의 정의


리눅스를 포함하는 유닉스 시스템은 커널, , 기타 유틸리티 등으로 구성되어 있다.

 

 

 

 

커널은 운영체제의 핵심에 해당되며 하드웨어에 직접 접근하며 컴퓨터 시스템 내의 자원을 관리하고 운영체제의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다.

 

일반적으로 커널은 종료된 입출력 연산 등 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기, 어떤 프로그램들이 어떤 순서로 커널의 처리 시간을 공유할 것인지를 결정하는 스케줄러, 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 슈퍼바이저, 메모리나 저장 장치 내에서 운영체제의 주소 공간을 관리하고 이들을 모든 주변 장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리 관리자 등으로 구성되어 있다.

 

 

 

 

커널의 서비스는 운영체제의 다른 부분이나 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다.

 

 

 

 

 

 

한편, 쉘은 운영체제의 가장 바깥 부분에 위치하고 있으면서, 사용자 명령어에 대한 처리를 담당한다.

 

 

 

 

그런데 어떤 운영체제는 커널과 사용자가 사용하는 쉘 등의 겉모습이 밀접하게 연결되어 있어 따로 분리해 내기가 어렵고 다른 운영체제는 커널을 어느 정도는 따로 떼어내 볼 수 있는데, 리눅스의 경우는 후자에 해당한다.

 

 

 

 

실제로 우리가 일반적으로 리눅스라고 부르는 운영체제는 리눅스라 부르는 커널에 GNU의 여러 시스템 유틸리티들을 연결한 GNU/Linux 시스템을 말한다.

 

일반적으로 리눅스는 커널도 소스코드 형태로 배포된다.

 

 

 

 

따라서 다양한 분야에 자유롭게 개발이 가능하고 임베디드 운영체제로도 사용되고 있다.

 

 

 

 

커널 소스는 모든 배포판에서 바이너리 코드와 함께 제공되며 배포판의 ftp나 리눅스 커널 아카이브(Linux Kernel Archives, https://www.kernel.org/)에서 다운로드할 수 있다.

 

 

 

 

 

 

현재 사용 중인 리눅스 커널의 상세한 정보를 원한다면 “uname a” 명령을 사용한다.

 

 

 

 

그러면 리눅스 커널의 버전, 컴파일 일자, 사용가능한 플랫폼 정보, 라이선스 정보 등을 확인할 수 있다.

 

 

 

 

그리고 “uname r” 명령을 사용하면 리눅스 커널의 버전만 출력된다.

 

 

 

 

 

# uname -a

Linux sulinux 2.6.18-92.el5PAE #1 SMP Fri Feb 20 14:49:44 KST 2009 i686 i686 i386 GNU/Linux

 

 

 

 

2) 커널의 표시 방법 및 의미

리눅스 커널은 다음과 같이 표현된다.

 

 

 

 

 

linux-3.11.3.tar.xz

 

 

 

 

- linux : 패키지명

- 3 : 맨 앞 버전 숫자. 커널의 주버전

- 11 : 중간 버전 숫자. 커널의 부버전

- 3 : 세 번째 버전 숫자. 커널의 패치레벨

 

커널 주 버전

커널의 주된 버전을 의미하며 커널의 기능상 획기적이거나 커다란 변화가 있는 경우에 증가하게 된다.

 

 

 

 

1991년에 0.02 버전이 처음 공개된 후에 1994년에 1.0 버전, 1996년에 2.0 버전이 각각 공개되었다.

 

 

 

 

그런데 1991722일에 발표된 3.0 버전은 중요한 변화는 없었고 리눅스 탄생 20주년을 맞아 버전이 변경되었다.

 

 

 

 

상기한 바와 같이 리눅스 토발즈는 2011530일에 리눅스의 버전 체계가 바뀌었음을 리눅스 커널 메일링 리스트에 발표하고 2011721일에 리눅스 커널 메일링 리스트에 리눅스 커널 3.0의 출판을 정식으로 발표하였는데, 커널 번호를 2.6.x에서 3.0으로 변경하는 것은 특별한 랜드마크가 될 만한 기능이 있다거나 비호환성이 있는 것을 의미하는 것이 아니라고 하면서, 리눅스의 20주년을 기념하여 단순히 불편한 번호체계를 버리는 방법이라고 언급했다.

 

 

 

 

, 이것은 리눅스 커널 3.0이 발표되면서 이전의 번호 체계에 변화가 있다는 것을 의미한다.

 

 

 

 

그렇지만 주버전의 의미는 일단 그대로 유지된다고 볼 수 있다.

 

부버전

리눅스 커널의 중요한 변화이지만 비교적 작은 변화가 있음을 말한다.

 

 

 

 

2.5.x.까지의 커널의 버전 번호 부여 방식은 홀수-짝수로 기술하는 번호 체계에 따라 할당되었는데, 홀수는 개발버전이라는 의미이고 짝수버전은 안정버전이라는 의미였다.

 

 

 

 

그리고 개발 버전보다 한 숫자 위의 버전이 기존의 개발 버전의 정식 버전인 안정 버전으로 발표되었다.

 

 

 

 

물론, 2.6.0-test와 같이 안정 버전의 발표 바로 이전의 테스트 버전이 발표되기도 했다.

 

 

 

 

이 밖에 정식 버전 외의 다른 개발자들이 독립적으로 개발에 참여하는 경우에 ac와 같은 확장자가 더 붙기도 했다.

 

 

 

 

 

 

그런데 2.6.x 부터는 리눅스 커널에 대한 버전 번호 부여 방식이 달라졌는데, 정식 버전과 프리패치 버전(prepatch version)으로 나누어졌다.

 

 

 

 

프리패치 버전은 알파 버전으로서 충분히 테스트되지 않은 코드가 들어 있을 수 있으며, 예전의 개발 버전과 비슷하게 생각할 수 있다.

 

 

 

 

이에 더해 스냅샷 버전(snapshot version)이 함께 배포되었는데 이것은 실시간으로 개발자들의 패치를 반영한 것이었다.

 

 

 

 

 

 

그리고 이러한 커널의 번호 체계는 상기한 바와 같이 리눅스의 20주년을 맞이하여 3.0 번호 체계로 바뀌었고 이후에는 메인라인과 이러한 메인라인 개발버전을 거친 안정버전에 대해 3.x 번호로 순서대로 번호가 붙게 되었다.

 

 

 

 

이 경우 메인라인의 버전이 안정보전보다 높은 숫자가 부여된다.

 

 

 

 

 

패치레벨

리눅스 커널 번호의 세 번째는 커널에 아주 작은 변화가 있음을 말한다.

 

 

 

 

, 이것은 보안 패치, 버그 수정, 새로운 기능 및 드라이버가 커널에 반영될 때마다 변화되어 왔다.

 

 

 

 

그런데 2004년에 리눅스 커널 2.6.0 버전이 출판된 이후에, 커널 개발자들은 출판 및 버전 제도에 대해서 여러 차례의 토론을 가졌고, 궁극적으로 리누스 토발즈와 다른 자들은 더 짧은 시간에 기초한 출판 사이클이 좋을 것이라고 결정했으며, 7년 동안 첫 번째 두 번호들은 “2.6”으로 그대로 유지되고 세 번째 번호가 두달 혹은 세달 이후에 출시되는 새로운 버전의 출판으로 변경되었다.

그리고 패치레벨 아래에 네 번째 번호가 붙는 경우는 해당 커널 버전에 대한 버그와 보안 수정을 설명하기 위해 붙이는데, 이것은 리눅스 커널 2.6.8NFS 코드에서 발견된 보안 오류에 대한 즉각적인 수정을 하면서 (커널에 대한 다른 변경 없이 그 버그에 대한 수정만 한 상태에서) 붙이기 시작했고 이 이후로 새로운 공식 버전 정책으로 채택되었다.

 

메인라인(개발 버전)

리눅스 커널은 3.x 버전으로서 3.0부터 메인라인(mainline)안정 버전으로 나누어졌다.

 

 

 

 

메인라인은 리누스 토발즈에 의해 관리되며, 새로운 기능들이 도입되고 새로운 개발이 시행된다.

 

 

 

 

2~3개월 마다 새로운 메인라인 커널이 발표된다.

 

 

 

 

메인라인 버전 번호는 최신 안정 버전의 다음 번호가 붙는다.

 

한편, 일반에 공개되는 프리패치(prepatch) 또는 RC 커널은 다른 커널 개발자들과 리눅스 매니아들을 위한 메인라인 커널의 공개 버전으로 리누스 토발즈에 의해 유지 및 발표된다.

 

 

 

 

이것은 출판 후보(release candidates)의 의미를 가지며 메인라인 버전 번호의 마지막에 rc로 버전 표시가 된다.

 

 

 

 

20131006일 현재 개발 중인 메인라인 버전은 리눅스 커널 3.12-rc4이다.

 

stable/EOL longterm의 의미

개발 버전인 메인라인은 안정 버전으로 이동한 이후에 EOLlongterm 의 표시가 붙게 된다.

 

 

 

 

리눅스 커널은 몇 가지의 버그 수정 이후에 수명 종료(End of Life)”에 도달할 수 있는데, 이것은 커널 관리자들(kernel maintainer)이 더 이상 이 커널 버전에 대한 버그수정을 발표하지 않을 것임을 의미한다.

 

 

 

 

이것을 줄여서 EOL로 표기한다.

 

 

 

 

따라서 이 표시가 붙은 커널 버전은 다음 버전의 커널을 사용하는 것을 고려해야 한다.

 

 

 

 

그리고 커널에 대해 “longterm” 관리의 의사 표시를 하는 것은 커널 관리자들이 이 커널 버전에 대해서는 더욱 오랜 기간 동안 버그수정을 제공할 것이라는 것을 의미한다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  101 명