맨위로가기

리눅스 커널

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

리눅스 커널은 1991년 리누스 토르발스가 개인용 컴퓨터를 위해 개발을 시작한 운영 체제 커널이다. UNIX에서 영감을 받아 시작되었으며, 현재는 다양한 하드웨어 아키텍처를 지원하는 모놀리식 커널로 발전했다. 초기에는 GPLv2 라이선스를 채택하여 자유롭게 사용 및 배포할 수 있도록 했으며, 전 세계 슈퍼컴퓨터와 안드로이드 운영체제를 포함한 다양한 임베디드 시스템에서 널리 사용되고 있다. 리눅스 커널은 모듈형 구조를 통해 장치 드라이버를 쉽게 추가할 수 있으며, 지속적인 개발을 통해 새로운 기능을 통합하고 있다.

더 읽어볼만한 페이지

  • 모놀리식 커널 - XNU
    XNU는 NeXTSTEP 운영 체제를 위해 개발된 하이브리드 커널로, Mach 커널, BSD 컴포넌트, I/O Kit를 결합하여 macOS, Darwin, iOS 등에서 사용되며 ARM64 및 x86-64 프로세서를 지원한다.
  • 핀란드의 발명품 - 사우나
    사우나는 핀란드에서 유래한 뜨거운 방에서 증기욕을 즐기는 시설 또는 행위로, 건식과 습식으로 나뉘며 혈액 순환 촉진, 스트레스 해소 등의 효과가 있어 전 세계적으로 이용되고 핀란드 문화의 중요한 요소이다.
  • 핀란드의 발명품 - 단문 메시지 서비스
    단문 메시지 서비스(SMS)는 휴대전화로 짧은 텍스트 메시지를 주고받는 서비스이며, 1980년대 초에 시작되어 2세대 이동 통신 시스템에서 표준으로 채택되었고, 개인 간 통신 및 다양한 분야에서 활용되지만 스팸, 스미싱 등의 문제점도 존재한다.
  • 리누스 토르발스 - 리눅스 재단
    리눅스 재단은 리눅스 운영체제 표준화 및 오픈 소스 프로젝트 지원을 위해 설립된 비영리 단체이다.
  • 리누스 토르발스 - 리눅스 배포판
    리눅스 배포판은 리눅스 커널에 다양한 소프트웨어를 묶어 사용자가 운영 체제를 쉽게 사용할 수 있도록 구성한 것이며, 데비안, 레드햇, 슬랙웨어, SUSE, 아치 등 다양한 계열과 목적에 특화된 배포판이 존재한다.
리눅스 커널 - [IT 관련 정보]에 관한 문서
일반 정보
리눅스 커널 3.0.0 부팅 화면
리눅스 커널 3.0.0 부팅 화면
명칭리눅스 커널
종류커널 (모놀리식 커널)
개발
개발자리누스 토르발스
커뮤니티 기여자
프로그래밍 언어C (C11 버전 5.18부터, C89 이전)
러스트 (버전 6.1부터)
어셈블리어
출시
최초 출시일1991년 10월 5일
언어 및 라이선스
사용 언어영어
라이선스GPL-2.0-only와 Linux-syscall-note
웹사이트
웹사이트공식 웹사이트

2. 역사

리누스 토르발스


1991년, 리누스 토르발스핀란드 헬싱키 대학교 컴퓨터 과학부 학생 시절 운영 체제에 대한 단순한 개념들에 대한 작업에 착수했다. 1991년 10월 25일, 토르발스는 유즈넷의 뉴스그룹 comp.os.minix에 자신이 386(486) AT 클론을 위한 자유 운영 체제를 만들고 있다는 글을 게시하였다.[343]

이후 수많은 사람들이 해당 프로젝트에 코드를 기여하였다. 초기에 MINIX 커뮤니티는 리눅스 커널에 코드와 아이디어를 기여하였다. 당시 GNU 프로젝트는 자유 운영 체제에 필요한 구성 요소들 중 다수를 만들어냈지만 자체 커널 GNU 허드는 완전하지 않았고 이용이 불가능했다. BSD 운영 체제는 법적 문제로부터 자유롭지 못했다. 초기 버전의 제한적인 기능에도 불구하고 리눅스는 급속도로 개발자들과 사용자들을 모아나갔다.

1991년 9월, 리눅스 커널 버전 0.01이 핀란드 대학교와 FUNET(리서치 네트워크)의 FTP 서버(ftp.funet.fi)에 공개되었다. 1991년 10월에는 버전 0.02가 출시되었다.[344] 1991년 12월, 리눅스 커널 0.11은 셀프 호스팅이 되는 최초 버전으로, 동일한 커널 버전을 실행 중인 컴퓨터에서 컴파일할 수 있었다. 1992년 2월, 토르발스는 상업적 배포를 허가하지 않았던 자체 라이선스 대신 GNU GPL을 채택했다.[345]

1992년 1월, 새로운 뉴스그룹 alt.os.linux가 개설되었고,[346] 3월에는 comp.os.linux로 이름이 변경되었다.[347] X 윈도 시스템이 리눅스에 포팅되면서, 1992년 3월 리눅스 버전 0.95는 X를 실행할 수 있는 최초 버전이 되었다.

1994년부터 리눅스 커널은 1.x, 2.x, 3.x, 4.x, 그리고 5.x 이후 버전까지 주요 버전 업그레이드를 거쳤다. 각 버전별 주요 변경 사항은 다음과 같다.

버전출시일주요 특징
1.0.01994년 3월 14일배포 환경에 적합한 최초 버전[345]
1.2.01995년 3월코드 줄 수 310,950줄
2.x1996년 6월 9일SMP 지원, 다양한 프로세서 유형 지원,[31] IBM 메인프레임 패치(2.2.13, 1999년 12월 18일),[32] 새로운 파일 시스템 추가[31]
2.2.01999년 1월 25일1,800,847 줄[30]
2.4.02001년 1월 4일3,377,902 줄[33]
2.6.02003년 12월 17일5,929,913 줄[35]
3.x2011년 7월 21일커널 20주년 기념,[348] i386 프로세서 지원 제거(3.7, 2012년 12월),[410][411] ARM 프로세서 지원 통합(3.7),[412] `O_TMPFILE` 플래그, AMD 라데온 동적 전력 관리, zswap 등 추가(3.11, 2013년 9월 2일)[413][414]
4.x2015년 4월라이브 커널 패치 기반 통합[402][403][404]
5.x 이후2019년AMD Radeon FreeSync 및 NVIDIA Xavier 디스플레이 지원, Btrfs 파일 시스템에서 스왑 파일 지원 복원 등[57][58]



2004년부터는 릴리스 프로세스가 변경되어 2~3개월마다 정기적인 일정에 따라 새로운 커널이 출시되었다.

리눅스 커널은 다양한 하드웨어 아키텍처를 지원하며, 독점 소프트웨어를 포함한 소프트웨어를 위한 공통 플랫폼을 제공한다.

2. 1. 초기 개발



1991년, 핀란드 헬싱키 대학교컴퓨터 과학부 학생이었던 리누스 토르발스는 개인용 컴퓨터를 위한 운영 체제 개발을 시작했다.[10] 그는 x86 어셈블리 언어로 태스크 스위처를 작성하고 터미널 드라이버를 개발하는 것으로 시작했다.[10]

1991년 8월 25일, 토르발스는 뉴스 그룹인 ''comp.os.minix''에 다음과 같은 글을 게시했다.[11]

> 386(486) AT 클론을 위한 (자유) 운영 체제를 만들고 있습니다.(취미일 뿐이며 gnu처럼 크고 프로페셔널하진 않아요) 4월부터 진행 중이며 준비 작업을 시작하고 있습니다. minix에서 제 운영 체제가 무언가를 닮았는지(타당한 이유로 파일 시스템의 동일한 물리적 설계), 사람들이 좋아하고 싫어하는 바에 대한 의견을 바랍니다.

>

> 저는 현재 bash(1.08)와 gcc(1.40)을 포팅하였으며 동작하는 것으로 보입니다. 이 말은 수개월 안에 뭔가 실용적인 것을 하겠다는 이야기입니다. (중략) 그래요, minix 코드는 모두 자유이고 멀티스레드 fs가 포함됩니다. 포팅은 불가능하며(386 태스크 교환 등을 사용) AT 하드디스크 외에는 다른 것들은 지원하지 않을 겁니다. 왜냐하면 제가 가진 것이 그게 다거든요. :-(.

1991년 9월, 리눅스 커널 버전 0.01이 핀란드 대학교와 FUNET(리서치 네트워크)의 FTP 서버(ftp.funet.fi)에 공개되었다. 10,239줄의 코드였다.[344] 1991년 10월, 토르발스는 리눅스 첫 "공식" 버전인 버전 0.02를 발표했다.[344]

리눅스는 많은 개발자, 특히 MINIX 커뮤니티가 프로젝트에 기여하면서 빠르게 성장했다. 당시 GNU 프로젝트는 자유 운영 체제에 필요한 구성 요소들 중 다수를 만들어냈지만 자체 커널 GNU 허드는 완전하지 않았고 이용이 불가능했다.

토르발스는 커널이 아직 일반적인 용도로 사용될 의도가 아니라는 것을 나타내기 위해 주 버전 번호를 0으로 표시했다. 1991년 12월에 출시된 버전 0.11은 셀프 호스팅이 되는 최초 버전이었으며 리눅스 커널 0.11은 동일한 커널 버전을 실행 중인 컴퓨터에 의해 컴파일할 수 있었다. 토르발스가 1992년 2월에 버전 0.12를 출시하였을 때 상업적 배포를 허가하지 않았던 자신의 과거 자체 초안 라이선스를 넘어서서 GNU GPL을 채택했다.[345]

1992년 1월 19일, 새로운 뉴스그룹 alt.os.linux에 첫 게시글이 제출되었다.[346] 1992년 3월 31일, 뉴스그룹 이름은 comp.os.linux로 바뀌었다.[347]

2. 2. GNU 프로젝트와의 결합

리누스 토르발스가 개발한 리눅스 커널은 초기에 MINIX 커뮤니티의 코드와 아이디어 기여를 받았다. 당시 GNU 프로젝트는 자유 운영 체제에 필요한 여러 구성 요소들을 만들었지만, 자체 커널인 GNU 허드는 완성되지 않아 사용할 수 없었다.[343] BSD 운영 체제는 법적인 문제에서 자유롭지 못했다. 이러한 상황에서 리눅스 커널은 제한적인 기능에도 불구하고 빠르게 개발자와 사용자를 모았다.

리누스 토르발스는 1992년 2월, 상업적 배포를 허가하지 않았던 자체 라이선스 대신 GNU GPL을 채택했다.[345] 이는 리눅스 커널이 GNU 프로젝트의 구성 요소들과 함께 사용되고 배포될 수 있는 길을 열었다. GNU 프로젝트의 운영체제 구성 요소들과의 결합은 자연스럽게 이루어졌다.

이 결합은 자유 소프트웨어 운동에 큰 영향을 미쳤다. GNU 프로젝트의 도구들과 리눅스 커널의 결합으로 완전한 자유 운영 체제가 탄생했으며, 이는 현재 GNU/리눅스로 알려져 있다.

2. 3. 타넨바움-토르발스 논쟁

MINIX 개발자 앤드루 타넨바움리누스 토르발스는 리눅스가 마이크로커널이 아닌 모놀리딕 커널이라는 점을 두고 논쟁을 벌였다.[353] 이 논쟁은 1992년 유즈넷 토론 그룹 comp.os.minix에서 시작되었으며, 주로 리눅스와 커널 아키텍처에 관한 내용이었다.[354] 타넨바움은 마이크로커널이 모놀리딕 커널보다 우수하므로 리눅스는 구식이라고 주장했다. 반면 리눅스는 전통적인 모놀리딕 커널과 달리 장치 드라이버를 적재 가능 커널 모듈로 쉽게 구성할 수 있어 시스템을 실행하는 중에도 적재하거나 해제할 수 있다는 장점이 있었다. 이 주제는 2006년 5월 9일에 다시 논의되었고,[355] 2006년 5월 12일 타넨바움은 긍정적인 문장을 썼다.[356]

2. 4. 버전 발전과 주요 기능 추가

리누스 토르발스는 1991년 핀란드 헬싱키 대학교 컴퓨터 과학부 학생 시절 운영 체제 개발을 시작했다.[343] 그는 x86 어셈블리어와 터미널 드라이버의 문맥 교환기를 만드는 것으로 시작했다. 같은 해 10월 25일, 토르발스는 유즈넷 뉴스그룹 comp.os.minix에 자신의 운영 체제가 MINIX와 유사하며, bash와 gcc를 포팅했다고 알렸다.[343]

이후 수많은 사람들이 코드 기여를 통해 프로젝트에 참여했다. 초기에는 MINIX 커뮤니티가 코드와 아이디어를 제공했고, 당시 GNU 프로젝트는 자유 운영 체제에 필요한 구성 요소 대부분을 만들었지만 자체 커널 GNU 허드는 미완성이었다. BSD 운영 체제는 법적 문제에서 자유롭지 못했다. 초기 버전의 제한적인 기능에도 불구하고 리눅스는 빠르게 개발자와 사용자를 확보했다.

1991년 9월, 리눅스 커널 버전 0.01이 핀란드 대학교와 FUNET(리서치 네트워크)의 FTP 서버에 공개되었다.[344] 1991년 12월, 리눅스 커널 0.11은 셀프 호스팅이 되는 최초 버전으로, 동일한 커널 버전을 실행 중인 컴퓨터에서 컴파일할 수 있었다. 1992년 2월, 토르발스는 상업적 배포를 허가하지 않았던 자체 라이선스 대신 GNU GPL을 채택했다.[345]

1992년 1월, 새로운 뉴스그룹 alt.os.linux가 개설되었고,[346] 3월에는 comp.os.linux로 이름이 변경되었다.[347] X 윈도 시스템이 리눅스에 포팅되면서, 1992년 3월 리눅스 버전 0.95는 X를 실행할 수 있는 최초 버전이 되었다.

1994년부터 2003년까지 1.x, 2.x 버전대가 출시되며 다양한 기능이 추가, 개선되었다. 2004년을 기점으로 릴리스 프로세스가 변경되어 2~3개월마다 정기적인 일정에 따라 새로운 커널들이 출시되기 시작했으며, 2.6.0부터 2.6.39까지의 버전 번호가 부여되었다.

2011년, 토르발스는 리눅스 커널 3.0을 발표하며 "2.6. 시대는 끝났다"고 선언했다.[348] 이는 커널의 20주년을 기념하는 상징적인 의미였다.[349][350]

2015년에는 4.x 버전대가 출시되었다. 2.6.39에서 3.0, 3.19에서 4.0으로의 번호 변경은 큰 기술적 차이를 의미하지 않았고, 주 버전 번호는 부 버전 번호가 지나치게 커지는 것을 막기 위해 증가했다.[348][415]

2019년 3월, 리누스 토르발스는 커널 버전 4.22를 대신 5.0으로 번호 매길 것이라고 발표했다.[56]

GCC는 리눅스 커널 소스의 기본 컴파일러이다. 2004년, 인텔자사의 C 컴파일러가 컴파일할 수 있도록 커널을 수정했다고 주장했다.[367] 2010년 이후, C 언어의 다른 컴파일러인 클랭으로 리눅스 커널을 빌드하려는 노력이 진행되고 있다.[370] 2014년 4월 기준으로 공식 커널은 대부분 클랭으로 컴파일이 가능하다.[371][372]

2. 4. 1. 1.x 버전

1994년 3월 14일, 리눅스 커널 1.0.0이 176,250줄의 코드로 출시되었다.[345] 이는 배포 환경에 적합하다고 여겨진 최초의 버전이었다. 1995년 3월에는 리눅스 커널 1.2.0이 출시되었으며, 코드 줄 수는 310,950줄로 늘어났다.

1.x 버전은 리눅스 커널의 초기 안정화 버전으로, 기본적인 기능을 제공하고 다양한 하드웨어 플랫폼에 대한 지원을 시작했다는 의미를 가진다.

2. 4. 2. 2.x 버전

1996년 6월 9일, 리눅스 커널 버전 2가 출시되었다. 버전 2의 주요 변경 사항은 다음과 같다.

  • SMP 지원: 여러 개의 프로세서를 활용하여 시스템 성능을 향상시킬 수 있게 되었다.
  • 더 많은 프로세서 유형 지원: 다양한 종류의 프로세서에서 리눅스 커널을 사용할 수 있게 되었다.
  • m68k, PowerPC, Sparc64, Alpha 및 기타 64비트 플랫폼 지원 추가[31]
  • IBM 메인프레임 패치(2.2.13용) 게시: 리눅스 커널이 기업급 머신에서 사용될 수 있게 허용[32]
  • 새로운 파일 시스템 추가: Microsoft의 NTFS 읽기 전용 기능 포함[31]


1999년 1월 25일에는 리눅스 커널 2.2.0이 릴리스되었고(1,800,847 줄)[30], 2001년 1월 4일에는 리눅스 커널 2.4.0이 릴리스되었다(3,377,902 줄).[33] 2003년 12월 17일에는 리눅스 커널 2.6.0이 릴리스되었다(5,929,913 줄).[35]

2004년부터는 릴리스 프로세스가 변경되어 2~3개월마다 정기적인 일정에 따라 새로운 커널이 출시되기 시작했으며, 번호는 2.6.0, 2.6.1부터 2.6.39까지 이어졌다.

2. 4. 3. 3.x 버전

2011년 7월 21일, 토르발스는 리눅스 커널 3.0 릴리스를 발표하면서 "2.6. 시대는 끝났다"고 선언했다.[348] 이는 리눅스 2.6.39에 비해 큰 기술적 변화를 의미하는 것은 아니었으며,[349] 커널의 20주년을 기념하기 위한 것이었다.[350] 시간 기반 릴리스 프로세스는 동일하게 유지되었다.

2012년 12월, 토르발스는 i386 프로세서 지원을 제거하여 커널 복잡도를 줄이기로 결정했고, 이로써 3.7 커널 시리즈가 오리지널 프로세서를 지원하는 마지막 버전이 되었다.[410][411] 같은 시리즈는 ARM 프로세서 지원을 통합하였다.[412]

2013년 9월 2일에 출시된 버전 3.11에는[413] 임시 파일 취약성을 줄이기 위한 `O_TMPFILE` 플래그, 실험적인 AMD 라데온 동적 전력 관리, 레이턴시가 적은 네트워크 폴링, zswap(압축된 스왑 캐시) 등의 새로운 기능이 추가되었다.[414]

2.6.39에서 3.0, 3.19에서 4.0으로의 번호 변경은 의미 있는 기술적 차이를 수반하지 않았다. 메이저 버전 번호는 커다란 마이너 번호를 회피하기 위해 증가시킨 것이다.[348][415]

2. 4. 4. 4.x 버전

2015년 4월 12일, 리눅스 커널 메인라인에 커널 버전 4.0이 출시되면서 라이브 커널 패치를 위한 최소한의 기반이 통합되었다.[402][403][404] 이 기반은 주로 커널의 ftrace 기능을 활용하며 "livepatch"라는 이름으로 불렸다. kGraft와 kpatch를 통해 핫 패치를 지원하기 위한 공통 코어를 형성했는데, 이는 핫 패치를 포함하는 커널 모듈을 위한 응용 프로그램 이진 인터페이스(ABI)와 사용자 공간 관리 유틸리티를 위한 API를 제공하는 방식으로 이루어졌다. 그러나 리눅스 커널 4.0에 포함된 공통 코어는 x86 아키텍처만 지원했고, 핫 패치 적용 시에도 함수 수준의 일관성을 보장하는 메커니즘은 없었다. 2015년 4월 기준으로, kpatch와 kGraft를 리눅스 커널 메인라인에서 제공하는 공통 라이브 패치 코어로 이식하는 작업이 진행되고 있었다.[402][403][404]

2015년 4월, 토르발스는 커널 버전 4.0을 출시했다.[26] 2015년 2월까지 리눅스는 1,200개 이상의 회사에서 약 12,000명의 프로그래머들의 기여를 받았다.[54] 2015년 6월에 출시된 리눅스 버전 4.1은 약 14,000명의 프로그래머가 기여한 1,950만 줄 이상의 코드를 포함하고 있다.[55]

2.6.39에서 3.0으로, 3.19에서 4.0으로의 버전 번호 변경은 큰 기술적 차이를 의미하지 않았다. 주 버전 번호는 단순히 부 버전 번호가 지나치게 커지는 것을 막기 위해 증가했다.[45][51]

2. 4. 5. 5.x 이후 버전

AMD Radeon FreeSync 및 NVIDIA Xavier 디스플레이 지원, Btrfs 파일 시스템에서 스왑 파일 지원 복원, 인텔 Icelake Gen11 그래픽 및 NXP i.MX8 SoC에 대한 지속적인 작업과 같은 주요 추가 기능을 특징으로 한다.[57][58] 토르발스는 이 릴리스가 나머지 릴리스보다 눈에 띄게 커서 "5.0 릴리스 전체의 변경 사항이 훨씬 더 크다."라고 언급했다.[56]

총 1,991명의 개발자 중 334명이 처음으로 참여하여 버전 5.8에 553,000줄 이상의 코드를 추가하여 이전에 버전 4.9가 보유했던 기록을 깼다.[59]

2. 5. 대중화

리눅스 커널은 스마트 TV, 셋톱 박스, 웹캠 등 다양한 임베디드 장치에 널리 사용된다.[360] 많은 데스크톱 리눅스 배포판들이 리눅스 커널을 포함하지만, 이러한 배포판들의 사용률은 다른 운영 체제에 비해 낮은 편이다.

안드로이드 운영 체제는 리눅스 커널을 사용하며, 안드로이드의 인기로 인해 리눅스 커널은 모바일 장치에서 가장 많이 사용되는 운영체제가 되었고, 다른 모든 운영 체제의 설치 기반과 경쟁하게 되었다.[357][358][359] 2014년 말 기준으로, 과거 판매량을 포함하여 30억 대의 안드로이드 스마트폰이 판매된 것으로 추정된다.

2019년 Stack Overflow의 연례 개발자 설문 조사에 따르면, 전체 응답자의 53% 이상이 리눅스용 소프트웨어를 개발했으며, 약 27%가 안드로이드용 소프트웨어를 개발했다.[60] 다만, 리눅스 기반 운영 체제로 개발하는 경우는 약 25%에 불과했다.[61]

대부분의 웹사이트는 리눅스 기반 운영 체제에서 실행되며,[62][63] 세계에서 가장 강력한 슈퍼컴퓨터 500대 모두 리눅스 기반의 운영 체제를 사용한다.[64]

안드로이드는 리눅스 커널을 기반으로 하며, 모바일 장치 운영 체제의 대부분을 차지하고 있다.[65][66][67] 임베디드 장치에서의 사용 증가로 인해 안드로이드는 전체적인 리눅스 사용 증가에 큰 영향을 미치고 있다.[18]

3. 구조

리눅스 커널은 선점형 멀티태스킹(사용자 모드 및 2.6 시리즈 이후 커널 모드[361][362]), 가상 메모리, 공유 라이브러리, 디맨드 로딩, 공유 카피 온 라이트 실행 파일(KSM), 메모리 관리, 인터넷 프로토콜 스위트, 스레딩을 지원하는 모놀리딕 커널이다.

장치 드라이버와 커널 확장 기능은 커널 공간(CPU 구조에서 링 0)에서 실행되며 하드웨어에 대한 모든 접근 권한을 가진다.[363][364] 그러나 FUSE/CUSE 기반 파일 시스템, UIO의 일부 등 예외도 존재한다.[363][364] 대부분의 사용자가 리눅스와 함께 사용하는 그래픽스 시스템은 커널 내에서 실행되지 않는다.

표준 모놀리딕 커널과 달리 장치 드라이버는 쉽게 모듈로 구성되어 시스템 실행 중에 로드 및 언로드될 수 있다. 또한, 특정 조건에서 장치 드라이버는 선점될 수 있는데, 이는 하드웨어 인터럽트를 정확하게 처리하고 대칭형 다중 처리를 더 잘 지원하기 위해 추가된 기능이다.[362] 리눅스 커널은 자체적으로 바이너리 커널 인터페이스가 없다.[365]

하드웨어는 파일 계층에 통합되어 있으며, 장치 드라이버는 /dev 또는 /sys 디렉터리의 엔트리를 통해 사용자 애플리케이션과 통신한다.[366] 프로세스 정보는 /proc 디렉터리를 통해 파일 시스템에 매핑된다.[366]

유저랜드와 커널 공간 간 리눅스의 다양한 계층은 다음과 같다.

유저랜드와 커널 공간 간 리눅스의 다양한 계층
사용자 모드사용자 애플리케이션예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등.
저수준 시스템 구성 요소:시스템 데몬:
systemd, runit, logind, networkd, PulseAudio, ...
윈도 시스템:
X11, Wayland, SurfaceFlinger (안드로이드)
기타 라이브러리:
GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등.
그래픽스:
메사, AMD 카탈리스트, ...
C 표준 라이브러리open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수)
glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등.
커널 모드리눅스 커널stat, splice, dup, read, open, ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출)
리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI)는 POSIX/SUS 호환을 목표로 함
프로세스 스케줄링
하위 시스템
IPC
하위 시스템
메모리 관리
하위 시스템
가상 파일
하위 시스템
네트워크
하위 시스템
기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터
리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥
하드웨어 (CPU, 주 메모리, 데이터 기억 장치 등)


