~에 따르면이것그래서 문제는 파일을 읽기 위해 파일을 열 때 파일을 열 때 권한을 한 번만 확인한다는 것입니다. 파일의 권한을 변경하고 사용자가 더 이상 파일을 읽을 수 없다고 말하면 사용자는 계속해서 파일을 읽을 수 있습니다. 이로 인해 몇 가지 질문이 제기됩니다.
파일을 열어서 읽은 다음 사용하려고 하면
write
오류가 발생하기 때문에 권한을 계속 확인해야 하는 것 아닌가요? 이는 파일에 대해 어떤 작업을 수행할 수 있는지 확인하고 싶다는 의미입니다. (어쩌면 fd를 사용하여 수행할 수 있는 작업을 로컬에 저장하고 매번 확인할 수 있을까요?)권한을 업데이트할 때 inode 테이블에 있는 inode의 단일 복사본을 업데이트합니까, 아니면 디스크의 복사본을 직접 업데이트합니까? 디스크에 있는 복사본에서 권한을 직접 업데이트하면 inode 테이블을 보는 다른 프로세스에서 업데이트된 버전이 표시되지 않으므로 inode 테이블을 업데이트하고 운영 체제가 변경 사항을 디스크에 다시 쓰도록 하는 것이 더 합리적입니다. 거기에서.
답변1
파일을 읽기 위해 파일을 연 다음 쓰기를 사용하려고 하면 오류가 발생해야 하기 때문에 권한을 계속 확인해야 하지 않나요?
아니요, 그러면 안됩니다! 이는 의도적인 것입니다. open
권한은 나중에가 아니라 파일에 액세스할 때 중요합니다. 이것이 API입니다.
권한을 업데이트할 때 inode 테이블에 있는 inode의 단일 복사본을 업데이트합니까, 아니면 디스크의 복사본을 직접 업데이트합니까?
이는 전적으로 파일 시스템 계층의 구현 세부 사항입니다. 우리는 모릅니다. 그리고 신경 쓸 필요도 없습니다. 우리가 아는 것은 이것이 여러 프로세스에서 일관되어야 하며 어디에서 변경하든 상관없다는 것입니다.