[OS] 파일 할당의 물리적 관점, 파일 접근 제어 기법
파일 할당(File Allocation)
- 파일을 디스크 공간에 어덯게 저장시킬 것인가.
- 디스크 상 빈 공간들은 어떻게 관리할 것인가.
|
연속 할당 (Contiguous Allocation)
디스크 상에서 연속된 다수개의 블록들을 동원해 파일을 저장하는 방법
< 장 점 >
- 간단함
- 순차처리에 좋은 성능을 보임
< 단 점 >
- 외부 단편화: 디스크 빈 공간 활용에 비효율적 -> 빈 공간의 통합 작업 요구
체인 할당 (Chained Allocation)
블록 크기만큼 나누어진 파일의 내용이 체인을 따라 차례로 저장되는 방법
< 장 점 >
- 비연속 할당: 블록들이 연속적일 필요가 없음
- 외부 단편화 X -> 공간 활용도가 우수함
< 단 점 >
- 흩어져 있는 각 블록에 대해 매번 접근해야 함 -> 시간 지연
인덱스 할당(Indexed Allocation)
- 비연속 할당
- 가장 많이 사용되는 방식
빈 블록을 관리하는 자료구조 종류
비트 벡터 (Bit Vector)
디스크 블록당 벡터를 두어 각 블록에 대해 1이면 사용중, 0이면 빈 블록으로 판단한다.
리스트 (List)
디스크 상의 빈 블록들을 리스트로 연결하고, 첫 번째 빈 블록에 대한 포인터를 커널이 가지도록 하는 방법이다. 리스트의 각 빈 블록은 다음 빈 블록에 대한 포인터나 블록 번호를 가지도록 한다. 많은 개수의 빈 블록을 할당해 주어야 하는 경우 리스트의 변경에 걸리는 시간이 파일의 생성을 느리게 만드는 약점이 있다.
그룹화 (Grouping)
각 빈 블록은 n 개의 빈 블록 번호를 가지도록 한다. 이 중 n-1개는 빈 블록의 번호이며, 나머지 하나는 다음번 n 개의 빈 블록 번호를 가지고 있는 블록 번호이다. 연결되는 노드의 수가 1/n으로 줄어들게 된다.
인덱싱 (Indexing)
파일 할당에서 설명한 인덱스 테이블을 사용해 디스크 상의 연속된 빈 블록들 당 하나의 인덱스 항목이 설정되어 관리되는 기법이다. 빈 공간 전체가 하나의 파일로 취급된다고 볼 수 있으며, 파일 할당 방법이 어떤 것이든 효과적으로 사용되는 방법이다.
파일에 대한 접근 제어 기법
- 파일에 대한 접근 종류: 읽기(R), 쓰기(W), 실행(E), 첨부(A)
패스워드
파일마다 패스워드를 부여하고, 이것을 통과했을 때 접근을 허용하는 방식
→ 패스워드를 모두 기억하고, 접근 방식에 따라 패스워드를 붙여야 해 부담 백배!!
접근 행렬 (Access Matrix)
- 대부분의 시스템에서 채택하고 있는 제어 기법
- 객체 (Object): 제어가 요구되는 대상 (= 파일)
- 접근 권한 (Access Rights): 지정된 객체에 대해 가능한 접근 권한
- <F, RE> = 프로세스가 파일 F에 대해 읽기와 실행 권한을 가짐
- 도메인 (Domain): 같은 접근 권한을 갖는 프로세스들의 집합
→ 행렬 내에 빈 칸이 많을 수 밖에 없어서 비효율적
접근 행렬 구현 방법
전역 테이블
시스템 전체에 대한 도메인, 파일들, 접근 권한을 순서대로 세 개의 쌍으로 표현해 전역 테이블에 저장하고 사용하는 기법
→ 테이블의 크기가 커지면 표현하기 어려워짐
접근 리스트 (Access List)
각각의 파일에 대해 도메인 별로 접근권한을 리스트 형태로 표현한 것
- 쉽고 자연스러워 가장 많이 사용됨
- 특정 도메인에 속한 프로세스들이 접근 가능한 파일을 모두 찾기 위해서 전부 검색해야 함
- 파일 F1 = { <D1, R>, <D3, RW>}
ex) UNIX
(owner) r w x / (group) r w x / (other user) r w x → 총 3 bit로 표현 가능 |
권한 리스트 (Capability List)
도메인 별로 도메인에 속한 프로세스들이 접근 가능한 파일들과 접근 권한들을 리스트로 표현한 것
ex) 도메인 D1: (F1, R), (F2, W), (F4, WA)
락-키 (Lock-key) 방식
파일들은 각각 락(Lock) 비트 패턴을, 도메인들은 키(Key) 비트 패턴의 리스트를 가지도록 한 후, 임의의 도메인 D에 속하는 프로세스가 특정 파일 F에 접근할 때 F의 락들 중 하나와 D의 키들 중 하나가 반드시 일치되어야 접근을 허락하는 방식