3. 1. 모놀리식 커널과 모듈

리눅스 커널은 겉보기에는 모순되지만, 모놀리식 커널과 모듈형(modular) 방식을 모두 사용한다. 커널은 전체 OS가 커널 공간에서 실행되기 때문에 아키텍처적으로 모놀리식 커널로 분류된다.[8][163] 또한, 런타임에 로드 및 언로드되는 경우가 있는 모듈로 구성할 수 있기 때문에 모듈형 디자인이다.[8][163] 이는 비(非)자유 운영 체제의 폐쇄 소스 커널에서만 사용할 수 있었던 기능을 지원한다.

표준 모놀리식 커널과 달리 장치 드라이버는 모듈로 쉽게 구성되며, 시스템이 실행되는 동안 로드 또는 언로드될 수 있으며, 하드웨어 인터럽트를 올바르게 처리하고 대칭 멀티프로세싱을 더 잘 지원하기 위해 특정 조건에서 선점될 수도 있다.[170]

다음은 리눅스 커널의 아키텍처 설계 및 주목할 만한 기능에 대한 개요이다.

  • 여러 프로세스가 동시에 실행될 수 있는 동시 컴퓨팅 및 (실행 준비가 된 작업에 충분한 CPU 코어가 있는 경우) 심지어 진정한 병렬 실행 (각각 하나 이상의 실행 스레드를 가짐) on SMP 및 NUMA 아키텍처.
  • 수백 가지 커널 기능 및 드라이버 선택 및 구성 (빌드 전에 `make *config` 명령군 중 하나를 사용),[164][29][28] 부팅 전에 커널 매개변수 수정 (일반적으로 GRUB2 메뉴 줄에 지침 삽입), 런타임에 커널 동작 미세 조정 (`sysctl(8)` 인터페이스를 사용하여 `/proc/sys/`).[165][166][167]
  • 태스크 스케줄러의 정책 구성 ( `make *config` 명령을 사용) 및 런타임 수정[168] (`nice(2)`, `setpriority(2)`, 및 `sched_*(2)` 시스템 호출 제품군을 통해)를 통해 선점형 멀티태스킹을 허용 (사용자 모드와 2.6 시리즈 이후 커널 모드 모두에서[169][170]); 가장 빠른 적격 가상 데드라인 우선 스케줄링 (EEVDF) 스케줄러,[171]는 2023년부터 리눅스의 기본 스케줄러이며 O(log n) 시간 복잡도로 프로세스 정보(task struct)를 검색, 삽입, 삭제할 수 있는 레드-블랙 트리를 사용하며, 여기서 ''n''은 실행 가능한 태스크 수이다.[247][172]
  • 페이지 가상 메모리를 사용한 고급 메모리 관리.
  • 프로세스 간 통신동기화 메커니즘.
  • 여러 개의 구체적인 파일 시스템( ext4, Btrfs, XFS, JFS, FAT32 등) 위에 있는 가상 파일 시스템.
  • 구성 가능한 I/O 스케줄러, 특수 파일의 기본 장치 매개변수를 조작하는 `ioctl(2)`[173] 시스템 호출 (인수, 반환 및 의미가 해당 장치 드라이버에 따라 다르므로 표준 시스템 호출이 아님), POSIX 비동기 I/O 지원[174] (하지만, 멀티스레드 애플리케이션에서 성능이 저하되므로, 동시 처리에 적합한 비동기 I/O 컨텍스트 관리를 위해 리눅스 고유의 I/O 시스템 호출 제품군 (`io_*(2)`[175])을 만들어야 했음).
  • OS 수준 가상화 ( Linux-VServer 사용), 반가상화 및 하드웨어 지원 가상화 ( KVM 또는 Xen 사용, QEMU를 하드웨어 에뮬레이션에 사용);[176][177][178][179][180][181] Xen 하이퍼바이저에서 리눅스 커널은 사용자 가상 머신(''DomU'')에 대한 관리 환경을 제공하는 가상 머신 호스트 서버인 ''Dom0''으로 작동하는 리눅스 배포판(openSUSE Leap 등)을 구축하는 데 대한 지원을 제공한다.[182]
  • VFIO 및 SR-IOV를 사용한 I/O 가상화. 가상 기능 I/O(VFIO)는 보안 메모리(IOMMU) 보호 환경에서 사용자 공간에 직접 장치 접근을 노출한다. VFIO를 사용하면 VM 게스트가 VM 호스트 서버의 하드웨어 장치에 직접 접근할 수 있다. 이 기술은 전체 가상화 및 반가상화와 비교하여 성능을 향상시킨다. 그러나 VFIO를 사용하면 장치를 여러 VM 게스트와 공유할 수 없다. 단일 루트 I/O 가상화(SR-IOV)는 VFIO의 성능 이점과 장치를 여러 VM 게스트와 공유할 수 있는 기능(하지만 둘 이상의 VM 게스트에 서로 다른 장치로 나타나도록 할 수 있는 특수 하드웨어가 필요함)을 결합한다.[183]
  • 임의 접근 제어 및 강제 접근 제어를 위한 보안 메커니즘(SELinux, AppArmor, POSIX 접근 제어 목록, 기타).[303][302]
  • 여러 유형의 계층화된 통신 프로토콜 ( 인터넷 프로토콜 제품군 포함).
  • 비대칭 멀티프로세싱은 RPMsg 서브시스템을 통해 구현.


대부분의 장치 드라이버 및 커널 확장은 하드웨어에 대한 모든 권한을 가지고 커널 공간 (링 0 in 많은 CPU CPU 아키텍처)에서 실행된다. 일부 예외는 사용자 공간에서 실행된다; 주목할 만한 예는 FUSE/CUSE를 기반으로 하는 파일 시스템과 UIO의 일부이다.[184][185] 또한, 대부분의 사람들이 리눅스와 함께 사용하는 윈도우 시스템 및 디스플레이 서버 프로토콜인 X 윈도우 시스템과 웨이랜드는 커널 내에서 실행되지 않는다. 반면에, GPU의 실제 인터페이스는 Direct Rendering Manager (DRM)이라는 커널 내 서브시스템이다.

리눅스는 일반적으로 메모리 보호가상 메모리를 사용하며 비균일 메모리 접근도 처리할 수 있지만,[187] 이 프로젝트는 μClinux를 흡수하여 가상 메모리 없이 마이크로컨트롤러에서 리눅스를 실행할 수도 있다.[188]

하드웨어는 파일 계층 구조로 표현된다. 사용자 애플리케이션은 `/dev` 또는 `/sys` 디렉터리의 항목을 통해 장치 드라이버와 상호 작용한다.[189] 프로세스 정보는 `/proc` 디렉터리에 매핑된다.[189]

3. 2. 사용자 공간과 커널 공간

리눅스 커널은 커널 공간과 사용자 공간으로 나뉜다. 커널 공간은 CPU의 링 0에서 실행되며, 하드웨어에 대한 모든 접근 권한을 가진다. 장치 드라이버와 커널 확장 기능은 이 공간에서 실행된다. 반면, 사용자 공간은 일반 사용자 애플리케이션이 실행되는 공간으로, 하드웨어에 직접 접근할 수 없다. 이러한 분리는 시스템의 안정성과 보안을 강화한다.

대부분의 사람들이 리눅스와 함께 사용하는 그래픽스 시스템은 커널 내에서 실행되지 않는다. 표준 모놀리딕 커널과 달리 장치 드라이버는 쉽게 모듈로 구성되며 시스템이 실행 중인 동안에 적재되거나 적재가 해제될 수 있다.

하드웨어는 파일 계층에 통합되어 있다. 장치 드라이버들은 `/dev` 또는 `/sys` 디렉터리의 엔트리를 통해 사용자 응용 프로그램들과 통신한다.[366] 프로세스 정보 또한 `/proc` 디렉터리를 통해 파일 시스템에 매핑된다.[366]

유저랜드와 커널 공간 간 리눅스의 다양한 계층
사용자 모드사용자 애플리케이션예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등.
저수준 시스템 구성 요소:시스템 데몬:
systemd, runit, logind, networkd, PulseAudio, ...
윈도 시스템:
X11, Wayland, SurfaceFlinger (안드로이드)
기타 라이브러리:
GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등.
그래픽스:
메사, AMD 카탈리스트, ...
C 표준 라이브러리open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수)
glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등.
커널 모드리눅스 커널stat, splice, dup, read, open, ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출)
리눅스 커널 시스템 호출 인터페이스(System Call Interface, SCI)는 POSIX/SUS 호환을 목표로 함
프로세스 스케줄링
하위 시스템
IPC
하위 시스템
메모리 관리
하위 시스템
가상 파일
하위 시스템
네트워크
하위 시스템
기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터
리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥
하드웨어 (CPU, 주 메모리, 데이터 기억 장치 등)


3. 3. 주요 하위 시스템

리눅스 커널 지도


리눅스 커널은 운영 체제의 핵심 부분으로, 다음과 같은 주요 하위 시스템들로 구성되어 있다.

