Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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 more
Archives
Today
Total
관리 메뉴

ultra_dev

파일과 디렉토리 본문

혼자 공부하는 컴퓨터구조+운영체제

파일과 디렉토리

ultra_dev 2023. 10. 1. 01:22

파일 시스템

: 파일과 디렉토리를 관리하는 운영체제 내부의 프로그램

파일과 디렉토리를 다루어 주는 프로그램

 

 

 

파일과 디렉토리

: 보조기억장치의 데이터 덩어리


파일

  • 보조기억장치에 저장된 관련 정보의 집합
  • 의미 있고 관련 있는 정보를 모은 정보
  • 파일을 이루는 정보
  • 파일을 실행하기 위한 정보 + 부가 정보(=속성, 메타데이터)

파일의 속성

  • 유형 : 운영체제가 인지하는 파일의 종류
    • 확장자
      • 실행 파일 : 없는 경우, exe, com, bin
      • 목적 파일 : obj, o
      • 소스 코드 파일 : c, cpp, cc, java, asm, py
      • 워드 프로세서 파일 : xml, rtf, doc, docx
      • 라이브러리 파일 : lib, a, so, dll
      • 멀티미디어 파일 : mpeg, mov, mp3, mp4, avi
      • 백업 / 보관 파일 : rar, zip, tar
  • 크기 : 파일의 현재 크기와 허용 가능한 최대 크기를 나타낸다.
  • 보호 : 어떤 사용자가 해당 파일을 읽고, 쓰고, 실행할 수 있는지를 난타낸다.
  • 생성 날짜 : 파일이 생성된 날짜를 나타낸다.
  • 마지막 접근 날짜 : 파일에 마지막으로 접근한 날짜를 나타낸다.
  • 마지막 수정 날짜 : 파일이 마지막으로 수정된 날짜를 나타낸다.
  • 생성자 : 파일을 생성한 사용자를 나타낸다.
  • 소유자 : 파일을 소유한 사용자를 나타낸다.
  • 위치 : 파일의 보조기억장치상의 현재 위치를 나타낸다.

 

 

 

파일 연산을 위한 시스템 호출

:파일을 다루는 모든 작업은 운영체제를 통해 이루어진다.

어떤 응용프로그램도 임의로 파일에 접근하고 조작할 수 없다.

오직 시스템 호출을 통해 운영체제한테 부탁하는 수 밖에 없다.

  • 파일 생성
  • 파일 삭제
  • 파일 열기
  • 파일 닫기
  • 파일 읽기
  • 파일 쓰기 등등

디렉토리

  • 윈도우에서는 폴더(folder) 의미
  • 최상위 디렉토리(루트 디렉토리, /), 서브 디렉토리
    • 윈도우 운영체제에서 최상위 디렉토리는 C:\
  • 같은 디렉토리에는 동일한 이름의 파일이 존재할 수 없지만, 서로 다른 디렉토리에는 동일한 이름의 파일 존재 가능
  • 경로
    • 디렉토리를 이용해서 파일/디렉토리의 위치, 나아가 이름까지 특정 지을 수 있는 정보
    • 절대 경로와 상대 경로
      • 절대 경로 : 루트 디렉토리에서 자기 자신까지 이르는 고유한 경로
        • ex) /home/minchul/a.sh
      • 상대 경로 : 현재 디렉토리에서 자기 자신까지 이르는 경로
        • ex) 현재 디렉토리 경로가 /home일 경우 guest/d.jpg

디렉토리 연산을 위한 시스템 호출

:파일과 만찬가지로 디렉토리를 다루는 모든 작업은 운영체제를 통해 이루어진다.

어떤 응용프로그램도 임의로 디렉토리에 접근하고 조작할 수 없다.

오직 시스템 호출을 통해 운영체제한테 부탁하는 수 밖에 없다.

  • 디렉토리 생성
  • 디렉토리 삭제
  • 디렉토리 열기
  • 디렉토리 닫기
  • 디렉토리 읽기 등등

많은 운영체제에서는 디렉토리를 그저 ‘특별한 형태의 파일’로 간주한다!!

디렉토리를 그냥 포함된 정보가 좀 더 특별한 파일로 취급한다!!

파일의 내부에는 파일과 관련된 정보들이 담겨 있다면,

