CS

[์šด์˜์ฒด์ œ] 1. ์šด์˜์ฒด์ œ ๊ธฐ๋ณธ ๊ฐœ๋… : ์ปค๋„, ์‹œ์Šคํ…œ์ฝœ, ์ธํ„ฐ๋ŸฝํŠธ, DMA, ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ

sxunea 2025. 3. 13. 21:25

๐Ÿ“Ž  ์šด์˜์ฒด์ œ์˜ ์—ญํ• ๊ณผ ์ปค๋„์˜ ๊ธฐ๋Šฅ 

์šด์˜์ฒด์ œ๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ปค๋„, ์ธํ„ฐํŽ˜์ด์Šค, ์‹œ์Šคํ…œ ์ฝœ, ๋“œ๋ผ์ด๋ฒ„์˜ 4๊ฐ€์ง€๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. 

 

์ปค๋„ 

์ปค๋„์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ์š”์†Œ๋กœ, HW์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ, CPU, IO, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” SW์ด๋‹ค. 

 

์ธํ„ฐํŽ˜์ด์Šค

์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์š”์†Œ๋“ค์ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋งค๊ฐœ์ฒด๋กœ, ์œ ์ €์™€ OS, HW์™€ OS์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ทธ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค. CLI(๋ช…๋ น์–ด ์ธํ„ฐํŽ˜์ด์Šค), GUI(๊ทธ๋ž˜ํ”ฝ ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค) ๋“ฑ์ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ์˜ˆ์ด๋‹ค.

 

์‹œ์Šคํ…œ ์ฝœ

์‹œ์Šคํ…œ ์ฝœ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด OS์˜ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด OS์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ ์ž ๋งŒ๋“ค์–ด์กŒ๋‹ค.  read()์™€ ๊ฐ™์ด ํŒŒ์ผ์„ ์ฝ๋Š”๋‹ค๋˜๊ฐ€, fork()์™€ ๊ฐ™์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋“ค์ด ์ด ์‹œ์Šคํ…œ ์ฝœ์— ํฌํ•จ๋˜๋ฉฐ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ์ž์›์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋“œ๋ผ์ด๋ฒ„

๋“œ๋ผ์ด๋ฒ„๋Š” HW์™€ OS ๊ฐ„์˜ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค. ๊ฐ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋Š” ์šด์˜์ฒด์ œ์™€ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋“œ๋ผ์ด๋ฒ„๋Š” ์ด๋“ค ์žฅ์น˜๊ฐ€ ์šด์˜์ฒด์ œ์™€ ํ˜ธํ™˜๋˜๋„๋ก ํ•ด์ค€๋‹ค. ํ”„๋ฆฐํŠธ ๋“œ๋ผ์ด๋ฒ„, ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ทธ ์˜ˆ์‹œ์ด๋‹ค. 

 

 

 

 

๐Ÿ“Ž  ์ปค๋„์˜ ์‹œ์Šคํ…œ ์ž์› ๊ด€๋ฆฌ 

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์ปค๋„์€ ์šฐ๋ฆฌ๊ฐ€ ์šด์˜์ฒด์ œ ํ•˜๋ฉด ๋– ์˜ฌ๋ฆฌ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋Œ€๋ถ€๋ถ„ ์ˆ˜ํ–‰ํ•˜๋Š” OS์˜ ํ•ต์‹ฌ์š”์†Œ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ปค๋„์ด ๊ด€๋ฆฌํ•˜๋Š” ์ž์›์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. ๊ฐ ๋‚ด์šฉ์€ ์ „๋ถ€ ๊ฝค๋‚˜ ๊นŠ์€๊ฑฐ๋ผ, ์ด ๊ธ€์—์„œ๋Š” ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ  ๋‚˜์ค‘์— ๊ฐ๊ฐ ๋” ์ž์„ธํžˆ ์—…๋กœ๋“œ๋ฅผ ํ•˜๊ฒ ๋‹ค. 

 

1. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

