유닉스에서는 왜 객체로 표현될 수 없나요? 예를 들어 파일은 객체 유형이지만 파일일 뿐입니다. 이것이 표준 인터페이스를 제공하는 데 유용하다는 것을 알고 있지만 실제로는 그렇지 않습니다. 파일을 읽어도 유용한 정보(예: 장치 파일)가 표시되지 않는 경우 파일의 의미는 무엇입니까? 나는 장치 파일이 파일이 아니라 디렉토리의 객체일 수 있다고 생각합니다. 그런 다음 장치 개체는 cgdisk
와 같은 명령을 실행하지 않고도 자신을 변경하거나 자신에 대한 정보를 제공하는 자체 방법을 제공 할 수 있습니다 /dev/sda.partition1.get_size()
. 나는 이것이 옵션을 전달하는 다양한 방법을 사용하여 서로 다른 작업을 수행하는 하나의 디렉토리(/usr/bin)에 여러 명령을 두는 것보다 이론적으로 더 낫다고 생각합니다. 이 아이디어에 명백히 잘못된 점이 있다면 죄송합니다만, 이 경우에는 객체와 별로 관련이 없는 질문이 있습니다. 유용한 이름의 디렉터리에 명령을 구성할 수 없는 이유는 무엇입니까? 예를 들어, /CMDs/devices/list
각 명령을 /usr/bin에 배치하는 대신 또는 같은 명령을 사용할 수 있습니다 /CMDs/output/echo hello
.
답변1
Unix 의미론은 30년 전에 설계되었으며 "모든 것이 파일이다"를 기반으로 합니다. 이것은 버클리 소켓처럼 약간 손실되었지만 여전히 대부분 작동합니다.
그 결과는 "이것은 리소스이므로 원하는 대로 사용할 수 있습니다."입니다. 더 많은 것이 있습니다유연한객체 지향 세계관과 같지는 않지만.. 잘못하면 발에 총을 쏘게 될 것입니다!
따라서 디스크는 파일(/dev/sda)입니다. 각 파티션은 파일(/dev/sda1)입니다.
근데 뭐예파티션? 그것은 단지 데이터 구조 일뿐입니다. "디스크 드라이버"가 이를 시행하는 이유는 무엇입니까? Solaris SPARC 디스크는 Microsoft DOS 레이블을 사용하지 않으며 해당 파티션은 완전히 다릅니다.
"모든 것이 파일입니다" 형식이 더 유연합니다. 운영체제의 제약 없이 원하는 것은 무엇이든 할 수 있습니다.