디렉토리 내부에는 해당 디렉토리에 담겨 있는 대상과 관련된 정보들이 담겨 있다.

→ 이 정보는 보통 테이블(표) 형태로 구성된다.


디렉토리 엔트리

  • 각 엔트리(행)에 담기는 정보
    • 디렉토리에 포함된 대상의 이름
    • 그 대상이 보조기억 장치 내에 저장된 위치(를 유추할 수 있는 정보)
    • 디렉토리 엔트리 내에 파일 속성 명시하는 경우도 존재
파일 이름 위치를 유추할 수 있는 정보
..(상위 디렉토리)  
.(현재 디렉토리)  
a(디렉토리)  
b.exe(파일)  

파일 시스템

파일과 디렉토리를 보조기억 장치에 일목요연하게 저장하고 접근할 수 있게 해주는 운영체제 내부의 프로그램

파일 시스템을 통해서 여러가지 파일과 디렉토리를 보조기억장치에 할당하고 접근할 수 있는 것!

 

하나의 컴퓨터에서 여러개의 파일 시스템 사용 가능

(대표적 파일 시스템 : FAT 파일시스템, 유닉스 파일 시스템)


파티셔닝과 포메팅

  • 이제 막 공장에서 생산된 새 하드 디스크와 SSD가 있다면
  • 파티셔닝, 포메팅 하기 전까지는 사용할 수 없다!!

파티셔닝

  • 저장 장치의 논리적인 영역을 구획하는 작업
  • 나누어진 영역 하나하나를 파티션이라고 부름

포메팅

  • 파일 시스템을 설정
  • 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비하는 작업
  • 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수도 있다.
  • 포메팅까지 완료해서 파일 시스템을 설정 했다면, 이제 파일과 디렉토리 생성이 가능해진다.

파일 할당 방법

  • 포매팅까지 끝난 하드 디스크에 파일 저장하기
  • 운영체제는 파일 / 디렉토리를 블록 단위로 읽고 쓴다.
    • 즉, 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장된다.
    • 참고) 하드 디스크의 가장 작은 저장 단위는 섹터이지만 보통 블록 단위로 읽고 쓴다.

파일을 보조기억장치에 할당하는 두 가지 방법 : 연속 할당, 불연속 할당(오늘날 사용되는 방식)

  • 연속 할당
    • 이름 그대로 보조기억장치 내 연속적인 블록에 파일 할당
    • 연속된 파일에 접근하기 위해 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다
    • 디렉토리 엔트리 : 파일이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시
    • 문제점 :
      • 구현이 단순하지만 외부 단편화 야기할 수 있음 (따라서 현재 잘 안씀)
      • 중간에 파일 삭제하면 그 빈공간에 해당 블록보다 큰 파일을 할당 못하게 되니까!
  • 불연속 할당
    • 연결 할당, 색인할당이 존재
  1. 불연속 할당 - 연결 할당
- 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
- 파일을 이루는 데이터 블록을 연결 리스트로 관리
- 마지막 블록에는 -1과 같은 특별한 표식 기록 해놓는 것
- 불연속 할당의 일종 : 파일이 여러 블록에 흩어져 저장되어도 무방
- 디렉토리 엔트리 : 파일이름 & 첫번째 블록 주소 & 블록 단위의 길이
- 단점 :
    - 반드시 파일의 첫 번째 블록부터 접근해서 하나씩 읽어 들여야한다
        - 즉, 파일의 임의의 위치에 접근하는 속도가 매우 느리다
  1. 불연속할당 - 색인 할당
  • 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
    • ex) 4번 색인 블록안에는 a 파일 블록인 7,13,21이 기록되어 있음, 12번 색인 블록 안에는 b 파일 블록인 1,5,6이 기록되어 있음
  • 파일 내 임의의 위치에 접근하기 용이
  • 디렉토리 엔트리 : 파일 이름 & 색인 블록 주소