์ปค๋„์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ถฉ๋Œ ์—†์ด ์‹œ์Šคํ…œ ์ž์›์„ ๊ณต์ •ํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค. 

  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง: CPU ์ž์›์„ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: FIFO, Round Robin, Priority Scheduling)์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋†’์ธ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”: ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ œ์–ดํ•œ๋‹ค : ๋ฎคํ…์Šค(Mutex), ์„ธ๋งˆํฌ์–ด(Semaphore) 
  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๋ฐ ์ข…๋ฃŒ: ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ์ž‘์—…์„ ๊ด€๋ฆฌํ•œ๋‹ค

2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ 

์ปค๋„์€ ์‹œ์Šคํ…œ์˜ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ(RAM)๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ฐฐ๋ถ„ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ•„์š”ํ•œ ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•œ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•œ๋‹ค : ์—ฐ์† ํ• ๋‹น, ํŽ˜์ด์ง€ ํ• ๋‹น, ์„ธ๊ทธ๋จผํŠธ ํ• ๋‹น ๋“ฑ
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ: ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•˜๋“œ ๋””์Šคํฌ์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ํŽ˜์ด์ง•(Paging)๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜(Segmentation) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ: ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒ”ํ•˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ: ์‚ฌ์šฉ์ด ๋๋‚œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ•ด์ œํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

3. ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ด€๋ฆฌ 

์ปค๋„์€ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜(๋””์Šคํฌ, ํ”„๋ฆฐํ„ฐ, ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๋“ฑ)์™€์˜ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„(Device Drivers): ๊ฐ ์žฅ์น˜์— ๋งž๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์žฅ์น˜ ์Šค์ผ€์ค„๋ง(Device Scheduling): ์—ฌ๋Ÿฌ ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์žฅ์น˜์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, FCFS(First-Come-First-Served), SSTF(Shortest Seek Time First), SCAN ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•œ๋‹ค.
  • ๋ฒ„ํผ๋ง(Buffering): ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ์†๋„ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์„ ์›ํ™œํ•˜๊ฒŒ ํ•œ๋‹ค.

 

4. ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ 

์ปค๋„์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ , ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ํŒŒ์ผ ์ €์žฅ: ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ํŒŒ์ผ์„ ๋””์Šคํฌ์— ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•œ๋‹ค. ํŒŒ์ผ์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒ์ผ ํ• ๋‹น ๋ฐฉ๋ฒ•: ๋””์Šคํฌ ์ƒ์—์„œ ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ด€๋ฆฌํ•œ๋‹ค. ์—ฐ์† ํ• ๋‹น(Contiguous Allocation), ๋งํฌ ํ• ๋‹น(Linked Allocation), ์ƒ‰์ธ ํ• ๋‹น(Index Allocation) ๋“ฑ์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
  • ํŒŒ์ผ ์ ‘๊ทผ ์ œ์–ด: ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๋“ฑ์˜ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ์–ดํ•œ๋‹ค.
  • ํŒŒ์ผ ๋ณต๊ตฌ: ์‹œ์Šคํ…œ ์ถฉ๋Œ ๋“ฑ์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ ๋ณต๊ตฌ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

 

5. ๋ณด์•ˆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ 

์ปค๋„์€ ์‹œ์Šคํ…œ ์ž์›์— ๋Œ€ํ•œ ๋ถˆ๋ฒ•์ ์ธ ์ ‘๊ทผ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ์ž์›์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์•ˆ์„ ์œ ์ง€ํ•œ๋‹ค.

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

 

 

 

 

๐Ÿ“Ž  ์œ ์ €๋ชจ๋“œ์™€ ์ปค๋„๋ชจ๋“œ ์ „ํ™˜, ์‹œ์Šคํ…œ ์ฝœ์˜ ๋™์ž‘ ์›๋ฆฌ 

์œ ์ €๋ชจ๋“œ์™€ ์ปค๋„๋ชจ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” 2๊ฐ€์ง€ ๊ธฐ๋ณธ ๋ชจ๋“œ๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ๊ถŒํ•œ ์ˆ˜์ค€์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์œ ์ € ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์Šคํ…œ ์ž์›์ด ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์ปค๋„์— ์ง์ ‘ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์—†๋„๋ก ๋ชจ๋“œ๋ฅผ ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ๋‚˜๋ˆ„์–ด ์กŒ๋‹ค. 

 

