• toc {:toc}

Basic Concept

  • OS๋Š” ์ €์žฅ๋œ ์ •๋ณด์— ๋Œ€ํ•ด ๋™์ผํ•œ logical view๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    • ์ €์žฅ์žฅ์น˜์˜ ๋ฌผ๋ฆฌ์  ํŠน์ง•์„ ์ถ•์•ฝํ•œ๋‹ค.
  • File : Logical storage unit (์ €์žฅ ์žฅ์น˜์— ์ €์žฅํ•˜๋Š” ๋‹จ์œ„)

    • ์‚ฌ์šฉ์ž์™€ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Nonvolatile
    • ํ”„๋กœ๊ทธ๋žจ(source, objects)๊ณผ ๋ฐ์ดํ„ฐ(numeric, character, binary)๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • File โ†’ ํ™•์žฅ์ž์— ์˜ํ•ด ๋‚ด์šฉ ์ •์˜๋œ๋‹ค.

File Attributes

AttributeDescription
name์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ ์ด๋ฆ„
identifier์‹œ์Šคํ…œ์ด ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ
typeํŒŒ์ผ ํƒ€์ž…
location์žฅ์น˜์˜ ํŒŒ์ผ ์œ„์น˜
sizeํ˜„์žฌ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ
protection๋ˆ„๊ฐ€ ์ฝ๊ณ  ์“ฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€
timestamps and user identificationmonitoring, ๋ณด์•ˆ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ

File Operations

  • Create

  • Open

  • Write - write pointer ์œ„์น˜์—์„œ write

  • Read - read pointer ์œ„์น˜์—์„œ read

  • Reposition within a file

  • Delete

  • Truncate : ํŒŒ์ผ ๋‚ด์šฉ์€ ์ง€์šฐ๊ณ  ์†์„ฑ์€ ์œ ์ง€

  • Create, Open ์ œ์™ธํ•œ ๋ชจ๋“  operation์€ open์„ ๋จผ์ € ์ง„ํ–‰ํ•ด file discripter๋ฅผ ์–ป์–ด์•ผ ํ•œ๋‹ค.

    • OS โ†’ open-file table์„ ์œ ์ง€ (์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ ์ถ”์  ๋ชฉ์ )
    • open count : ํŒŒ์ผ์ด ๋ช‡๋ฒˆ ์—ด๋ ธ๋Š”์ง€ ์ €์žฅ

File Locking

  • ํŒŒ์ผ์— ๋Œ€ํ•ด ์ ‘๊ทผ ์–ป์ง€ ๋ชปํ•˜๋„๋ก ํŒŒ์ผ์„ ์ž ๊ทธ๋Š” ๊ฒƒ

  • reader-writer lock๊ณผ ๋น„์Šทํ•˜๋‹ค.

  • Shared lock : reader lock๊ณผ ๋น„์Šท โ†’ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋™์‹œ์— lock ํš๋“ ๊ฐ€๋Šฅ

  • Exclusive lock : writer lock๊ณผ ๋น„์Šท โ†’ ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ํš๋“ ๊ฐ€๋Šฅ

  • Mandatory : OS๊ฐ€ locking ํ†ตํ•ฉ์ ์œผ๋กœ ๋ณด์žฅ

  • Advisory : ๊ฐœ๋ฐœ์ž(์‚ฌ์šฉ์ฃผ์ฒด)๊ฐ€ lock์„ ์ ์ ˆํ•˜๊ฒŒ ์ง์ ‘ ์„ค์ •

    • int flock(int fd, int operation);
    • int fcntl(int fd, int cmd, โ€ฆ);

File Types

  • ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ดํ•ด๋ฅผ ์œ„ํ•œ type

    • device, directory, symbolic link
  • OS, runtime library

    • executable, dll, source code, object code
  • ํ”„๋กœ๊ทธ๋žจ

    • jpg, mpg, avi, mp3, โ€ฆ
  • ์ธ์ฝ”๋”ฉ ํŒŒ์ผ ํƒ€์ž…

    • ์œˆ๋„์šฐ๋Š” ์ด๋ฆ„ ์•ˆ์— ํƒ€์ž…์ด ์žˆ๋‹ค.
      • .com, .exe, .bat, .dll, .jpg, โ€ฆ
    • ์œ ๋‹‰์Šค๋Š” ํŒŒ์ผ ๋‚ด์šฉ ์•ˆ์— ์žˆ๋‹ค.

Access Methods

