일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 도커
- 파싱
- 스케줄러
- 가상메모리
- 클래스
- 정보검색
- 데이터베이스
- 프로세스
- 자료구조
- C언어
- 웹소프트웨어
- 데이터분석
- 랩실일기
- 소프트웨어공학
- 자연어처리
- 언어모델
- DB
- Linear Algebra
- 컴파일러
- 객체지향설계
- 836
- 오픈소스웹소프트웨어
- React
- 운영체제
- css
- NLP
- 컴파일
- 파싱테이블
- OS
- docker
Archives
- Today
- Total
observe_db
[OS] 11. File System(파일 시스템) 본문
Part 1.
파일(file)
- 하나의 단위로 처리될 수 있는 이름이 부여된 데이터의 집합
- 파일 연산
- 열기(open)
- 닫기(close)
- 생성(create)
- 삭제(destroy)
- 복사(copy)
- 이름변경(rename)
- 내용보기(list)
- 파일 내의 데이터 항목에 대한 연산
- 읽기(read)
- 쓰기(write)
- 갱신(update)
- 삽입(insert)
- 삭제(delete)
- 파일의 종류
- 연속된 byte로 구성된 파일
- record로 구성된 파일: DB의 파일
- Tree 정보를 저장하는 파일: B+ Tree 자료구조
디렉토리(directory, folder)
- 파일 시스템에 있는 파일에 대한 정보를 포함하고 있는 파일
- 디렉토리 정보
- 파일 이름
- 위치
- 크기
- 타입
- 소유권
- 접근권한
- 접근, 수정 및 생성 시각
파일 시스템(file system)
- 컴퓨터에서 파일이나 데이터를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
- 파일관리, 보조기억장치 관리, 파일 무결성(integrity)지원, 접근 제어 등 담당
- 파일 생성/삭제/공유/보호/구성형태/UI/접근제어/백업/복구 등
- 장치 독립적 사용 지원
- 물리적 장치 이름을 사용하는 대신 기호적 이름 사용
운영체제의 저장장치 파일 접근 스택
- 파일 디스크립터(descriptor)/열린(open) 파일 테이블
- 사용자 수준 프로세스에서 열린 파일 관리
- 열린 파일 테이블: 해당 프로세스의 PCB에 저장
- 가상 파일 시스템
- 여러 파일 시스템에 대한 통합된 인터페이스 제공
- 파일 시스템
- 저장 장치의 물리적 정보 은닉
- 파일 및 디렉토리 이름 등으로 접근 허용
- 디스크 캐시
- 최근 접근한 디스크 블록의 메모리 내 저장
- 디스크 스케줄러
- 복수의 프로세스들에 대한 디스크 접근 스케줄링
- 디바이스 드라이버
- 개별 장치에 대한 프로토콜 은닉
- 표준 인터페이스를 통한 접근 지원
디렉토리 구조
- 단일 단계 파일 시스템(Single-level/Flat file system)
- 가장 단순한 파일 시스템 구조
- 모든 파일을 동일 디렉토리에 저장 관리
- 모든 사용자가 동일한 디렉토리 사용
- 각 파일은 유일한 이름
- 파일을 찾기 위해 선형 탐색을 하기 때문에 성능 문제
- 계층적 파일 시스템(Hierarchical file system)
- 루트는 루트 디렉토리가 시작되는 장치의 위치에 해당
- 디렉토리는 다른 디렉토리와 파일 포함 가능
- 디렉토리 내에서만 이름이 유일하면 됨
- 루트 디렉토리에서 시작하는 경로 이름을 통해 파일 지정 가능
- 작업 디렉토리(working directory)
- 현재 작업이 진행중인 디렉토리
- 경로 이름을 사용하여 파일을 지정하지 않고, 작업 디렉토리를 기준으로 상대 경로 사용 가능
- 절대 경로(루트에서 시작. 작업디렉토리+상대경로)
- 링크(link)
- 다른 디렉토리에 있는 파일이나 디렉토리를 참조하는 디렉토리 항목
- 마치 해당 파일아니 디렉토리가 자신의 디렉토리에 있는 것처럼 보임
- 데이터 공유 지원
- 소프트 링크(soft link)
- 디렉토리 항목에 다른 파일 경로 이름 저장
- Unix/Linux: 심볼릭 링크(symbolic link)
- 링크된 파일을 이동하게 되면 소프트 링크는 무효
- 하드 링크(hard link)
- 디렉토리 항목에 해당 파일의 저장장치에서의 위치 정보를 저장
리눅스 파일 시스템
- /bin: 사용자가 사용할 수 있는 명령어 저장
- /boot: 부팅에 필요한 커널과 부팅할 때 필요한 관련 파일 저장
- /dev: 장치파일을 저장하는 공간. 모든 하드웨어를 파일로 인식
- /etc: 시스템이나 사용자 관리를 위한 자료 파일(시스템 설정 파일)
- /home: 일반 사용자의 홈 디렉토리가 생성되는 위치
- /lib: 시스템 운영 및 프로그램을 구동할 때 필요한 공유 라이브러리
- /root: 시스템 관리자, 즉 root 사용자의 홈 디렉토리
- /mnt: CD-ROM 장치 등에 대한 기본 마운틴 포인트 제공
- /proc: 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시스템을 사용하는 디렉토리. 실행하면 / proc에 해당 프로세스 PID 번호에 해당하는 디렉토리를 생성하여 프로세스의 진행상황을 추적하고 관리
- 문자로 이루어진 이름의 디렉토리&파일: 시스템 커널 정보
- 숫자로 이루어진 이름의 디렉토리: 현재 실행 중인 프로세스의 정보
- /sbin: 관리자가 사용하는 시스템 운영에 필요한 명령어 저장
- /tmp: 프로세스 생성 과정에서 발생되는 임시파일 저장. 종료시에 이 위치 파일은 모든 파일은 삭제됨.
- /usr: 어플리케이션 프로그램을 설치할 때 패키지에 포함된 대부분의 파일 저장
- /var: 내용이 자주 변경되는 가변자료
Part 2.
파일 시스템 구조
메타데이터 저장
- 데이터에 대한 데이터
- 파일시스템의 무결성 보장을 위한 정보
- 사용자가 직접 변경 불가
- 디렉토리, 수퍼블럭 등에 메타데이터 저장
Linux EXT(extended file system)
- 전형적인 리눅스 파일 시스템
- EXT, EXT2, EXT3, EXT4 등
부트블록(boot block)
- 커널을 적재시키기 위한 프로그램 저장
수퍼블록(super block)
- 파일 시스템마다 1개씩 존재
- 파일 시스템에 대한 메타데이터 저장(블록 크기, 총 블록 수, 블록 그룹 수, i-node 수, 블록 그룹 내의 블록 및 i-node 수)
- 디스크 장애에 대해 복사본 분산 관리 필요
그룹 기술자 테이블
- 블록 비트맵 위치의 블록 번호, i-노드 비트맵 위치의 블록 번호, i노드 테이블의 시작 블록 번호, 블록 그룹 내의 빈 블록 수, 블록 그룹 내의 i-노드 개수, 블록 그룹 내의 빈 디렉토리 개수 등
수퍼블록과 그룹 기술자 테이블
- 모든 블록 그룹에 동일 내용 저장: 장애 복구시 사용
- 첫 번째 블록 그룹 내용 사용
블록 비트맵 (block bitmap)
- 각 블록의 사용 상태를 비트맵으로 표현한 것
i-node
- 파일이나 디렉토리에 대한 모든 정보를 가지고 있는 자료구조
- 파일마다 1개의 i-node 존재
- 소유자, 접근모드(읽기, 쓰기, 실행권한), 파일형태/크기/위치, 링크수, 고유 i-node number, 접근 수정 시각 등
i-node bitmap
- i노드 사용 현황을 비트맵으로 관리
i-node table
- 연속된 블록으로 구성
- 각 블록은 미리 정의된 개수의 i-노드 포함
데이터 블록(data block)
- 실제 데이터가 파일의 형태로 저장되는 공간
파일 시스템 마운트(mount)
- 하나의 파일 시스템을 다른 파일 시스템에서 사용할 수 있도록 편입시키는 것
- 기준 파일 시스템의 특정 디렉토리를 마운트되는 파일 시스템의 루트가 되도록 만듬
- 마운트 테이블
- 마운트 포인트 위치, 마운트되는 장치 등의 정보 관리
- 기준 파일 시스템에서 마운트 포인트를 만나면, 마운트 테이블을 사용하여 마운트된 장치에 대한 정보 확인
- 마운트된 파일시스템에 대한 소프트링크 생성 가능
- 파일 시스템간에는 하드 링크 생성 불가
파일 디스크립터(file descriptor)
- POSIX 운영체제에서 파일을 접근하기 위해 사용하는 추상지시자(abstract indicator)
- 파일 열기 연산을 통해 파일 디스크립터 반환
- open-file table에 대한 음이 아닌 정수
- 파일 연산에서 파일 디스크립터 사용
- 표준 파일 디스크립터
디스크립터값 | 대상 | 기호 |
0 | 표준 입력(키보드) | stdin |
1 | 표준 출력(모니터) | stdout |
2 | 표준 오류(모니터) | stderr |
- Linux/Unix 계열
- 일반 파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스 등 모든 객체를 파일로 관리
파일 공간 할당
파일 공간 할당 방법
- 보조기억장치에 파일에 대한 공간을 할당하고 회수하는 방법
- 연속할당
- 파일을 연속적으로 인접된 공간에 할당
- 효율적 접근시간
- 외부 단편화, 공간활용도 측면의 단점
- 불연속 할당
- 연결을 사용하여 불연속적인 공간에 파일을 할당
- 연결리스트 사용방법
- 파일에 할당된 블록을 연결리스트로 연결 관리
- 디렉토리의 파일 항목에서 첫 블록 지정
- 파일 블록에 다음 블록 지정
- 순차 탐색을 통한 블록 접근 필요
- 테이블 사용방법
- 파일 블록에 대한 포인터값을 저장하는 테이블 사용
- 블록 번호와 테이블 인덱스 일치
- 테이블을 캐싱하면 접근속도 개선
- 블록은 포인터를 따라가야 하기 때문에 비효율적 접근
- 인덱싱 사용방법
- 파일별로 인덱스 블록 보유
- 디렉토리에서 인덱스 블록 지정
- 필요시 체이닝을 통해 인덱스 블록 추가 가능
- 인덱스 블록: 데이터 블록에 대한 포인터 저장
- POSIX 계열의 i-node
- 파일별로 인덱스 블록 보유
빈공간 관리
연결리스트 사용 방법
- free list 관리
- 빈 블록이 발생하면 free list 맨 끝에 추가
- 블록 할당시 free list 매 앞에 있는 블록 할당
- 비트맵 사용 방법
- 블록별 1개 비트 할당
- i번째 비트는 i번째 블로게 대응
- 장점: 연속된 빈 블록을 쉽게 식별 가능
- 단점: 빈 블록을 찾기 위해 전체 비트맵 탐색 가능
Part 3.
접근 제어
민감정보 포함 파일
- 신용카드 번호
- 패스워드
- 주민등록 번호
데이터 접근 제어
- 임의 접근 제어(Discretionary Access Control)
- 접근 제어 행렬(access control matrix) 기반 제어
- 접근 제어 리스트(access control list) 기반 제어
- 권한 리스트(capability list) 기반 제어
- 사용자 등급(user class) 기반 제어
- 강제적 접근(mandatory) 제어
- 역할 기반(role-base) 제어
임의 접근 제어
- 소유자 또는 관리자가 사용자나 사용자 그룹에 대해 임의적으로 자율적으로 접근 권한 부여
- 소유자 또는 관리자인 사용자의 접근권한 관리 -> 보안 관리자의 부담 축소
- 접근 권한 관리 구조
- 접근제어 행렬
- 사용자별 파일에 대한 접근 허용여부 지정
- 파일 및 사용자가 많아지면 적용 곤란
- 접근제어 리스트
- 소유자가 사용자나 사용자 그룹에 대해 임의적으로 접근 제어
- 접근 대상별 접근제어리스트(ACL, access control list) 관리
- 권한 리스트
- 사용자별로 접근 권한 리스트 관리
- + 사용자 등급 기반 제어
- 임의 접근 제어의 사례
- 사용자별 등급 지정(파일소유자, 그룹, 프로젝트, 전체)
- 파일별 등급별 접근권한 설정(공간 효율성 접근제어행렬보다 좋음)
- 접근제어 행렬
- 사용자와 접근대상 증가에 따른 복잡성과 관리 자료구조 크기 증가
- 소유자의 의도에 상반된 접근 위험
강제적 접근 제어(Mandatory Access Control, MAC)
- 각 파일(객체)에 비밀 등급 부여
- 사용자(주체)별 허가등급 부여
- 각 주체의 객체 접근시 사전 정의된 정책 확인->만족시 접근 권한 부여
비밀 취급 인가
- 극비(top secret)
- 비밀 (secret)
- 미분류(unclassified)
객체의 민감도 수준
- 극비(top secret)
- 비밀(secret)
- 기밀(confidential)
- 미분류(uncalssified)
역할기반 접근 제어(RBAC, Role-Based Access Control)
- 조직 내에서 사용자의 역할 지정
- 역할별 자원에 대한 접근 권한 설정
백업 및 복구
백업(backup)
- 데이터 사본의 저장
- 물리적 백업: 저장장치 내용 전체 복제
- 논리적 백업: 백업이 필요한 부분만 백업 (+ 점진적 백업: 이전 백업 이후 수정 부분만 백업)
복구(recovery)
- 시스템 장애 후 데이터를 복구하는 것
로그 구조 파일 시스템(log-structured file system)
- 파일 시스템에 대한 갱신 내용을 트랜잭션으로 로그에 기록
- 새로운 데이터는 로그 파일의 빈 공간에 순차적으로 기록
- 수정된 디렉토리와 메타데이터가 로그로 뒤에 기록
- 주기적으로 Garbage Collection을 통해 불필요한 공간 반환
Flash 파일 시스템
플래시 메모리
- 자기 디스크에 비해서 빠른 접근 속도를 제공하는 블록 기반 저장장치
- 읽기는 신속, 쓰기는 지운 다음에 기록해야해서 상대적 느림
- 사용된 블록을 관리하기 위한 비트맵 관리
- 복잡한 처리 필요
- 비트 마모, 판독 곤란 등 대응
- 내부 프로세서에서 펌웨어를 사용하여 관리ㅁ
플래시 파일 시스템
- 저널링 파일 시스템(journaling file system)
- 저장장치에 파일 등을 저장하기 전에 미리 변경 사항을 저널이라는 특별 영역에 기록
- 파일 시스템에 오류가 발생하면, 저널에 저장된 내용을 다시 실행
- 플래시 파일 시스템
- 여러가지 파일 시스템 사용: JFFS, JFSS2, LogFS
- 저널링 파일 시스템+ 로그구조 파일 시스템 결합 형태 사용
'학교 공부 > 운영체제(OS)(3-1)' 카테고리의 다른 글
[OS] 13. 컨테이너(Container) (0) | 2023.06.06 |
---|---|
[OS] 12. 보안 (0) | 2023.06.02 |
[OS] 10. Secondary Storage Management(보조기억장치 관리) (0) | 2023.05.26 |
[OS] 9. Virtual Memory Management(가상 메모리 관리) (0) | 2023.05.16 |
[OS] 8. Memory Management(메모리 관리) (0) | 2023.05.12 |
Comments