BSD daemon

NetBSD 문서:

커널

커널 문답

하드웨어 문답

NetBSD에만 해당하는 문서

그 밖의 온라인 문서


커널 문답


어디에서 커널 소스를 받을 수 있습니까? (맨 위)

공식 릴리즈 소스

기본적으로 설치되어 있는 커널과 같은 릴리즈의 커널 소스를 컴파일 하기 위해서는 syssrc.tgz 파일이 필요합니다. 특정 릴리즈의 소스 파일은 gzip으로 압축된 tar 파일로 메인 디렉토리에서 그 릴리즈 버전 디렉토리 아래 'source/sets/syssrc.tgz'에 있습니다. NetBSD 1.6.2 커널 소스 파일을 예를 들면 다음과 같습니다.:
   /pub/NetBSD/NetBSD-1.6.2/source/sets/syssrc.tgz
NetBSD CD-Rom을 가지고 있다면 'source/sets/syssrc.tgz' 파일이 포함 되어 있습니다. 커널 소스는 아무곳에나 압축을 해제 할 수 있습니다. 그렇지만 보통 /usr/src 아래 압축을 해제 합니다. "cd / ; tar xvzpf <FILENAME>" 명령으로 압축을 해제합니다.

'최신 상태의' -current 소스는 모험을 좋아하는 사람만 쓰세요!

최신 커널 소스는 ftp.NetBSD.org 또는 미러사이트의 /pub/NetBSD/NetBSD-current/src/sys/ 디렉토리에 있습니다.
커널을 컴파일 하기 위해서는 /pub/NetBSD/NetBSD-current/tar_files/src에서 아래 파일들을 받아야 합니다.: 현재 사용하고 있는 커널에서 변경할 점이 있다면 먼저 'config' 프로그램을 컴파일하고 설치해야 합니다. -current는 NetBSD를 개발하는 중 최신 상태의 것들입니다. -current 커널 컴파일시 생길 수 있는 문제점을 참고 하십시오. 커널 설정에 익숙해 질때 까지 공식 릴리즈를 사용하는 것을 추천합니다.

특정 날짜의 커널 소스를 받아야 할때에는

스냅샷을 설치하고 있고 커널을 다시 컴파일(-current 커널은 아주 새로운 기능들이 있어서)하고 싶은 경우, 특정 날짜의 커널 소스를 받아야 합니다. anoncvs로 NetBSD-current 받기를 참고해 주십시오.