์œ ์ €๋ชจ๋“œ

์œ ์ € ๋ชจ๋“œ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ๋ชจ๋“œ๋กœ, ํ”„๋กœ์„ธ์Šค๊ฐ€ HW์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. 

 

์ปค๋„๋ชจ๋“œ

์ปค๋„ ๋ชจ๋“œ๋Š” ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ธ ์ปค๋„์ด ์‹คํ–‰๋˜๋Š” ๋ชจ๋“œ๋กœ, ๋ชจ๋“  ์‹œ์Šคํ…œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง„๋‹ค. ์ฆ‰, ์œ ์ €๋ชจ๋“œ์™€ ๋‹ฌ๋ฆฌ HW์˜ ์ ‘๊ทผ์ด๋‚˜ ์ž์› ์ ‘๊ทผ์ด ์™„์ „ํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

์œ ์ € <-> ์ปค๋„ ๋ชจ๋“œ ์ „ํ™˜

๋ชจ๋“œ ์ „ํ™˜์€ ์‹œ์Šคํ…œ ์ฝœ / ์ธํ„ฐ๋ŸฝํŠธ ๋‘ ๊ฐ€์ง€์— ์˜ํ•ด ๋ฐœ์ƒํ•œ๋‹ค. 

 

๋จผ์ € ์•ž์„œ๋งํ–ˆ๋“ฏ์ด ์‹œ์Šคํ…œ ์ฝœ์€ ์œ ์ €๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ์ปค๋„๋ชจ๋“œ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ, ์œ ์ €๋ชจ๋“œ์—์„œ๋Š” ์ œํ•œ๋œ ์ ‘๊ทผ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๊ณ , ์ž์›์— ์ ‘๊ทผํ•œ๋‹ค. 

 

  1. ์‹œ์Šคํ…œ ์ฝœ ์š”์ฒญ (User Mode)
    ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์„ ์—ด๊ณ ์žํ• ๋•Œ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์ด open() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  2. ๋ชจ๋“œ ์ „ํ™˜ (User Mode → Kernel Mode)
    ์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ๋˜๋ฉด, ์šด์˜์ฒด์ œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ CPU๋Š” ํ˜„์žฌ ๋ชจ๋“œ์ธ ์œ ์ € ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•œ๋‹ค. ์•„๋•Œ, ์ „ํ™˜ ๊ณผ์ •์—์„œ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์ค‘๋‹จ ์ง€์ ์„ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด  ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ๊ฐ€ ์ €์žฅ๋œ๋‹ค. 
  3. ์ปค๋„ ๋ชจ๋“œ์—์„œ์˜ ์ฒ˜๋ฆฌ (Kernel Mode)
    ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๋ฉด, ์‹œ์Šคํ…œ ์ฝœ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปค๋„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  4. ๋ชจ๋“œ ์ „ํ™˜ (Kernel Mode → User Mode)
    ์ปค๋„์ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ ํ›„, ๊ฒฐ๊ณผ๋ฅผ ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ ํ›„ ๋‹ค์‹œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์‹œ ์‹คํ–‰๋œ๋‹ค. ์ปค๋„์€ ์ด๋•Œ ๊ณผ์ •2์—์„œ ์ €์žฅํ•ด๋‘” ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณต์›ํ•ด ์ด์ „์— ์ค‘๋‹จ๋œ ์œ„์น˜์—์„œ ์‹คํ–‰์„ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  5. ์‹œ์Šคํ…œ ์ฝœ ๋ฐ˜ํ™˜ (User Mode)
    ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋„์ด ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ฒŒ ๋˜๊ณ , ์ดํ›„ ์œ ์ € ๋ชจ๋“œ์—์„œ ๋‹ค์‹œ ์ž‘์—…์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ์—ด๋ ค๊ณ ํ• ๋•Œ, ์œ ์ € ํ”„๋กœ๊ทธ๋žจ์€ open() ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ณ , ์ด ํ•จ์ˆ˜๋Š” ์‹ค์ œ๋กœ ์ปค๋„ ๋ชจ๋“œ์—์„œ ๋™์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์—ด๊ณ , ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํŒŒ์ผ์„ ์ฐพ๋Š” ๊ณผ์ •์„ ๊ฐ€์ง„๋‹ค. 

 

 

 

 

 

