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

리눅스마스터 1급 : 리눅스와 커널의 변화

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터 1: 리눅스와 커널의 변화




2) 리눅스와 커널의 변화

 

 

리눅스 운영체제의 핵심은 역시 커널이라고 할 수 있다.

 

 

 

 

그리고 좁은 범위에서 리눅스라고 할 때에는 리눅스 커널을 의미한다.

 

 

 

 

커널의 주역할이라고 한다면 당연히 프로세스(Process)와 하드웨어 장치(자원) 관리 및 각 프로세스들이 사용하는 장치들을 통제하는 제어관리 및 입출력 제어관리라고 할 수 있다.

 

 

 

 

또한 커널 자체 또는 각 프로세스들이 하드웨어 장치 사용을 가능케 하는 궁극적인 주체가 바로 커널이다.

 

 

 

 

리눅스는 1.x, 2.0, 2.2, 2.4, 2.6 3.x를 거치면서 많은 발전이 있었다.

 

 

 

 

다음에 이에 대해서 살펴보도록 한다.

 

 

 

커널의 변화

 

 

리눅스 2.2는 리눅스 2.0과 리눅스 1.x 시리즈를 개선한 중요한 산물이다.

 

 

 

 

새로운 많은 파일 시스템 및 파일 캐싱 시스템을 지원했고, 그 범위는 훨씬 더 넓어졌다.

 

 

 

 

리눅스 2.4는 이러한 점에 기초를 두고 있지만, 여러 가지 상황에서 아직도 수정하고 개선해야 하는 부분이 많았다.

 

 

 

 

리눅스 커널은 모듈 컴포넌트의 집합이며 장치 드라이버, 프로토콜 및 다른 컴포넌트 타입을 포함한 하위 시스템이다.

 

 

 

 

이러한 컴포넌트들은 API, 프로그래밍 인터페이스에 의한 리눅스 커널의 코어에 붙어있다.

 

 

 

 

리눅스 커널의 코어는 리눅스 커널이 확장될 수 있는 표준적인 방법을 제공한다.

 

 

 

 

문서의 대부분은 리눅스 OS의 이러한 컴포넌트들에 강조를 두고 있는데, 이러한 요소들이 대부분의 작업을 수행하기 때문이다.

 

 

 

 

 

 

리눅스 2.4 부터는 이러한 컴포넌트 그 이상의 것이 되었다.

 

 

 

 

이렇게 조합된 드라이버들과 API들은 모두 리눅스 커널의 중심을 이루게 되었고, 스케줄러, 메모리 매니저, 가상 파일 시스템, 리소스 할당기 같은 기본적인 기능들이 중심을 이루었다.

 

 

 

리눅스 2.4는 모든 기능의 자원 관리 하위 시스템을 포함하고 있는 리눅스 커널의 첫 번째 배포판이었고, 리눅스 2.2에서 삭제된 PCI 카드 데이터베이스는 모든 리소스들이 연결된 장치명을 가질 수 있도록 다시 살렸다.

 

 

 

 

그리고 리눅스 커널 2.4에서는 VFS(Virtual File System, 가상 파일 시스템) 레이어 방법과 파일 캐시가 다루어지는 방법에 관한 문제점을 해결했다.

 

 

 

 

그리고 리눅스 2.6에서는 NUMA 서버를 지원하고 본격적으로 임베디드 시스템을 지원하게 되었다.

 

 

 

 

리눅스 커널 2.4

 

리눅스 2.4에서 여러 가지 변화는 기업 환경 수준에서 설명되어 있다.

 

 

 

 

다시 말해서 대부분의 데스크탑 사용자들에게는 이러한 리눅스를 강화시켜 주는 많은 변화들이 당장 유용하지는 않을 것이다.

 

 

 

 

대부분의 경우 이러한 기능의 추가는 일반적인환경에서는 리눅스의 기능을 감소시키지는 않을 것이다.

 

 

 

 

 

 

첫째, 리눅스2.4는 멀티프로세서 시스템상에서 스케일이 좀더 커지고, 설정 과정의 한계를 제공함으로써 동시에 더 많은 프로세스를 관리할 수 있다.

 

 

둘째, 스케줄러는 여러 개의 동시 다발적인 프로세스를 좀더 효율적으로 수행하기 위해 수정되었다.

 

 

 

 

 

셋째, 수정된 리눅스 커널은 42억이라는 놀랄만한 수의 사용자들과 그룹을 관리할 수 있다.

 

 

 

 

뿐만 아니라 좀더 강력한 하드웨어의 지원이 새로운 커널에서 제공된다.

 

 

 

 

예를 들어, 인텔상에서 64기가 램, 16개의 이더넷 카드, 10개의 IDE 컨트롤러, 다중 IO-APICs 등을 지원한다.

 

 

 

 

2Giga의 파일 크기의 제한 또한 없앴다.

 

 

 

 

 

 

이러한 변화와 함께 리눅스 커널 개발 팀은 많은 새로운 환경에서 옵션이 될 수 있는 것을 제공하고 있다.

 

 

 

 

리눅스가 공유 메모리를 다루는 방법 또한 리눅스 2.4에서는 좀더 표준에 따르도록 변경되었다.

 

 

 

 

이러한 세트 변경 영향의 일면은 리눅스 2.4가 공유 메모리 세그먼트를 작동하기 위해 특별한 공유 메모리파일 시스템을 마운트해야 할 필요가 생겼다는 점이다.

 

 

 

 

이는 리눅스 2.4가 준비되었을 때 배포판에서 관리되어야 할 문제이다.

 

 

 

 

 

 

