파일이란 무엇입니까?


9

스토리지뿐만 아니라 스토리지와 관련이없는 procfs 또는 / dev / null (또는 퓨즈 기반 파일)과 같은 추상화를 포함하는 파일 의 공식적인 정의를 찾고 있습니다.

지금까지 모든 파일이 추상화라는 것을 알고 있습니다.

  • 식별 될 수있다
  • 이름을 가질 수 있음 (보통 계층 구조로 구성)
  • 바이트 스트림으로 액세스 가능
  • 일반적으로 권한 및 기타 (시스템 별) 메타 데이터를 제공합니다.

그러나 지금까지 읽은 OS 책에서 유용한 공식 정의를 찾을 수 없었습니다.


아이 노드를 조사 했습니까?
Bhaskar

1
나는 / dev / null과 같은 것들이 전혀 파일이 아니라 오히려 파일이 아닌 것들에 파일처럼 접근 할 수 있도록 해킹하는 것이라고 주장한다. 또한 "공식적"이라는 말의 의미가 명확하지 않습니다. 어떤 형식주의 안에서?
David Richerby

"파일은 fopen으로 열 수있는 것입니까?"
adrianN

정확히 파일처럼 동작합니다 그 소프트웨어 추상화 @DavidRicherby 파일을 : 우리는 그들의 행동의 관점에서 소프트웨어 엔티티를 정의 할 수 있습니다. 형식주의에 관해서는, 나는 CS 관점에서 엄격한 것을 찾고있다. 예를 들어 튜링 기계에 대한 공식적인 정의가 있습니다.
Giacomo

다른 OS는 파일에 대해 다른 작업을 수행합니다 (예 : * nix와 Windows 비교) 공통점을 찾으려고 시도 할 수는 있지만 정확하지는 않습니다. 또한 CS에서는 파일에 대해 거의 이야기하지 않습니다 .OS, 파일 시스템, DBMS 또는 일부 온 디스크 알고리즘 (예 : 정렬 병합)을 디자인 할 때만 수행됩니다. (및 기타 몇 가지)
chi

답변:


6

Wikipedia에 따르면 컴퓨터 파일 은 단순히 정보를 저장하기 위한 리소스 입니다. 이 용어는 컴퓨터 프로그램이 문자 그대로 파일에 저장된 펀치 카드 시대에서 유래 한 것으로 보입니다 (느슨한 페이지를 저장하는 데 사용되는 상자에서와 같이 아래 이미지 참조). 디스크와 같은 다른 형태의 매체가 소개되면서 명명법이 뒤따 랐습니다.

* nix 관점에서 볼 때 소켓, 장치, 터미널, 스크린 / 모니터, 데이터 파일, 파이프 등 모든 것이 파일입니다. 대조적으로, Microsoft Windows는 영구 저장 데이터 "파일"및 명명 된 파이프, 소켓, 래스터 장치 등과 같은 휘발성 리소스를 호출하는 경향이 있습니다. 다른 시스템은이 두 극단 사이에서 비슷한 정의를 가질 수 있습니다.

불행히도 방금 언급했듯이 파일이 무엇인지에 대한 단일 정의는 없습니다. 모든 사람들이 파일이 데이터를 저장 하는 명명 된 리소스라는 기본 정의에 동의하는 것을 제외하고는 사람들마다 다르기 때문입니다. 영구 미디어에서 (영구적이라고해서 절대 수정 될 수 없음을 의미하지 않으며 단순히 전원을 껐다 켜도 지속됨).

펀치 카드 파일]( 위키 백과 )


Wikipedia 정의를 읽었지만 스토리지에 너무 집중되어 있습니다. 언급했듯이 데이터를 저장하지 않는 / dev / null과 같은 파일을 포함하는 정의를 찾고 있습니다.
Giacomo Tesio

@GiacomoTesio 내가 만들려고했던 두 가지 요점은 (a) 파일은 적어도 저작자에 따라 보편적으로 정의되지만 (a) 파일은 다른 저자와 다른 것을 의미합니다. NUL과 / dev / null은 실제로는 아무 것도 저장하지 않지만 그럼에도 불구하고 리소스이기 때문에 특별한 리소스입니다. 리소스는 단순히 데이터를 전송하거나 수신 할 수있는 것입니다 (또는 둘 다). 일반적인 OS 책의 파일 정의는 저자의 관점에 따라 다릅니다.
phyrfox

2

파일을 일련의 바이트로 생각합니다. 이름을 잃어버린 후에도 (일반적으로 rm에 대한 호출로 인해 연결이 끊어짐), 다른 부분이 청크를 덮어 쓸 때까지 디스크에 계속 존재합니다. 파일 형식은 파일을 읽기위한 컨텍스트입니다. 그것은 모두 정보가 바이트와 컨텍스트라는 원칙으로 돌아갑니다.

이전 포스터는 파일로 취급되는 장치가 실제로 파일이 아니라는 것이 옳습니다. 이것은 매우 유용한 해킹입니다.

그래서 파일에 대한 나의 정의 : 메모리에 저장된 일련의 바이트.


2
"파일에 대한 나의 정의 : 바이트 시퀀스." (UTF-8) 바이트 시퀀스입니다. 파일입니까?
reinierpost

우리는 소프트웨어 추상화, 파일이 정확히처럼 행동 아무것도 얘기 입니다 파일. 실제로 소프트웨어 엔티티의 동작을 제외하고는 소프트웨어 엔티티를 정의 할 수 없습니다.
Giacomo Tesio

"파일을 일련의 바이트로 생각합니다." "filesystem"의 유일한 정의는 아닙니다. 예를 들어 en.wikipedia.org/wiki/Record-oriented_filesystem
Pseudonym
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.