[Computer Science][Operating System] πŸ“‚ 파일 μ‹œμŠ€ν…œ(File System) μ΄ν•΄ν•˜κΈ°

κΉ€μƒμš±Β·2024λ…„ 8μ›” 15일
0
post-thumbnail

μ»΄ν“¨ν„°μ—μ„œ νŒŒμΌμ΄λ‚˜ 자료λ₯Ό μ‰½κ²Œ λ°œκ²¬ν•˜κ³  μœ μ§€ 및 κ΄€λ¦¬ν•˜λŠ” 방법이 λ°”λ‘œ 파일 μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. μ €μž₯ λ§€μ²΄μ—λŠ” μˆ˜λ§Žμ€ 파일이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ—, μ΄λŸ¬ν•œ νŒŒμΌλ“€μ„ 효율적으둜 κ΄€λ¦¬ν•˜λŠ” 방법이 ν•„μš”ν•©λ‹ˆλ‹€.


πŸ” νŠΉμ§•

  • 컀널 μ˜μ—­μ—μ„œ λ™μž‘: 파일 μ‹œμŠ€ν…œμ€ 운영체제의 핡심 ꡬ성 μš”μ†Œλ‘œ, μ»€λ„μ—μ„œ 직접 κ΄€λ¦¬λ©λ‹ˆλ‹€.
  • 파일 CRUD κΈ°λŠ₯ 지원: 파일의 생성(Create), 읽기(Read), μ—…λ°μ΄νŠΈ(Update), μ‚­μ œ(Delete) κΈ°λŠ₯을 μ›ν™œνžˆ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ λͺ©μ μ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • 계측적 디렉토리 ꡬ쑰: νŒŒμΌμ„ μ²΄κ³„μ μœΌλ‘œ μ •λ¦¬ν•˜μ—¬ μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.
  • λ””μŠ€ν¬ νŒŒν‹°μ…˜: 물리적 λ””μŠ€ν¬λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ λ‚˜λˆˆ μ—¬λŸ¬ λΆ€λΆ„ λ³„λ‘œ ν•˜λ‚˜μ”© 파일 μ‹œμŠ€ν…œμ„ λ‘˜ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ› οΈ μ—­ν• 

  • 파일 관리: 컴퓨터 λ‚΄μ˜ 데이터λ₯Ό 파일 ν˜•νƒœλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • 보쑰 μ €μž₯μ†Œ 관리: ν•˜λ“œ λ””μŠ€ν¬, SSD, USB λ“œλΌμ΄λΈŒ λ“±κ³Ό 같은 λΉ„νœ˜λ°œμ„± μ €μž₯ μž₯치λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • 파일 무결성 λ©”μ»€λ‹ˆμ¦˜: 파일의 데이터가 μ†μƒλ˜μ§€ μ•Šκ³  μ›λž˜ μƒνƒœλ‘œ μœ μ§€λ˜λ„λ‘ 보μž₯ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ ‘κ·Ό 방법 제곡: 파일 μ‹œμŠ€ν…œμ€ 데이터λ₯Ό μ €μž₯ν•˜κ³  μ½λŠ” λ‹€μ–‘ν•œ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

🎯 개발 λͺ©μ 

  • ν•˜λ“œλ””μŠ€ν¬μ™€ 메인 λ©”λͺ¨λ¦¬ 속도 차이 κ°μ†Œ: λ©”λͺ¨λ¦¬ 속도 차이λ₯Ό 쀄이기 μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 효율적인 파일 관리: λ°μ΄ν„°μ˜ 효율적인 μ €μž₯κ³Ό 접근을 μœ„ν•΄ ν•„μš”ν•©λ‹ˆλ‹€.
  • ν•˜λ“œλ””μŠ€ν¬ μš©λŸ‰ 효율적 이용: μ €μž₯ 곡간을 μ΅œμ ν™”ν•˜μ—¬ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ—οΈ ꡬ쑰

  • 메타 μ˜μ—­: 데이터 μ˜μ—­μ— 기둝된 파일의 이름, μœ„μΉ˜, 크기, μ‹œκ°„ 정보, μ‚­μ œ μ—¬λΆ€ λ“±μ˜ 파일 정보λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  • 데이터 μ˜μ—­: μ‹€μ œ 파일의 데이터λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

