1. [Unix/Linux] 파일 처리 방식의 특징
ㅇ UNIX/Linux에서는 거의 모든 것이 파일로 처리됨 : (유닉스/리눅스 철학의 중심이 파일임)
- 즉, `디스크 파일, 직렬 포트, 프린터` 등과 `파일`을 사용할 때, 똑같은 방법을 사용 가능
. 파일,디텍토리,디바이스(디스크,터미널,사운드카드,...) 등을 파일로 취급할 수 있으므로,
. 이들을, 파일 처리 시스템호출을 이용하여, 동일 형태로 조작 가능 함
ㅇ 리눅스는, 가상 파일시스템 (VFS, Virtual File System) 구조를 사용
- 여러 다양한 파일 구현 상세를, 하나의 VFS 계층 밑에 숨김으로써,
. 사용자에게 간단한 파일 모델 만을 사용할 수 있게 함
- 즉, 다양한 파일시스템들을,
. 마치 하나의 파일시스템 처럼 사용 가능
ㅇ 공통적인 파일 처리 방식을 사용 ☞ 파일 입출력 참조
- 모든 것에 대해, 열려있는 파일을 통해, 유사한 형태의 입출력이 이루어짐
. 즉, `디스크,직렬 포트,프린터 등`과 `파일`을 사용할 때 똑같은 방법을 사용
- 파일 I/O를 위한 버퍼 캐시
. 상이한 속도를 갖는 장치의 읽기쓰기를 즉시 해당 장치에서 수행않고, 반드시 버퍼를 통함
ㅇ 또한, 유닉스/리눅스는,
- 시스템 정보, 장치 정보 등도 모두 파일로써 관리 함
ㅇ 파일 처리 수준에 따른 구분
- 저 수준 파일처리 (Low Level File Handling) : 파일 기술자 (File Descriptor)
- 고 수준 파일처리 (High Level File Handling) : 파일 포인터 (File Pointer)
ㅇ 파일 끝(EOF) 도달여부의 확인
- 프로그램이 파일 끝 도달 여부를 결정하도록, 파일 크기 카운터를 유지관리
2. [Unix/Linux] 파일 구분 (파일 타입)
ㅇ 일반 파일 (regular file, normal file) : 어떤 형태로든 자료를 담고있는 일반적인 파일
- `데이터 파일`, `이미지 파일` 뿐만 아니라, `실행 파일`도 이에 포함됨
* 실행 파일
. 파일 형식 : ELF (Executable and Linkable Format) 라는 바이너리 파일 형식을 갖음
.. ELF : UNIX/Linux에서, 실행 파일,목적 파일,공유 라이브러리 등을 위한 표준 파일 형식
.. 실행 파일,재배치 가능 파일 등 각각 별도의 ELF 형식이 사용됨
.. 과거에는, a.out,COFF 라는 파일 형식 사용
. 포멧 구성 : 1개 헤더와 여러 섹션으로 구성
. 내용 구성 : 메타데이터,코드,데이터 등
. 한편, 동적 재배치되는 (shared object) 등도 실행 파일로 간주됨
ㅇ 디렉토리 파일 (directory file) : 파일을 가리키는 포인터 및 파일 관련 정보를 갖는 파일
- UNIX 운영체제 커널 만이 디렉토리 파일에 쓸 수 있는 권한 있음
ㅇ 파일 링크 (file link)
- 심볼릭 링크 (symbolic link) : 다른 파일을 가리키는 파일
- 하드 링크
ㅇ 특수 파일
- 장치 파일
. 블록 특수 파일 (block device file)
. 문자 특수 파일 (character device file)
- 파이프
- 소켓 등
3. [Unix/Linux] 파일 구분의 확인
※ ls 명령어로 볼 때, 다음과 같이 파일 구분 가능
- - : 일반 파일
- b : 블록 디바이스 파일
- c : 문자 디바이스 파일
- d : 디렉토리
- l : 심볼릭 링크
- p : FIFO (Named Pipe, 네임드 파이프)
- s : 소켓 통신 파일
- ? : 기타 파일 타입