[개인자료] File & Directory

김민우·2022년 6월 22일
0

JUNGLE

목록 보기
2/2
  • 영속저장장치
    - 전원이 꺼져도 데이터가 보존되는 저장 장치
    - ex. SSD, Disk...

📄 파일

  • 단순히 읽거나 쓸 수 있는 순차적인 바이트의 배열
  • 각 파일은 저수준의 이름을 갖고 있으며 이 저수준의 이름을 아이노드 번호라고 부른다.
  • 각 파일은 아이노드 번호와 연결되어 있다.

📁 디렉터리

처음 디렉터리가 생성될 때 두 개의 항목이 존재한다.
하나는 디렉터리 자신을 나타내는 '.'(dot)이고, 또 다른 하나는 부모 디렉터리를 가리키기 위한 ".."(dot-dot)이다.

프로세스들이 열린 파일 테이블을 공유하는 경우 -> 부모 프로세스가 fork()를 사용하여 자식 프로세스를 생성하는 것


fsync()를 이용한 즉시 기록

fsync()가 리턴하면 응용 프로그램은 데이터가 영속성을 갖게 되었다는 것을 보장받기 때문에, 안전하게 다음으로 진행할 수 있다.
어떤 경우에는 파일이 존재하는 디렉터리도 fsync()를 사용하여 파일 자체와 이 파일이 속한 디렉터리를 모두 디스크에 저장해줘야 한다.
즉. 파일이 새로이 생성된 경우에는 디렉터리를 반드시 fsync() 해주어야 한다.


파일 시스템은 각 파일에 대한 정보를 관리한다. 파일에 대한 정보를 메타데이터(metadata) 라고 부른다.
각 파일에 관한 많은 정보 - 파일의 크기(byte 단위), 저수준 이름(아이노드 번호), 소유권, 파일이 접근되고 변경된 시간 -는 정보를 저장하는 디스크 자료 구조인 아이노드에 저장이 된다.
모든 아이노드는 디스크에 저장되어 있으며, 사용 중인 것들은 캐쉬 메모리에 사본을 만들어 접근 속도를 높인다.

strace debugging tool in UNIX

하드 링크는 제한이 많은 편이다. 디렉터리에 대해서는 디렉터리 트리에 순환 구조를 만들 것을 우려하여 하드 링크를 만들 수 없으며, 다른 디스크 파티션에 있는 파일에 대해서도 하드 링크를 걸 수 없다(아이노드 번호는 하나의 파일 시스템 내에서만 유일하다).는 등의 제한이 있다.
표면적으로 하드 링크와 소프트 링크는 유사하지만 사실 매우 다르다.
심볼릭 링크는 다른 형식의 독립된 파일이라는 것이다.
심볼릭 링크는 파일 시스템에 존재하는 파일과 디렉터리에 이어 존재하는 세 번째 종류의 유형이다.
그러나, 심볼릭 링크가 만들어진 방식으로 인해 dangling reference라는 문제가 발생할 수 있다.

💡 Dangling Reference
허상 포인터(Dangling pointer는 컴퓨터 프로그래밍에서 적절한 타입의 유효한 객체를 가리키고 있지 않는 포인터를 말한다. 이것들은 메모리 보안 위반의 특별한 경우들이다. 일반적으로 허상 포인터는 인터넷의 죽은 링크 (link rot) 형상들처럼 유효하지 않은 목적지 주소에 대한 참조이다.
Symbolic link에서 Dangling Reference는 원본 파일이 삭제되었을 때 발생을 한다.
Dangling Pointer - Wiki

profile
Pay it forward.

0개의 댓글