πŸ“š μ ‘κ·Ό 방법

1. 순차 μ ‘κ·Ό(Sequential Access)

κ°€μž₯ κ°„λ‹¨ν•œ μ ‘κ·Ό λ°©λ²•μœΌλ‘œ, λŒ€λΆ€λΆ„μ˜ 연산은 read와 writeλ₯Ό μ΄μš©ν•©λ‹ˆλ‹€. ν˜„μž¬ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” ν¬μΈν„°μ—μ„œ μ‹œμŠ€ν…œ 콜이 λ°œμƒν•  경우 포인터λ₯Ό μ•žμœΌλ‘œ λ³΄λ‚΄λ©΄μ„œ 연산이 μ§„ν–‰λ©λ‹ˆλ‹€. λ’€λ‘œ λŒμ•„κ°€λ €λ©΄ μ§€μ •ν•œ offset만큼 되감기(rewind)λ₯Ό ν•΄μ•Ό ν•©λ‹ˆλ‹€ (ν…Œμ΄ν”„ λͺ¨λΈ 기반).

2. 직접 μ ‘κ·Ό(Direct Access)

νŠΉλ³„ν•œ μˆœμ„œ 없이 λΉ λ₯΄κ²Œ λ ˆμ½”λ“œλ₯Ό read, writeν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” cp(current pointer) λ³€μˆ˜κ°€ ν˜„μž¬ μœ„μΉ˜λ₯Ό κΈ°μ–΅ν•˜λ©°, 순차적으둜 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ¬΄μž‘μœ„ 파일 블둝에 λŒ€ν•œ μž„μ˜ 접근을 ν—ˆμš©ν•˜λ―€λ‘œ, λŒ€κ·œλͺ¨ 정보λ₯Ό μ ‘κ·Όν•˜λŠ” 데 μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€. 주둜 'λ°μ΄ν„°λ² μ΄μŠ€'에 ν™œμš©λ©λ‹ˆλ‹€.

3. 기타 μ ‘κ·Ό

직접 μ ‘κ·Ό νŒŒμΌμ— κΈ°λ°˜ν•˜μ—¬ 색인을 κ΅¬μΆ•ν•©λ‹ˆλ‹€. 색인을 톡해 큰 νŒŒμΌμ—μ„œ νŠΉμ • 데이터λ₯Ό λΉ λ₯΄κ²Œ μ°Ύκ³ , ν•„μš”ν•  λ•Œ ν•΄λ‹Ή 데이터λ₯Ό μ½κ±°λ‚˜ μ“Έ 수 μžˆλ„λ‘ λ•λŠ” λ°©λ²•μž…λ‹ˆλ‹€.


πŸ“‚ 디렉터리와 λ””μŠ€ν¬ ꡬ쑰

1단계 디렉터리

κ°€μž₯ κ°„λ‹¨ν•œ ꡬ쑰둜, λͺ¨λ“  파일이 ν•˜λ‚˜μ˜ 디렉터리 μ•ˆμ— μ €μž₯λ©λ‹ˆλ‹€. 파일 μ΄λ¦„μ˜ μœ μΌμ„±μ„ 보μž₯ν•˜μ—¬, 같은 μ΄λ¦„μ˜ νŒŒμΌμ„ 두 개 이상 λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€. μ΄λŠ” μ„œλ‘œ λ‹€λ₯Έ μ‚¬μš©μžκ°€ λ™μΌν•œ 파일 이름을 μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ²Œ ν•©λ‹ˆλ‹€.

2단계 디렉터리