커널 컴파일 하는 방법 (맨 위)

  1. 기본 시스템에 컴파일러(comp.tgz)를 설치합니다.

  2. 커널을 받고 압축을 해제 합니다. (어디에서 커널 소스를 받을 수 있습니까? 참고).

  3. -current를 사용하고자 할 경우 새 tool-chain을 컴파일 해야 합니다. -current 소스를 받았으면:
    cd /usr/src && ./build.sh tools

  4. "cd /sys/arch/<ARCH>/conf"
    <ARCH>는 당신이 사용하고 있는 시스템(architecture) 'i386', 'sparc', 'mac68k' 등을 뜻합니다.

  5. "cp GENERIC <MYCONF>"
    <MYCONF>는 설정 파일 이름입니다. 호스트 이름, 머신 타입, 당신의 이름 등을 사용합니다. 영문, 숫자, _ 문자를 사용할 수 있습니다.

  6. <MYCONF> 수정
    처음에는 이 부분을 하지 않아도 됩니다. 사용하지 않거나 가지고 있지 않는 CPU 종류, 하드웨어, 각종 장치들의 드라이버를 제거할 수 있습니다. i386에서 가상 콘솔을 사용하기 위해 'pc0'을 주석처리 하여 'vt0'을 사용할 수 있게 하는 등의 옵션을 설정 할 수 있습니다. 어떤 하드웨어 드라이버를 사용해야 하는지 알 수 있는 가장 좋은 방법은 "dmesg" 또는 "dmesg | grep ' at '" 명령 의 출력 결과를 보는 것입니다. '<XXX> at <YYY>'와 같은 행이 있을 때 <XXX> 와 <YYY>에 해당하는 엔트리를 둘다 설정 파일내에 포함되어 있어야 합니다. 다른 커널 옵션 설정 정보는 "options(4)"를 읽어 주십시오.

  7. current로 업데이트 한다면 새 toolchain을 사용하는 것이 좋습니다.
    cd /usr/src && ./build.sh kernel=MYCONF
    이와 같이 했을 경우 다음 4개의 스텝은 생략할 수 있습니다.

  8. "config <MYCONF>"
    커널 컴파일을 하기 위해 <MYCONF> 디렉토리를 생성합니다.

  9. "cd ../compile/<MYCONF>"
    커널 컴파일을 위한 디렉토리로 이동합니다.

  10. "make depend"
    make 프로그램이 어느 파일(여기서는 모든 파일)을 다시 빌드해야 하는지 알려주는 '.depend' 파일을 생성합니다.

  11. "make"
    커널을 컴파일 합니다. 컴파일을 성공하면 'netbsd' 커널이 만들어집니다. 만약 VAX를 사용하고 있다면 상당히 많은 시간이 걸릴 것입니다. 대형 Alpha 머신이라면 짧은 시간이 걸리며, 나머지 사람들은 이 중간정도의 시간이 걸립니다.

  12. "mv /netbsd /netbsd.old ; mv /sys/arch/<ARCH>/compile/<MYCONF>/netbsd /"
    현재 사용하고 있는 커널을 보존합니다. (_매우_ 중요), 그리고 새 커널로 부팅할 수 있도록 커널을 이동시킵니다.

  13. "reboot"
    이것으로 새 커널을 사용해 재부팅 합니다. - 부트 메시지에는 다음 행이 포함 되어 있을 것입니다: 'NetBSD <VERSION> (<MYCONF>) #0: <COMPILE_DATE>'

  14. 만약 문제가 생기면:
    싱글 유저 모드로 'netbsd.old' 커널을 부팅 합니다. 부팅 방법을 바꾸기 위해서는 부트 순서를 따라야 합니다. i386은 다음과 같습니다:
    1. 처음 NetBSD 메시지가 나오면 SPACE를 누릅니다.
    2. "boot netbsd.old -s"

    부팅이 된 뒤에는 커널을 원래대로 되돌립니다:

    1. "fsck /"
    2. "mount /"
    3. "mv netbsd.old netbsd"
    4. "exit"

GENERIC 커널은 정확히 무엇입니까? (맨 위)

GENERIC 이라는 말은 머신 아키텍처를 지원하는 모든 머신에서 실행할 수 있도록 설정된 커널을 의미합니다. 이 단어는 원래 커널 설정 파일중에 루트 디바이스를 "generic"으로 하는 것을 나타내는 행에서 유래되었습니다. 그러나 이 옵션과 설정행은 이제 사용하지 않지만 이 명칭은 당분간 남아 있을 것입니다.

그러므로 GENERIC 커널은 모든 디바이스 드라이버와 머신 모델을 지원하는 코드 들을 포함하고 있습니다. 대부분 당신이 사용하지 않는 것들이므로 당신의 시스템에 맞는 커널 컴파일을 추천 합니다.

mclpool limit reached: increase NMBCLUSTERS는 무엇을 의미합니까? (맨 위)

이것은 커널이 mbuf 클러스터에 매핑한 공간을 다 써버린 것을 의미합니다. mbuf 클러스터는 네트워크 코드로 패킷이나 그외의 네트워크에 관련된 데이타를 저장하는데 사용되고 있습니다.

NMBCLUSTERS의 기본 설정값은 1024(NetBSD 1.5와 그 이하는 256)입니다. 그래서 문제가 생기면 에러 메시지가 나오지 않을 때까지 이 값을 배로 늘려 주십시오. 현재의 NMBCLUSTERS의 값은 아래와 같이 sysctl(8)을 사용하여 표시할 수 있습니다:

# sysctl kern.mbuf.nmbclusters
또는 아래와 같이 할 수도 있습니다.
# echo 'print nmbclusters' | gdb -q /netbsd
더 자세한 커널 설정 옵션 정보는 options(4)를 참조해 주십시오.

값을 변경할 때에는

options NMBCLUSTERS=2048
커널 설정 파일에 추가하거나, 커널 바이너리를 직접 변경합니다:
# gdb --write /netbsd
(gdb) set nmbclusters=2048
(gdb) quit
커널 바이너리를 직접 변경했을 경우, 변경한 값이 적용되기 위해서는 재부팅이 필요합니다. 만약 사용중인 플랫폼이 재부팅을 하지 않고 값을 적용하는 것을 지원한다면 다음 명령을 이용해 값을 설정 할 수 있습니다:
# sysctl -w kern.mbuf.nmbclusters=2048
이 방법은 곧바로 적용이 가능하지만 재부팅 했을 경우 값이 유지되지 않습니다. 이 방법과 커널 바이너리를 직접 변경하는 방법을 함께 사용하면 새로 커널을 컴파일 하거나 재부팅 할 필요도 없습니다.