๐Ÿ“Ž  ์šด์˜์ฒด์ œ์˜ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ

 

1. ํ”„๋กœ๊ทธ๋žจ ์ž…์ถœ๋ ฅ (Programmed I/O, PIO)

ํ”„๋กœ๊ทธ๋žจ ์ž…์ถœ๋ ฅ์€ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ์ œ์–ดํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์† ๋ช…๋ น์–ด๋กœ ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 

 

์ด ๊ฒฝ์šฐ, CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ํ™•์ธ(polling)ํ•˜๋ฉด์„œ ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ž‘์—…์ด ๋ฐ˜๋ณต๋œ๋‹ค. ๋”ฐ๋ผ์„œ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ๊ณผ์ • ๋™์•ˆ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ ๋ชจ๋‘ ์•Œ๊ณ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•ด ๋น„ํšจ์œจ์ ์ด๋‹ค. 

 

2. ์ธํ„ฐ๋ŸฝํŠธ ๊ธฐ๋ฐ˜ ์ž…์ถœ๋ ฅ (Interrupt-Driven I/O)

์•ž์„œ ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ• ๋•Œ ์šด์˜์ฒด์ œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋ฌด์—‡์ผ๊นŒ ? 

 

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋ช…๋ น์„ ์ž ์‹œ ์ค‘๋‹จํ•˜๊ณ , ์ค‘์š”ํ•œ ์ด๋ฒคํŠธ๋‚˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์‹ ํ˜ธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋Š” CPU์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ค‘๋‹จ์‹œํ‚ค๊ณ , ๊ทธ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ ์›๋ž˜์˜ ํ๋ฆ„์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง„๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด์— ๋”ฐ๋ผ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์™€ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋กœ ๋‚˜๋‰˜๋ฉฐ, ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์—๋Š” I/O ์™„๋ฃŒ, ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์—๋Š” ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ชฉ์ฐจ์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

 

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ํ”„๋กœ๊ทธ๋žจ ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์€ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ๊ณผ์ •์„ ๊ณ„์† ๋Œ€๊ธฐํ•ด์•ผ ํ•ด ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋ฐ˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์€ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. 

  1. CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์žฅ์น˜์— ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ๋ณด๋ƒ„
  2. CPU๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ (์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰)
  3. ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ(Interrupt) ๋ฐœ์ƒ
  4. CPU๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR, Interrupt Service Routine)์„ ์‹คํ–‰
  5. ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„, CPU๋Š” ์›๋ž˜ ์ˆ˜ํ–‰ํ•˜๋˜ ์ž‘์—…์„ ๊ณ„์† ์‹คํ–‰

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ „๊ฐœ๋˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฉ์‹์€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด CPU๊ฐ€ ๋ถ€ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 

 

์ด๋•Œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋™์‹œ์— ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒํ• ๊นŒ ? ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋“ค์–ด์˜จ ์ˆœ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋ณดํ†ต์€ ์šฐ์„ ์ˆœ์œ„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ์ž˜ ์“ฐ์ธ๋‹ค. ์ด๋•Œ PIC(programmable interrupt controller) ๋ฅผ ํ†ตํ•ด์„œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํŒ๋‹จํ•˜๊ณ , ๊ฐ€์žฅ ๋†’์€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ CPU์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ๊ทธ ๋’ค๋กœ ISR์ด ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „๊ฐœ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. 

 

3. DMA (Direct Memory Access, ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ)

