파일이란 ?
-> 영구적으로 보관되어야 할 정보
파일은 많은 타입을 가진다 : text | source | executable
<파일 속성>
- Name
- Identifier : 번호를 붙여서 파일 식별
- Type : 서로 다른 타입을 가진 시스템을 지원하기 위해 필요
- Location : 기기에서 파일의 위치를 가리키는 포인터
- Size
- Protection : 누가 읽고 쓸 수 있는지에 대한 정보
- Time, date, and user identification
파일 스크립터 | 파일컨트롤블록 : 파일에 대한 정보가 들어가 있음.
[파일 연산]
파일을 만들고 지우고 읽고 쓰기.
Seek : Current pointer를 움직이는 것.
Truncate : 파일 내용 지우고 빈 파일을 만든다.
Open | Close : 파일컨트롤블록과 데이터에 접근하기 위해서는 디스크에 접근해야 하는데 2번 디스크에 접근하기보다 메인 메모리에 파일컨트롤블록을 가져와서 바로 데이터에 접근할 수 있도록 한다.
[Open files]
운영체제는 open file table이라는 것을 가지고 있다.
이 테이블에는 오픈된 파일에 대한 정보들이 들어가 있다.
-> 얼마나 많은 프로세스들이 파일을 참조하고 있는지에 대한 정보.
각각의 프로세스들도 open file table을 가지고 있는데 이 때 RWP를 따로 프로세스에 저장함으로써 파일안에 접근하고 싶은 부분에 접근할 수 있다.
[Open file Locking]
파일을 배타적으로 사용하기 위해 운영체제가 제공
1 ) Shared lock : reader lock
2 ) Exclusive lock : writer lock
---------
3 ) Mandatory : 사용자가 반드시 락을 해야 사용이 가능함.
4 ) Advisory : 권장은 하지만 사용자 권한 없이도 사용이 가능함.
[File Locking - Java API]
getChannel();
exclusiveLock = lock(0, length()/2, EXCLUSIVE);
exclusiveLock.relesae;
[File Types - Name, Extension]
[File Structure]
파일 구조는 많은데, 각각의 처리를 운영체제가 더 많이 할 건지, 프로그램(사용자)가 많이 할 건지 결정
-> OS는 파일 구조를 바이트 스트림으로 봄(WIN, UNIX)