WARNING: SPL NOT LOWERED ON SYSCALL EXIT는 무엇을 의미합니까? (맨 위)

이 커널 메시지는 커널안에 int x = splfoo();이 값을 리턴하기 전에 splx(x);를 호출 하지 않은 syscall의 버그가 있다는 것을 의미합니다. 이 예로 splx(x); 함수는 시스템의 우선 레벨을 x에 인코드 된 상태, 즉 다른 spl 함수(이 경우에는 splfoo();라고 하는 함수)에 의해 리턴된 값에 의해 복구됩니다.

만약 이 커널 메시지를 만나게 되면 커널 디버거 ddb(4)를 사용하십시오. ddb에서 't'를 누르면 스택 트레이스를 할 수 있는데, 문제가 생긴 syscall()을 확인 할 수 있습니다. 이 커널 메시지는 어떠한 일이 있더라도 출력될리는 없으므로, 트레이스 명령 의 출력(다른 관련 정보도 포함)을 send-pr(1)하는 것이 좋습니다.

spl 함수에 대한 자세한 정보는 spl(9)를 참조해 주십시오.

Stray interrupt on IRQ 7은 무엇을 의미합니까? (맨 위)

"Stray interrupt on IRQ 7" 커널 메시지는 인터럽트 콘트롤러가 IRQ 7의 unmask 인터럽트를 보고했지만, 그 IRQ로 요구된 드라이버가 없는 것을 의미 합니다.

이런 상황이 발생 할 수 있는 원인은 두가지 입니다:

  1. PC 이외의 대부분의 경우 그 IRQ에 드라이버가 접속 되었지만 접속된 드라이버가 잘못된 드라이버 일 경우(이 경우외에는 그 IRQ가 mask 되고 있던 것)를 의미합니다.

  2. PC의 경우 'default IR7'이라는 문제가 있습니다. 이것은 디바이스가 있는 IRQ에 접속했을 때 PIC이 인터럽트를 발생시킨 후에 CPU에게 그것을 알리기 전에 IRQ와 접속이 해제 되었기 때문에 그 IRQ가 무엇 이었는지에 대해 PIC가 거짓말을 하게 됩니다.

    'default IR7'을 전제로 하는 방법도 있습니다. 그러나 오래된 머신에서는 오히려 상황이 악화되는 것도 있고, 일반적으로도 드라이버를 수정하여 이 상황을 만들지 않는 것이 좋습니다. 그렇다고 해도 edge-triggered 인터럽트를 사용하고 있으면 완전한 예방이 곤란한 경우도 있습니다.

이 커널 메시지는 커널에 DEBUG 옵션을 정의 했을때만 발생합니다.

왜 커널을 컴파일 할때 -msoft-float 옵션을 사용합니까? (맨 위)

프로세스가 시스템 콜을 호출 했을때 다시 그 프로세스로 돌아올 수 있도록 커널은 프로세서의 상태를 저장할 필요가 있습니다. 부동 소수점 레지스터는 크기가 커지기 쉽습니다. 그래서 이것들을 저장하거나 불러오는 작업은 비싼 작업입니다. 만약 FPU가 아직 연산을 실행 중이라면 CPU는 그 연산이 완료될때까지 기다리지 않으면 레지스터를 복사할 수 없습니다.

커널 내에서 부동 소수점 레지스터의 사용을 피하는 것이 시스템 콜 실행의 효율을 높일 수 있습니다. sparc등 몇몇 프로세서들은 부동 소수점 문맥 교환을 비활성화 하여 프로세스 교환때 부동 소수점 레지스터의 저장, 불러오기 처리를 생략할 수도 있습니다.

몇몇 아키텍쳐에서는 컴파일러에서 주요한 동작(블록 메모리 복사 등)동작의 속도 향상을 위해 부동 소수점 레지스터를 사용하기 때문에 이 기능을 사용하지 않기 위해서는 '-msoft-float' 옵션이 필요합니다.

메모리가 작은 컴퓨터에서 커널을 컴파일하면 매우 느립니다. (맨 위)

