하나의 컴퓨터 시스템, 하나의 운영체제 밑에 여러 파일 시스템이 있을 수도 있다.
예를 들어 윈도우에서는 c드라이브, d드라이브 등 나눠 사용하기도 한다.
이 때, 파일시스템 1에서의 디렉토리 u에 파일시스템 2의 홈 디렉토리를 건다고 생각해보자.
이렇게 함으로써 서로 다른 파일 시스템이지만 마치 하나의 파일 시스템인 것처럼 보이게 되는 시스템을 'mounted system'이라고 한다.
그리고 한 루트를 걸게되는 포인트를 mounted point라고 한다.
루트가 걸린 시스템을 mounted-on file system이 된다.
mount("/dev/dsk1", "/usr", 0);
/dev/dsk1 파일을 /usr에 mount해라.
-> usr : mount point
dsk1의 block sequence는 위와 같이 보이게 된다.
한 사용자(프로세스, 어플리케이션)에 의해서 수정된 데이터이ㅡ 내용이 다른 사용자에게 언제 보여줄지에 대한 것.
어플리케이션마다 요구하는 Consistency Semantics가 다르다.
여러 프로세스가 파일을 공유하는 시스템에서, Consistency는 중요한 기준이 된다.
write는 시스템콜로 이뤄지는데, 시스템 콜이 종료되자마자 그 파일을 동시에 같이 오픈하고 있던 다른 프로세스에게도 보여져야 한다.
두 프로세스가 똑같은 파일 f를 오픈했다.
둘다 각각 read, write system call을 하고 있는데 read는 읽는것일 뿐이니까 상관없지만 write은 할 때마다 다른 프로세스에게 보여져야 한다.write 시작 전 inode에 락을 걸어서 다른 프로세스가 접근할 수 없게 한다. 그리고 하나의 시스템 콜이 진행되는 동안은 다른 프로세스가 접근할 수 없게 하고, 시스템 콜이 끝나면 (write 끝나면) 락을 푼다.
따라서 각 프로세스의 실행 순서에 따라서 최종 write된 결과는 달라질 수 있다.
오픈 할 때 inode에 락을 걸고 close할 때 락을 푼다.
프로세스 b가 먼저 오픈하면 프로세스 b가 전체 다 끝날 때까지, 그 동안 프로세스 a는 파일에 접근하지 못한다. 따라서 다른 프로세스들은 그 파일을 볼 수 없다.
따라서 1번보다 더욱 더 심플하고 단순하다.
파일을 닫아야, 이후 그 파일에 접근하려는 다른 프로세스들에게 그 내용이 보여질 수 있다.