유저랜드와 커널 공간 간 리눅스의 다양한 계층
사용자 모드사용자 애플리케이션예: bash, 리브레오피스, 김프, 블렌더, 0 A.D., 모질라 파이어폭스 등.
저수준 시스템 구성 요소:시스템 데몬:
systemd, runit, logind, networkd, PulseAudio, ...
윈도 시스템:
X11, Wayland, SurfaceFlinger (안드로이드)
기타 라이브러리:
GTK+, Qt, EFL, SDL, SFML, FLTK, 그누스텝 등.
그래픽스:
메사, AMD 카탈리스트, ...
C 표준 라이브러리open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (최대 2000개 함수)
glibc는 POSIX/SUS 호환을 목적으로 함, uClibc는 임베디드 시스템을 대상으로 함, bionic은 안드로이드용으로 개발됨 등.
커널 모드리눅스 커널stat, splice, dup, read, open, ioctl, write, mmap, close, exit 등. (약 380개 시스템 호출)[190]
프로세스 스케줄링
하위 시스템
IPC
하위 시스템
메모리 관리
하위 시스템
가상 파일
하위 시스템
네트워크
하위 시스템
기타 구성 요소: ALSA, DRI, evdev, LVM, 장치 매퍼, 리눅스 네트워크 스케줄러, 넷필터
리눅스 보안 모듈: SELinux, TOMOYO, 앱아머, 스맥
하드웨어 (CPU, 주 메모리, 데이터 기억 장치 등)


  • 프로세스 스케줄링: 여러 프로세스를 효율적으로 실행하기 위해 CPU 시간을 분배하고 관리한다. 사용자 프로세스뿐만 아니라 커널 코드의 일부도 선점하여 실행할 수 있다.
  • IPC(Inter-Process Communication): 프로세스들이 서로 데이터를 주고받을 수 있게 해준다.
  • 메모리 관리: 가상 메모리를 사용하여 실제 물리 메모리보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 한다.
  • 가상 파일 시스템: ext4, Btrfs, XFS 등 다양한 파일 시스템을 지원하며, 사용자 프로그램에게 일관된 인터페이스를 제공한다.
  • 네트워크: 인터넷 프로토콜 스위트를 포함한 다양한 통신 프로토콜을 지원하여 네트워크 통신을 가능하게 한다.


이 외에도 ALSA(Advanced Linux Sound Architecture, 고급 리눅스 사운드 아키텍처), DRI(Direct Rendering Infrastructure, 다이렉트 렌더링 인프라스트럭처), LVM(Logical Volume Manager, 논리 볼륨 관리자), 장치 매퍼, 넷필터, 리눅스 보안 모듈 등 다양한 구성 요소들이 커널 내에 존재한다.

3. 3. 1. 프로세스 스케줄링

리눅스 커널은 특정 조건에서 선점 스케줄링을 제공한다. 리눅스 커널 2.4 버전까지는 오직 사용자 프로세스들만이 선점 형태였다. 예를 들어, 타임 퀀텀 만기 외에도 사용자 모드에서 현재 프로세스의 실행은 더 높은 동적 우선 순위 프로세스가 `TASK_RUNNING` 상태가 될 때 인터럽트 처리된다.[380] 2.6 시리즈의 리눅스 커널에서는 커널 코드를 실행하는 태스크를 인터럽트할 수 있는 기능이 추가되었지만, 커널 코드의 모든 부분을 선점할 수 있는 것은 아니다.[381]

리눅스 커널에는 서로 다른 스케줄러 클래스들이 포함되어 있다.[382] 기본적으로 커널은 2.6.23 버전의 커널에 도입된 완전 공정 스케줄러(Completely Fair Scheduler, CFS)라는 스케줄러 매커니즘을 사용한다.[383] 내부적으로 이 기본 스케줄러 클래스는 `SCHED_OTHER`로 알려져 있지만, 커널은 또한 POSIX를 준수하는[384] `SCHED_FIFO`(실시간 FIFO)와 `SCHED_RR`(실시간 라운드 로빈)을 포함하고 있으며, 이 둘은 모두 기본 클래스보다 높은 우선순위를 가진다.[382]

실시간 리눅스 커널 패치 `PREEMPT_RT`를 사용하면 임계영역, 인터럽트 핸들러, 인터럽트 비활성화 코드 시퀀스의 완전한 선점을 지원할 수 있다.[385] 실시간 리눅스 커널 패치의 부분적인 메인라인 통합을 통해 이미 커널 메인라인에 일부 기능이 도입되었다.[386] 선점은 레이턴시를 개선하고, 응답 속도를 높이며, 리눅스를 데스크톱 및 실시간 애플리케이션에 더 적합하게 만들어준다. 이전 버전의 커널은 전체 커널에 대한 동기화를 위해 이른바 빅 커널 락을 가지고 있었으나, 2011년 Arnd Bergmann에 의해 최종적으로 제거되었다.[387]

최단 마감 우선 알고리즘(EDF)을 구현하는 `SCHED DEADLINE`이라는 추가적인 스케줄링 정책이 커널 버전 3.14에 추가되었고 2014년 3월 30일 출시되었다.[388][389]

리눅스 프로세스 스케줄러는 다양한 스케줄링 클래스와 정책을 허용한다는 점에서 모듈형이다.[244][245] 스케줄러 클래스는 기본 스케줄러 코드에 등록 가능한 플러그형 스케줄러 알고리즘이다. 각 클래스는 서로 다른 유형의 프로세스를 스케줄링한다. 스케줄러의 핵심 코드는 우선순위 순으로 각 클래스를 반복하고, 실행 준비가 된 스케줄링 가능한 엔티티(struct sched_entity 유형)를 가진 가장 높은 우선순위 스케줄러를 선택한다.[8] 엔티티는 스레드, 스레드 그룹 또는 특정 사용자의 모든 프로세스가 될 수 있다.

리눅스는 사용자 선점과 전체 커널 선점을 모두 제공한다.[8] 선점은 지연 시간을 줄이고 응답성을 높여,[246] 리눅스를 데스크톱 및 실시간 애플리케이션에 더 적합하게 만든다.

일반적인 작업의 경우, 기본적으로 커널은 버전 2.6.23에 도입된 완전 공정 스케줄러(CFS) 클래스를 사용한다.[247] 스케줄러는 C 헤더에서 `SCHED_NORMAL` 매크로로 정의된다. 다른 POSIX 커널에서 `SCHED_OTHER`로 알려진 유사한 정책은 CPU 타임 슬라이스(즉, 각 프로세스의 미리 결정되거나 동적으로 계산된 우선순위에 따라 프로세서 시간의 절대 슬라이스를 할당)를 할당한다. 리눅스 CFS는 절대 타임 슬라이스를 제거하고, 실행 가능한 총 프로세스 수와 이미 실행된 시간 등의 매개변수에 따라 CPU 시간의 공정한 비율을 할당한다. 이 함수는 또한 상대적 우선순위(nice 값)에 따라 달라지는 가중치를 고려한다.[8]

사용자 선점을 사용하면 커널 스케줄러가 현재 프로세스를 문맥 교환을 통해 실행을 위해 컴퓨팅 리소스(CPU, 메모리 등)를 획득하는 다른 프로세스로 교체할 수 있다. CFS 알고리즘과 활성 스케줄러 정책 및 상대적 우선순위에 따라 이를 수행한다.[248] 커널 선점을 사용하면 커널이 인터럽트 처리기가 반환될 때, 커널 작업이 차단될 때, 하위 시스템이 schedule() 함수를 명시적으로 호출할 때 자체적으로 선점할 수 있다.

커널에는 `SCHED_FIFO` (실시간 선입선출) 및 `SCHED_RR` (실시간 라운드 로빈)의 두 가지 POSIX 호환[249] 실시간 스케줄링 클래스가 포함되어 있으며, 둘 다 기본 클래스보다 우선한다.[244] 최단 마감 우선 알고리즘(EDF)을 구현하는 `SCHED DEADLINE`이라는 추가 스케줄링 정책은 2014년 3월 30일에 출시된 커널 버전 3.14에 추가되었다.[250][251] `SCHED_DEADLINE`은 다른 모든 스케줄링 클래스보다 우선한다.

버전 2.6 이후 메인라인 리눅스에 포함된 실시간 `PREEMPT_RT` 패치는 결정적 스케줄러, 선점 및 인터럽트 비활성화 제거(가능한 경우), PI 뮤텍스(즉, 우선순위 반전을 방지하는 잠금 기본 요소)[252][253], 고정밀 이벤트 타이머(HPET) 지원, 선점적 읽기-복사-업데이트(RCU), (강제) IRQ 스레드 및 기타 사소한 기능을 제공한다.[254][255][256]

2023년, 피터 지일스트라(Peter Zijlstra)는 CFS "지연 시간 nice" 패치의 필요성을 방지하기 위해 가장 적합한 가상 마감일 우선 스케줄링(EEVDF) 스케줄러로 CFS를 대체할 것을 제안했다.[257][258] EEVDF 스케줄러는 리눅스 커널 버전 6.6에서 CFS를 대체했다.[260]

3. 3. 2. 메모리 관리

리눅스는 5단계 페이지 테이블을 사용하여 가상 메모리를 구현한다.[277] 커널은 메모리 페이징이 불가능하며(즉, 항상 물리적 메모리에 상주하며 디스크로 스왑될 수 없음) 메모리 보호가 없기 때문에(사용자 공간과 달리 ''SIGSEGV'' 신호 없음) 메모리 위반은 시스템 불안정 및 충돌로 이어진다.[8] 사용자 메모리는 기본적으로 페이지 가능하지만, `mlock()` 시스템 호출 제품군을 사용하여 특정 메모리 영역에 대한 페이징을 비활성화할 수 있다.

페이지 프레임 정보는 부팅 직후 채워지고 종료될 때까지 유지되는 적절한 데이터 구조( `struct page` 형식)에 보관되며, 가상 페이지와 연결되어 있는지 여부에 관계없이 유지된다. 물리적 주소 공간은 아키텍처 제약 및 용도에 따라 여러 영역으로 나뉜다. 여러 메모리 뱅크가 있는 NUMA 시스템도 지원된다.[278]

작은 메모리 덩어리는 `kmalloc()` API 제품군을 통해 커널 공간에서 동적으로 할당하고 `kfree()`의 적절한 변형으로 해제할 수 있다. `vmalloc()` 및 `kvfree()`는 가상으로 연속된 큰 덩어리에 사용된다. `alloc_pages()`는 원하는 수의 전체 페이지를 할당한다.



커널은 구성 가능한 대안으로 SLAB, SLUB 및 SLOB 할당기를 포함했었다.[280][281] SLOB 할당기는 리눅스 6.4에서 제거되었고[282] SLAB 할당기는 리눅스 6.8에서 제거되었다.[283] 유일하게 남아있는 할당기는 SLUB이며, 단순성과 효율성을 목표로 한다.[281] `PREEMPT_RT` 호환 가능하며[284] 리눅스 2.6에 도입되었다.

3. 3. 3. 파일 시스템

리눅스는 ext4, Btrfs, XFS, JFS, FAT32 등 다양한 파일 시스템을 지원한다. 이러한 파일 시스템 위에는 가상 파일 시스템 (VFS)이 있어 사용자 프로그램에게 일관된 인터페이스를 제공한다.

하드웨어 장치는 파일 계층 구조로 통합되어 있다. 장치 드라이버는 /dev 또는 /sys 디렉터리의 항목을 통해 사용자 애플리케이션과 통신한다.[189] 프로세스 정보는 /proc 디렉터리에 매핑된다.[189]

3. 3. 4. 네트워크

리눅스 커널의 네트워크 하위 시스템은 인터넷 프로토콜 스위트를 포함한 여러 종류의 계층화된 통신 프로토콜을 지원한다.[303][302]

장치 드라이버는 /dev 또는 /sys 디렉터리의 엔트리를 통해 사용자 애플리케이션과 통신하며,[366] 하드웨어도 파일 계층에 통합되어 있다.

3. 4. 장치 드라이버

리눅스 커널은 모놀리딕 커널이지만, 런타임에 모듈을 로드하고 언로드할 수 있는 모듈형 디자인을 가지고 있다.[8][163] 이러한 모듈형 디자인은 비자유 운영 체제의 폐쇄 소스 커널에서만 가능했던 기능을 지원한다.

장치 드라이버와 커널 확장 기능은 대부분 커널 공간(많은 CPU 아키텍처에서 링 0)에서 실행되며, 하드웨어에 대한 모든 접근 권한을 가진다.[184][185] 그러나 FUSE/CUSE 기반 파일 시스템, UIO의 일부 등 예외적으로 사용자 공간에서 실행되는 경우도 있다.[184][185]

표준 모놀리딕 커널과 달리, 장치 드라이버는 쉽게 모듈로 구성되어 시스템 실행 중에 로드 또는 언로드될 수 있다. 또한, 특정 조건 하에서 선점이 가능하여 하드웨어 인터럽트를 정확하게 처리하고 대칭형 다중 처리를 더 잘 지원한다.[170]

하드웨어는 파일 계층 구조로 통합되어 있다. 장치 드라이버는 /dev 또는 /sys 디렉터리의 엔트리를 통해 사용자 애플리케이션과 통신한다.[189]

4. 인터페이스

리눅스 커널 인터페이스: 커널 내부(2개), 커널-사용자 공간(2개)


300px


리눅스 커널은 표준 준수를 중요한 정책으로 삼고 있다. 특정 구성 요소를 사용하는 독점적인 사용자 공간 소프트웨어가 있다면, 해당 구성 요소는 커널에 포함되지 않는다.

리눅스 커널은 커널 내부 인터페이스와 커널-사용자 공간 인터페이스 등 다양한 인터페이스를 제공한다.

  • 커널-사용자 공간 API: 리눅스 커널이 사용자 공간 프로그램에 제공하는 인터페이스다.
  • 커널-사용자 공간 ABI: 리눅스 배포판 간 바이너리 호환성을 위한 규격이다.
  • 커널 내 API: 커널 내부 서브시스템 간 통신을 위한 인터페이스다.
  • 커널 내 ABI: 커널 내부 ABI의 안정성과 관련된 내용이다.


각 인터페이스에 대한 자세한 내용은 하위 섹션을 참고할 수 있다.

4. 1. 커널-사용자 공간 API



리눅스는 UNIX를 본따 만들어졌으며, POSIX와 단일 UNIX 규격을 따르는 것을 목표로 한다.[191] 커널은 시스템 호출과 리눅스 고유의 인터페이스를 제공한다. 공식 커널에 포함되기 위해서는 코드가 정해진 라이선스 규칙을 따라야 한다.[192][7]

커널과 사용자 공간 사이의 리눅스 응용 프로그램 바이너리 인터페이스(ABI)는 안정, 테스트, 구식, 제거의 4가지 안정성 수준을 갖는다.[193] 시스템 호출은 이를 기반으로 하는 사용자 공간 프로그램의 호환성을 유지하기 위해 변경되지 않을 것으로 예상된다.[194]

로드 가능한 커널 모듈(LKM)은 설계상 안정적인 ABI에 의존할 수 없다.[186] 따라서 새 커널 실행 파일이 시스템에 설치될 때마다 다시 컴파일해야 하며, 그렇지 않으면 로드되지 않는다. 커널 실행 파일(vmlinux)의 필수적인 부분이 되도록 구성된 트리 내 드라이버는 빌드 과정에서 정적으로 연결된다.

소스 수준의 커널 내 API 안정성은 보장되지 않으며,[186] 이 때문에 장치 드라이버 코드와 다른 커널 서브시스템의 코드는 커널의 발전에 따라 계속 업데이트되어야 한다. API를 변경하는 모든 개발자는 변경으로 인해 문제가 발생하는 모든 코드를 수정해야 한다.[195]

사용자 응용 프로그램에 노출되는 리눅스 커널 API는 기본적으로 유닉스와 리눅스 고유의 시스템 호출로 구성된다.[196] 시스템 호출은 리눅스 커널로 들어가는 진입점이다.[197] 예를 들어, 리눅스 고유의 시스템 호출에는 `clone(2)` 시스템 호출군이 있다.[198] 대부분의 확장 기능은 헤더 파일에서 `_GNU_SOURCE` 매크로를 정의하거나 사용자 공간 코드를 컴파일할 때 활성화해야 한다.[199]

시스템 호출은 권한이 없는 사용자 공간에서 권한이 있는 커널 공간(링 0)으로 전환할 수 있는 어셈블리 명령어를 통해서만 호출할 수 있다. 이러한 이유로 C 표준 라이브러리(libC)는 대부분의 리눅스 시스템 호출에 대한 래퍼 함수 역할을 하며, 필요에 따라[200] 호출 프로세스를 대신하여 실행될 커널에 투명하게 진입하는 C 함수를 제공한다.[196] libC에서 제공하지 않는 빠른 사용자 공간 뮤텍스와 같은 시스템 호출의 경우,[201] 라이브러리는 `syscall(2)` 함수를 제공하여 명시적으로 호출할 수 있도록 한다.[202]

가상 파일 시스템(sysfs, procfs 등)과 특수 파일(`/dev/random`, `/dev/sda`, `/dev/tty` 등)은 하드웨어나 논리(소프트웨어) 장치를 나타내는 커널 데이터 구조에 대한 또 다른 인터페이스 계층을 구성한다.[203][204]