์•ž์„  ๋‘๊ฐ€์ง€์˜ ๋ฐฉ์‹์—๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ CPU๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ CPU๋Š” ์ค‘์š”ํ•œ ์ž์›์œผ๋กœ์„œ ์ตœ๋Œ€ํ•œ ์•„๊ปด์จ์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐํ•œ ์‚ฌ์‹ค์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ž…์ถœ๋ ฅ์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ CPU๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ ๋„ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์ธ DMA(Direct MEmory Access)๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. 

 

DMA๋Š” ์ด๋ฆ„์ฒ˜๋Ÿผ CPU๊ฐ€ ๊ฐœ์ž…ํ•˜์ง€ ์•Š๊ณ , ์ž…์ถœ๋ ฅ ์žฅ์น˜๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. DMA ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•ด, ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž…์ถœ๋ ฅ ์žฅ์น˜ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. 

  1. CPU๊ฐ€ DMA ์ปจํŠธ๋กค๋Ÿฌ(DMAC) ์—๊ฒŒ ์ž…์ถœ๋ ฅ ์š”์ฒญ
  2. DMA ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ง์ ‘ ์ˆ˜ํ–‰
  3. ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์™„๋ฃŒ๋˜๋ฉด DMA ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ ์‹œ์ผœ CPU์—๊ฒŒ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆผ
  4. CPU๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐ›์•„์„œ ํ•„์š”ํ•œ ํ›„์ฒ˜๋ฆฌ ์ˆ˜ํ–‰

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ DMA ๋ฐฉ์‹์€ CPU์˜ ๋ถ€ํ•˜ ์—†์ด ์ž…์ถœ๋ ฅ์„ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค. 

 

 

 

 

๐Ÿ“Ž  ๋™๊ธฐ์‹/๋น„๋™๊ธฐ์‹ I/O์˜ ์ฐจ์ด์™€ ํ™œ์šฉ ์‚ฌ๋ก€

์•ž์„  ๋ชฉ์ฐจ์—์„œ๋Š” ์ž…์ถœ๋ ฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ์„ธ๊ฐ€์ง€ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค๋ฉด, ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ๋™๊ธฐ์‹ / ๋น„๋™๊ธฐ์‹ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

 

๋™๊ธฐ / ๋น„๋™๊ธฐ๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์ž์ฃผ ์“ฐ์ด๋Š” ๊ฐœ๋…์ด์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ๋‹ค์‹œ ์ ๊ณ  ๋„˜์–ด๊ฐ€๋ณด์ž. 

  • ๋™๊ธฐ : ์–ด๋–ค ์ž‘์—…์ด ์ง„ํ–‰๋  ๋•Œ, ํ•ด๋‹น ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์ด ๋Œ€๊ธฐํ•˜๋Š” ๋ฐฉ์‹
  • ๋น„๋™๊ธฐ : ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์ฆ‰์‹œ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐ๊ณผ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

 

๋™๊ธฐ์‹ I/O (Synchronous I/O)

๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ์€ ๊ทธ ์ด๋ฆ„์ฒ˜๋Ÿผ CPU๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•ด ์ž…์ถœ๋ ฅ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋™์•ˆ, ๋‹ค๋ฅธ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋™๊ธฐ์‹์€ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์ž‘์—… ๋™์•ˆ ๋Œ€๊ธฐํ•ด์•ผํ•˜๋ฉฐ, ์ž…์ถœ๋ ฅ ์†๋„๊ฐ€ ๋А๋ฆฐ ๊ฒฝ์šฐ ์ „์ฒด์ ์œผ๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. 

 

DB ํŠธ๋žœ์žญ์…˜์ด๋‚˜ CLI ํ”„๋กœ๊ทธ๋žจ ๊ฐ™์ด ์ˆœ์„œ๋‚˜, ์š”์ฒญ - ์‘๋‹ต ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์“ฐ์ธ๋‹ค. 

 

๋น„๋™๊ธฐ์‹ I/O (Asynchronous I/O)

๋น„๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ์€ CPU๊ฐ€ ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„, ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด CPU์— ์•Œ๋ฆฐ๋‹ค. 

 

์ด๋ฅผ ํ†ตํ•ด, CPU๋Š” ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ์ž์› ํ™œ์šฉ๋„๊ฐ€ ๋†’๋‹ค. 

 