μ‚¬μš©μžμ—κ²Œ κ°œλ³„μ μΈ 디렉터리λ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.

  • UFD(User File Directory): 각 μ‚¬μš©μžκ°€ μžμ‹ λ§Œμ˜ UFDλ₯Ό κ°€μ§€κ³  있으며, κ·Έ μ•ˆμ— μžμ‹ μ˜ νŒŒμΌλ“€μ„ μ €μž₯ν•©λ‹ˆλ‹€.
  • MFD(Master File Directory): λͺ¨λ“  μ‚¬μš©μžμ˜ 이름과 κ³„μ •λ²ˆν˜Έλ₯Ό μƒ‰μΈν•˜μ—¬ κ΄€λ¦¬ν•˜λ©°, 각 μ‚¬μš©μžμ˜ UFDλ₯Ό κ°€λ¦¬ν‚€λŠ” 역할을 ν•©λ‹ˆλ‹€.

트리 ꡬ쑰 디렉터리

2단계 ꡬ쑰가 ν™•μž₯된 닀단계 트리 κ΅¬μ‘°μž…λ‹ˆλ‹€. 디렉터리 μ•ˆμ— 디렉터리λ₯Ό 포함할 수 μžˆλŠ” ꡬ쑰λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. λΉ„νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ 일반 파일(0)인지 디렉터리 파일(1)을 κ΅¬λΆ„ν•©λ‹ˆλ‹€.

κ·Έλž˜ν”„ ꡬ쑰 디렉터리

κ·Έλž˜ν”„ κ΅¬μ‘°λŠ” 트리 ꡬ쑰처럼 κ³„μΈ΅μ μ΄μ§€λ§Œ, νŒŒμΌμ΄λ‚˜ 디렉터리 κ°„μ˜ 링크λ₯Ό ν—ˆμš©ν•˜μ—¬ 더 μœ μ—°ν•œ ꡬ쑰λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 링크둜 인해 μˆœν™˜(Cycle)이 λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ, 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•œ 방법이 ν•„μš”ν•©λ‹ˆλ‹€.

μˆœν™˜μ΄ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ ν•˜μœ„ 디렉터리가 μ•„λ‹Œ νŒŒμΌμ— λŒ€ν•œ 링크만 ν—ˆμš©ν•˜κ±°λ‚˜, κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ μ΄μš©ν•΄ 전체 파일 μ‹œμŠ€ν…œμ„ μˆœνšŒν•˜κ³  μ ‘κ·Ό κ°€λŠ₯ν•œ λͺ¨λ“  것을 ν‘œμ‹œν•©λ‹ˆλ‹€.

링크λ₯Ό μ‚¬μš©ν•˜μ—¬ μˆœν™˜μ„ ν”Όν•˜λ©΄μ„œ, 더 효율적으둜 νŒŒμΌμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.


이와 같이 파일 μ‹œμŠ€ν…œμ€ 파일과 λ°μ΄ν„°μ˜ 효율적인 관리 및 접근을 μœ„ν•΄ λ‹€μ–‘ν•œ ꡬ쑰와 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžλ“€μ€ 컴퓨터 λ‚΄μ˜ 데이터λ₯Ό 효과적으둜 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

이런 자료λ₯Ό μ°Έκ³ ν–ˆμ–΄μš”.
[1] velog - File System (파일 μ‹œμŠ€ν…œ) (https://velog.io/@yuseogi0218/File-System-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C)
[2] Gyoogle - 파일 μ‹œμŠ€ν…œ(File System) | πŸ‘¨πŸ»β€πŸ’» Tech Interview (https://gyoogle.dev/blog/computer-science/operating-system/File%20System.html)
[3] ν‹°μŠ€ν† λ¦¬ - νŒŒμΌμ‹œμŠ€ν…œ(File System) κ°œλ… - Hardner - ν‹°μŠ€ν† λ¦¬ (https://hardner.tistory.com/41)
[4] Kingston Technology - 파일 μ‹œμŠ€ν…œ μ΄ν•΄ν•˜κΈ° (https://www.kingston.com/kr/blog/personal-storage/understanding-file-systems)

0개의 λŒ“κΈ€