4. 2. 커널-사용자 공간 ABI

리눅스 운영 체제는 수백 가지의 다양한 구현(배포판)이 존재하는데, 이로 인해 특정 하드웨어 아키텍처용으로 컴파일된 실행 파일이 다른 리눅스 배포판에서는 제대로 실행되지 않을 수 있다. 이는 주로 배포판별 설정, 리눅스 커널 코드에 적용된 패치, 시스템 라이브러리, 서비스(데몬), 파일 시스템 계층 구조, 환경 변수의 차이 때문이다.

리눅스 배포판 간 애플리케이션 및 바이너리 호환성과 관련된 주요 표준은 리눅스 기본 규격(LSB)이다.[205][206] 그러나 LSB는 리눅스 커널뿐 아니라 데스크톱 사양, X 라이브러리, Qt 등 커널과 관련이 적은 부분도 정의하고 있다.[207] LSB 버전 5는 POSIX, SUS, X/Open, 파일 시스템 계층 구조(FHS) 등 여러 표준 및 초안을 기반으로 한다.[208]

LSB 중 커널과 더 관련 있는 부분은 ''일반 ABI''(gABI)[209]와 ''프로세서별 ABI''(psABI)이다. 일반 ABI는 System V ABI[210][211]와 실행 및 연결 형식(ELF)[212][213]를 포함하며, 프로세서별 ABI는 x86-64 코어 사양[214][215] 등이 해당된다.

x86-64 사용자 프로그램이 시스템 호출을 하는 표준 ABI는 시스템 호출 번호를 ''rax'' 레지스터에 로드하고, 다른 매개변수들을 ''rdi'', ''rsi'', ''rdx'', ''r10'', ''r8'', ''r9'' 레지스터에 로드한 후, ''syscall'' 어셈블리 명령어를 실행하는 것이다.[216][217][218]

4. 3. 커널 내 API



리눅스 커널의 내부 기능은 표준을 준수하는 것이 포괄적인 정책이다. 다른 규칙으로는 해당 구성 요소를 사용하는 사유(proprietary)의 사용자 공간 소프트웨어가 있을 경우에는 커널의 구성 요소가 리눅스 커널에 수용되지 않는다는 점이다.

각기 다른 하위 시스템들과 그 하위 시스템들 간에 활용되는 커널 내부 API가 여럿 있다. 이들 가운데 일부는 여러 릴리스를 통해 안정적으로 유지되고 있고 다른 것들은 그렇지 않다. 커널 내 API와 관련한 어떠한 보증도 없다. 유지보수자들과 기여자들은 언제든지 이것들을 자유로이 늘려나가거나 바꿀 수 있다.[376]

커널 내 API의 예에는 다음 계열의 장치 드라이버를 위한 소프트웨어 프레임워크/API가 포함된다.

커널 서브시스템 간에는 여러 내부 커널 API가 존재한다. 일부는 커널 서브시스템 내에서만 사용할 수 있으며, 동적으로 로드 가능한 모듈(예: 주문형으로 로드되는 장치 드라이버)에 노출되는 제한된 수의 커널 내 심볼(즉, 변수, 데이터 구조 및 함수)이 있다.[222]

리눅스는 연결 리스트, 래딕스 트리,[223] 레드-블랙 트리,[224] 큐와 같은 데이터 구조를 조작하거나, 최소한 리눅스 버전 2.6 이후로 안정적으로 유지된 일반적인 루틴(예: 사용자 공간에서 데이터를 복사하거나 시스템 로그에 줄을 인쇄하는 등)을 수행하는 커널 내 API를 제공한다.[225][226][227]

커널 내 API에는 장치 드라이버에서 사용되는 하위 수준의 공통 서비스 라이브러리가 포함된다.

  • SCSI 인터페이스 및 libATA는 각각 USB, SATA, SAS, 파이버 채널, FireWire, ATAPI 장치에 연결된 저장 장치에 대한 피어 투 피어 패킷 기반 통신 프로토콜[228] 및 [S]ATA 호스트 컨트롤러 및 장치를 지원하는 커널 내 라이브러리이다.[229]
  • DRM (DRM) 및 KMS (KMS)는 GPU와 인터페이스하고 최신 3D 가속 비디오 하드웨어의 요구 사항을 지원하기 위한 것이며,[230] 화면 해상도, 색상 깊이 및 재생 빈도를 설정하기 위한 것이다.[231]
  • 여러 장치 드라이버 및 서브시스템 간의 하드웨어 직접 메모리 접근을 위한 버퍼 공유를 위한 DMA 버퍼(DMA-BUF)[232][233][234]
  • Video4Linux는 비디오 캡처 하드웨어용이다.
  • ALSA (ALSA)는 사운드 카드용이다.
  • 뉴 API는 네트워크 인터페이스 컨트롤러용이다.
  • mac80211 및 cfg80211는 무선 네트워크 인터페이스 컨트롤러용이다.[235][236]


일부 단체들은 여러 릴리스를 통해 커널 내 ABI의 정의 및 유지보수를 굳건히 지원해왔다. 이는 사유 커널 모듈을 출시하고 바이너리 전용 소프트웨어(예: 장치 드라이버)를 배포하는 하드웨어 제조업체들에게 이익을 준다. 그러나 리눅스 커널 개발자들은 안정적인 커널 내 ABI를 유지보수하지 않기로 했다.[378] 이로써 리눅스 커널 개발을 더 진척시킬 수 있게 되었다.

리눅스 개발자들은 커널 내부 ABI를 안정적으로 유지하지 않기로 결정했다. 특정 버전의 커널을 위해 컴파일된 모듈은 다시 컴파일하지 않고는 다른 버전으로 로드할 수 없다.[186]

4. 4. 커널 내 ABI

리눅스 커널 개발자들은 안정적인 커널 내 ABI(응용 프로그램 바이너리 인터페이스)를 유지하지 않기로 결정했다.[378] 이는 리눅스 커널 개발을 더욱 진척시키기 위함이었다.

일부 단체들은 여러 릴리스를 통해 커널 내 ABI를 정의하고 유지보수하는 것을 굳건히 지원해왔다. 이는 사유 커널 모듈을 출시하고 바이너리 전용 소프트웨어(예: 장치 드라이버)를 배포하는 하드웨어 제조업체들에게 이익을 준다. 그러나 리눅스 커널 개발자들은 안정적인 커널 내 ABI를 유지보수하지 않기로 결정했다.[378]

커널 내부 ABI가 안정적으로 유지되지 않기 때문에, 특정 버전의 커널을 위해 컴파일된 모듈은 다시 컴파일하지 않고는 다른 버전으로 로드할 수 없다.[186]

5. 개발

리눅스 커널은 리누스 토르발스가 언급했듯이, "지적 설계가 아닌 진화"를 통해 발전해왔다.[97][98][99] 2021년 기준으로, 리눅스 커널 5.11 릴리스는 약 3034만 줄의 코드로 구성되어 있으며, 이 중 약 14%는 "코어"(아키텍처별 코드, 커널 코드, 메모리 관리 코드 포함)이고, 60%는 드라이버이다.

리눅스 커널의 소스 코드는 토르발즈가 만든 Git 버전 관리 시스템으로 관리된다.[100] 커널 개발에 기여하기 위해서는 리눅스 커널 메일링 리스트(LKML) 등을 통해 텍스트 메시지 형태의 패치를 제출해야 한다. 이 패치는 일련의 규칙과 공식 언어를 따라야 하며, 삭제되거나 추가될 코드 줄을 명시해야 한다.[101]

리눅스 커널 개발자들은 코드 변경 사항을 작성하고 테스트한 후, 중요성과 수정되는 하위 시스템의 수에 따라 단일 또는 여러 개의 소스 코드 패치 형태로 제출한다. 단일 유지 관리자가 관리하는 하위 시스템의 경우, 패치는 해당 유지 관리자에게 이메일로 전송되며, 유지 관리자와 메일링 리스트 구독자들의 검토와 피드백을 거쳐 Git 커널 트리에 적용된다. 중요 버그 수정 사항은 며칠 내에, 그렇지 않으면 다음 병합 창(보통 2주) 동안 풀 요청이 토르발스에게 전송된다.[102] Git 커널 소스 트리의 ''Credits'' 디렉토리에는 리눅스 커널에 기여한 모든 개발자의 이름이, ''Maintainers'' 디렉토리에는 모든 하위 시스템 유지 관리자가 나열되어 있다.[103]

리눅스 커널 프로젝트는 지속적으로 새로운 코드를 통합하며, 체크인된 소프트웨어는 오류 없이 작동하고 컴파일되어야 한다. 각 커널 서브시스템에는 패치 검토 및 대기열 유지 담당자가 할당되어 있으며, 이들은 병합 윈도우 내에 토르발즈에게 제출할 패치를 결정한다. 패치는 토르발즈에 의해 이전 안정 릴리스의 소스 코드에 병합되어 다음 안정 릴리스의 릴리스 후보(-rc)를 생성하고, 회귀 테스트를 거쳐 안정적이라고 판단되면 새 버전이 릴리스된다.[142]

최신 버전과 이전 버전은 별도로 유지 관리되며, 최신 커널 릴리스는 대부분 토르발즈의 감독을 받는다.[157] 리눅스 커널 개발자 커뮤니티는 안정적인 커널을 유지 관리하기 위해 발견된 소프트웨어 버그에 대한 수정 사항을 적용하며, www.kernel.org 에는 항상 두 개의 안정적인 커널이 나열된다. 일부 릴리스는 ''장기 지원(longterm)''으로 지정되어 2년 이상 버그 수정 릴리스가 제공된다.[158]

리눅스 개발자들은 커널 내부 ABI를 안정적으로 유지하지 않기로 결정했기 때문에, 특정 버전의 커널을 위해 컴파일된 모듈은 다시 컴파일하지 않고는 다른 버전으로 로드할 수 없다.[186]

리눅스는 GCC가 지원하는 특수한 C 프로그래밍 언어로 작성되었으며, 대상 아키텍처의 어셈블리 언어로 작성된 인라인 코드 섹션을 사용한다. 2021년부터 커널 컴파일 및 빌드를 위한 GCC 버전 요구 사항이 5.1로 증가하면서 C11 표준으로 작성된 코드를 사용할 수 있게 되었으며,[107] 2022년 리눅스 5.18 릴리스와 함께 C11 표준으로의 마이그레이션이 이루어졌다.[108] Rust 프로그래밍 언어에 대한 초기 지원은 2022년 12월에 출시된 리눅스 6.1에 추가되었으며,[109] 이후 버전에서 지원이 더욱 개선되었다.[111][112]

리눅스 커널 2.6.25.17의 부팅 메시지

5. 1. 개발 모델

리눅스 커널의 소스 코드는 Git 버전 관리 시스템으로 관리된다.[100] 이는 분산 개발 모델을 가능하게 하여, 전 세계의 많은 개발자들이 동시에 커널 개발에 참여할 수 있게 한다.

5. 2. 커뮤니티

리눅스 커널 개발자 커뮤니티는 대략 5000명에서 6000명의 구성원으로 이루어져 있다. 리눅스 재단의 "2017년 리눅스 커널 개발 현황" 연구에 따르면, 4.8 버전부터 4.13 버전까지의 릴리스에서는 평균적으로 약 200개에서 250개의 회사에서 1500여 명의 개발자가 기여했다.[74] 상위 30명의 개발자가 전체 코드의 16% 이상을 기여했다.

기업별 기여도를 살펴보면, 인텔이 13.1%로 가장 높았고, 레드햇(7.2%), 리나로(5.6%), IBM(4.1%) 순이었다. '없음'(8.2%)과 '알 수 없음'(4.1%) 범주도 상당 부분을 차지했다.[74]

순위기업기여율(%)
1인텔13.1
2없음8.2
3레드햇7.2
4리나로5.6
5알 수 없음4.1
6IBM4.1
7컨설턴트3.3
8삼성전자3.2
9SUSE3.0
10구글3.0
11기타 (약 500개 회사)45.2



Andrew Morton|앤드루 모턴영어은 2005년에 "로드맵 대신 기술 지침이 있습니다. 중앙 자원 할당 대신, 리눅스 커널의 추가 개발에 이해 관계를 가진 개인과 회사가 서로 독립적으로 존재합니다."라고 말했다. 또한, "리누스 토르발스나 저와 같은 사람들은 커널 진화를 계획하지 않습니다. 우리는 앉아서 향후 2년간의 로드맵을 생각하고, 다양한 새로운 기능에 자원을 할당하지 않습니다. 왜냐하면 우리에게는 자원이 없기 때문입니다. 자원은 모두 리눅스를 사용하고 기여하는 다양한 기업과 다양한 독립 기여자가 소유하고 있습니다. 자원을 소유한 바로 그 사람들이 결정합니다."라고 덧붙였다.[97][98][99]

리누스 토르발스는 2005년에 리눅스가 "지적 설계가 아닌 진화"라고 말했다.[97][98][99] 리눅스 커널의 소스 코드는 토르발즈가 제작한 Git 버전 관리 시스템으로 관리된다.[100]

5. 3. 기여 방법

리눅스 커널의 소스 코드는 Git 버전 관리 시스템으로 관리된다.[100] 커널에 기여하기 위해서는 리눅스 커널 메일링 리스트(LKML)에 텍스트 메시지 형태의 패치를 제출해야 한다. 이 패치는 일련의 규칙과 공식 언어를 따라야 하며, 삭제되거나 추가될 코드 줄을 명시해야 한다.[101]

리눅스 커널을 변경하고자 하는 개발자는 먼저 코드 변경 사항을 작성하고 테스트한다. 그 후, 변경 사항의 중요성과 수정되는 하위 시스템의 수에 따라 단일 패치 또는 여러 개의 소스 코드 패치 형태로 제출한다. 단일 유지 관리자가 관리하는 하위 시스템의 경우에는 해당 하위 시스템 유지 관리자에게 이메일로 패치를 전송한다. 유지 관리자와 메일링 리스트 구독자들은 패치를 검토하고 피드백을 제공한다. 검토 과정이 완료되면 하위 시스템 유지 관리자는 해당 패치를 관련 Git 커널 트리에 적용한다. 만약 리눅스 커널에 대한 변경 사항이 충분히 중요한 버그 수정 사항이라면, 며칠 내에 해당 패치에 대한 풀 요청이 토르발스에게 전송된다. 그렇지 않은 경우에는 다음 병합 창(일반적으로 2주간 지속) 기간 동안 풀 요청이 토르발스에게 전송된다.[102] Git 커널 소스 트리의 ''Credits'' 디렉토리에는 리눅스 커널에 기여한 모든 개발자의 이름이 나열되어 있으며, ''Maintainers'' 디렉토리에는 모든 하위 시스템 유지 관리자가 나열되어 있다.[103]

리눅스 커널 개발에 참여하는 개발자는 기여자 규약인 행동 강령을 준수해야 하며,[104][105] 소스 코드 내에서는 포괄적 용어를 사용해야 한다.[106]

제출된 패치는 토르발스에 의해 이전 안정 릴리스의 소스 코드에 병합되어 다음 안정 릴리스의 릴리스 후보(-rc)를 생성한다. 병합 윈도우가 닫히면 개발 릴리스의 새 코드에 대한 수정 사항만 허용된다. 커널의 -rc 개발 릴리스는 회귀 테스트를 거치며, 토르발스와 서브시스템 담당자가 안정적이라고 판단하면 새 버전이 릴리스되고 개발 프로세스가 다시 시작된다.[142]

5. 4. 개발자 간 갈등 및 해결

리눅스 커널 개발 과정에서는 다양한 갈등이 발생했다.

연도사건내용
2007년 7월콘 콜리바스 커널 개발 중단 선언[75][76]
2009년 7월앨런 콕스 TTY 레이어 관리자 직 사임리누스 토르발스와의 의견 차이[77]
2010년 12월SCSI 대상 스택 포함 논쟁리눅스 SCSI 관리자 제임스 보텀리와 SCST 관리자 블라디슬라프 볼호비틴 간의 논쟁으로 사용자 불만 발생[78][79]
2012년 6월리누스 토르발스 엔비디아 비판폐쇄적인 드라이버 출시에 반대[80]
2014년 4월리누스 토르발스, 케이 시에버스에 패치 제출 금지systemd와 커널 간 부정적 상호작용 유발 소프트웨어 버그 처리 미흡[81]
2014년 10월레나트 푀터링, 리누스 토르발스 비난커널 메일링 리스트에서 거친 토론 방식 용인[82]
2015년 3월크리스토프 헬비히, VMware 상대 소송 제기커널 저작권 침해 주장, 리누스 토르발스는 소송에 동의하지 않고 변호사 비난[83][84]
2021년 4월미네소타 대학교 연구팀 악의적 패치 제출대학에서 제출한 모든 패치 되돌려짐, 향후 패치 제출 거부 경고[85][86]



이러한 갈등을 해결하기 위해 주요 커널 개발자들은 오랫동안 행동 강령의 필요성을 인지하고 있었으나, 리누스 토르발스의 반대로 도입되지 못했다.[87][88] 2015년 3월 8일, '갈등 강령'이 도입되었고,[89] 2018년 9월 16일에는 기여자 서약을 기반으로 한 새로운 '행동 강령'으로 대체되었다. 이는 리누스 토르발스의 공개 사과 및 커널 개발 중단과 맞물려 일어났다.[90][91] 2018년 11월 30일, '행동 강령'에 따라 인텔의 자르코 사키넨은 부적절한 단어를 수정하는 패치를 제출했다.[92]

