4월 16일 - 파일 디스크립터

Yullgiii·2024년 4월 16일
0
post-thumbnail

파일 디스크립터와 파일 시스템

파일 디스크립터

파일 디스크립터는 운영 체제가 파일을 효율적으로 관리하기 위해 사용하는 추상화된 핸들이다. 이는 열린 파일, 소켓, 파이프 등을 포함한 어떠한 입력/출력 리소스에 대한 참조를 숫자로 표현한 것이다. 운영 체제는 이 숫자를 사용하여 해당 리소스에 접근하고, 읽기, 쓰기, 닫기 등의 작업을 수행한다. 일반적으로 UNIX와 같은 시스템에서는 0은 표준 입력, 1은 표준 출력, 2는 표준 에러를 나타낸다.

파일 시스템

파일 시스템은 데이터를 저장하고, 검색하는 방식을 정의하는 운영 체제의 구성 요소이다. 이는 디스크 또는 다른 저장 매체에 파일과 디렉토리를 조직하는 방법을 제공하며, 파일에 대한 접근 및 관리 방법을 결정한다. 파일 시스템은 메타데이터를 사용하여 파일의 위치, 접근 권한, 생성 및 수정 시간과 같은 정보를 관리한다.

I-Node (아이노드)

아이노드는 UNIX 계열 파일 시스템에서 파일의 메타데이터를 저장하는 데이터 구조이다. 각 파일은 고유한 아이노드 번호를 가지고 있으며, 이 번호를 통해 파일 시스템은 해당 파일의 속성을 찾을 수 있다. 아이노드에는 파일의 크기, 소유권, 접근 권한, 파일이 저장된 블록 위치 정보, 생성 및 수정 시간 등이 포함된다.

파일 관련 함수의 작동 방식

Python의 open()

Python에서 open() 함수는 파일을 열 때 사용되며, 파일 디스크립터를 반환한다. 이 함수는 파일 경로와 모드(읽기, 쓰기, 추가 등)를 인자로 받는다. 예를 들어, f = open('path/to/file', 'r')는 파일을 읽기 모드로 열고, 해당 파일의 내용을 읽기 위한 파일 객체 f를 반환한다. Python의 파일 객체는 내부적으로 버퍼링을 수행하여, 디스크 접근 횟수를 줄이고 입/출력 작업의 효율성을 높인다.

Java의 BufferedReaderBufferedWriter

Java에서 BufferedReaderBufferedWriter는 텍스트 파일을 읽고 쓰기 위한 클래스이다. 이들은 파일 I/O를 버퍼링하여 더 빠르고 효율적으로 처리할 수 있도록 한다. 예를 들어, BufferedReader는 파일에서 텍스트를 한 번에 한 줄씩 읽을 수 있도록 돕는다. 파일을 열기 위해 Java에서는 FileReader 같은 클래스를 사용하여 파일 디스크립터를 얻은 다음, 이를 BufferedReader의 생성자에 전달하여 사용한다.

BufferedReader reader = new BufferedReader(new FileReader("path/to/file"));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
reader.close();
profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글