리눅스 2.4는 또한 이전의 다른 리눅스 개정판보다 훨씬 더 많은 장치 드라이버의 분류를 포함하고 있으며, 리눅스 2.4에서 작동을 하는 특별한 디바이스들의 명칭과 스냅샷들이 포함되어 있다.

 

 

 

 

 

 

리눅스 2.4에서 가장 자주 묻는 질문은 얼마만큼의 메모리를 필요로 하느냐는 것이다.

 

 

 

 

많은 운영체제들이 발전할 때마다 점점 더 많은 메모리와 리소스를 필요로 한다는 것이다.

 

 

 

 

리눅스 2.4는 어떤 상황에서는 더 작은 메모리를 필요로 할 수도 있지만 리눅스 2.2보다 훨씬 더 많은 기능성을 포함하고 있다.

 

 

 

 

리눅스 커널 2.6

 

우선 다음의 두 가지의 괄목할 만한 개선 사항이 있었다.

 

 

 

임베디드 시스템을 위한 리눅스

uClinux project의 많은 부분을 리눅스 커널 메인 스트림으로 받아들임으로써 리눅스의 임베디드 시스템으로서의 괄목할 만한 향상이 있었다.

 

 

NUMA(Non-Uniform Memory Access) 지원

커널 2.6에서는 NUMA(Non-Uniform Memory Access)를 지원하여 리눅스가 더욱더 대형의 서버들을 지원할 수 있도록 하여 멀티프로세스에 있어 SMP을 넘어서는 단계에 이르렀다.

 

 

 

 

 

 

그리고, 다음은 커널 2.6의 또 다른 핵심적인 변화들이다.

 

 

 

32-bit UID의 사용32-bit UIDGID를 사용할 수 있게 됨에 따라 DevFS가 사양화되었다.

 

 

 

 

이에 따라 커널에서 DevFS의 많은 기능이 사라졌고, Quota 툴도 이것에 맞추어 새로운 버전으로 업그레이드 되었다.

 

 

 

Module-Init-Tools커널 2.6에서는 Module-Init-Tools이라는 커널 모듈 로더 프로그램이 필요하게 되었다.

 

 

 

 

따라서, 커널 2.4.x에서 커널 2.6.x로 업그레이드 할 때에는 이 프로그램을 고려해야 한다.

 

 

커널 설정 프로그램의 변화

예전의 “make xconfig”를 통한 설정 프로그램은 이제 qt libraries를 요구하고 “make gconfig”gtk libraries를 요구한다.

 

 

 

 

이 그래픽 환경의 설정 프로그램은 인터페이스가 변경되었다.

 

 

 

 

그러나, “make menuconfig”는 인터페이스 변경이 없다.

 

IO subsystemblockmemory management layers에 대한 상당한 개발이 이루어져서 커널 2.4에 비해 IO 서브시스템에 상당한 향상이 있었다.

 

 

 

 

기본적으로는 anticipatory IO scheduler을 사용하지만 커널 명령 라인에서 “elevator=deadline”으로 설정하여 시스템을 부팅하여 deadline scheduler를 사용할 수 있다.

 

 

 

 

deadline scheduler는 기본 스케줄러에 비해서 약 10%의 향상된 속도를 보장한다.

 

 

block device size 지원block devices는 현재 32-bit 아키텍쳐에서 16TB까지 64-bit 아키텍쳐에서 8EB까지 액세스(access)할 수 있다.

 

 

Process scheduler 향상O(1) algorithm을 사용하도록 프로세스 스케줄러를 개선했다.

 

 

 

 

그래서 대형 SMP 시스템과 같은 다량의 프로세스들을 사용하는 경우 scalability를 증가시킨다.

 

 

 

 

그리고 스케줄러는 현재 Hyperthreading SMP이기 때문에, 단순한 논리적인 CPU들에 대해서가 아니라 물리적으로 다른 CPU들에 대해서 프로세스를 분산시킨다.

 

 

 

 

 

파일 시스템 지원 향상수많은 추가적인 파일 시스템들이 지원된다.

 

 

 

 

현재 ext2, ext3, ext4, reiserfs, jfs, xfs, minix, romfs, iso9660, udf, msdos, vfat, ntfs (ro), adfs, amiga ffs, apple macintosh hfs, BeOS befs (ro), bfs, efs (ro), cramfs, free vxfs, os/2 hpfs, qnx4fs, sysvfs, ufs 파일 시스템을 지원한다.

 

 

 

 

특히 NTFS의 경우에는 새롭게 재작성되어서 안정적으로 쓰기와 읽기가 가능하다.

 

 

 

 

 

주변기기에 대한 지원 향상

 

AGP, CD 레코딩, USB 등에 대한 성능 향상이 있었다.

 

 

 

리눅스 커널 3.0

 

 

2011722일에 리눅스 커널 3.0이 발표되었다.

 

 

 

 

리눅스 토발즈는 2011530일에 리눅스의 버전 체계가 바뀌었음을 메일리스트에 발표하였고, 2011721일에 리눅스 커널 메일링 리스트에 리눅스 커널 3.0의 출판을 정식으로 발표하였다.

 

 

 

 

그는 커널 번호를 2.6.x에서 3.0으로 변경하는 것은 특별한 랜드마크가 될 만한 기능이 있다거나 비호환성이 있는 것이 아니라고 하면서, 리눅스의 20주년을 기념하여 단순히 불편한 번호체계를 버리는 방법이라고 언급했다.

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  256 명