본문 바로가기
CS/Operating System

[ OS 기초 ] 11. File System (2)

by IM조이 2021. 7. 23.

1. 디스크 시스템(disk system) - 파일이 저장되는 곳
2. 파일 시스템(file system) - 파일에 대한 이해와 디렉토리, 파티션
3. 디렉토리 시스템(directory structure) - 다양한 디렉토리 구조
4. 파일 보호(file protection) - 파일 보호/접근 제어 방법
5. allocation methods - 구현 및 메모리 할당 기법

 

00 개요

지금까지 파일의 개념과 디렉토리, 파티션 등 파일 시스템의 기본 구조에 대해 살펴보았고, 다음으로 파일 보호 구현 방법과 파일 저장 시 메모리 할당 및 관리 방식에 대해 알아보았다.

 

01 파일 보호

파일 보호(File Protection)란 파일에의 부적절한 접근을 막는 것으로, 다중 사용자 시스템에서 특히 중요하다. 예를 들어 특정 사용자의 해당 파일에 대한 RWEA(Read, Write, Execute, Append) 권한을 확인해서 파일 관련 operation을 허용/거절하는 것이 파일 보호에 해당된다. 파일 보호는 크게 다음 두 기법이 있다.

  • Password 기법
  • Access Matrix 기법
    • Global table
    • Access list
    • Capability list
    • Lock-Key mechanism

 

01-1 Password 기법
- 파일에 비밀번호를 설정하는 방법
- 단점 : 사용자가 파일마다, 파일의 권한 별로 비밀번호를 부여하고 기억해야 함
- 정말 중요한 파일일 경우 사용

01-2 Access Matrix 기법
- 접근 + 행렬 = 접근 가능 여부를 행렬 데이터에 기록해두는 방식
- 도메인 별 개체 접근 권한을 명시함 : 어떤 도메인은 각 개체에 대해 어떤 접근 권한을 가지는지

  • 도메인 : 사용자, 유저, 그룹, 프로세스 등
  • 개체/오브젝트 : 파일, 접근하려는 대상, 장치 등

 

01-2-1 Global Table
- 표에 모든 파일에 대한 모든 사용자의 권한을 기록하는 방식 (2차원 어레이 형태)
- 빈 공간도 저장해야 하기 때문에 용량이 커서(large table size) 오버헤드가 생김

01-2-2 Access List
- 해당 개체 대한 유저 별 접근 권한을 명시
- global table의 열 단위 저장 방식으로, 어떤 파일에 대해 도메인 별 권한을 나열해두는 것
- 권한이 없을 경우 명시할 필요가 없어 저장 공간 낭비를 막을 수 있음
- 파일에 접근하려는 사용자가 리스트에 있는지, 리스트에 있다면 구체적 권한을 확인 한 뒤 통과시켜주는 방식
- 단점 : 파일을 열 때마다 매번 검사해야 하는 오버헤드 (=> 출입증을 주는 방식으로 해소 가능)

01-2-3 Capability List
- 유저 별 접근 가능 개체와 권한을 명시
- global table의 행 단위 저장 방식으로, 사용자가 각 파일마다 어떤 권한을 가지고 있는지 나열해두는 것
- 일종의 신분증 개념으로, 저장 공간을 아낄 수 있음
- Access List에서 처럼 매번 리스트를 순회해서 사용자를 찾는 오버헤드는 줄어들지만, 이 capability list 자체를 잘 보호해야 보안 문제가 발생하지 않음
- 만약 특정 오브젝트 접근 권한에 대한 수정이 생기면, 모든 사용자의 capability list를 돌면서 바꿔줘야 함
- 보호에 따른 오버헤드 (보호 = 커널 관리), 오브젝트 별 권한 관리의 어려움

01-2-4 Lock-Key Mechanism
- Access List + Capability List
- 마치 파일은 좌물쇠, 도메인은 키처럼 키가 맞으면 열리는 시스템
- 시스템이 키 리스트를 관리해야 한다는 오버헤드

