• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • ๐Ÿง  Algorithm

    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
  • ๐Ÿ’ฐ Finance

    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • ๐Ÿ›๏ธ Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
  • ๐Ÿ‹๏ธ Wellness

    • ๐Ÿซ’ ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ฐจ์ „์žํ”ผ(Psyllium Husk)
  • ๐Ÿ–ฅ๏ธ Computer Graphics

    • 8 - Lighting
    • 9 - Orientation & Rotation
    • 10 - Character Animation
    • 11 - Curves
    • 12 - More Lighting, Texture
  • ๐Ÿ—‚๏ธ Operating System

    • 7. Deadlocks
    • 8. Memory Management(1)
    • 9. Memory Management(2)
    • 10. Virtual Memory(1)
    • 11. Virtual Memory(2)
    • 12. File System
    • 13. Mass Storage Management
    • 14. I/O Systems
  • ๐Ÿ”ฃ Programming Language Theory

    • 13. FPL(1)

14. I/O Systems

I/O Hardware

  • ๋‹ค์–‘ํ•œ I/O ์žฅ์น˜ ์กด์žฌ
  • ๊ณตํ†ต ๊ฐœ๋…:
    • ํฌํŠธ (์˜ˆ: Serial port)
    • ๋ฒ„์Šค (daisy chain, shared direct access)
    • ์ปจํŠธ๋กค๋Ÿฌ (๋‹จ๋… ๋˜๋Š” host adapter ์นด๋“œ์— ์œ„์น˜)
  • I/O ๋ช…๋ น์–ด๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ œ์–ด
    • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐ์ดํ„ฐ ๋ฐ ์ œ์–ด ์‹ ํ˜ธ์šฉ ๋ ˆ์ง€์Šคํ„ฐ ๋ณด์œ 
  • ํ”„๋กœ์„ธ์„œ๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์žฅ์น˜์— ๋ช…๋ น/๋ฐ์ดํ„ฐ ์ „๋‹ฌ:
    • ์ „์šฉ I/O ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด I/O ํฌํŠธ ์ฃผ์†Œ ์ ‘๊ทผ
    • ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ I/O
      • ์žฅ์น˜ ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋งคํ•‘๋จ
      • CPU๋Š” ํ‘œ์ค€ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ช…๋ น์–ด๋กœ I/O ์ˆ˜ํ–‰
  • I/O ํฌํŠธ๋Š” ๋‹ค์Œ ๋„ค ๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ตฌ์„ฑ๋จ:
    • Status register
      • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” bit ํฌํ•จ (Busy bit, error bit ๋“ฑ)
    • Control register
      • ๋ช…๋ น ์‹คํ–‰ ๋˜๋Š” ์žฅ์น˜ ๋ชจ๋“œ ๋ณ€๊ฒฝ์šฉ
    • Data-in register
      • ํ˜ธ์ŠคํŠธ๊ฐ€ ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ์‚ฌ์šฉ
    • Data-out register
      • ํ˜ธ์ŠคํŠธ๊ฐ€ ์žฅ์น˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉ

Polling

  • ์žฅ์น˜ ์ƒํƒœ ํŒ๋‹จ ๋ฐฉ์‹
    • Status register์˜ Busy bit ์ฒดํฌ
  • Busy-wait: ์žฅ์น˜ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
    • ์žฅ์น˜/์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋น ๋ฅด๋ฉด polling์ด ํ•ฉ๋ฆฌ์ 
  • Polling์˜ ๋‹จ์ :
    • ์žฅ์น˜ ์ค€๋น„ ์—ฌ๋ถ€๋ฅผ ๊ณ„์† ํ™•์ธํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ๋น„ํšจ์œจ์ 
    • CPU๊ฐ€ ์œ ์šฉํ•œ ์ž‘์—…์„ ํ•˜์ง€ ๋ชปํ•จ
  • ์ด๋Ÿด ๊ฒฝ์šฐ, ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ CPU์— ์•Œ๋ฆผ