기본적으로 NetBSD를 설치할때에는 모든 지원 가능한 장치 드라이버, 네트워크 프로토콜, 파일시스템을 포함한 GENERIC 커널을 설치합니다. GENERIC 커널은 어떠한 컴퓨터에서도 실행 할 수 있습니다. 결과적으로 특히 메모리가 적은 컴퓨터에서는 필요이상의 메모리 공간을 점유합니다. 또 커널 컴파일시에는 -O2 옵션으로 최적화를 하기 때문에 컴파일된 새 커널은 GENERIC 커널보다 빨라집니다. 커널 컴파일시에는 평소보다 많은 메모리와 시간을 필요로 합니다.

커널 컴파일 할때 컴파일러에게 약간의 최적화만 실시하도록 지시하기 위해서는 "make COPTS=-O" 옵션을 사용합니다. 이 옵션을 사용하면 컴파일된 커널은 덜 최적화 되어 조금 느릴 수 있지만, 컴파일에 걸리는 시간은 짧아집니다.

만약 메모리가 작은 컴퓨터를 사용하고 있고 커널을 컴파일 하기 위해 몇번이나 '컴파일, 새로운 커널로 재부팅'을 반복할 생각이 있다면 처음 몇번은 "make COPTS=-O"를 사용하고 마지막에 "make"를 사용하는 것이 좋을지도 모릅니다.

물론 메모리가 작은 컴퓨터에서 커널을 컴파일 하는데 일반적으로 가장 빠른 방법은 다른 컴퓨터를 사용하는것, 일시적으로 메모리를 더 증설하는 것입니다!

-current 커널을 컴파일 할때 발생하는 문제. (맨 위)

첫번째로 중요한 것은 current-users 메일링 리스트에 가입하는 것입니다. current-users 메일링 리스트를 읽지 않고 -current를 사용하는 것은 라이트를 켜지 않고 밤길을 드라이브 하는 것과 같습니다. 경고합니다 :).

최신 config.tar.gz 을 받아서 컴파일, 설치하여 당신의 커널 설정 파일에 대해서 다시 config를 실행해 주십시오. (config 명령은 릴리즈 마다 꽤 자주 바뀝니다.)

가끔 바이너리나 라이브러리를 미리 업그레이드 해두지 않으면 -current 를 구축하지 못하는 경우도 있습니다. 이러한 경우 바이너리 스냅샷으로부터 설치 한 다음 -current를 구축하는 것이 간단합니다. 예로 i386의 -current의 스냅샷은 /pub/NetBSD/arch/i386/snapshot/에 있습니다. src/UPDATING에는 -current나 -current 커널의 중요한 변경사항에 대한 정보가 실려 있으므로 꼭 참고하시기 바랍니다.

커널 크래쉬 덤프 디버깅 방법. (맨 위)

  1. 같은 소스를 이용해서 커널 설정파일을 만들고 그 안에 DEBUG 와 'makeoptions DEBUG="-g"'옵션을 활성화 시키고 커널 컴파일한 것을 확인해 주십시오.
  2. "gdb netbsd.gdb" (커널 컴파일 디렉토리 안에서).
  3. "target kcore /var/crash/netbsd.0.core" gdb 프롬프에서 실행.
일반 gdb(1) 명령도 사용할 수 있습니다. 예를 들면 백 트레이스는 'bt'를 합니다.

커널 크래쉬 덤프를 디버깅 하고 있을 때 백 트레이스를 얻는 방법. (맨 위)

커널의 크래쉬 덤프를 디버깅 하고 있는 경우 다음 2개의 간단한 스텝에서 임의의 프로세스의 백 트레이스를 gdb로부터 얻을 수 있습니다:

  1. 프로세스의 proc addr을 얻습니다."ps -ax -O paddr -M netbsd.x.core"
  2. gdb의 id로 "proc 0x<addr>"를 지정.

DDB가 무엇입니까? 그것으로 무엇을 할 수 있습니까? (맨 위)

DDB는 옵션으로 제공되는 커널 내부 디버거입니다. 다음 3가지 방법으로 사용할 수 있습니다: 몇개의 유용한 명령은 다음과 같습니다:

커널 크래쉬 덤프 만드는 방법 (맨 위)

일반적으로 커널 패닉이 발생하였을때 자동적으로 크래쉬 덤프가 만들어 져서 재부팅 시에 savecore(8)에 의해서 저장됩니다. 그러나 ddb(4)'reboot 0x100' (NetBSD 1.5 이후에서는 sync) 를 이용하면 강제적으로 크래쉬 덤프를 만들 수 있습니다. 만약 커널이 buffer 캐쉬 를 동기화 하는 중에 커널 패닉이 발생하면 동기화를 실시하지 않는 'reboot 0x104'를 사용할 수 있습니다.

