Linux의 모든 장치가 파일이나 폴더인 이유는 무엇입니까? 장점은 무엇입니까? 그리고 /dev/sda1
문서화의 필요성은 무엇입니까? 크기는 0바이트입니다. 하드 드라이브를 장착한 후 파일은 폴더에 위치합니다. 그러한 문서가 왜 필요한가요?/dev/sda2
/dev/sda3
/media
/dev/sda1
답변1
나는 특히 데이터 저장소에 대한 "왜 Linux의 모든 장치가 파일입니까?"라는 질문에 대답하려고 합니다(질문에서는 이를 예로 사용하기 때문입니다). POSIX 철학에 대한 보다 심층적인 답변도 흥미로울 수 있습니다.
여기서 기본 개념은 컴퓨터의 거의 모든 작업이 본질적으로 데이터 이동으로 귀결된다는 것입니다. 데이터를 읽고 변환하고 기록합니다. 물론 실제 결과는 데이터를 읽는 소스나 데이터를 쓰는 하드웨어에 따라 완전히 달라집니다.
역사적으로 널리 사용되는 데이터 저장 장치(하드 드라이브로 가정)는 SCSI 드라이버에 의해 처리되었습니다. 이것이 일반적으로 스토리지 앞에 접두사가 붙는 이유입니다 sd
. 그런 다음 단일 물리적 "하드웨어" 장치에 대한 논리적 "소프트웨어" 표현이 필요합니다. 처음부터 번호를 매기면 됩니다 a
. 함께 연결된 하드 드라이브를 호출할 수 있습니다 sda
.
이제 데이터를 읽고 비슷하게 쓸 수 있는 "파일"이 생겼습니다. 첫 번째 바이트부터 읽으면 /dev/sda
실제로 해당 데이터 저장 장치의 맨 처음에 있는 바이트를 읽는 것입니다(단순화를 위해 블록 크기를 무시하십시오). 실행하여 직접 시험해 볼 수 있습니다 sudo hexdump -C /dev/sda | less
. 물론 대부분의 내용은 육안으로 보기에는 왜곡되어 보입니다.
하지만 그 횡설수설을 해석하면 분할이 어디서 시작되고산해당 파티션에서 프로그램(파일 시스템 드라이버)은 데이터를 해석하고 데이터를 읽을 수 있는 폴더와 파일이 포함된 멋진 트리 구조를 제공합니다.
재미있는 사실: 이는 키보드 및 마우스(읽을 수 있는 데이터를 "생성"하는)와 같은 다른 유형의 장치(문자 장치)에도 (다양한 수준으로) 적용됩니다 :) sudo hexdump -C /dev/input/mouse0
.
아니면 메인 메모리.
또는 그래픽 메모리(프레임 버퍼): 가끔 가상 콘솔(Ctrl+Alt+F1) 중 하나로 전환하고 그래픽 카드가 다음을 통해 임의의 숫자를 해석하고 표시하도록 하는 것을 좋아합니다.sudo dd if=/dev/urandom of=/dev/fb0 bs=1M count=1