Interrupts

  • CPU๋Š” interrupt-request line์ด๋ผ๋Š” ์„ ์„ ํ†ตํ•ด ์ธํ„ฐ๋ŸฝํŠธ ๊ฐ์ง€
    • I/O ์žฅ์น˜๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ
    • CPU๋Š” ๋งค ๋ช…๋ น ํ›„ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์—ฌ๋ถ€ ๊ฐ์ง€
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ:
    • ํ˜„์žฌ ์ƒํƒœ ์ €์žฅ ํ›„, ๊ณ ์ •๋œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ ์ฃผ์†Œ๋กœ ์ ํ”„
    • ํ•ธ๋“ค๋Ÿฌ๋Š” ์›์ธ ๋ถ„์„, ์ฒ˜๋ฆฌ ํ›„ return from interrupt๋กœ ๋ณต๊ท€
  • ๋‘ ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋ŸฝํŠธ ์š”์ฒญ ๋ผ์ธ:
    • Nonmaskable: ์น˜๋ช…์  ์˜ค๋ฅ˜ ๋“ฑ ๋งˆ์Šคํ‚น ๋ถˆ๊ฐ€๋Šฅ
    • Maskable: CPU์— ์˜ํ•ด ์ œ์–ด ๊ฐ€๋Šฅ (์ผ๋ฐ˜ I/O ์ธํ„ฐ๋ŸฝํŠธ ๋“ฑ)
  • ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ:
    • ์˜ฌ๋ฐ”๋ฅธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋ถ„๊ธฐํ•˜๊ฒŒ ํ•ด์คŒ
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์—๋„ ์‚ฌ์šฉ:
    • 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ, ๋ณดํ˜ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋“ฑ

A Kernel I/O Structure

  • ์ปค๋„ I/O ๊ตฌ์กฐ๋Š” ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ:
    • ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ์˜ ์žฅ์น˜๋“ค (SCSI, ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๋“ฑ)
    • ๊ฐ ์žฅ์น˜์— ํ•ด๋‹นํ•˜๋Š” ๋””๋ฐ”์ด์Šค ์ปจํŠธ๋กค๋Ÿฌ
    • ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€์‘ํ•˜๋Š” ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„
    • ์ปค๋„์˜ I/O ์„œ๋ธŒ์‹œ์Šคํ…œ์ด ์ด๋“ค์„ ๊ด€๋ฆฌ

Application I/O Interface

  • I/O ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ๋‹ค์–‘ํ•œ ์žฅ์น˜ ๋™์ž‘์„ ์ผ๋ฐ˜ํ™”๋œ ํด๋ž˜์Šค์— ์บก์Аํ™”ํ•จ
    • I/O ์žฅ์น˜๋ฅผ ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • ์žฅ์น˜๋Š” ๋‹ค์–‘ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง:
    • ๋ฌธ์ž ๊ธฐ๋ฐ˜ ๋˜๋Š” ๋ธ”๋ก ๊ธฐ๋ฐ˜
    • ์ˆœ์ฐจ ์ ‘๊ทผ ๋˜๋Š” ์ž„์˜ ์ ‘๊ทผ
    • ๊ณต์œ  ๋˜๋Š” ์ „์šฉ
    • ์ž‘๋™ ์†๋„
    • ์ฝ๊ธฐ-์“ฐ๊ธฐ, ์ฝ๊ธฐ ์ „์šฉ, ์“ฐ๊ธฐ ์ „์šฉ
  • ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ ๊ณ„์ธต์€ ์ปค๋„๋กœ๋ถ€ํ„ฐ ์žฅ์น˜ ์ œ์–ด๊ธฐ ์ฐจ์ด๋ฅผ ์ˆจ๊น€

Block and Character Devices

  • Block devices: ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ ํฌํ•จ
    • ๋ช…๋ น์–ด: read, write, seek
    • Raw I/O (์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ) ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ
    • Memory-mapped file ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • Character devices: ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค, ์‹œ๋ฆฌ์–ผ ํฌํŠธ ๋“ฑ
    • ๋ช…๋ น์–ด: get, put
    • ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์ ํ•ฉ (์ž๋ฐœ์  ๋ฐ์ดํ„ฐ ์ƒ์„ฑ)
    • ์ถœ๋ ฅ ์žฅ์น˜(ํ”„๋ฆฐํ„ฐ, ์˜ค๋””์˜ค ๋“ฑ)์—๋„ ์ ์ ˆ

Blocking and Nonblocking I/O

  • Blocking I/O
    • I/O ์™„๋ฃŒ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค ์ •์ง€๋จ
    • ์‹คํ–‰ ํ์—์„œ ๋Œ€๊ธฐ ํ๋กœ ์ด๋™
    • ์‚ฌ์šฉ์ด ์‰ฌ์›€
  • Non-blocking I/O
    • ๊ฐ€๋Šฅํ•œ ๋งŒํผ ์ฆ‰์‹œ ๋ฐ˜ํ™˜
    • ์ฝ๊ฑฐ๋‚˜ ์“ด ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • Asynchronous I/O
    • I/O ์ˆ˜ํ–‰ ์ค‘์—๋„ ํ”„๋กœ์„ธ์Šค ๊ณ„์† ์‹คํ–‰
    • ์š”์ฒญ๋œ ์ž‘์—…์€ ์ถ”ํ›„ ์™„๋ฃŒ
    • ๊ตฌํ˜„ ์–ด๋ ค์›€
  • I/O ์„œ๋ธŒ์‹œ์Šคํ…œ์€ I/O ์™„๋ฃŒ ์‹œ์ ์— ์‹œ๊ทธ๋„์„ ๋ณด๋ƒ„