부당한 대우를 받은 개발자는 리눅스 재단 기술 자문 위원회에 보고할 수 있다.[93] 2013년 7월, 세이지 샤프는 리누스 토르발스에게 커널 개발 커뮤니티의 부적절한 언행 처리를 요청했고, 2014년에는 커널 개발에서 물러나며 기술적 우수성에 대한 집중, 과부하된 유지 관리자, 다양한 문화적 배경을 가진 사람들 간의 소통 문제를 지적했다.[94] 2018년 linux.conf.au (LCA) 컨퍼런스에서 개발자들은 커뮤니티 문화가 개선되었다는 의견을 표명했고, 다니엘 베터는 커널 커뮤니티의 폭력적인 언어와 토론이 감소하거나 사라졌다고 언급했다.[95]

2017년 임베디드 리눅스 컨퍼런스 유럽에서 로랑 핀차르트는 커널 커뮤니티 경험에 대한 개발자들의 피드백을 요청했고, 제기된 문제들은 유지 관리자 정상 회담에서 논의되었다. 수아 칸은 패치 처리 방식의 일관성 부족에 대한 우려를 제기했고, 리누스 토르발스는 각 커널 서브시스템이 서로 다른 개발 프로세스를 가지고 있어 일관성을 유지하기 어렵다고 주장했다. 이에 따라 각 서브시스템 유지 관리자는 패치 수락 규칙을 문서화하기로 합의했다.[96]

5. 5. 코딩 스타일

, 리눅스 커널 5.11 릴리스는 약 3034만 줄의 코드를 가지고 있었다. 코드의 약 14%는 아키텍처별 코드, 커널 코드 및 메모리 관리 코드를 포함하는 "코어"의 일부이고, 60%는 드라이버이다. 2002년부터 코드는 ''리눅스 커널 코딩 스타일''을 구성하는 21가지 규칙을 준수해야 한다.[113][114]

5. 6. 버전 관리

대부분의 소프트웨어와 마찬가지로, 커널은 점으로 구분된 일련의 숫자로 버전이 관리된다.

초기 버전의 경우, 버전은 "주 릴리스", "부 릴리스" 및 "수정"으로 불리는 세 개 또는 네 개의 점으로 구분된 숫자로 구성되었다.[8] 당시에는 홀수 부 릴리스가 개발 및 테스트용이었고, 짝수 부 릴리스가 제품용이었다. 선택적 네 번째 숫자는 패치 수준을 나타냈다.[15] 개발 릴리스는 릴리스 후보 접미사(''rc'')로 표시되었다.

현재 버전 관리 규칙은 다르다. 개발/제품을 의미하는 홀수/짝수 번호는 삭제되었으며, 주 버전은 처음 두 숫자를 함께 표시하여 나타낸다. 다음 주요 버전의 개발 기간은 정해져 있지 않지만, '-rcN' 접미사는 다음 버전의 n번째 릴리스 후보를 식별하는 데 사용된다.[115] 예를 들어, 버전 4.16의 릴리스는 일곱 개의 4.16-rcN(rc1부터 rc7까지)이 선행되었다. 안정적인 버전이 릴리스되면, 해당 유지 관리는 "안정 팀"으로 넘어간다. 안정적인 릴리스에 대한 업데이트는 세 자리 숫자 체계(예: 4.16.1, 4.16.2, ...)로 식별된다.[115]

6. 지원 아키텍처

리눅스 커널은 처음에는 이식을 고려하지 않고 설계되었지만,[343][390] 현재는 ARM 아키텍처부터 IBM z/아키텍처 메인프레임 컴퓨터에 이르기까지 매우 다양한 종류의 시스템에서 실행될 수 있도록 널리 이식된 운영 체제 커널 중 하나이다.[390]

최초의 이식은 모토로라 68000 플랫폼에서 이루어졌는데, 커널의 주요 부분을 수정해야 했다. 이는 리누스 토르발스가 다른 아키텍처로 쉽게 이식할 수 있도록 커널 코드를 재구성하는 계기가 되었다.[390] 최초로 리눅스가 지원된 포트는 DEC 알파 AXP 64비트 플랫폼이었으며, 1995년 5월 DECUS에서 시연되었다.[391]

리눅스는 현재 세계에서 가장 빠른 500대 슈퍼컴퓨터 모두에서 운영 체제로 사용되고 있다.[393] 또한, 애플 아이팟, 아이폰 등 여러 휴대용 장치에도 이식되었다.[394]

다음은 리눅스 커널이 지원하는 아키텍처의 일부이다. (버전 5.11.11(2021년 3월 30일) 기준, 괄호 안은 arch 디렉토리 내 명칭):

아키텍처설명
DEC 알파 (alpha)
(arc)
ARM 아키텍처 (arm/arm64)
x64 (x86)
(c6x)
H8 (h8300)
(hexagon)
MC68000 (m68k)
마이크로블레이즈 (microblaze)
MIPS 아키텍처 (mips)
니오스 II (nios2)
안데스 NDS32 (nds32)
오픈RISC (openrisc)
PA-RISC (parisc)
파워PC (powerpc)
RISC-V (riscv)
슈퍼H (sh)
SPARC (sparc)
x86 (x86, i486 이후)
Xtensa (xtensa)
z/Architecture (s390x)



다음은 과거에 지원되었으나 현재는 지원이 중단된 아키텍처의 일부이다:

아키텍처지원 중단 버전
Sun-4버전 2.6.26
SPARCstation/SPARCserver 시리즈버전 3.4
i386버전 3.7
버전 4.11
Blackfin버전 4.16
버전 4.16
FR-V버전 4.16
M32R버전 4.16
버전 4.16
POWER4버전 4.16
버전 4.16
버전 4.16
버전 5.9
IA-64 (ia64)[332]버전 6.6


7. 법적 문제

리눅스 커널은 초기에 상업적 이용을 금지하는 라이선스로 배포되었으나, 버전 0.12부터 GNU 일반 공중 사용 허가서 버전 2 (GPLv2)로 변경되었다.[16] GPLv2는 수정 및 배포를 허용하지만, 모든 사본은 동일한 라이선스로 배포하고 소스 코드를 함께 제공해야 한다.[308] 리누스 토르발스는 GPLv2를 선택한 것을 "내가 한 최고의 일"이라고 평가했다.[307]

리눅스 커널은 명시적으로 GPL-2.0-only 라이선스를 따르며, 이후 버전(GPLv3 포함)으로 변경하는 것에 대한 논쟁이 있었다.[309] 리누스 토르발스는 GPLv3에 대해 디지털 권리 관리(DRM)/티보화 등의 문제를 지적하며 반대했다.[314][315][316]

적재 가능 커널 모듈(LKM)이 파생 저작물인지에 대한 논쟁도 존재한다. 리누스 토르발스는 바이너리 전용 모듈은 파생 저작물이라고 주장하지만,[319] 다른 운영 체제용으로 작성된 드라이버는 그렇지 않을 수 있다고 언급했다.[320] 독점 모듈이 로드되면 커널은 "오염"된 것으로 표시되어 개발자들이 버그 보고를 무시하는 경우가 많다.[321]

리누스 토르발스는 "Linux"라는 상표를 소유하고 있다.[324][325] 1996년 윌리엄 델라 크로스(William Della Croce)가 상표권 분쟁을 제기했지만, 법원은 리눅스라는 단어가 델라 크로스가 주장한 최초 사용 시점보다 훨씬 이전에 널리 사용되었다는 사실을 인정하여 토르발스의 손을 들어주었다.[326][327][328]

7. 1. 라이선스

리눅스 커널은 초기에는 상업적 이용이 금지된 라이선스로 배포되었으나, 버전 0.12부터 GNU 일반 공중 사용 허가서 버전 2(GPLv2)로 변경되었다.[16] 이 라이선스는 수정 및 미수정 버전을 배포하고 판매하는 것을 허용하지만, 모든 사본을 동일한 라이선스로 배포하고, 소스 코드를 함께 제공하거나 요청 시 무료로 제공해야 한다.[308] 리누스 토르발스는 GPLv2로 리눅스를 라이선스한 것을 "내가 한 최고의 일"이라고 표현했다.[307]

리눅스 커널은 명시적으로 GPL-2.0-only 하에 시스템 호출 예외와 함께 라이선스되어,[192][5][6] 이후 버전을 선택할 수 있는 옵션을 제공하지 않는다. 기여된 코드는 GPL 호환 라이선스를 따라야 한다.[7][195]

GPLv3를 포함한 이후 버전으로 라이선스를 변경하는 것에 대한 논쟁이 있었다.[309] 토르발스는 버전 2.4.0 출시 때 자신의 코드가 버전 2에서만 릴리스된다고 명시했다.[310] 그러나 GPL 조항에 따르면 버전이 지정되지 않으면 모든 버전을 사용할 수 있으며,[311] 앨런 콕스는 다른 리눅스 기여자 대부분이 GPL 버전을 특정하지 않았다고 지적했다.[312]

2006년 9월, 핵심 커널 프로그래머 29명을 대상으로 한 설문에서 28명이 GPLv3보다 GPLv2를 선호한다고 응답했다. 토르발스는 GPLv3에 대한 반감을 공개적으로 드러냈다.[313] 토르발스, 그레그 크로아-하트만, 앤드루 모턴 등 주요 커널 개발자들은 DRM/티보화, 특허, "추가 제한" 조항을 언급하며 GPLv3에 반대했고, GPLv3가 오픈 소스 세계를 분열화시킬 것이라고 경고했다.[314][315] 토르발스는 리눅스 커널에 GPLv3를 채택하지 않기로 결정했고, 수년 후에도 비판을 반복했다.[316]

적재 가능 커널 모듈(LKM)이 저작권법상 파생 저작물로 간주되어 GPL 적용을 받는지에 대한 논쟁이 있다. 라이선스 규칙에 따라 커널 인터페이스의 공개된 하위 집합만 사용하는 LKM은 파생되지 않은 저작물로 간주될 수 있다.[220][221] 그러나 Nvidia Optimus와 같이 GPL을 준수하지 않는 LKM에서만 사용 가능한 기능을 우회하는 경우가 있어 논란이 된다.[222] 토발즈는 바이너리 전용 커널 모듈은 기본적으로 파생 저작물이라고 주장한다.[319] 반면, 다른 운영 체제용으로 작성된 드라이버는 리눅스 파생 저작물이 아닐 수 있다고 언급하며, 특히 독점 소프트웨어 그래픽 드라이버에 대한 논의가 활발하다.[320]

독점 모듈이 로드되면 커널은 "오염"된 것으로 표시되어,[321] 개발자들이 오염된 커널의 버그 보고를 무시하는 경우가 많다. 공식 커널에는 GNU GPLv2 라이선스에 따라 릴리스된 바이너리 블롭이 포함되어 있다.[192][7]

7. 2. 저작권

리눅스는 초기에는 상업적 이용을 금지하는 라이선스 하에 배포되었으나, 버전 0.12부터 GNU 일반 공중 사용 허가서 버전 2(GPLv2)로 변경되었다.[16] 이 라이선스는 수정 및 미수정 버전의 배포, 판매를 허용하지만, 모든 사본은 동일한 라이선스 하에 배포되어야 하며, 소스 코드를 함께 제공하거나 요청 시 무료로 접근 가능해야 한다.[308] 리누스 토르발스는 GPLv2 하에 리눅스를 라이선스하는 것을 "내가 한 최고의 일"이라고 묘사했다.[307]

리눅스 커널은 명시적으로 GPL-2.0-only 하에 시스템 호출 예외(Linux-syscall-note)와 함께 라이선스된다.[192][5][6] GPL 확장인 이후 버전을 선택할 수 있는 옵션을 제공하지 않으며, 기여된 코드는 GPL 호환 라이선스 하에서 사용 가능해야 한다.[7][195]

이 라이선스를 이후 GPL 버전(버전 3 포함)으로 변경하는 것이 얼마나 쉬운지, 그리고 이러한 변경이 바람직한지에 대한 논쟁이 있었다.[309] 리누스 토르발스는 버전 2.4.0 출시 시 자신의 코드가 버전 2 하에서만 릴리스된다고 명시했다.[310] 그러나 GPL 조항에 따르면 버전이 지정되지 않은 경우 모든 버전을 사용할 수 있으며,[311] 앨런 콕스는 다른 리눅스 기여자들은 GPL의 특정 버전을 거의 지정하지 않았다고 지적했다.[312]

2006년 9월, 핵심 커널 프로그래머 29명을 대상으로 한 설문 조사에서 28명이 GPLv3보다 GPLv2를 선호한다고 나타났다. 리누스 토르발스는 GPLv3를 좋아하지 않는다고 언급했다.[313] 리누스 토르발스, 그레그 크로아-하트만, 앤드루 모턴 등 주요 커널 개발자들은 GPLv3에 대한 반대 의견을 대중 매체에 언급했다.[314] 그들은 DRM/티보화, 특허, "추가 제한" 조항을 언급하고 GPLv3에 의한 오픈 소스 세계의 분열을 경고했다.[314][315] 리누스 토르발스는 GPLv3를 채택하지 않기로 결정하고 몇 년 후에도 비판을 반복했다.[316]

적재 가능 커널 모듈(LKM) 중 일부가 저작권법상 파생 저작물로 간주되어 GPL의 적용을 받는지 여부에 대한 논쟁이 있다. 라이선스 규칙에 따라 커널 인터페이스의 공개된 하위 집합만 사용하는 LKM[220][221]은 파생되지 않은 저작물이므로, 리눅스는 시스템 관리자에게 커널 주소 공간에 트리 외부 바이너리 객체를 로드할 수 있는 메커니즘을 제공한다.[7]

''dma_buf'' 커널 기능을 정당하게 사용하는 일부 트리 외부 적재 모듈이 있다.[317] GPL 호환 코드는 이를 확실히 사용할 수 있다. 하지만, Nvidia Optimus와 같이 빠른 GPU와 인텔 통합 GPU를 페어링하는 경우, Nvidia GPU가 활성화될 때 인텔 프레임버퍼에 쓰는데, Nvidia는 GPL을 준수하는 LKM에서만 사용 가능한 규칙을 우회해야 하므로 이 인프라를 사용할 수 없다.[222] 앨런 콕스는 LKML에서 Nvidia 엔지니어의 요청을 거부했다.[318] 리누스 토르발스는 LKML에서 "바이너리 전용 커널 모듈은 '기본적으로' 파생 저작물"이라고 밝혔다.[319]

반면, 리누스 토르발스는 "다른 운영 체제용으로 원래 작성된 드라이버는 리눅스에서 파생된 저작물이 아니며, 특별한 리눅스 동작에 의존하지 않기 때문에 파생된 저작물로 간주되지 않을 수 있다"고 말했다.[320] 특히 독점 소프트웨어 그래픽 드라이버에 대해 많은 논의가 이루어진다.

독점 모듈이 리눅스에 로드될 때마다 커널은 "오염됨"으로 표시되며,[321] 오염된 커널에서 보낸 버그 보고서는 개발자에 의해 무시되는 경우가 많다.

7. 3. 상표권

리누스 토르발스는 미국, 유럽 연합 및 일부 국가에서 "Linux"라는 상표를 등록했다.[324][325] 1996년, 리눅스 개발에 참여한 적이 없는 윌리엄 델라 크로스(William Della Croce)가 "리눅스(Linux)"라는 단어 사용에 대한 사용료를 요구하면서 상표권 분쟁이 발생했다.[326] 그러나 델라 크로스가 주장한 최초 사용 시점보다 훨씬 이전에 해당 단어가 널리 사용되었다는 사실이 입증되면서, 상표권은 토르발스에게 돌아갔다.[327][328]

8. 한국에서의 리눅스

안드로이드는 리눅스이며, 모바일 장치 운영 체제의 대부분을 차지하고 있다.[65][66][67] 임베디드 장치에서의 사용 증가로 인해 안드로이드는 전체적으로 리눅스 사용 증가에 상당한 영향을 미치고 있다.[18]

2019년 Stack Overflow의 연례 개발자 설문 조사에 따르면, 전체 응답자의 53% 이상이 리눅스용 소프트웨어를 개발했으며, 약 27%가 안드로이드용 소프트웨어를 개발했다.[60] 다만, 리눅스 기반 운영 체제로 개발하는 경우는 약 25%에 불과했다.[61]

대부분의 웹사이트는 리눅스 기반 운영 체제에서 실행되며,[62][63], 세계에서 가장 강력한 슈퍼컴퓨터 500대 모두 리눅스 기반의 운영 체제를 사용한다.[64]

9. 학습 참고 자료


  • 토미나가 가즈토, 곤도 가쓰히코, 《예해 UNIX/Linux 프로그래밍 교실》, 옴사, 2018년 4월 25일. ISBN 978-4-274-22210-8
  • 스에요스 야스조, 《움직이면서 제로부터 배우는 Linux 커널의 교과서》, 닛케이 BP, 2020년 9월 14일. ISBN 978-4-296-10695-0
  • 다케우치 사토루, 《실험하고 이해하는 Linux의 구조 [증보 개정판]》, 기술평론사, 2022년 10월 29일. ISBN 978-4-297-13148-7

