UNIX 서버 7주차

2022. 4. 23. 16:09·학교수업
반응형

표준 Unix 파일 시스템 구조

 

- 부트 블록 : 파일 시스템 시작부에 위치, 보통 첫 번째 섹터에 위치

-> 부트 스트랩 코드가 저장되는  블록 : boot loader

- 슈퍼 블록 : 파일 시스템 전체에 대한 정보를 가지고 있다.

- i-리스트 : 데이터 블록의 정보를 가진 i-노드를 리스트 형태로 가짐

- 데이터 블록 : 데이터(파일 내용) 저장을 위한 블록들

 

i 노드

- 각 파일은 하나의 i-node로 표현

- i-node는 파일에 대한 모든 정보를 가지고 있다.

ex) 파일 타입, 파일 크기, 사용 권한, 파일 소유자 및 그룹, 파일 접근 및 갱신 시간, 데이터 블록에 대한 주소, ... 등

 

i-노드 내 블록 포인터

- 데이터 블록에 대한 포인터 : 데이터 블록의 주소

- 하나의 i node 내 블록 포인터 :

-> 직접 블록 포인터 : 10개 (크기가 작은 파일에 적합)

-> 간접 블록 포인터 : 1개 (10개 블록보다 큰 파일인 경우)

-> 이중 간접 블록 포인터 : 1개

 

파일 입출력 구현

- 파일 디스크립터 배열 : 각 프로세스마다 한 개씩 존재

- 열린 파일 테이블 : 시스템 전체에 하나, 파일이 하나 open될 때마다 table entry가 하나씩 생성

-> 열린 모든 파일 목록을 가짐

-> 파일 테이블 항목 : 파일 생태 플래그(read,write,appeend,...), 파일 내 현재 위치, i-node에 대한 포인터

- 활성 i-노드 테이블 : 시스템 전체에 하나, open된 파일들의 i-node를 저장하는 테이블

-> 열린 파일들의 i-node를 저장하는 테이블

-> i-노드 : 하드 디스크에 저장되어 있는 파일에 대한 자료구조

-> 한 파일에 하나의 i-node가 할당

 

파일 상태

- 파일에 대한 모든 정보

ex) 파일 유형 / 접근권한 / 링크수 / 사용자ID / 그룹ID / 파일크기 / 최종 수정시간 / 파일이름

 

상태 정보 : stat()

- 파일 하나당 하나의 i 노드 존재

int stat(const char*filename, struct stat *buf);

 

파일 타입

1. 일반 타입 : 데이터 포함 텍스트 파일 또는 이진 파일

2. 디렉토리 파일 : 파일/부디렉토리 이름, i-node에 대한 포인터 저장

3. 문자 장치 파일

4. 블록 장치 파일

5. FIFO 파일

6. 소켓

7. 심볼릭 링크

 

파일 유형 검사 함수도 있다.

 

파일 사용 권한

- 각 파일에 대한 권한 관리 : 각 파일마다 존재 (소유자 / 그룹/ 기타로 표기)

- 파일에 대한 권한 : 읽기 r 쓰기 w 실행 x

- read 권한이 있어야 O_RDONLY, O_RDWR 사용 가능

- write 권한이 있어야 O_WRONLY, O_RDWR, O_TRUNC 사용 가능

- 디렉토리에 write 권한과 execute 권한 있어야 디렉토링에 파일 생성, 삭제가능

-> 삭제할 시, 파일에 대한 read, write권한은 필요없다.

 

chmod(), fchmod

- 파일의 접근 권한을 변경

-> 성공시 0 실패시 -1

 

utime()

- 파일 filename의 최종 접근 시간과 최종 수정 시간 새로 설정

 

디렉토리 : 파일과 디렉터리들을 조직화

- 루트 디렉토리(/)로부터 시작하여 tree구조

- 디렉터리 자체도 일종의 파일이다.

 

디렉토리 구현

- 디렉토리는 디렉토리 엔트리들로 구성

- 디렉토리 엔토리는 파일 또는 부디렉토리를 나타낸다.

- 즉, 엔트리 = 파일명(또는 디렉토리명) + i-node번호

 

디렉터리 리스트

- opendir() : 디렉터리 열기 함수, DIR 포인터(열린 디렉터리 가리키는 포인터) 리턴

- readdir() : 디렉터리 읽기 함수

 

디렉터리 만들기

- mkdir() 

 

디렉터리 삭제

- rmdir() : 디렉터리가 비어있으면 삭제

 

디렉터리는 일종의 파일이기에 파일처럼 구성이 되어있다.

 

링크 : 기존 파일에 대해 다른 이름을 부여하는 방법

1. 하드 링크

- link 링크 연결 -> new.txt를 you.txt에 링크시키면 내용복사, 링크 1증가

- unlink 링크 끊기 -> new.txt를 unlink하면 you.txt는 그대로 존재 new.txt는 삭제하는 것과 같은 효과(파일 자체를 삭제)

2. 심볼릭(소프트) 링크

- 간접적인 포인터 역할 (실제 파일/디렉토리의 경로명 원본에 대한 링크)

- symlink 

-> l을 앞에 붙여 심볼릭 링크임을 표시

- 심볼릭 링크는 경로만 가지고있기에 크기가 매우 작다(하드 링크는 원본과 링크된 파일의 크기가 동일)

3. 윈도우에서 '바로가기'에 해당

반응형
저작자표시 (새창열림)

'학교수업' 카테고리의 다른 글

게임공학개론 9주차  (0) 2022.05.04
컴퓨터구조 7주차  (0) 2022.04.23
게임공학개론 7주차  (0) 2022.04.21
인공지능개론 7주차  (0) 2022.04.20
UNIX서버 6주차  (0) 2022.04.20
'학교수업' 카테고리의 다른 글
  • 게임공학개론 9주차
  • 컴퓨터구조 7주차
  • 게임공학개론 7주차
  • 인공지능개론 7주차
숯불돼지왕갈비
숯불돼지왕갈비
게임 개발을 목표로 학습하는 블로그 입니다!
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (314)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (52)
        • 코딩 테스트 (5)
      • Unreal Engine 5 (26)
        • MMORPG 개발 (26)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (9)
        • 컴퓨터 활용능력 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정렬
    자료구조
    코딩테스트
    프로그래머스
    c++
    백준
    코딩
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
UNIX 서버 7주차
상단으로

티스토리툴바