GUI ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์„œ๋ฒ„, ์ŠคํŠธ๋ฆฌ๋ฐ๊ณผ ๊ฐ™์ด ๋น ๋ฅธ ์‘๋‹ต๊ณผ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ๊ณณ์—์„œ ๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ์ด ์“ฐ์ธ๋‹ค.

 

๐Ÿ“Ž  ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ ๊ฐœ๋… 

์šด์˜์ฒด์ œ๋Š” CPU์™€ ์‹œ์Šคํ…œ ์ž์›์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ, ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ, ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ ์‹œ์Šคํ…œ์ด ์žˆ๋‹ค.

 

๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ

ํ•˜๋‚˜์˜ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์˜ฌ๋ ค๋†“๊ณ  CPU๊ฐ€ ํ•ญ์ƒ ์‚ฌ์šฉ๋˜๋„๋ก ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ CPU๊ฐ€ ์‰ฌ์ง€ ์•Š๋„๋ก, ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด CPU ํ™œ์šฉ๋„๋ฅผ ์ตœ๋Œ€๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์Šค์ผ€์ค„๋ง์˜ ํšจ์œจ์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค. 

 

์ด ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ์ด ๋„์ž…๋˜๋ฉด์„œ ๋“ฑ์žฅํ•˜๋Š” ์šฉ์–ด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

  • ๋ฌธ๋งฅ ๊ตํ™˜
  • CPU ์Šค์ผ€์ค„๋ง
  • ์ธํ„ฐ๋ŸฝํŠธ
  • ๊ต์ฐฉ์ƒํƒœ

 

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ

๋‘ ๊ฐœ ์ด์ƒ์˜ CPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์—(๋ณ‘๋ ฌ์ ์œผ๋กœ) ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์„ธ์„œ ๊ฐ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•œ ๊ฐœ์˜ CPU์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ CPU๊ฐ€ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด ์‹ ๋ขฐ์„ฑ์ด ๋†’๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„, ์Šˆํผ์ปดํ“จํ„ฐ, ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 

 

์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ

ํ•˜๋‚˜์˜ CPU๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์งง์€ ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

CPU๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์•„์ฃผ ์งง๊ฒŒ ๋‚˜๋ˆ„์–ด ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•˜๋ฉฐ, ๋น ๋ฅด๊ฒŒ ์ „ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ๊ฒฐ๊ตญ ๋‹ค์ค‘ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ™•์žฅ ๋ฒ„์ „์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šด์˜์ฒด์ œ๋Š” ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๋‹จ์œ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ๋™์•ˆ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๋ฉฐ, ์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ฐ•์ œ๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜๋œ๋‹ค.

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค์˜ ๊ธธ์ด๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ๊ณผ ์‘๋‹ต ์†๋„์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ์งง์œผ๋ฉด ๋ฌธ๋งฅ ์ „ํ™˜์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜์—ฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ , ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ๊ธธ๋ฉด ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋…์ ํ•˜์—ฌ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ

์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ๊ณผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š”, ์ฆ‰ ์‚ฌ์šฉ์ž ์ž…์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋กœ ๋ณด์ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์งง์€ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ค‘์š”ํ•˜๋‹ค. ์ฃผ๋กœ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI) ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž…๋ ฅ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ฆ‰๊ฐ์ ์ธ ๋ฐ˜์‘์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

 

 

 

์ฐธ๊ณ ์ž๋ฃŒ

 

[์ปดํ“จํ„ฐ ๊ตฌ์กฐ] ์ธํ„ฐ๋ŸฝํŠธ์™€ DMA๋ฅผ ์ด์šฉํ•œ I/O

์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ด์šฉํ•œ I/O ์ธํ„ฐ๋ŸฝํŠธ๋ž€? CPU๊ฐ€ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘์— ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ธํ„ฐ๋ŸฝํŠธ ์š”๊ตฌ๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉด, CPU๋Š” ์›๋ž˜์˜ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰์„ ์ค‘๋‹จํ•˜๊ณ , ์š”๊ตฌ๋œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ

hyeo-noo.tistory.com