FAT 파일 시스템

  • 연결 할당 기반 파일 시스템
  • 연결 할당의 단점을 보완
    • 각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT : File Allocation Table)로 관리
  • FAT를 활용하는 파일 시스템
  • 만약 FAT가 보조기억장치가 아닌 메모리에 캐시될 경우 느린 임의 접근 속도 개선 가능
  • FAT16, FAT32 이런 식의 뒤에 있는 숫자는 블록을 표현 하는 비트 수를 의미
  • FAT 사용 시, 파티션 형태 : 예약 영역 | FAT 영역 | 루트 디렉토리 영역 | 데이터 영역
    • 루트 디렉토리 영역에 루트 디렉토리 따로 저장하고, 데이터 영역에 서브 디렉토리, 파일 등등
  • 디렉토리 엔트리
  • 파일의 속성까지 디렉토리 엔트리에 표기하는 것이 FAT 파일 시스템
  • 파일이름|확장자|속성|예약영역|생성시간|마지막접근시간|마지막수정시간|시작블록|파일크기

/home/taewoong/a.sh를 읽는다고치면

먼저 루트 디렉토리 영역에서

파일이름 첫번째 블록 주소
home 3
bin 5
c.sh 2

home이 3번 블록에 있으니

데이터 영역의 3번 블록을 읽어서 home디렉토리를 읽으면

파일이름 첫번째 블록주소
b.sh 15
taewoong 10

taewoong 디렉토리가 10번 블록에 있으니

10번 블록으로 가면

파일 이름 첫번째 블록 주소
a.sh 4
e.tar 20

a.sh 파일이 8번 블록에 저장돼있음을 알 수 있음

이제 FAT영역에서 FAT를 보면 됨

블록주소 다음 블록주소
0  
1 -1
2 23
3 -1
4 50
5 -1
6 1

이제 또 다음 블록 주소로 가서 쭉쭉 확인해가면서 접근


유닉스 파일 시스템

  • 색인 할당 기반 파일 시스템
  • 색인 블록 == i-node (색인 블록을 i-node라고도 부름)
    • 파일의 속성 정보와 15개의 블록 주소 저장 가능
      • 만약 15개 블록 이상을 차지하는 파일은?
        1. 블록 주소 중 12개에는 직접 블록 주소 저장
          1. 직접 블록 : 파일 데이터가 저장된 블록
        2. 1번으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소 저장
          1. 단일 간접 블록 : 파일 데이터를 저장한 블록 주소가 저장된 블록
            그냥 데이터 주소를 저장한 블록의 주소를 저장한다!
        3. 2번으로도 충분하지 않다면 14번째 주소에 이중 간접 블록 주소 저장
          1. 이중 간접 블록 : 단일 간접 블록들의 주소를 저장하는 블록
        4. 3번으로도 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소 저장
          1. 삼중 간접 블록 : 이중 간접 블록들의 주소를 저장하는 블록
  • 예약영역| i-node 영역| 데이터 영역
    • i-node영역에 i-node 관련 정보, 데이터 영역에 각종 디렉토리와 파일 정보
  • 디렉토리 엔트리
    • i-node 번호 | 파일 이름

만약 유닉스 파일 시스템에서

/home/taewoong/a.sh를 읽는다고치면

유닉스 시스템에선 루트 디렉토리 영역이 따로 없지만

루트 디렉토리가 몇번 노드에 저장돼있는지는 알 수 있음

ex) i-node 2(루트 i-node)

i-node 2 (루트 i-node, 1)

i-node 3 (210)

i-node 10 (121)

i-node 11 (98,12,13)

1번 블록으로 가서 루트 디렉토리 읽음

파일이름 i-node 번호
home 3
bin 5
c.sh 2

루트 디렉토리를 가면

home이 i-node 3번에 있으니

가서 home디렉토리를 읽으면

파일이름 i-node 번호
b.sh 7
taewoong 10

taewoong 디렉토리가 i-node 10번에 있으니

가보면

파일 이름 i-node 번호
a.sh 11
e.tar 6

a.sh 파일이 i-node 11번에 저장돼있음을 알 수 있음

가보면 98,12,13이라고 써있으니 해당 파일 블록 정보를 읽어들이면 됨

'혼자 공부하는 컴퓨터구조+운영체제' 카테고리의 다른 글

가상메모리  (0) 2023.10.03
교착 상태  (0) 2023.09.26
프로세스 동기화  (0) 2023.09.25
cpu 스케줄링  (0) 2023.09.24
프로세스와 스레드  (0) 2023.09.21
Comments