부트 플로피에 커널을 추가하는 방법 (맨 위)

몇개의 포트에서는 "cd /usr/src/distrib/<ARCH>/floppies ; make "를 이용해서 부트 플로피를 만들 수 있습니다. (이것을 실행하기 전에 INSTALL 커널을 새로 컴파일 해야 할 수도 있습니다.) 이미 boot.fs 파일이 있다면 다음 순서대로 커널을 옮길 수 있습니다:
  1. vnconfig -c vnd0 boot.fs
  2. mount /dev/vnd0a /mnt
  3. gzip -c -9 < netbsd > /mnt/netbsd.gz
  4. umount /mnt
  5. vnconfig -u vnd0
이 방법은 커널 설정 파일에 "pseudo-device vnd"을 설정하여 컴파일한 커널을 현재 사용하고 있는 것을 전제로 합니다.

새 SCSI 장치를 추가하면 지금가지 마운트 되어 있던 장치를 마운트 할 수 없게 되었습니다. 어떤 규칙으로 장치의 번호를 매깁니까? (맨 위)

기본적으로 NetBSD에서는 SCSI 장치는 SCSI ID 번호 순서에 0부터 번호를 붙입니다. 제일 작은 번호의 SCSI 장치가 /dev/sd0가 되고 다음의 장치가 /dev/sd1가 되는 식입니다. 이것은 부팅 과정에서 그대로 사용됩니다. 주의해 주십시오.

만약 당신이 커널 컴파일을 한다면 좋아하는 SCSI ID 번호를 나타내는 SCSI 장치를 설정 할 수 있습니다. 이 설정은 다음 커널 설정 파일과 같이 하면 됩니다:

sd0             at scsibus0 target 4 lun 0
sd*             at scsibus? target ? lun ?
위의 2줄을 이용하면 sd0은 SCSI ID 번호가 4인 디스크가 되고 나머지 장치는 기본적인 규칙을 따릅니다. 이것은 SCSI 장치의 "hardwiring"으로 RAID나 ccd를 사용하는 경우에 이 설정을 하는 것을 추천합니다. 이렇게 하면 하느의 장치에 전원이 들어가 있지 않거나 고장난 경우 장치 ID가 바뀌어 버리는 것을 피할 수 있습니다.

하드웨어 문답


device not configured는 무엇을 의미합니까? (맨 위)

ATAPI, ATA(IDE) 장치 디버깅 (맨 위)

커널 컴파일시에 WDCDEBUG가 정의되어 있었다면 gdb로 wdcdebug_atapi_maskwdcdebug_mask의 값을 수정 할 수 있습니다. 이러한 변수중에서 적절한 비트를 설정하면 커널은 ATAPI와 ATA 조작에 대한 자세한 정보를 출력하게 됩니다.
(현재 NetBSD의 기본 설정에서 WDCDEBUG는 사용 가능하도록 설정 되어 있습니다.)

최고 레벨의 출력을 얻기 위해서는 다음과 같이 합니다:

	# gdb --write /netbsd
	(gdb) set wdcdebug_atapi_mask=0xff
	(gdb) set wdcdebug_mask=0xff
	(gdb) quit
주의: 이 설정은 매우 많은 양의 출력을 하게 합니다. 각각의 옵션을 선택하기 위해서는 비트 플래그 리스트를 참고해 주십시오:

USB 장치 디버깅 (맨 위)

당신이 가진 USB 장치가 문제를 일으키면 USB 드라이버의 메시지 출력을 활성화 할 수 있습니다:

새 PnP 장치 인식 (맨 위)

이것은 범용 장치가 이미 지원되고 있고 장치 ID가 인식 되지 않을 때 설정 합니다. 동작이 다른 장치를 더하려면 소스 코드를 작성할 필요가 있습니다.
  1. 장치는 부팅 메시지 중에 'not configured'으로 표시되고 있을 것입니다. 출력중에 포함되는 장치 ID를 기록해 주십시오.(예제에서는 USR3031입니다.):
    	isapnp0: <U.S. Robotics 56K FAX INT, USR3031, , > port 0x3e8/8 irq 5 not configured
  2. 적절한 엔트리를 /sys/dev/isapnp/isapnpdevs에 추가해 주십시오:
    	devlogic       com     USR3031         USR 56k Faxmodem
  3. isapnpdevs.{c,h}를: 'make -f Makefile.isapnpdevs'로 다시 만듭니다.
  4. 커널을 다시 컴파일 합니다.
  5. 변경된 것들을 send-pr(1)이나 온라인 폼을 이용해 보고해 주십시오.

