1. 파일 (File)
※ 파일의 개념은, 대단히 일반화된 것임
- 이에 의해, 정보에 대한 일관된 논리적 관점을 주게 됨
. 복잡한 정보 형태를 감싸서, 하나의 단위로 단순화시켜, 이에 이름을 붙인 것
ㅇ 사실상, 운영체제에 의해,
- 정의되고 구현되는, 추상적인 자료형으로써,
- 파일 (추상적)과 실제 장치 (물리적)들과 사상되어짐
ㅇ 사용자가 저장장치를 바라보는 관점에서 볼 때, 파일은,
- 저장장치의 물리적 특성을 추상화시킨, 논리적 저장 단위로써,
- 논리적으로 구분 가능한, 가장 작은 할당 단위가 됨
2. 파일의 유형/종류
ㅇ 내용에 따른 구분 (파일 유형)
- 텍스트 파일 : 라인 단위로 조직된 연속된 문자열 파일
- 소스 파일 : 명령문이 모여진 파일
- 오브젝트 파일 : 소스 파일을 기계어로 단순히 번역시킨 파일
- 실행 가능 파일 : 링커 및 로더가 메모리로 가져와 실행시킬 수 있는, 기계어 파일
ㅇ 파일 구조에 따른 구분
- 순차 파일 (sequential file)
. 파일 내 정보가 순서대로 배열된 파일
. 통상, 순차 파일의 끝을 가리키는 EOF 정보 유지
. 例) PC 내 저장되는 대부분의 파일들
- 색인 파일 / 인덱스된 파일 (indexd file)
. 구성 : 인덱스 및 인덱스화된 파일
. 例) 음악 CD에서 개별 곡 파일들에 대한 인덱스 유지 등
- 해시 파일 / 직접 파일 (hash file)
3. 파일의 성격을 특징짓는 속성들
ㅇ 파일 이름 : 사람이 읽을 수 있음
ㅇ 식별자 : 파일시스템 내 파일 식별용으로 사람이 읽을 수 없는 형태
ㅇ 파일 타입 : 텍스트, 이미지, 실행 파일 등 파일 유형
ㅇ 위치 포인터 : 파일 스트림으로 접근 가능한 위치 포인터
ㅇ 접근 모드 : 읽기, 쓰기 등의 구분
ㅇ 크기 : 파일 크기 (통상, 바이트 수)
ㅇ 시간 : 생성,변경,접근 시간 등
ㅇ 보호 : 접근 제어 관련 정보 (읽기,쓰기,실행 가능 등 권한)
4. 파일의 처리(연산)의 종류
ㅇ 파일 읽기, 파일 쓰기, 파일 생성, 파일 이동, 파일 삭제, 파일 절단 등
5. 파일 처리 상의 특징 : 저수준 파일 처리 (운영체제 관점 : 특히, 유닉스/리눅스)
ㅇ 거의 모든 것이 파일로 처리됨 ☞ Unix/Linux 파일 처리 참조
- 파일 타입(종류) : 일반 파일, 디렉토리 파일, 파일 링크, 특수 파일(장치 파일, 소켓 등)
ㅇ 파일에 대한 연산 전에, 반드시 파일을 열어 두어야 함
- (파일,장치,소켓 등)에 대해, 파일 열기에 의해, 파일 디스크립터 값이 생성됨
ㅇ 열린 파일에 대해, 파일 디스크립터 라는, 음이 아닌 정수 값으로 대응시킴
- (기본) 0 ~ 1,024, (최대) 1,048,576, (파일 열기 오류) 음수 값
- 단, 0 (stdin), 1 (stdout), 2 (stderr) 는, 표준 파일 디스크립터 라고 해서,
. 모든 프로세스가 항상 열어두고 별도 관리
ㅇ 운영체제는, 프로세스별로 열린 파일 목록을 관리하기 위해, 파일 테이블을 관리 유지함
- 파일 테이블 내 각 항목들의 내용은, 파일 위치, 접근 모드 등 각종 메타 데이터 형태임
ㅇ 파일을 읽고 쓰거나, 파일 크기를 나타낼 때, 바이트 단위로 이루어짐 (바이트 스트림)
ㅇ 하나의 파일을 여러 프로세스가 동시에 접근이 가능함
5. 파일 처리 상의 특징 : 고수준 파일 처리 (프로그래밍 언어 관점 : 특히, C 언어)
ㅇ 파일 처리 형태 : 파일 스트림 (특징 : 버퍼링 제공)
ㅇ 파일 처리 단위 : 크게, 바이트(텍스트) 스트림 및 바이너리(이진) 스트림으로 구분 처리
ㅇ 파일 관리 식별자 : 파일 포인터
- 파일 사용 전에, 반드시 파일 열기에 의해, 파일 포인터를 생성하는 과정 있게 됨
ㅇ 파일 타입(종류) : 텍스트 파일, 바이너리 파일
6. [참고사항]
ㅇ 파일 시스템
- 파일 사용을 구조화하고, 저장장치 공간의 할당,조정, 데이터 위치 추적 등에 대해,
. 기능,성능,안정성 등을 고려하여 설계된 시스템으로, 그 종류가 굉장히 많음