참조

[1] 웹사이트 Linux Logos and Mascots https://web.archive.[...] Linux Online 2024-09-19
[2] 웹사이트 Kbuild: move to -std=gnu11 https://git.kernel.o[...] 2022-03-03
[3] 웹사이트 GPL-2.0-only https://spdx.org/lic[...] 2021-09-02
[4] 웹사이트 Linux-syscall-note https://spdx.org/lic[...] 2021-09-02
[5] 웹사이트 GPL-2.0 https://git.kernel.o[...]
[6] 웹사이트 Linux-syscall-note https://git.kernel.o[...]
[7] 웹사이트 Linux kernel licensing rules — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-06
[8] 서적 Linux kernel development Addison-Wesley
[9] 웹사이트 C Extensions (Using the GNU Compiler Collection (GCC)) https://gcc.gnu.org/[...] 2020-11-13
[10] 웹사이트 Interview: Linus Torvalds http://www.linuxjour[...] Linux Journal 1999-11-01
[11] 뉴스그룹 What would you like to see most in minix? https://groups.googl[...] 2016-09-14
[12] 서적 Running Linux O'Reilly Media, Inc.
[13] 웹사이트 Free minix-like kernel sources for 386-AT - Google Groups https://groups.googl[...] 2020-03-19
[14] 서적 Free as in Freedom: Richard Stallman's Crusade for Free Software O'Reilly 2010-11-12
[15] 서적 LPIC-2: Linux Professional Institute Certification Study Guide: Exam 201 and Exam 202 John Wiley & Sons
[16] 웹사이트 Release Notes for Linux v0.12 https://www.kernel.o[...] The Linux Kernel Archives 2007-02-21
[17] 서적 LINUX Start-up Guide: A self-contained introduction Springer Science & Business Media
[18] 서적 LINUX Start-up Guide: A self-contained introduction Springer Science & Business Media
[19] 뉴스그룹 Troubles with Partitions https://groups.googl[...] 2007-01-07
[20] 뉴스그룹 It's here! https://groups.googl[...] 2007-01-07
[21] 서적 Open Sources: Voices from the Open Source Revolution O'Reilly 2006-11-22
[22] 뉴스그룹 LINUX is obsolete https://groups.googl[...] 2006-05-10
[23] 웹사이트 Tanenbaum-Torvalds Debate: Part II http://www.cs.vu.nl/[...] VU University Amsterdam 2007-01-06
[24] 웹사이트 The history of Linux: how time has shaped the penguin https://www.techrada[...] 2020-03-19
[25] 웹사이트 The history of Linux: how time has shaped the penguin https://www.techrada[...] 2020-03-26
[26] 서적 LPIC-2: Linux Professional Institute Certification Study Guide: Exam 201 and Exam 202 John Wiley & Sons
[27] 메일링리스트 Linux 2.0 really _is_ released.. http://lkml.iu.edu/h[...] 2015-03-08
[28] 웹사이트 Kernel Build System — The Linux Kernel documentation https://www.kernel.o[...] 2020-07-17
[29] 웹사이트 Kconfig make config — The Linux Kernel documentation https://www.kernel.o[...] 2020-09-13
[30] 메일링리스트 2.2.0-final http://lkml.iu.edu/h[...] 2015-03-08
[31] 웹사이트 The Wonderful World of Linux 2.2 http://kniggit.net/w[...] 2008-10-27
[32] 웹사이트 Linux/390 Observations and Notes http://linuxvm.org/p[...] 2020-03-29
[33] 메일링리스트 And oh, btw.. http://lkml.iu.edu/h[...] 2015-03-08
[34] 웹사이트 The Wonderful World of Linux 2.4 https://web.archive.[...] 2008-10-27
[35] 메일링리스트 Linux 2.6.0 http://lkml.iu.edu/h[...] 2015-02-28
[36] 웹사이트 proc(5) - Linux manual page http://man7.org/linu[...] 2014-02-19
[37] 웹사이트 btrfs Wiki https://btrfs.wiki.k[...] 2020-07-17
[38] 서적 LINUX Start-up Guide: A self-contained introduction Springer Science & Business Media
[39] 간행물 Linux 2.6.12 http://marc.info/?l=[...] 2005-06-17
[40] 간행물 Adrian Bunk is now taking over the 2.6.16-stable branch http://lkml.iu.edu/h[...] 2015-02-21
[41] 간행물 Announce: Linux-next (Or Andrew's dream :-)) https://lkml.org/lkm[...] 2010-10-30
[42] 웹사이트 linux-next and patch management process https://lwn.net/Arti[...] Eklektix, Inc 2010-10-30
[43] 웹사이트 The Linux Kernel Archives http://www.kernel.or[...] Kernel.org 2014-01-22
[44] 웹사이트 Add a personality to report 2.6.x version numbers [LWN.net] https://lwn.net/Arti[...] 2020-07-15
[45] 웹사이트 Linux 3.0 release http://lkml.indiana.[...] Linux kernel mailing list 2013-05-16
[46] 간행물 Linux 3.0-rc1 http://permalink.gma[...] 2013-07-01
[47] 웹사이트 Re: [PATCH] i386 rw_semaphores fix https://yarchive.net[...] 2024-05-26
[48] 웹사이트 Good-Bye 386: Linux to drop support for i386 chips with next major release https://www.zdnet.co[...] CBS Interactive 2013-02-06
[49] 웹사이트 Linux to drop i386 support in the 3.8 kernel, make us upgrade our Doom rig https://www.engadget[...] AOL 2015-03-22
[50] 웹사이트 Linux 3.7 arrives, ARM developers rejoice https://www.zdnet.co[...] CBS Interactive 2013-02-06
[51] 간행물 Linux 4.0 released https://lkml.org/lkm[...] 2015-04-12
[52] 간행물 Linux 3.11 http://lkml.iu.edu/h[...] 2013-09-03
[53] 웹사이트 Linux 3.11 http://kernelnewbies[...] kernelnewbies.org 2014-01-21
[54] 웹사이트 The Linux Foundation Releases Linux Development Report http://www.linuxfoun[...] Linux Foundation 2015-02-20
[55] 웹사이트 Linux Kernel At 19.5 Million Lines Of Code, Continues Rising https://www.phoronix[...] Phoronix 2015-06-23
[56] 웹사이트 Linus Torvalds: Linux 5.0 https://lkml.org/lkm[...] 2024-08-25
[57] 뉴스 Linux Kernel 5.0 Released! Check Out The New Features https://itsfoss.com/[...] 2024-08-25
[58] 웹사이트 The Many New Features & Improvements Of The Linux 5.0 Kernel https://www.phoronix[...] 2024-08-25
[59] 웹사이트 Some statistics from the 5.8 kernel cycle https://lwn.net/Arti[...] 2020-08-11
[60] 웹사이트 Stack Overflow Developer Survey 2019 - most popular technologies https://insights.sta[...] 2020-03-17
[61] 웹사이트 Stack Overflow Developer Survey 2019 - development environments and tools https://insights.sta[...] 2020-03-17
[62] 웹사이트 Usage Statistics and Market Share of Operating Systems for Websites, March 2020 https://w3techs.com/[...] 2020-03-17
[63] 웹사이트 Usage Statistics and Market Share of Unix for Websites, March 2020 https://w3techs.com/[...] 2020-03-17
[64] 웹사이트 TOP500 Supercomputer Sites: Operating system Family / Linux https://www.top500.o[...] Top500.org 2019-10-05
[65] 간행물 Gartner Says Sales of Tablets Will Represent Less Than 10 Percent of All Devices in 2014 http://www.gartner.c[...] Gartner 2014-10-19
[66] 웹사이트 Tablet Sales Growth Plummets In 2014 As Android Smartphones Continue To Soar: Gartner https://techcrunch.c[...] AOL 2014-10-23
[67] 간행물 Global PC Shipments Exceed Forecast with Mild Improvement in Consumer Demand, While Apple Moves to #5 Spot, According to IDC http://www.idc.com/g[...] International Data Corporation 2014-10-19
[68] 웹사이트 Linux Kernel 2.6: It's Worth More! http://www.dwheeler.[...] 2007-01-18
[69] 웹사이트 Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector http://ec.europa.eu/[...] 2011-01-08
[70] 웹사이트 Estimating Total Development Cost Of a Linux Distribution http://www.linuxfoun[...]
[71] 웹사이트 The Billion Dollar Kernel http://linux.slashdo[...] Linux.slashdot.org 2010-11-12
[72] 웹사이트 The Linux Kernel: It's Worth More! https://dwheeler.com[...] 2012-09-17
[73] 웹사이트 The Linux Kernel Archives https://www.kernel.o[...] 2023-02-28
[74] 웹사이트 2017 State of Linux Kernel Development https://www.linuxfou[...] 2020-05-27
[75] 웹사이트 Why I quit: kernel developer Con Kolivas http://apcmag.com/no[...] ACP Magazines 2011-08-15
[76] 웹사이트 Re: -mm merge plans for 2.6.23 https://lwn.net/Arti[...] LWN.net 2018-02-10
[77] 웹사이트 Re: [PATCH] kdesu broken https://lkml.org/lkm[...] 2018-02-10
[78] 웹사이트 A tale of two SCSI targets https://lwn.net/Arti[...] 2018-02-14
[79] 웹사이트 LIO - the broken iSCSI target implementation https://lkml.org/lkm[...] 2018-02-14
[80] 웹사이트 Linus Torvalds says "f–k you" to NVIDIA https://arstechnica.[...] 2018-02-14
[81] 웹사이트 Linus Torvalds suspends key Linux developer: Kernel panic as Systemd dev pokes the bear https://www.networkw[...] 2019-03-24
[82] 웹사이트 On the sickness of the Linux Kernel Community https://web.archive.[...] 2018-02-10
[83] 웹사이트 VMware alleged to have violated Linux's open source license for years https://arstechnica.[...] 2018-02-14
[84] 웹사이트 Having offended everyone else in the world, Linus Torvalds calls own lawyers a 'nasty festering disease' https://www.theregis[...] 2018-02-14
[85] 웹사이트 "[PATCH 000/190] Revertion of all of the umn.edu commits" https://lore.kernel.[...] 2022-01-13
[86] 뉴스 How a university got itself banned from the Linux kernel https://www.theverge[...] The Verge 2021-04-30
[87] 웹사이트 KS2007: Developer relations and development process https://lwn.net/Arti[...] 2018-02-11
[88] 웹사이트 Linus Torvalds defends his right to shame Linux kernel developers https://arstechnica.[...] 2018-02-11
[89] 웹사이트 The kernel's code of conflict https://lwn.net/Arti[...] 2018-02-11
[90] 웹사이트 Code, conflict, and conduct https://lwn.net/Subs[...] "[[LWN.net]]" 2018-09-19
[91] 간행물 After Years of Abusive E-mails, the Creator of Linux Steps Aside https://www.newyorke[...] 2018-09-24
[92] 웹사이트 Dropping Profanity In Kernel Code Comments: Linux Gets "Hugs" https://www.phoronix[...] 2019-06-15
[93] 웹사이트 Code of Conflict https://git.kernel.o[...] 2018-02-04
[94] 웹사이트 Linux kernel dev who asked Linus Torvalds to stop verbal abuse quits over verbal abuse https://www.theregis[...] 2018-02-04
[95] 웹사이트 Too many lords, not enough stewards https://lwn.net/Arti[...] 2018-02-04
[96] 웹사이트 Bash the kernel maintainers https://lwn.net/Arti[...] 2018-02-04
[97] 웹사이트 Linux Evolution http://www.sprg.unir[...] 2013-11-06
[98] 웹사이트 Perpetual Development: A Model of the Linux Kernel Life Cycle http://www.cs.huji.a[...] 2013-11-06
[99] 간행물 Re: Announce: Linux-next (Or Andrew's dream :-)) http://lkml.iu.edu/h[...] 2017-01-30
[100] 서적 Linux Kernel Development: Linux Kernel Development Pearson Education
[101] 서적 Linux Kernel Development: Linux Kernel Development Pearson Education
[102] 웹사이트 How the development process works https://www.kernel.o[...] 2018-02-04
[103] 서적 Linux Kernel Development: Linux Kernel Development Pearson Education
[104] 웹사이트 Contributor Covenant Code of Conduct https://www.kernel.o[...] 2021-10-06
[105] 웹사이트 Linux Kernel Contributor Covenant Code of Conduct Interpretation https://www.kernel.o[...] 2021-10-06
[106] 웹사이트 "[PATCH] CodingStyle: Inclusive Terminology" https://lkml.org/lkm[...]
[107] 웹사이트 Linux kernel minimum compiler raised to GCC 5.1, allowing potential C11 use https://www.theregis[...] 2023-05-12
[108] 웹사이트 The Switch Has Been Made From C89 To C11/GNU11 With Linux 5.18 https://www.phoronix[...] 2023-05-12
[109] 웹사이트 Linux 6.1: Rust to hit mainline kernel https://www.theregis[...] 2023-05-12
[110] 웹사이트 Linus Torvalds reveals Linux kernel 6.1 https://www.theregis[...] 2022-12-11
[111] 웹사이트 Rust in the 6.2 kernel https://lwn.net/Arti[...] 2023-05-12
[112] 웹사이트 More Rust Code Readied For Linux 6.3 - Closer To Having Rust Drivers Upstreamed https://www.phoronix[...] 2023-05-12
[113] 웹사이트 HOWTO do Linux kernel development — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-04
[114] 웹사이트 Linux kernel coding style — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-04
[115] 웹사이트 How the development process works — The Linux Kernel documentation https://www.kernel.o[...] 2020-03-26
[116] 웹사이트 Linux kernel patch for Intel Compiler http://www.pyrillion[...] Pyrillion.org 2004-06-02
[117] 웹사이트 High Performance Linux Kernel Project — LinuxDNA http://linux.slashdo[...] Dice Holdings 2009-02-26
[118] 웹사이트 LinuxDNA Supercharges Linux with the Intel C/C++ Compiler http://www.linuxjour[...] Belltown Media, Inc. 2009-02-25
[119] 웹사이트 Linux 6.3 Drops Support For The Intel ICC Compiler https://www.phoronix[...] 2023-03-05
[120] 간행물 Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts) http://lists.cs.uiuc[...] 2010-10-25
[121] 웹사이트 Linux 3.15 Can Almost Be Compiled Under LLVM's Clang https://www.phoronix[...] Phoronix 2014-04-12
[122] 웹사이트 Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel https://www.phoronix[...] Phoronix
[123] 웹사이트 LFCS: The LLVMLinux project https://lwn.net/Arti[...] LWN.net 2013-05-07
[124] 웹사이트 LLVMLinux: The Linux Kernel with Dragon Wings http://llvm.org/devm[...] LLVM Project 2014-02-02
[125] Youtube 2017 LLVM Developers' Meeting: Compiling Android userspace and Linux kernel with LLVM https://www.youtube.[...] YouTube 2020-12-07
[126] 웹사이트 marlin-nougat-mr1-clang Patch Series https://android-revi[...] 2017-02-02
[127] 웹사이트 cros-kernel2: Make clang the default compiler for kernel builds https://chromium-rev[...] 2018-10-22
[128] 웹사이트 Using LLVM Clang To Compile The Linux Kernel Is Heating Up Again Thanks To Google https://www.phoronix[...] Phoronix 2019-02-04
[129] 웹사이트 vts: kernel: enforce vts_kernel_toolchain for all TARGET_ARCH for R https://android-revi[...] 2019-12-10
[130] 웹사이트 Re: violating function pointer signature https://lore.kernel.[...] LKML 2020-11-19
[131] 간행물 Re: what's an OOPS http://lkml.iu.edu/h[...] 2010-10-30
[132] 웹사이트 syslog(2) - Linux manual page https://man7.org/lin[...] 2020-08-15
[133] 웹사이트 kmsg: export printk records to the /dev/kmsg interface [LWN.net] https://lwn.net/Arti[...] 2020-08-16
[134] Youtube See what your computer is doing with Ftrace utilities https://www.youtube.[...] 2021-05-09
[135] 웹사이트 Debugging the kernel using Ftrace - part 1 [LWN.net] https://lwn.net/Arti[...] 2020-09-15
[136] 웹사이트 Debugging the kernel using Ftrace - part 2 [LWN.net] https://lwn.net/Arti[...] 2020-09-15
[137] 웹사이트 ftrace - Function Tracer — The Linux Kernel documentation https://www.kernel.o[...] 2020-09-15
[138] 웹사이트 Boot-time tracing — The Linux Kernel documentation https://www.kernel.o[...] 2020-09-19
[139] 웹사이트 Kernel Probes (Kprobes) — The Linux Kernel documentation https://www.kernel.o[...] 2020-10-06
[140] 웹사이트 Uprobe-tracer: Uprobe-based Event Tracing — The Linux Kernel documentation https://www.kernel.o[...] 2020-10-06
[141] 웹사이트 Using kgdb, kdb and the kernel debugger internals https://mirrors.edge[...] 2020-11-03
[142] 서적 Pro Linux Embedded Systems Apress
[143] 서적 Linux Kernel Programming A Comprehensive Guide to Kernel Internals, Writing Kernel Modules, and Kernel Synchronization. https://www.worldcat[...] Packt Publishing, Limited 2021
[144] 서적 Linux : embedded development : leverage the power of Linux to develop captivating and powerful embedded Linux projects : a course in three modules https://www.worldcat[...] Packt Publishing 2016
[145] 서적 Building embedded Linux systems https://www.worldcat[...] O'Reilly Media 2008
[146] 서적 Embedded Android https://www.worldcat[...] O'Reilly Media 2011
[147] 웹사이트 SoC (System on a Chip) https://openwrt.org/[...] 2014-11-06
[148] 웹사이트 What to do about CVE numbers [LWN.net] https://lwn.net/Arti[...] 2021-03-15
[149] 웹사이트 Google outlines plans for mainline Linux kernel support in Android https://arstechnica.[...] 2021-03-31
[150] Citation jbruchon/elks https://github.com/j[...] 2021-04-24
[151] 웹사이트 The state of preempt-rt https://linuxplumber[...] 2016-06-14
[152] 웹사이트 Linux developer explains Android kernel code removal https://www.zdnet.co[...] CBS Interactive 2010-02-03
[153] 서적 maemo Technology Overview Nokia 2008
[154] 웹사이트 Android and the Linux kernel community http://www.kroah.com[...] 2010-02-02
[155] 서적 Android System Programming Packt Publishing
[156] Youtube The Origins of Linux—Linus Torvalds https://www.youtube.[...] YouTube 2001-09-19
[157] 웹사이트 Linux MAINTAINERS file https://git.kernel.o[...]
[158] 서적 Linux: Embedded Development Packt Publishing
[159] 웹사이트 Linux for little systems [LWN.net] https://lwn.net/Arti[...] 2024-11-22
[160] 웹사이트 Kernel tinification [LWN.net] https://lwn.net/Arti[...] 2024-11-22
[161] 웹사이트 Shrinking the Linux Kernel and File System for IoT https://www.linux.co[...] 2024-11-22
[162] 서적 Proceedings of the 35th Annual ACM Symposium on Applied Computing 2020-03-30
[163] 웹사이트 README https://git.kernel.o[...] git.kernel.org 2021-03-24
[164] 웹사이트 KernelBuild - Linux Kernel Newbies https://kernelnewbie[...] 2020-09-13
[165] 웹사이트 The Sysctl Interface https://www.linux.it[...] 2020-09-13
[166] 웹사이트 sysctl(8) - Linux manual page https://man7.org/lin[...] 2020-09-13
[167] 웹사이트 procfs(5) - Linux manual page https://man7.org/lin[...] 2020-09-13
[168] 웹사이트 sched(7) - Linux manual page https://man7.org/lin[...] 2020-07-27
[169] 웹사이트 FAQ: Preemption http://kernelnewbies[...] 2009-08-22
[170] 웹사이트 Driver porting: the preemptible kernel https://lwn.net/Arti[...] LWN.net 2003-02-24
[171] 웹사이트 EEVDF Scheduler Merged For Linux 6.6, Intel Hybrid Cluster Scheduling Re-Introduced https://www.phoronix[...]
[172] 웹사이트 Completely Fair Scheduler {{!}} Linux Journal https://www.linuxjou[...] 2020-03-30
[173] 웹사이트 ioctl(2) - Linux manual page https://man7.org/lin[...] 2020-08-11
[174] 웹사이트 aio(7) - Linux manual page https://man7.org/lin[...] 2020-08-11
[175] 웹사이트 io_setup(2) - Linux manual page https://man7.org/lin[...] 2020-08-11
[176] 웹사이트 KVM https://www.linux-kv[...] 2020-03-29
[177] 웹사이트 TechComparison - Linux Virtualization Wiki https://virt.kerneln[...] 2020-03-29
[178] 웹사이트 Virtualization_support_through_KVM in Linux_2_6_20 - Linux Kernel Newbies https://kernelnewbie[...] 2020-03-29
[179] 웹사이트 Linux mainline contains all the Xen code bits for Dom0 and DomU support https://blogs.oracle[...] 2020-03-29
[180] 웹사이트 Xen celebrates full Dom0 and DomU support in Linux 3.0 – blog.xen.org 2020-03-29
[181] 웹사이트 Linux 3.14 and PVH https://xenproject.o[...] 2020-03-29
[182] 웹사이트 Introduction to Xen Virtualization {{!}} Virtualization Guide {{!}} openSUSE Leap 15.2 https://doc.opensuse[...] 2020-09-29
[183] 웹사이트 Virtualization technology {{!}} Virtualization Guide {{!}} openSUSE Leap 15.3 https://doc.opensuse[...] 2021-09-30
[184] 웹사이트 Character devices in user space https://lwn.net/Arti[...] LWN.net 2015-05-07
[185] 웹사이트 UIO: user-space drivers https://lwn.net/Arti[...] LWN.net 2015-05-07
[186] 웹사이트 stable-api-nonsense - Linux kernel source tree https://git.kernel.o[...] 2020-04-18
[187] 서적 Understanding the Linux Virtual Memory Manager https://pdos.csail.m[...] Prentice Hall 2020-01-27
[188] 웹사이트 uClinux mainline Announcement http://www.ucdot.org[...] 2008-01-15
[189] 웹사이트 Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy http://tldp.org/LDP/[...] The Linux Documentation Project 2012-11-28
[190] 웹사이트 Admin Guide README https://git.kernel.o[...]
[191] 웹사이트 Linux kernel release 5.x — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-04
[192] 웹사이트 COPYING https://git.kernel.o[...] 2021-09-02
[193] 웹사이트 README\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree https://git.kernel.o[...] 2020-04-18
[194] 웹사이트 syscalls\stable\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree https://git.kernel.o[...] 2020-04-18
[195] 웹사이트 1.Intro.rst - Documentation/process/1.Intro.rst - Linux source code (v5.8) - Bootlin https://elixir.bootl[...] 2020-08-08
[196] 웹사이트 syscalls http://man7.org/linu[...] 2020-01-28
[197] 웹사이트 intro(2) - Linux manual page https://man7.org/lin[...] 2020-07-16
[198] 웹사이트 clone http://man7.org/linu[...] 2020-01-28
[199] 웹사이트 feature_test_macros http://man7.org/linu[...] 2020-01-28
[200] 웹사이트 vdso(7) - Linux manual page http://man7.org/linu[...] 2020-02-02
[201] 웹사이트 futex(2) - Linux manual page http://man7.org/linu[...] 2020-02-02
[202] 웹사이트 syscall(2) - Linux manual page http://man7.org/linu[...] 2020-02-02
[203] 웹사이트 sysfs(5) - Linux manual page http://man7.org/linu[...] 2020-01-06
[204] 웹사이트 Rules on how to access information in sysfs — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-06
[205] 웹사이트 Linux Foundation Referenced Specifications https://refspecs.lin[...] 2020-02-03
[206] 웹사이트 LSB Specifications https://refspecs.lin[...] 2020-02-03
[207] 웹사이트 Linux Standard Base Desktop Specification, Generic Part https://refspecs.lin[...] 2020-02-03
[208] 웹사이트 Normative References https://refspecs.lin[...] 2020-02-03
[209] 웹사이트 Linux Standard Base Core Specification, Generic Part https://refspecs.lin[...] 2020-02-03
[210] 웹사이트 System V Application Binary Interface - Edition 4.1 https://www.sco.com/[...] 2020-02-03
[211] 웹사이트 "Xinuos Inc. {{!}} Developers {{!}} Gabi {{!}} 17 December 2003 {{!}} System V Application Binary Interface - DRAFT" http://www.sco.com/d[...] 2020-02-03
[212] 웹사이트 Executable And Linking Format (ELF) https://refspecs.lin[...] 2020-02-03
[213] 웹사이트 elf(5) - Linux manual page https://man7.org/lin[...] 2020-11-18
[214] 웹사이트 Linux Standard Base Core Specification for X86-64 https://refspecs.lin[...] 2020-02-03
[215] 웹사이트 System V Application Binary Interface - DRAFT https://refspecs.lin[...] 2020-02-03
[216] 서적 Introduction to 64 Bit Intel Assembly Language Programming for Linux CreateSpace Independent Publishing Platform
[217] 웹사이트 Anatomy of a system call, part 1 [LWN.net] https://lwn.net/Arti[...] 2020-07-16
[218] 웹사이트 Anatomy of a system call, part 2 [LWN.net] https://lwn.net/Arti[...] 2020-07-16
[219] 웹사이트 AMD's New Unified Open Source Driver http://wiki.x.org/wi[...] X.Org Foundation 2014-10-07
[220] 웹사이트 Symbols - Unreliable Guide To Hacking The Linux Kernel — The Linux Kernel documentation https://www.kernel.o[...] 2020-02-08
[221] 웹사이트 Exported symbols and the internal API [LWN.net] https://lwn.net/Arti[...] 2020-03-15
[222] 웹사이트 Unexporting kallsyms_lookup_name() [LWN.net] https://lwn.net/Arti[...] 2020-03-15
[223] 웹사이트 Trees I: Radix trees [LWN.net] https://lwn.net/Arti[...] 2020-11-13
[224] 웹사이트 Trees II: red-black trees [LWN.net] https://lwn.net/Arti[...] 2020-11-13
[225] 웹사이트 Unreliable Guide To Hacking The Linux Kernel https://www.kernel.o[...] 2020-03-15
[226] 웹사이트 Unreliable Guide To Hacking The Linux Kernel — The Linux Kernel documentation https://www.kernel.o[...] 2020-03-15
[227] 웹사이트 Unreliable Guide To Locking — The Linux Kernel documentation https://www.kernel.o[...] 2020-03-15
[228] 웹사이트 SCSI Interfaces Guide — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-11
[229] 웹사이트 libATA Developer's Guide — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-11
[230] 웹사이트 DRM Internals — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-11
[231] 웹사이트 Kernel Mode Setting (KMS) — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-11
[232] 웹사이트 Introduce DMA buffer sharing mechanism [LWN.net] https://lwn.net/Arti[...] 2020-06-11
[233] 웹사이트 Sharing CPU and GPU buffers on Linux* https://01.org/blogs[...] 2020-06-11
[234] 웹사이트 Buffer Sharing and Synchronization — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-11
[235] 웹사이트 About mac80211 https://wireless.wik[...] Linux Kernel Organization, Inc. 2014-06-08
[236] 웹사이트 Linux 802.11 Driver Developer's Guide — The Linux Kernel documentation https://www.kernel.o[...] 2021-11-19
[237] 웹사이트 "[PATCH v3 1/2] fork: add clone3 [LWN.net]" https://lwn.net/ml/l[...] 2020-07-16
[238] 웹사이트 clone(2) - Linux manual page https://man7.org/lin[...] 2020-07-15
[239] 웹사이트 clone3(), fchmodat4(), and fsinfo() [LWN.net] https://lwn.net/Arti[...] 2020-07-15
[240] 웹사이트 ld-linux.so(8) - Linux manual page https://man7.org/lin[...] 2020-11-18
[241] 웹사이트 nptl(7) - Linux manual page https://man7.org/lin[...] 2020-07-25
[242] 웹사이트 futex(7) - Linux manual page https://man7.org/lin[...] 2020-07-25
[243] 웹사이트 Kernel threads made easy [LWN.net] https://lwn.net/Arti[...] 2020-08-15
[244] 웹사이트 The Linux Scheduler http://www.linuxjour[...] Belltown Media, Inc. 2000-04-01
[245] 간행물 BKK19-TR03 - The Linux Kernel Scheduler - Overview https://www.youtube.[...] 2019-04-23
[246] 웹사이트 Lowering Latency in Linux: Introducing a Preemptible Kernel {{!}} Linux Journal https://www.linuxjou[...] 2020-08-17
[247] 간행물 "[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]" https://lwn.net/Arti[...] 2020-03-30
[248] 웹사이트 CFS Scheduler — The Linux Kernel documentation https://www.kernel.o[...] 2021-05-01
[249] 웹사이트 IEEE Standard for Information Technology – Portable Operating System Interface, POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993) http://www.opengroup[...] 2016-03-17
[250] 웹사이트 The Linux 3.14 Kernel Already Has Many Exciting Features https://www.phoronix[...] Phoronix 2014-02-03
[251] 웹사이트 Linux kernel 3.14, Section 1.1. Deadline scheduling class for better real-time scheduling http://kernelnewbies[...] 2014-04-02
[252] 웹사이트 RT-mutex implementation design — The Linux Kernel documentation https://www.kernel.o[...] 2021-12-17
[253] 웹사이트 RT-mutex subsystem with PI support — The Linux Kernel documentation https://www.kernel.o[...] 2021-12-17
[254] 웹사이트 A realtime preemption overview https://lwn.net/Arti[...] LWN.net 2012-02-05
[255] 웹사이트 OSADL Project: Realtime Linux https://www.osadl.or[...] OSADL 2012-02-05
[256] 웹사이트 Steven-Rostedt_on_PREEMPT_RT https://events19.lin[...]
[257] 웹사이트 EEVDF Scheduler May Be Ready For Landing With Linux 6.6 https://www.phoronix[...] 2023-08-31
[258] 웹사이트 "[PATCH 00/10] sched: EEVDF using latency-nice [LWN.net]" https://lwn.net/ml/l[...]
[259] 웹사이트 An EEVDF CPU scheduler for Linux [LWN.net] https://lwn.net/Arti[...] 2023-08-31
[260] 웹사이트 EEVDF Scheduler Merged For Linux 6.6, Intel Hybrid Cluster Scheduling Re-Introduced https://www.phoronix[...]
[261] 웹사이트 locking — The Linux Kernel documentation https://www.kernel.o[...] 2021-12-17
[262] 웹사이트 locking.rst - Documentation/kernel-hacking/locking.rst - Linux source code (v5.11.10) - Bootlin https://elixir.bootl[...] 2021-03-29
[263] 웹사이트 What is RCU, Fundamentally? [LWN.net] https://lwn.net/Arti[...] 2021-03-29
[264] 웹사이트 What is RCU? Part 2: Usage [LWN.net] https://lwn.net/Arti[...] 2021-03-29
[265] 웹사이트 RCU part 3: the RCU API [LWN.net] https://lwn.net/Arti[...] 2021-03-29
[266] 웹사이트 Linux-Kernel Memory Model http://open-std.org/[...] 2021-03-29
[267] 웹사이트 A formal kernel memory-ordering model (part 1) [LWN.net] https://lwn.net/Arti[...] 2021-03-29
[268] 웹사이트 A formal kernel memory-ordering model (part 2) [LWN.net] https://lwn.net/Arti[...] 2021-03-29
[269] 웹사이트 Explanation of the Linux-Kernel Memory Consistency Model https://git.kernel.o[...]
[270] 웹사이트 kernel/git/torvalds/linux.git - Linux kernel source tree https://git.kernel.o[...] 2021-12-17
[271] 웹사이트 Lock types and their rules — The Linux Kernel documentation https://www.kernel.o[...] 2021-12-17
[272] 웹사이트 Short subjects: Realtime, Futexes, and ntfs3 https://lwn.net/Arti[...] 2022-02-20
[273] 웹사이트 RT-mutex subsystem with PI support — The Linux Kernel documentation https://www.kernel.o[...] 2022-02-20
[274] 웹사이트 RT-mutex implementation design — the Linux Kernel documentation https://www.kernel.o[...]
[275] 웹사이트 Runtime locking correctness validator — The Linux Kernel documentation https://www.kernel.o[...] 2021-12-17
[276] 웹사이트 Interrupts, threads, and lockdep [LWN.net] https://lwn.net/Arti[...] 2021-12-17
[277] 웹사이트 Page Tables — The Linux Kernel documentation https://www.kernel.o[...] 2024-07-21
[278] 웹사이트 Physical Memory — The Linux Kernel documentation https://www.kernel.o[...] 2024-07-21
[279] 웹사이트 The Linux Storage Stack Diagram https://www.thomas-k[...] 2020-03-19
[280] 웹사이트 The SLUB allocator https://lwn.net/Arti[...] 2022-02-20
[281] 웹사이트 Slab allocators in the Linux Kernel: SLAB, SLOB, SLUB https://events.stati[...] 2022-02-20
[282] 웹사이트 6.4 Merge window, part 1 [LWN.net] https://lwn.net/Arti[...] 2023-04-28
[283] 웹사이트 The first half of the 6.8 merge window [LWN.net] https://lwn.net/Arti[...] 2024-07-21
[284] 웹사이트 Kernel/Git/Torvalds/Linux.git - Linux kernel source tree https://git.kernel.o[...]
[285] 서적 Open Sources: Voices from the Open Source Revolution https://archive.org/[...] O'Reilly 1999-01
[286] 웹사이트 Porting Linux to the DEC Alpha: The Kernel and Shell https://www.linuxjou[...]
[287] 웹사이트 Linux on Alpha: A Strategic Choice https://www.linuxjou[...]
[288] 웹사이트 TOP500 Supercomputer Sites: Operating system Family / Linux https://www.top500.o[...] Top500.org
[289] 웹사이트 Avalon Cluster {{!}} TOP500 Supercomputer Sites https://www.top500.o[...]
[290] 웹사이트 Android Now Running On iPhone 3G https://www.pcworld.[...] IDG 2010-05-06
[291] 웹사이트 LKDDb https://cateee.net/l[...] LKDDb Project
[292] 웹사이트 Linux Hardware https://linux-hardwa[...] Linux Hardware Project
[293] 웹사이트 Linux kernel 4.0, Section 1.2. Live patching http://kernelnewbies[...] 2015-04-26
[294] 웹사이트 A rough patch for live patching https://lwn.net/Arti[...] LWN.net 2015-02-25
[295] 웹사이트 kernel/git/torvalds/linux.git: Pull live patching infrastructure from Jiri Kosina (Linux kernel source tree) https://git.kernel.o[...] 2015-02-11
[296] 서적 Linux: Security, Audit and Control Features https://books.google[...] ISACA 2005-07-01
[297] 서적 Hacking Exposed Linux: Linux Security Secrets and Solutions https://books.google[...] McGraw-Hill Osborne Media 2008-07-15
[298] 서적 Operating System Security https://books.google[...] Morgan and Claypool Publishers 2008-10-07
[299] 웹사이트 CAP_PERFMON — and new capabilities in general [LWN.net] https://lwn.net/Arti[...]
[300] 웹사이트 Linux Security Module Usage — The Linux Kernel documentation https://www.kernel.o[...]
[301] 웹사이트 National Security Agency {{!}} Central Security Service > What We Do > Research > SE Linux > SE Linux FAQs https://www.nsa.gov/[...]
[302] 웹사이트 AppArmor — The Linux Kernel documentation https://www.kernel.o[...]
[303] 웹사이트 SELinux Project https://github.com/S[...]
[304] 웹사이트 Seccomp BPF (SECure COMPuting with filters) — The Linux Kernel documentation https://www.kernel.o[...]
[305] 웹사이트 Security Bugs and Full Disclosure http://kerneltrap.or[...] KernelTrap 2008-07-16
[306] 메일링리스트 Linux's unofficial security-through-coverup policy http://seclists.org/[...] 2008-07-16
[307] 웹사이트 The Pragmatist of Free Software http://hotwired.goo.[...] HotWired 1997-08-03
[308] 웹사이트 GPL-v2 https://www.gnu.org/[...]
[309] 웹사이트 GPLv3 and the kernel https://lwn.net/Arti[...] LWN.net 2006-01-31
[310] 메일링리스트 Linux-2.4.0-test8 http://lkml.iu.edu/h[...] 2000-09-08
[311] 웹사이트 gnu.org https://www.gnu.org/[...]
[312] 메일링리스트 Re: GPL V3 and Linux https://lwn.net/Arti[...] 2006-01-20
[313] 웹사이트 Top Linux programmers pan GPL 3 http://news.com/Top+[...] CNET 2006-09-25
[314] 웹사이트 Kernel developers' position on GPLv3: The Dangers and Problems with GPLv3 https://lwn.net/Arti[...] LWN.net 2006-09-15
[315] 웹사이트 A fight against evil or a fight for attention? http://www.linuxjour[...] linuxjournal.com 2006-09-27
[316] 웹사이트 Linus Torvalds says GPL v3 violates everything that GPLv2 stood for https://www.youtube.[...] Debconf 2014 2018-03-21
[317] 웹사이트 DMA Buffer Sharing Framework: An Introduction http://elinux.org/im[...] Embedded Linux Conference 2014-08-02
[318] 메일링리스트 "[PATCH] dma-buf: Use EXPORT_SYMBOL" http://lists.freedes[...] 2013-09-03
[319] 메일링리스트 "RE: Linux GPL and binary module exception clause?" https://lkml.org/lkm[...] 2010-12-31
[320] 메일링리스트 "Re: Linux GPL and binary module exception clause?" http://lkml.iu.edu/h[...] 2010-11-12
[321] 웹사이트 Tainted kernels — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-13
[322] 웹사이트 Linux Firmware API — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-13
[323] 웹사이트 Built-in firmware — The Linux Kernel documentation https://www.kernel.o[...] 2020-06-10
[324] 웹사이트 Linux TM registration in the US http://tmsearch.uspt[...] 2019-09-06
[325] 웹사이트 Linux TM registration in the EU https://euipo.europa[...] 2020-11-28
[326] 웹사이트 Linux Trademark Dispute http://www.linuxjour[...] Belltown Media, Inc. 2010-12-08
[327] 웹사이트 Action Taken on Linux Trademark http://www.linuxjour[...] Belltown Media, Inc. 2010-12-08
[328] 웹사이트 The Trademark History of Linux, the Operating System http://www.gisselber[...] Gisselberg Law Firm, Inc. 2010-12-08
[329] 웹사이트 Removal of Russian coders spurs debate about Linux kernel's politics https://arstechnica.[...] 2024-10-24
[330] 웹사이트 The linux-kernel mailing list FAQ - Why is the Linux kernel written in C/assembly? http://www.tux.org/l[...] tux.org 2013-06-20
[331] 웹사이트 Linuxカーネルのバージョン6.1が公開、カーネル記述にRust言語を一部採用した最初のバージョン https://codezine.jp/[...] CodeZine 2023-06-10
[332] 웹사이트 次期LinuxがItaniumのサポートを廃止 https://pc.watch.imp[...] 2024-08-18
[333] 웹인용 README https://git.kernel.o[...] git.kernel.org 2010-11-12
[334] 웹인용 Interview: Linus Torvalds http://www.linuxjour[...] Linux Journal 2009-08-20
[335] 서적 Free as in Freedom: Richard Stallman's Crusade for Free Software http://www.oreilly.c[...] O'Reilly Media 2010-11-12
[336] 웹인용 The Linux Foundation Releases Linux Development Report http://www.linuxfoun[...] Linux Foundation 2015-02-20
[337] 웹인용 Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It http://go.linuxfound[...] 2018-03-25
[338] 웹인용 The Linux Kernel Driver Interface https://www.kernel.o[...] 2016-01-20
[339] 메일링 Re: GPLv3 Position Statement https://lkml.org/lkm[...] 2006-09-25
[340] 웹인용 Linux Kernel Copying https://git.kernel.o[...] 2013-09-25
[341] 메일링 Linux-2.4.0-test8 http://lkml.iu.edu/h[...] lkml.iu.edu 2015-11-21
[342] 웹인용 kernel/git/stable/linux-stable.git https://git.kernel.o[...] git.kernel.org 2012-08-21
[343] 뉴스그룹 What would you like to see most in minix? https://groups.googl[...] 1991-08-26
[344] 뉴스그룹 Free minix-like kernel sources for 386-AT https://groups.googl[...] 1991-10-05
[345] 웹인용 Release Notes for Linux v0.12 https://www.kernel.o[...] The Linux Kernel Archives 2007-02-21
[346] 뉴스그룹 Troubles with Partitions https://groups.googl[...] 2007-01-07
[347] 뉴스그룹 It's here! https://groups.googl[...] 2007-01-07
[348] 웹인용 Linux 3.0 release http://lkml.indiana.[...] Linux kernel mailing list 2013-05-16
[349] 웹인용 Linux Kernel Data http://www.h-online.[...] Heinz Heise 2011-07-22
[350] 웹인용 Linux 3.0 Released; Linus Torvalds Explains Why You Shouldn't Care https://www.pcmag.co[...] 지프 데이비스 2014-11-11
[351] 웹인용 What's new in Linux 3.10 http://www.h-online.[...] Heinz Heise 2013-07-15
[352] 웹인용 Linux Kernel At 19.5 Million Lines Of Code, Continues Rising https://www.phoronix[...] Phoronix 2015-06-23
[353] 서적 Open Sources: Voices from the Open Source Revolution http://www.oreilly.c[...] O'Reilly 2006-11-22
[354] 뉴스그룹 LINUX is obsolete https://groups.googl[...] 2006-05-10
[355] 웹인용 Hybrid kernel, not NT http://www.realworld[...] 2007-01-06
[356] 웹인용 Tanenbaum-Torvalds Debate: Part II http://www.cs.vu.nl/[...] VU University Amsterdam 2007-01-06
[357] 보도자료 Gartner Says Sales of Tablets Will Represent Less Than 10 Percent of All Devices in 2014 http://www.gartner.c[...] Gartner 2014-10-19
[358] 웹인용 Tablet Sales Growth Plummets In 2014 As Android Smartphones Continue To Soar: Gartner https://techcrunch.c[...] AOL 2014-10-23
[359] 보도자료 Global PC Shipments Exceed Forecast with Mild Improvement in Consumer Demand, While Apple Moves to #5 Spot, According to IDC http://www.idc.com/g[...] IDC 2014-10-19
[360] 웹인용 Shellshock: A deadly new vulnerability that could lay waste to the internet (updated) http://www.extremete[...] 지프 데이비스 2014-10-23
[361] 웹인용 FAQ: Preemption http://kernelnewbies[...] 2015-05-07
[362] 웹인용 Driver porting: the preemptible kernel https://lwn.net/Arti[...] LWN.net 2015-05-07
[363] 웹인용 Character devices in user space https://lwn.net/Arti[...] LWN.net 2015-05-07
[364] 웹인용 UIO: user-space drivers https://lwn.net/Arti[...] LWN.net 2015-05-07
[365] 웹인용 The Linux Kernel Driver Interface https://git.kernel.o[...]
[366] 웹인용 Linux Filesystem Hierarchy: Chapter 1. Linux Filesystem Hierarchy http://tldp.org/LDP/[...] The Linux Documentation Project 2012-11-28
[367] 웹인용 Linux kernel patch for Intel Compiler http://www.pyrillion[...] Pyrillion.org 2010-11-12
[368] 웹인용 High Performance Linux Kernel Project — LinuxDNA http://linux.slashdo[...] Dice Holdings 2010-10-30
[369] 웹인용 LinuxDNA Supercharges Linux with the Intel C/C++ Compiler http://www.linuxjour[...] Belltown Media, Inc. 2010-10-30
[370] 메일링 Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts) http://lists.cs.uiuc[...] 2010-10-25
[371] 웹인용 Linux 3.15 Can Almost Be Compiled Under LLVM's Clang https://www.phoronix[...] Phoronix 2014-06-10
[372] 웹인용 Patch By Patch, LLVM Clang Gets Better At Building The Linux Kernel https://www.phoronix[...] Phoronix 2014-11-20
[373] 웹인용 LFCS: The LLVMLinux project https://lwn.net/Arti[...] LWN.net 2015-03-03
[374] 웹인용 LLVMLinux: The Linux Kernel with Dragon Wings http://llvm.org/devm[...] LLVM Project 2015-03-03
[375] 웹인용 AMD's New Unified Open Source Driver http://wiki.x.org/wi[...] X.Org Foundation 2015-01-21
[376] 웹인용 The Linux Kernel Driver Interface https://git.kernel.o[...] 2015-04-10
[377] 웹인용 About mac80211 https://wireless.wik[...] Linux Kernel Organization, Inc. 2014-06-08
[378] 웹인용 Report on ABI changes in the Linux kernel http://abi-laborator[...] Andrey Ponomarenko's ABI laboratory 2016-03-17
[379] 웹인용 Linux Storage Stack Diagram https://www.thomas-k[...] Thomas-Krenn AG 2015-06-08
[380] 서적 Understanding the Linux Kernel http://oreilly.com/c[...] O'Reilly 2011-10-15
[381] 웹인용 Towards Linux 2.6, A look into the workings of the next new kernel http://www.ibm.com/d[...] IBM Global Services 2011-10-15
[382] 웹인용 The Linux Scheduler http://www.linuxjour[...] Belltown Media, Inc. 2012-04-14
[383] 메일링 "[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]" https://lwn.net/Arti[...] 2012-04-14
[384] 웹인용 IEEE Standard for Information Technology – Portable Operating System Interface, POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993) http://www.opengroup[...]
[385] 웹인용 A realtime preemption overview https://lwn.net/Arti[...] LWN.net 2012-02-05
[386] 웹인용 OSADL Project: Realtime Linux https://www.osadl.or[...] OSADL 2012-02-05
[387] 웹인용 BKL: That's all, folks https://archive.toda[...] Linux Kernel Organization, Inc. 2011-03-05
[388] 웹인용 The Linux 3.14 Kernel Already Has Many Exciting Features https://www.phoronix[...] Phoronix 2014-02-03
[389] 웹인용 Linux kernel 3.14, Section 1.1. Deadline scheduling class for better real-time scheduling http://kernelnewbies[...] 2014-04-02
[390] 서적 Open Sources: Voices from the Open Source Revolution http://www.oreilly.c[...] O'Reilly 2013-10-13
[391] 웹인용 Porting Linux to the DEC Alpha: The Kernel and Shell http://www.linuxjour[...]
[392] 웹인용 Linux on Alpha: A Strategic Choice http://www.linuxjour[...]
[393] 웹인용 TOP500 Supercomputer Sites: Operating system Family / Linux http://www.top500.or[...] Top500.org 2017-11-13
[394] 웹인용 Android Now Running On iPhone 3G http://www.pcworld.c[...] IDG 2010-07-11
[395] 웹인용 Android and the Linux kernel community http://www.kroah.com[...] 2010-02-03
[396] 웹인용 Linux developer explains Android kernel code removal http://www.zdnet.com[...] CBS Interactive 2010-02-03
[397] 서적 maemo Technology Overview http://maemo.org/mae[...] Nokia 2010-04-09
[398] 메일링 Re: what's an OOPS http://lkml.iu.edu/h[...] 2010-10-30
[399] 웹인용 kerneloops(8) - Linux man page http://linux.die.net[...] Linux.die.net 2010-10-30
[400] 웹인용 Features/ABRTF12 http://fedoraproject[...] FedoraProject 2010-10-30
[401] 웹인용 Kerneloops.org http://www.kerneloop[...] Kerneloops.org 2014-03-05
[402] 웹인용 Linux kernel 4.0, Section 1.2. Live patching http://kernelnewbies[...] 2015-04-27
[403] 웹인용 A rough patch for live patching https://lwn.net/Arti[...] LWN.net 2015-04-27
[404] 웹인용 kernel/git/torvalds/linux.git: Pull live patching infrastructure from Jiri Kosina (Linux kernel source tree) https://git.kernel.o[...] 2015-04-27
[405] 서적 Linux: Security, Audit and Control Features https://books.google[...] ISACA 2010-12-31
[406] 서적 Hacking Exposed Linux: Linux Security Secrets and Solutions https://books.google[...] McGraw-Hill Osborne Media 2010-12-31
[407] 서적 Operating System Security https://books.google[...] Morgan and Claypool Publishers 2010-12-31
[408] 웹인용 Security Bugs and Full Disclosure http://kerneltrap.or[...] KernelTrap 2010-12-31
[409] 메일링 Linux's unofficial security-through-coverup policy http://seclists.org/[...] 2010-12-31
[410] 웹인용 Good-Bye 386: Linux to drop support for i386 chips with next major release http://www.zdnet.com[...] CBS Interactive 2013-02-06
[411] 웹인용 Linux to drop i386 support in the 3.8 kernel, make us upgrade our Doom rig https://www.engadget[...] AOL 2015-03-22
[412] 웹인용 Linux 3.7 arrives, ARM developers rejoice http://www.zdnet.com[...] CBS Interactive 2013-02-06
[413] 메일링 Linux 3.11 http://lkml.iu.edu/h[...] 2013-09-03
[414] 웹인용 Linux 3.11 http://kernelnewbies[...] kernelnewbies.org 2014-01-21
[415] 메일링 Linux 4.0 released https://lkml.org/lkm[...] 2015-04-12
[416] 문서 Kernel 1.0 Source Code Release 2008-10-07
[417] 문서 Kernel 1.2 Source Code Release 2008-10-27
[418] 메일링 Linux 2.0 really _is_ released.. 2015-03-08
[419] 메일링 2.2.0-final 2015-03-08
[420] 문서 The Wonderful World of Linux 2.2 2008-10-27
[421] 웹사이트 The Wonderful World of Linux 2.4 2008-10-27
[422] 간행물 Linux 2.6.0 LKML (Mailing list) 2015-02-28
[423] 문서 proc(5) - Linux manual page
[424] 웹사이트 Index of /pub/linux/kernel/v2.6 2014-03-02
[425] 간행물 Linux 3.0-rc1 LKML (Mailing list) 2013-07-01
[426] 뉴스 Good-Bye 386: Linux to drop support for i386 chips with next major release ZDNet 2013-02-06
[427] 뉴스 Linux 3.7 arrives, ARM developers rejoice ZDNet 2013-02-06
[428] 간행물 Linux 3.11 LKML (Mailing list) 2013-09-03
[429] 웹사이트 Linux 3.11 2014-01-21
[430] 웹사이트 https://www.kernel.o[...]
[431] 간행물 Linux 4.0 released LKML (Mailing list) 2015-04-12
[432] 뉴스 Are top Linux developers losing the will to code? ComputerworldUK 2016-10-24
[433] 간행물 Re: Announce: Linux-next (Or Andrew's dream :-)) Linux Kernel Mailing List (Mailing list) 2017-01-30
[434] 간행물 Linux kernel 4.1.44 released LKML (Mailing list) 2017-09-20
[435] 웹사이트 https://cdn.kernel.o[...]
[436] 웹사이트 https://linux.slashd[...]
[437] 웹사이트 https://www.kernel.o[...]
[438] 논문 http://www.dbpia.co.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com