/dev/zero
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
/dev/zero는 유닉스 계열 운영체제에서 사용되는 특수 파일의 일종으로, 읽을 때 널 문자(0x00)를 반환하며 데이터 소스로 활용될 수 있다. 쓰기 동작은 성공하지만 아무런 영향을 미치지 않으며, 메모리에 매핑하면 익명 메모리를 사용하는 효과를 가진다. 1988년 SunOS 4.0에서 익명 메모리를 이용한 공유 라이브러리 매핑을 위해 도입되었으나, 이후 `MAP_ANONYMOUS` 플래그 지원으로 인해 사용 목적이 변화했다. `dd` 유틸리티를 사용하여 파일 시스템 파티션 데이터를 널 문자로 덮어쓰거나, 특정 크기의 파일을 생성하는 데 활용될 수 있으며, 희소 파일 생성에도 사용된다.
더 읽어볼만한 페이지
- 장치 파일 - /dev/random
/dev/random은 리눅스 커널에서 제공하는 난수 장치 파일로, 안전한 난수 생성을 위해 사용되며, 엔트로피 풀이 비어있을 경우 블로킹되는 특징을 가진다. - 장치 파일 - 널 장치
널 장치는 Version 5 Unix에서 처음 소개된 특수 파일로, 의도하지 않은 출력 스트림을 버리거나 입력 스트림을 위해 빈 파일 역할을 하며, 유닉스 및 유닉스 계열 운영체제에서 메시지 출력을 제어하는 데 활용된다. - 유닉스 파일 시스템 기술 - 아이노드
아이노드는 파일 시스템에서 파일의 메타데이터를 저장하는 자료 구조이며, 파일 소유자, 접근 권한, 파일 크기 등의 정보를 포함하고, 파일 시스템 드라이버가 파일 정보에 접근하도록 돕는다. - 유닉스 파일 시스템 기술 - 널 장치
널 장치는 Version 5 Unix에서 처음 소개된 특수 파일로, 의도하지 않은 출력 스트림을 버리거나 입력 스트림을 위해 빈 파일 역할을 하며, 유닉스 및 유닉스 계열 운영체제에서 메시지 출력을 제어하는 데 활용된다.
| /dev/zero |
|---|
2. 기능
/dev/zero는 읽기 요청 시 요청한 만큼의 널 문자(0x00)를 반환한다.
`/dev/zero`는 익명 메모리를 사용하여 공유 라이브러리에 매핑 가능한 BSS 세그먼트를 허용하기 위해 1988년 SunOS-4.0에 도입되었다.[3] HP-UX 8.x는 `/dev/zero`를 열 필요 없이 익명 메모리를 직접 매핑하는 mmap()에 MAP_ANONYMOUS 플래그를 도입했다.[4] 1990년대 후반 이후, MAP_ANONYMOUS[5] 또는 MAP_ANON은 대부분의 유닉스 버전에서 지원되어 `/dev/zero`의 원래 목적이 사라졌다.[6]
`dd` 유틸리티를 사용하여 파일 시스템 파티션의 데이터를 널 문자로 덮어씌워 삭제 (로우 레벨 포맷) 할 수 있다.[10]
[1]
서적
Advanced Linux Programming
https://books.google[...]
Sams Publishing
/dev/null과 달리 /dev/zero는 데이터의 소스(source)로 사용될 수 있다. /dev/zero에 대한 쓰기 동작은 성공하지만 아무런 영향을 미치지 않는다.
/dev/zero를 메모리에 매핑(mmap)하면 익명 메모리를 사용하는 것과 같은 효과를 가진다. (파일에 연결되지 않은 메모리)
3. 역사
4. 예
```bash
dd if=/dev/zero of=/dev/''
```
널 문자로 채워진, foobar라는 이름의 1 MiB 파일을 생성할 수 있다.[10]
```bash
dd if=/dev/zero of=foobar count=1024 bs=1024
```
블록 크기 값은 SI(십진)값으로 줄 수 있다. (예: GB, MB 등) 1 GB 파일을 생성하는 예시는 다음과 같다.
```bash
dd if=/dev/zero of=foobar count=1 bs=1GB
```
0바이트로만 채워진 읽기 파일을 만드는 대신 수많은 파일 시스템들은 또한 희소 파일의 생성도 지원하며, 이는 실제 공간을 덜 사용하면서 읽기 시 0을 반환한다.[11]
`cp` 명령어를 사용하여 데이터를 삭제할 수 있다.
```bash
cp /dev/zero /dev/<대상 드라이브 또는 파티션>
```
(이것은 안전한 삭제를 수행하지 않으며, 데이터를 전혀 파괴하지 못할 수 있고, 필요한 시간보다 훨씬 더 오래 걸릴 수 있다. 이러한 목적으로는 TRIM을 지원하는 장치의 경우 ''blkdiscard''와 같은 도메인별 도구가 선호될 수 있다.)
`head` 명령어를 사용하여 특정 크기의 파일을 생성할 수 있다. 널 문자로 채워진 1 MiB 파일 ''foobar'' 생성 예시는 다음과 같다.
```bash
head -c $(( 1024 * 1024 )) /dev/zero > foobar
```
실제로 0 바이트로만 채워진 파일을 만드는 대신, 많은 파일 시스템은 읽을 때 0을 반환하지만 실제 공간을 덜 사용하는 희소 파일 생성을 지원한다. 이를 수행하는 고전적인 방법 (도메인별 ''truncate'' 유틸리티 없이)은 1 GiB 파일을 만드는 것이다.
```bash
dd bs=1 seek=$(( 1024 * 1024 * 1024 - 1 )) count=1 < /dev/zero > foobar
```
이는 출력에서 위치 ''seek''·''bs''=1GiB−1로 이동하여 /dev/zero에서 ''count''·''bs''=1 바이트를 복사하여 파일에 하나의 데이터 블록만 포함하도록 한다.
참조
[2]
서적
Linux System Programming: Talking Directly to the Kernel and C Library
https://books.google[...]
O'Reilly Media, Inc.
[3]
웹사이트
"C" run-time program bootstrap from SunOS, contributed to CSRG for inclusion in 4.4BSD
https://minnie.tuhs.[...]
[4]
웹사이트
HP-UX 8.0.7 install media
https://archive.org/[...]
1992-07-22
[5]
웹사이트
So what the heck is anonymous memory
https://web.archive.[...]
2019-09-09
[6]
웹사이트
MAP_ANON description in mmap(2)
https://web.archive.[...]
2019-09-09
[7]
웹사이트
zero(4): data sink - Linux man page
https://linux.die.ne[...]
2024-10-29
[8]
서적
Advanced Linux Programming
https://books.google[...]
Sams Publishing
[9]
서적
Linux System Programming: Talking Directly to the Kernel and C Library
https://books.google[...]
O'Reilly Media, Inc.
[10]
서적
Olker
https://books.google[...]
Prentice Hall Professional
2002
[11]
문서
희소 파일
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com