Kernel I/O Subsystem

Scheduling

  • ๊ฐ ์žฅ์น˜๋ณ„ ํ๋กœ I/O ์š”์ฒญ ์ˆœ์„œ ์ •๋ ฌ
  • ๊ณต์ •์„ฑ ์œ ์ง€ ์‹œ๋„

Buffering

  • ์žฅ์น˜ ๊ฐ„ ์ „์†ก ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ ์ €์žฅ
  • ์†๋„ ๋ฐ ์ „์†ก ํฌ๊ธฐ ๋ถˆ์ผ์น˜ ๋Œ€์‘
  • "copy semantics" ์œ ์ง€
    • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋„˜๊ธด ๋ฐ์ดํ„ฐ๋Š” ์ปค๋„ ๋ฒ„ํผ์— ๋ณต์‚ฌ
    • ๋””์Šคํฌ์— ์“ฐ๋Š” ๊ฒƒ์€ ์ปค๋„ ๋ฒ„ํผ ๊ธฐ์ค€

Caching

  • ์„ฑ๋Šฅ ํ•ต์‹ฌ
  • ๋””์Šคํฌ ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€
  • ๋‹จ์ผ ๋ณต์‚ฌ๋ณธ ๋ณด์žฅ (buffer holds only copy)

Spooling

  • ์žฅ์น˜ ์ถœ๋ ฅ ์ž„์‹œ ๋ณด๊ด€
  • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์žฅ์น˜์—์„œ ์‚ฌ์šฉ
    • ์˜ˆ: ํ”„๋ฆฐํ„ฐ

Error Handling

  • OS๋Š” ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜ ๋ณต๊ตฌ ๊ฐ€๋Šฅ
    • ๋””์Šคํฌ ์˜ค๋ฅ˜, ์žฅ์น˜ ๋ถˆ๊ฐ€์šฉ, ์ผ์‹œ์  ์‹คํŒจ ๋“ฑ
  • ์‹คํŒจํ•œ I/O ์š”์ฒญ์— ๋Œ€ํ•ด:
    • ์˜ค๋ฅ˜ ์ฝ”๋“œ ๋ฐ˜ํ™˜
    • ์‹œ์Šคํ…œ ๋กœ๊ทธ ๊ธฐ๋ก

Kernel Data Structures

  • ์žฅ์น˜ ์ƒํƒœ ์ถ”์ ์šฉ ๊ตฌ์กฐ์ฒด ์œ ์ง€
    • ํŒŒ์ผ ํ…Œ์ด๋ธ”, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ, ๋ฌธ์ž ์žฅ์น˜ ์ƒํƒœ ๋“ฑ
  • ๋ฒ„ํผ, ๋ฉ”๋ชจ๋ฆฌ, dirty ๋ธ”๋ก ๋“ฑ ๋‹ค์–‘ํ•œ ํŠธ๋ž˜ํ‚น ๊ตฌ์กฐ ์‚ฌ์šฉ

Performance

  • I/O๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นจ
    • ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„, ์ปค๋„ I/O ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด CPU์— ํฐ ๋ถ€ํ•˜ ๋ฐœ์ƒ
    • ์ธํ„ฐ๋ŸฝํŠธ์— ์˜ํ•œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ
    • ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋น„์šฉ
    • ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์€ ํŠนํžˆ ๋ถ€๋‹ด์ด ํผ
  • I/O ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐฉ๋ฒ•
    • ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ์ˆ˜ ๊ฐ์†Œ
    • ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋Ÿ‰ ์ตœ์†Œํ™”
    • ๋Œ€์šฉ๋Ÿ‰ ์ „์†ก ๋˜๋Š” polling ์‚ฌ์šฉ์œผ๋กœ ์ธํ„ฐ๋ŸฝํŠธ ์ˆ˜ ๊ฐ์†Œ
    • DMA(Direct Memory Access) ํ™œ์šฉ
    • CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋ฒ„์Šค, I/O ์„ฑ๋Šฅ์˜ ๊ท ํ˜•์„ ํ†ตํ•ด ์ตœ๋Œ€ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ™•๋ณด

Concluding the OS courseโ€ฆ

Operating System isโ€ฆ

a collection of Cheating Schemes.

์ตœ๊ทผ ์ˆ˜์ •:: 25. 6. 19. ์˜คํ›„ 8:26
Contributors: kmbzn
Prev
13. Mass Storage Management

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License