새 PCMCIA 장치 인식 (맨 위)

이것은 범용 장치가 이미 지원되고 있고 장치 ID가 인식 되지 않을 때 설정합니다. 동작이 다른 장치를 더하려면 소스 코드를 작성할 필요가 있습니다.
  1. 커널을 options(4) PCMCIAVERBOSE로 설정한뒤 컴파일합니다.
  2. 부팅 메시지를 확인합니다 - 해당하는 카드가 'not configured'로 출력되고 있을 것입니다. 제조원(Manufacturer)과 제조 코드(예제에서는 0x1430x201 입니다.)를 기록합니다:
    pcmcia0: CIS version PCMCIA 2.0 or 2.1
    pcmcia0: CIS info: Grey Cell, GCS2000, Gold II, 1
    pcmcia0: Manufacturer code 0x143, product 0x201
    pcmcia0: function 0: network adapter, ccr addr 3f8 mask 1
    
  3. vendorproduct 엔트리를 /sys/dev/pcmcia/pcmciadevs에 추가합니다.:
  4. pcmciadevs.hpcmciadevs_data.h를 'make -f Makefile.pcmciadevs'로 다시 만듭니다.
  5. 추가한 엔트리를 적절한 /sys/dev/pcmcia/에 있는 bus attach 파일의 처음 부분에 있는 디바이스 테이블에 추가합니다. 예를 들면 ne2000 호환 카드의 경우 /sys/dev/pcmcia/if_ne_pcmcia.c 에 추가합니다.
  6. 커널을 다시 컴파일 합니다.
  7. 변경된 것들을 send-pr(1)이나 온라인 폼을 이용해 보고해 주십시오.

PLIP(Parallel Line IP)을 지원하고 있습니까? (맨 위)

NetBSD/i386에서 PLIP를 지원하기 위한 Martin Husemann의 패치가 PR 1278 에 있습니다. 이 PR의 마지막에 있는 패치는 NetBSD 1.3.3 소스 트리에 대해 적용할 수 있습니다.

UBC는 무엇입니까? (맨 위)

UBC는 통합 버퍼 캐쉬(Unified Buffer Cache) 프로젝트 입니다. Chuck Silvers에 의해 만들어져서 1.5L(2000년 11월) 이후의 NetBSD에 추가되고 있습니다. UBC를 사용하고 있지 않다면 설정할때 config를 다시 실행할 필요가 있습니다. 그 전에 "BUFCACHE", "NBUF"나 "BUFPAGES" 설정을 지우고 버퍼캐쉬 크기를 기본 크기로 되돌리는 것이 좋을지도 모릅니다. UBC 아래에서는 전통적인 버퍼 캐쉬는 일반 파일 저장에는 이용되지 않고 metadata만 이용되기 때문에 물리 메모리의 대부분을 가상 메모리 시스템에 맏기는 것이 좋을 것입니다. 기본 버퍼 캐쉬 크기는 메모리 크기에 상관하지 않고 대부분 최적화 됩니다. 부팅 메시지중 메모리량을 나타내고 있는 "using X buffers containing Y memory" 는 파일 데이터 캐쉬용 메모리량을 나태내고 있지 않으므로 숫자가 바뀌지 않아도 걱정하지 마십시오.

중요한 바뀐점은 보다 많은 메모리를 일반 파일 데이터의 캐쉬에 이용할 수 있는 것입니다. 이 때문에 접근하려고 하는 파일의 데이터가 이미 메모리에 올라와 있는 경우가 많아져서 결과적으로 파일시스템의 입출력이 빨라 집니다. 빨라지는 경우는 어떤것을 하느냐에 따라 다르지만 아마 그 차이를 느낄 수 있을 것입니다.

다음을 참고하십시오: Chuck Silvers의 UBC: An Efficient Unified I/O and Memory Caching Subsystem for NetBSD


홈페이지
최상위 문서로

(연락하는 방법) $NetBSD: index.html,v 1.8 2006/06/22 15:49:21 jschauma Exp $
Copyright © 1994-2003 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.