image

  • Sequential access (์ˆœ์ฐจ ์ ‘๊ทผ) : ๋‹ค์Œ ๋‚ด์šฉ์„ ์ฝ๊ณ  ์“ด๋‹ค.
  • Direct access : number์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ์ง์ ‘ ์ ‘๊ทผ (์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋น ๋ฅด๊ฒŒ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.)
  • Index access : ์ฑ…์˜ ๋ชฉ์ฐจ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด ์ ‘๊ทผ

Directory Structure

  • ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ

    • ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ ํŒŒ์ผ ๋ชจ๋‘ ๋””์Šคํฌ์— ์œ„์น˜
  • Efficiency(ํšจ์œจ์„ฑ) : ๋น ๋ฅด๊ฒŒ ํŒŒ์ผ์„ ์œ„์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

  • Naming(๋ช…์นญ) : ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด

    • ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ™์€ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • Grouping : ํŒŒ์ผ logical grouping

Single-Level Directory

  • ๋ชจ๋“  ํŒŒ์ผ์ด ํ•œ ํด๋”์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
  • Naming problem(์„œ๋กœ ์œ ์ผํ•œ ์ด๋ฆ„ ๊ฐ–๋Š”๋‹ค.), Grouping problem(๋‚˜๋ˆŒ ์ˆ˜ ์—†๋‹ค.) ๋ฐœ์ƒ.

image

Two-Level Directory

  • ์‚ฌ์šฉ์ž ๊ฐ๊ฐ์˜ ํด๋”๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • Path name : user_name/file_name
  • ํšจ์œจ์  ํƒ์ƒ‰
  • Grouping์€ ํ•  ์ˆ˜ ์—†๋‹ค.

image

Tree-Structured Directory

  • ๊ฐ€์žฅ ํ”ํ•œ directory ๊ตฌ์กฐ
  • Root directory๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • ๋ชจ๋“  ํŒŒ์ผ์ด ๊ณ ์œ ํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๋Š”๋‹ค.

image

Acyclic-Graph Directory

  • ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค.
  • ํŒŒ์ผ์ด ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ˆœํ™˜ ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์•ˆ๋œ๋‹ค.
  • ์œ ๋‹‰์Šค = Symbolic link, Pointer

image

General Graph Directory

  • ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์—์„œ ์ˆœํ™˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋œ๋‹ค.
    • Reference count๊ฐ€ 0์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
    • โ‡’ root์—์„œ ํ•ด๋‹น ํŒŒ์ผ๋กœ ๊ฐ€๋Šฅ ๊ฒฝ๋กœ๊ฐ€ ์—†์–ด๋„ reference count = 1์ด ๋œ๋‹ค. (์ˆœํ™˜ ๊ตฌ์กฐ์—์„œ)
    • โ‡’ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด 0์ด์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
    • โ‡’ Garbage collection์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉด ์‚ญ์ œํ•œ๋‹ค.

image

Protection

  • ํŒŒ์ผ ์ œ์ž‘์ž/์†Œ์œ ์ž โ‡’ ๋ˆ„๊ตฌ์— ์˜ํ•ด ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค.
  • ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ

Access List / Group in Unix

  • 3๊ฐ€์ง€ ๋ชจ๋“œ : read (R), write (W), execute (X)

image

  • chmod๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Memory-Mapped Files

  • Virtual address์˜ ํ•œ ๋ถ€๋ถ„์ด ํŒŒ์ผ๋“ค๊ณผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค.
  • Disk Block์„ Page์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
  • addr = mmap() ์ดํ›„ addr์— write๋ฅผ ํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์— ์จ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŒŒ์ผ์— ์จ์ง€๋Š” ๊ฒƒ

image

  • Memory-mapped ์ƒํ™ฉ์—์„œ 3๋ฒˆ frame์— write ๊ณผ์ •
  1. Write ์ž…๋ ฅ
  2. 3๋ฒˆ frame addr์— ์ ‘๊ทผ
  3. Page fault ๋ฐœ์ƒ
  4. Disk์—์„œ ํ•ด๋‹น file ๋ถ€๋ถ„์„ 3๋ฒˆ physical memory์— ์˜ฌ๋ ค์ค€๋‹ค.
  5. Page๊ฐ€ physical memory์— ์˜ฌ๋ ค์ง„ disk block์— ์ ‘๊ทผํ•ด ์ž‘์—…ํ•œ๋‹ค.