linux: 모든 것이 파일이면 성능이 저하되나요?

linux: 모든 것이 파일이면 성능이 저하되나요?

질문이 있지만 관련이 있는지 확실하지 않습니다(뭔가 빠졌을 수도 있습니다).

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

시간 간격마다 숫자가 변경되는 것을 볼 수 있습니다.

분명히 일부 파일에는 간단한 열기/닫기/읽기/쓰기/탐색보다 추가 작업이 필요할 수 있는 특수한 특성이 있습니다. 예를 들어 직렬 장치에서 전송 속도를 설정하는 것은 의미가 있지만 디스크에서는 파일에서 전송 속도를 설정하는 것은 의미가 없습니다. .

관련 정보