이 포스트는 실제 파일 시스템의 내용보다는 그 기초가 되는 내용들로 구성되어있습니다.
우리는 컴퓨터 작업을 한 뒤 SSD, 하드디스크 등 파일들을 저장하게 됩니다. 이런 보조 저장장치에 논리적 저장 단위를 정의합니다. txt나 exe 같은 일련의 바이너리 데이터를 규정하여 보조 저장장치에 저장하기 위한 최소한의 단위입니다.
파일의 구성과 개념
파일 유형
파일 유형을 알고 그에 대한 올바른 연산을 한다면 합리적으로 사용하게 됩니다. 예를 들어 컴파일을 해야 하는 소스코드 파일을 링킹 같은 작업을 한다면 쓰레기 파일을 만들어 내게 됩니다. 흔히 확장자라고 하며 이에 따라 파일을 다루게 됩니다. 실행파일인 exe 소스코드 확장자 c, cpp, java 배치 확장자인 bat, sh 등이 존재합니다.
확장자가 있을 경우 그 확장자를 지원하는 프로그램이 파일 연산을 수행하게 됩니다. 무조건 확장자가 필요한 것은 아니며 일종의 가이드 역할을 할 뿐입니다. 확장자를 가지게 되면 좀 더 빨리 그 파일에 대한 맞는 응용프로그램을 선택하게 됩니다.
일부 응용프로그램의 확장자의 경우 데이터 안에 그 확장자를 구별할 수 있는 시그니쳐 코드를 포함하고 있습니다.
파일 연산
파일을 다루기 위한 연산을 해야 한다. 운영체제는 대체적으로 파일 연산을 위한 시스템 콜을 제공합니다. 생성, 열기 쓰기 일기 등이 있습니다.
파일 생성
파일을 생성하기 위해 저장공간과 구조에 대한 정의, 공간 할당에 관한 방법을 연산합니다. 후에 디렉터리 안에 연결됩니다.
파일 열기
접근권한 확인, 검사들을 수행하기 위해 open 시스템 콜로 파일을 엽니다. open을 한 후 파일 핸들(파일 기술자 혹은 파일 디스크립터)을 반환합니다.
파일 읽기
파일 기술자와 파일 메모리의 위치를 불러오는 연산을 합니다. 현재까지 읽은 위치를 기억하기 위해 읽기 포인터를 유지합니다.
파일 쓰기
열 파일 핸들을 불러오고 파일에 기록하는 데이터를 명시합니다. 쓰기 포인터를 유지하여 다음 쓰기가 일어날 부분을 지정합니다.
파일 삭제
파일을 디렉터리 항목에서 삭제하고 저장장치에서 파일 공간을 해제합니다.
OPEN(), 오픈 파일 테이블
파일 연산을 하면 디렉터리를 찾는 작업을 하게 되므로 열기 연산을 한 파일들의 정보를 유지하여 불필요한 시스템 콜을 줄입니다.
Open()으로 파일을 열게 되면 해당 테이블 항목에 대한 포인터를 반환합니다. 이 포인터로 입출력 연산에 사용하게 됩니다.
파일 포인터
파일 위치의 정보만을 가지고 있는 파일 포인터
파일 오픈 카운터
여러 프로세스에서 파일을 사용할 수 있으므로 따로 열린 파일의 개수를 셉니다. open 연산 시 카운터를 증가시키고 close 연산 시 감소시킵니다. 0이 된다면 파일 오픈 테이블에서 제거됩니다.
접근 권한
파일의 접근 권한으로 어떤 요청을 허용, 제한하는 데 사용됩니다.
파일 구조
파일 유형으로 파일의 내부를 유추 가능합니다. 경우에 따라 운영체제가 인식 가능하도록 정해진 구조를 따르게 할 수 도 있습니다.
파일 (논리 레코드)의 길이는 다양하며 여러 논리 레코드를 하나의 물리 레코드에 패킹하는 것이 일반적입니다. 여러 파일들이 스트림처럼 나열되어 위치를 지정하는 식으로 구간을 나누는 게 일반적입니다.
'ComputerScience > OS' 카테고리의 다른 글
운영체제 교착상태 (0) | 2022.01.17 |
---|---|
파일시스템의 할당 이론 (0) | 2022.01.06 |
메모리 할당 기법, 페이징 (0) | 2021.12.12 |
뮤텍스와 세마포어, 동기화 문제 해결 도구 (2) | 2021.11.14 |
운영체제 다중처리 실시간 CPU 스케줄링 (OS scheduling 2) (3) | 2021.10.17 |
댓글