질문이 있지만 관련이 있는지 확실하지 않습니다(뭔가 빠졌을 수도 있습니다).
Linux에서 모든 것이 파일이라는 것은 다음을 의미합니다.
1 - 모듈 및 프로세스와의 통신이 파일 쓰기 중임: 올바른
2 - 맞다면 이 파일은 하드 드라이브의 어디에 저장되어 있습니까?
3 - 정확하다면 하드 드라이브를 읽고 쓰는 데 시간이 걸리나요?
답변1
모든 것이 파일일 수 있지만 모든 것이 파일은 아닙니다.진짜.
고려해야 할 내용 /proc
. 내 Linux 시스템에는 /proc/uptime
현재 내용이 다음과 같은 파일이 있습니다 .
831801.89 1241295.64
cat
파일을 다시 보면 다른 숫자가 포함되어 있습니다. 내 하드 드라이브는 읽기 전용으로 마운트되어 있으므로 이 숫자를 매 순간마다 디스크에 쓰는 것은 불가능합니다. 실제로 /proc
디스크에는 아무것도 없습니다. 왜냐하면 procfs
.
그런 다음 임시 파일이 있습니다. 아마도 귀하의 콘텐츠 /tmp
가 마운트되어 있을 가능성이 높습니다 tmpfs
. 이는 콘텐츠가 디스크가 아닌 RAM에 저장된다는 의미입니다.
또 다른 흥미로운 점은 /dev/tcp
네트워크와의 통신입니다. 일부 시스템에서는 다른 셸 아래에만 존재하지만 bash
존재하지 않으므로 해당 시스템의 디스크에 있을 수 없습니다.
이러한 예는 모두 파일 시스템과 하드 드라이브가 분리되어 있으며 "모든 것이 파일이다"라는 철학이 I/O 속도로 인해 성능에 영향을 미치지 않는다는 것을 보여줍니다.
답변2
아니요, I/O 측에 불이익이 있다고는 말할 수 없습니다.
어쩌면 이 표현은 너무 단순한 것일 수도 있다. 하지만 커널 장치, 파일에서는 파일 디스크립터로 모든 것을 참조할 수 있으며 모든 디스크립터는 가상 파일 시스템에 매핑되며 파일 시스템과 마찬가지로 특정 파일 시스템을 참조할 수 있습니다.문서이름(핸들)이 있습니다.
따라서 커널이 반드시 /proc/vmstat
디스크 파일 시스템을 통해 데이터를 전달할 필요는 없지만 통계를 읽기 위해 특별한 작업을 수행할 필요는 없으며 명령을 사용하여 데이터를 읽을 수 있습니다 cat
.
노력하다
watch head /proc/vmstat
시간 간격마다 숫자가 변경되는 것을 볼 수 있습니다.
분명히 일부 파일에는 간단한 열기/닫기/읽기/쓰기/탐색보다 추가 작업이 필요할 수 있는 특수한 특성이 있습니다. 예를 들어 직렬 장치에서 전송 속도를 설정하는 것은 의미가 있지만 디스크에서는 파일에서 전송 속도를 설정하는 것은 의미가 없습니다. .