보통은 Access List와 Capability List를 혼합한 방식을 사용해, 처음 파일에 접근할 때는 Access list를 탐색하고 접근이 허용되면 출입증처럼 키를 발급해 준다. 이후에는 그 키를 마치 출입증처럼 활용하면서 자유롭게 작업하되, 모든 일을 마치면 키를 os에 반납하는 방식으로 구현.

 

02 파일 시스템 구현

파일 시스템 구현에서는 크게 두 가지, 파일 저장 시 디스크 공간을 어떻게 할당하는지와 디스크의 빈 공간을 어떻게 관리하는지를 알아보았다.

02-1 Allocation Methods
파일을 메모리에 저장할 때는 크게 두 가지 할당 방식를 활용할 수 있다.

  • Continuous Allocation (연속 공간 할당) : 연속된 디스크 블록에 파일을 저장
    • 장점 : 순차접근에 좋고 효율적으로 관리할 수 있음
    • 단점 : 새로운 파일을 위한 공간 확보의 어려움(외부 단편화), 파일 크기 수정을 고려한 공간 결정의 어려움
  • Discontinuous Allocation (비연속 공간 할당)
    • Linked Allocation : linked list를 활용해 떨어진 블록에 파일을 저장
      • 장점 : 구현이 쉽고 외부 단편화가 발생하지 않음
      • 단점 : 직접 접근 시 불편, 포인터 저장을 위한 추가 공간 필요, 중간에 문제 발생(끊기면) 시 파일 유실 위험
      • 실제로 자주 사용되는 방식이기도 함 : MS-DOS, Windows FAT(File Allocation Table)
    • Indexed Allocation : 목차(인덱스) 테이블에 파일이 저장된 블록 정보를 담아 기록
      • 장점 : 직접 접근에는 linked allocation 대비 효율적
      • 단점 : 순차접근 시 매번 테이블 조회가 필요해서 비효율적, 인덱스 블록 테이블 메모리 오버헤드
      • 또, 인덱스 블록의 크기에 따라 파일의 최대 크기가 제한될 수 있음

 

02-2 Free Space Management
파일을 저장할 수 있는 디스크 내 빈 공간들을 관리하는 방법으로 크게 4가지 방식이 있다. 저장해야 하는 데이터의 형태나 프로그램의 데이터 접근 방식에 대해 고민하다 보면 보다 적절한 방법을 활용해 성능을 개선할 수 있다.

  • Bit Vector : 블록 사용 여부를 0,1로 표시한 비트맵을 반들어 관리하는 방법
    • 장점 : 간단하고 효율적, 소형 시스템에 적합
    • 단점 : 디스크 용량이 클 경우 비트맵 용량도 매우 커져 오버헤드가 생김
  • Linked List : 링크드 리스트를 활용해 비어있는 블록들을 연결
    • 단점 : 링크드 리스트 자체도 공간을 차지하기때문에 오버헤드가 생기고, 10개의 공간이 필요할 경우 10번 linked list를 타고 들어가야 하기 때문에 탐색 시간도 비효율적
  • Grouping : 비어있는 블록들을 n개 단위로 묶어, 그룹 단위 링크드 리스트를 만들어 관리
    • 장점 : 연속된 빈 블록들을 쉽게 찾을 수 있음
  • Counting : 연속된 빈 블록이 있을 경우, 그 첫 번째 블록의 주소와 연속된 블록들의 개수를 테이블에 저장
    • 장점 : continuous allocation에서 유용
    • 단점 : 만약 블록이 번갈아가면서 차있거나 비어있다면 매우 비효율적

 

 

**  KOREATECH 무료 OS강의(클릭) 학습 후 나름대로 이해한 뒤 정리한 내용입니다. **

 

[Course] Operating System (CPA310) - 운영체제 강의

o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...

www.youtube.com

댓글