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

커널 2.4의 특징

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle77.gif

임종균 / 삼성 소프트웨어 멤버쉽(SSM) / hermse44@secsm.org

 

목차

o 들어가며
o 하이엔드의 특징
o 로우엔드의 특징
o 기타특징
o 마치며
o 용어
o 참고자료

 

들어가며

필자가 이 글을 쓰고 있는 오늘 Linus는 리눅스 커널 메일링 리스트에 2.4.0-test7을 발표하였다. 커널의 릴리즈 번호가 하루가 다르게 계속 증가되는 것을 보면 개발이 활발히 진행되고 있음을 알 수 있지만, 현재의 진행 상태로는 2.4.0 안정 버전이 올해 안에 발표되기는 힘들 것 같다.(이전에 Linus는 올해 여름쯤에 2.4 커널이 발표될 것이라고 하였다) 2.4.0-test 버전이 발표된지도 약 3개월이 지났지만 아직도 남아 있는 문제들은 수가 줄지 않고 있다.(2.4 버전의 현재 상황은 Linux 2.4 Status/TODO Page http://linux24.sourceforge.net/ 참조)

2.4.0-test 버전부터는 더 이상의 기능 추가없이, 디버깅과 통합 작업을 하고 있기 때문에 현재의 2.4.0-test 버전의 기능이 앞으로 나올 2.4 커널의 기능이라고 보아도 무방할 것이다. 그렇다면 이번 기사에서는 2.4.0-test7을 자료 바탕으로 2.2 커널에 비해 2.4 커널은 어떠한 특징을 갖고 있는지 간략히 집고 넘어가도록 하자.

 

하이엔드(High-end)의 특징

리눅스 2.4의 특징을 크게 두 종류로 나눌 때, 그 하나는 기업용이나 상업용의 고성능의 서버로서 갖는 하이엔드 특징이다. 이는  다음과 같이 요약을 할 수 있다.

* 고용량의 하드웨어 지원
* 프로세스 수, 파일 크기 무제한
* 32비트 UID
* Wake-one 기능
* kHTTPd 서버
* raw 블럭 장치

 

고용랑의 하드웨어 지원

4GB 이상의 램 (i386에서는 64GB까지의 램을 지원), 16개 까지의 이더넷 카드, 10개 까지의 IDE 컨트롤러, 다중 IO-APIC, 8개 까지의 프로세서 등 다중의 장치, 고용량의 장치를 지원한다. 더욱 효율적인 SMP 활용을 위해 lock 메카니즘이 많이 개선되었다고 한다. Linus가 2.3 개발을 시작하면서 처음으로 손댄 부분 중의 하나가 바로 다중 커널의 spinlock이었다.

 

프로세스 수, 파일 크기 무제한

2.2 커널에서는 파일은 2GB가 최대였지만 파일 시스템 코드가 더욱 효율적인 캐쉬 관리를 위해 개선되면서 파일 크기에 대한 제한이 없어졌다. 프로세스의 크기 또한 1024개가 최대였지만 2.4에서는 메모리 한계에 이를 때까지 계속 프로세스를 생성할 수 있다.

 

32비트 UID

이전의 uid_t는 16비트의 값이었기 때문에 최대로 수용할 수 있는 사용자의 수는 이론적으로 63356이였다. 이 uid_t의 크기가 32비트로 바뀌면서 약 42억명까지의 사용자를 수용할 수 있게 되었다. 이는 현실적으로 거의 무제한이라고 봐도 된다. 이렇게 데이터 타입이 바뀌면서 관련 시스템 콜 또한 변화가 있었다.

 

Wake-one 기능

네트웍 부분에 여러 특징적인 변화가 많았는데 그 중의 주목할만 것이 wake-one 기능이다. 이전의 네트웍 시스템에서는 네트웍으로 데이터을 받으면, 일단 기다리고 있던 모든 프로세스를 깨우고 한 프로세스가 그 데이터를 가져가면 나머지 프로세스는 다시 대기 상태로 들어가는 방식이었다. 이는 프로세스 깨우고 다시 대기시키는 불필요한 오버헤드를 발생시키기 때문에 wake-one 기능이 추가되었다. wake-one은 기다리는 프로세스 중에서 그 데이터를 받을 한 프로세스만을 깨워 데이터를 처리할 수 있도록 하는 방식이다. 이렇게 함으로써 과부하가 걸리는 대형 서버에서는 눈에 띄는 성능 향상을 이룰 수 있다고 한다.

 

kHTTPd 서버

knfsd처럼 네트웍 서버가 커널에 포함된 예이다. 이는 웹 서버로 리눅스를 사용하려고 하는 기업에서는 매우 흥미로운 기능일 것이다. 이 kHTTPd는 사실상 완벽한 웹 서버가 아닌 Apache와 같은 사용자 영역의 웹 서버에 대한 보조적인 역할을 한다. 동적인 웹 페이지가 아닌 정적인 웹 페이지 요청(파일에 대한 요청)만을 처리한다. 빌드시에 커널에 포함시킬 수도 있지만 모듈로 사용는 것도 가능하기 때문에 필요한 시점에 그 모듈을 로드하여 사용할 수 있다. 이 kHTTPd에 대한 제어는 /proc/sys/net/kHTTPd 하위의 항목들을 사용하여 동적으로 할 수 있다. Apache 그룹에서도 kHTTPd를 지원하기로 발표하여 무게를 더하고 있다.

 

raw 블럭 장치

블럭 장치는 파일 시스템에서 버퍼 캐쉬를 통하여 접근한다. 블럭 장치를 이 캐쉬를 거치지 않고 바로 접근할 수 있는 raw 장치가 추가되었다. /dev 디렉토리의 raw, raw1, raw2 노드가 바로 그것이다. 캐슁을 원하지 않거나 응용 프로그램에서 스스로 캐쉬를 관리할 경우에 즉, 데이터 베이스 엔진이나 대규모의 데이터 처리 엔진 같은 것에서 필요할 것이다.

 

로우엔드(Low-end)의 특징

앞에서 본 것과 같은 큰 성능 향상의 특징뿐만 아니라 사용자들이 리눅스를 더욱 쉽고 편리하게 사용할 수 있게 해주는 특징들도 있다.

* I2O, USB, FireWire, I2C 지원
* ISA PnP 지원
* PCMCIA 지원
* Direct Rendering Manager

 

I2O, USB, FireWire, I2C 지원

새로운 버스 방식에 대한 지원이 추가되었다. (각 버스 방식에 대한 부연 설명은 용어 참조) USB는 키보드, 마우스 뿐만 아니라 타블렛, 조이스틱, 스캐너, 오디오, 모뎀, 프린터, 디지털 카메라 등 더욱 많은 장치를 지원하게 되었다.

 

ISA PnP / PCMCIA 지원

이전 버전에서는 PCI PnP만이 지원되었는데 2.4에서는 ISA PnP가 추가되었다. 이는 정말 사용자에게 있어서는 많은 편리함을 제공한다. (ISA 랜카드를 인식시키기 위해 고생을 했던 것을 기억하면... -.-) 또한 노트북 사용자를 위해 PCMCIA에 대한 지원이 커널에 포함되었다. ISA PnP나 PCMCIA나 독립적인 커널 패치와 설정 프로그램으로 존재하였는데 2.4부터는 공식 커널에 포함되어 번거로운 작업이 줄게 되었다.

 

Direct Rendering Manager

DRM은 XFree 4.0의 DRI (Direct Rendering Infrastructure) 기능을 지원하기 위한 커널 기능이다. 이는 그래픽 하드웨어에 대한 접근 제어를 수행하여 안정성을 향상시킨다. 이는 안정적인 그래픽 환경을 지원해줄 것이다. 그래픽과 관련하여 또한 프레임버퍼와 AGP에 대한 지원이 향상되었다.

 

기타 특징

그 외에 다른 특징들로는

* 지원 아키텍쳐 증가
* /dev 파일 시스템
* 기타 바이너리 로더

 

지원 아키텍쳐 증가

눈에 띠게 드러나는 특징 중의 하나로 공식 지원 아키텍쳐가 늘어났다는 점이다. 현재 2.4.0-test7에서 지원하는 아키텍쳐는 Alpha, ARM, i386, IA-64, m68k, MIPS, MIPS64, PowerPC, S/390, SH, Sparc, Sparc64로 총 12 가지이다. 이들 아키텍쳐를 보면 소형 임베디드 프로세서부터 64비트 하이엔트 아키텍쳐까지 다양하다. 2.4 커널은 현재 가장 많은 아키덱텍쳐를 지원하는 운영체제일 것이다.

 

/dev 파일 시스템

/dev 디렉토리에 사용되지도 않는, 불필요하게 많은 장치 노드를 만들어 메모리 및 장치 번호를 낭비하는 것을 줄이기 위해 /dev 파일 시스템이 만들어졌다. 이는 현재 사용되는 장치만을 /dev의 노드로 만들어 간소화하겠다는 것으로 모듈의 로드/언로드에 따른 동적인 관리가 필요하다.

 

기타 바이너리 로더

2.2부터 기타 바이너리 로더하는 기능이 있었다. 이는 윈도우즈에서처럼 특정 바이너리 타입을 외부 응용 프로그램과 연결해주는 기능이다. 이 로더에 자바에 대한 지원이 추가되었다. 추가적인 사용법은 Documentation/binfmt_misc.txt를 보라.

 

마치며

앞에서 언급한 것 외에도 작은 수많은 개선 사항들이 있고, 추가적으로 지원된 수많은 장치들이 있다. 여러 커널 해커들이 정말 쓸만한 커널을 만들기 위해 노력하고 있다. 우리는 그 보답없는 노력에 대해 감사해야 할 것이다.

 

용어

* IO-APIC Advanced Programmable Interrupt Controller. 다중 프로세서 시스템에서
  하드웨어 인터럽트를 여러 CPU 또는 여러 CPU 그룹으로 보내주는 향상된 인터럽트 제어기.
  더 자세한 설명은 http://lwn.net/980205/io-apic.html 페이지를 참조

* IA-64 Intel-Architecture 64. Merced란 이름으로 알려진 인텔과 휴렛 패커드가 공동으로
  개발한 64 비트 마이크로프로세서. 공식적으로는 Intel Architecture 64 (IA-64)로 발표
  되었고, long instruction word (LIW), instruction prediction, branch elimination,
  speculative loading과 같은 새로운 기술을 적용하였다. IA-64 Linux 프로젝트의 공식
  홈페이지는 http://www.ia64linux.org/ 이다.

* SH Hitachi에서 개발한 32 비트 RISC 마이크로프로세서. SuperH 칩은 PDA와 같은 소형의
  장비를 위해 system-on-chip 구조로 최적화가 되어 있다. Linux SH 프로젝트의 공식
  홈페이지는 http://members.aol.com/redhtlinux/sh3/ 이다.

* I2O Intelligent I/O. 특별한 I/O 프로세서(IOP)를 이용하여 - 새로운 방식의 인터럽트 처리,
  버퍼링, 데이터 전송 - I/O 병목 현상을 없앤 I/O 구조이다. I2O 드라이버는 상위의 운영
  체제와의 인터페이스를 담당하는 운영체제 특정 모듈(OSM)과 장치와의 데이터 전송을
  담당하는 하드웨어 장치 모듈(HDM)으로 구성되어있다. HDM은 특정 운영체제와 상관은
  부분이기 때문에 OSM만 적절히 변경하여 여러 운영체제에서 사용가능하다.

* USB Universal Serial Bus. 12Mbps의 데이터 전송률을 갖는 외부 버스표준이다.
  하나의 USB 포트에는 최대 127개의 주변 장치가 연결될 수 있으며, PnP와 동작 중에도
  자유자재로 장치를 꼽고 뺄 수 있게 해주는 핫 플러깅(hot plugging)을 지원한다.
  iMac이 직렬 포트와 병렬 포트가 없이 오직 USB 포트만을 지원하게 된 이후로 PC 쪽에서
  많이 사용되기 시작하고 있다.

* FireWire IEEE 1394 표준은 최대 400Mbps의 전송 률를 지원하는 외부 버스 표준이다.
  FireWire는 이 IEEE 1394 버스 기술을 만든 Apple사의 상표 명이다. 소니에서는 I-link,
  Texas Instrument에서는 Lynx라는 이름으로 부른다. 한 FireWire 포트에 63개의 주변
  장치를 연결할 수 있고, USB와 같이 PnP와 핫 플러깅 기능을 지원한다. 하지만 USB와는
  달리 더 많은 데이터 전송를 요구하는 비디오 카메라와 같은 장치에 적합하다.
  또한 USB에 보다 더 비싸다.

* I2C Inter-IC. 필립스 반도체에서 1980년대에 고안한 IC간의 저속 버스 형식이다.
  다중 마스터 버스이다. 모니터, TV, VCR과 같은 비디오 장치에서 많이 사용한다.

* AGP Advanced Graphic Port. 인텔에서 개발한 새로운 인터페이스 스펙.
  PCI 기반의 버스로 3D 그래픽에 대한 가속을 목적으로 설계되었다. AGP 채널은 32비트에
  66MHz로 동작은 하기 때문에 PCI의 두 배인 266Mbps의 전송률을 갖는다.

* 프레임버퍼 (framebuffer) 비디오 메모리가 매핑이 되는 시스템 메모리 영역. 이는 많은
  양의 비디오 데이터의 전송을 일반적인 메모리 접근처럼 쉽게 할 수 있도록 해준다.
  이 버퍼의 특정 위치는 화면의 특정 위치를 나타내며, 버퍼의 값은 픽셀의 색을 나타낸다.

 

참고 자료

* Linux Port's (http://perso.wanadoo.es/xose/linux/linux_ports.html)
  현재 리눅스가 포팅된 상황에 대한 정보 제공
* Joe Pranevich: Wonderful World of Linux 2.4 (Final Draft)
  (http://linuxtoday.com/news_story.php3?ltsn=2000-07-17-014-04-NW-LF-KN)
  2.4 커널에 관한 기사
* The Bullet Points: Linux 2.4 Linux Journal 2000년 1월호
* 커널 2.4.0-test7의 Documentation/ 디렉토리 여러 세부적인 사항들에 대한 문서
* Webopedia (http://webopedia.internet.com/) 온라인 컴퓨터 용어 사전

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,858 개
  • 현재 접속자 :  79 명