๐Ÿ“š Computer Science/CS

[์ปดํ“จํ„ฐ ๋ฐ‘๋ฐ”๋‹ฅ์˜ ๋น„๋ฐ€] 6์žฅ. ์ž…์ถœ๋ ฅ

ibelieveinme 2025. 2. 23. 17:18
728x90

์ด ๊ธ€์€ ใ€Œ์ปดํ“จํ„ฐ ๋ฐ‘๋ฐ”๋‹ฅ์˜ ๋น„๋ฐ€ใ€ ์ฑ…์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €์ž‘๊ถŒ ๋ฌธ์ œ์‹œ ๋น„๊ณต๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 


 

์ž…์ถœ๋ ฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์›๋ฆฌ์™€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋” ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ๊ฒƒ์ธ๊ฐ€…

 

 

6.1 CPU๋Š” ์–ด๋–ป๊ฒŒ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ• ๊นŒ?

 

*์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ(device register)

CPU์—์„œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ CPU์—์„œ ๊ณ„์‚ฐํ•œ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์žฅ์น˜์—๋„ ์ž์ฒด์ ์ธ ๋ ˆ์ง€์Šคํ„ฐ์ธ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ(device register)๊ฐ€ ์žˆ๋‹ค.

 

1) ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ

ex) ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ์˜ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ทธ ์ •๋ณด๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ๋‹ค.

2) ์ œ์–ด ์ •๋ณด์™€ ์ƒํƒœ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ: ์ด๋Ÿฐ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ž‘์—…์„ ์ด์šฉํ•ด์„œ ์žฅ์น˜๋ฅผ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ์žฅ์น˜ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ๊นŒ? → ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๋กœ ์ฝ๊ณ  ์“ด๋‹ค.

๊ทธ๋Ÿผ ๋˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๋Š” ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜์–ด์•ผ ํ• ๊นŒ ?



*์ž…์ถœ๋ ฅ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 2๊ฐ€์ง€.

 

1. ์ž…์ถœ๋ ฅ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด

: ํŠน์ • ์ž…์ถœ๋ ฅ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด ์‚ฌ์šฉ.

 

1)CPU ๋‚ด๋ถ€์—์„œ ์‚ฐ์ˆ  ๊ณ„์‚ฐ, ์ ํ”„, ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํŠน์ •ํ•œ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ํŠน์ •ํ•œ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋‹ค. 

2) ์›๋ฆฌ๋Š” ์žฅ์น˜๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ , ์ž…์ถœ๋ ฅ ๋ช…๋ น์–ด์— ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

ex) x86์˜ IN, OUT ๊ธฐ๊ณ„ ๋ช…๋ น์–ด.

 

2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ƒ ์ž…์ถœ๋ ฅ

: ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๋ช…๋ น์–ด๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์ผ๋ถ€๋ถ„์„ ์žฅ์น˜์— ํ• ๋‹นํ•˜๊ธฐ.

LOAD์™€ STORE ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ?

→ LOAD, STORE ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์ „๋‹ฌ๋˜๋Š” ‘๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„(memory address space)’ ์ •๋ณด๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋ฉฐ, CPU๋Š” ์ฃผ์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ์žˆ๋Š”์ง€๋Š” ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์ผ๋ถ€๋ฅผ ์žฅ์น˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ex) 00000000~11111111 ์ฃผ์†Œ๊ณต๊ฐ„์ด ์žˆ์„ ๋•Œ, 11110010์ด๋ผ๋Š” ์ฃผ์†Œ๊ฐ€ ๋„์ฐฉํ–ˆ๋‹ค๋ฉด.

์•ž์˜ 4๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด ์žฅ์น˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์•„๋‹ˆ๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ ๋ช…๋ น์–ด๋กœ ๋™์ž‘ํ•œ๋‹ค.



*์žฅ์น˜ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ

ํ‚ค๋ณด๋“œ์˜ ํ‚ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ์žˆ๋Š”์ง€, ๋งˆ์šฐ์Šค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ์žˆ๋Š”์ง€ ๋“ฑ CPU๊ฐ€ ์žฅ์น˜์˜ ์ž‘์—…์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•.

 

1) ํด๋ง: ๊ณ„์† ๊ฒ€์‚ฌํ•˜๊ธฐ

while(ํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ์ง€ ์•Š์Œ){
     ; // ํ‚ค๊ฐ€ ๋ˆŒ๋ฆด ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐ
}
ํ‚ค๋ณด๋“œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

CPU๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ํ•ญ์ƒ ์ˆœํ™˜ํ•˜๋ฉฐ ๋Œ€๊ธฐํ•จ.

 

2) ์ธํ„ฐ๋ŸฝํŠธ ๊ตฌ๋™์‹ ์ž…์ถœ๋ ฅ: ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•.

ํ”„๋กœ๊ทธ๋žจ A์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด n ์‹คํ–‰
ํ”„๋กœ๊ทธ๋žจ A์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด n + 1 ์‹คํ–‰
ํ”„๋กœ๊ทธ๋žจ A์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด n + 2 ์‹คํ–‰
์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ ๊ฐ์ง€
ํ”„๋กœ๊ทธ๋žจ A์˜ ์‹คํ–‰์ƒํƒœ ์ €์žฅ
์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด m ์‹คํ–‰
์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด m + 1 ์‹คํ–‰
์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด m + 2 ์‹คํ–‰
ํ”„๋กœ๊ทธ๋žจ A์˜ ์‹คํ–‰์ƒํƒœ ๋ณต์›
ํ”„๋กœ๊ทธ๋žจ A์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด n + 3 ์‹คํ–‰
ํ”„๋กœ๊ทธ๋žจ A์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด n + 4 ์‹คํ–‰

: ๋ˆ„๊ตฐ๊ฐ€ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅด๋ฉด CPU ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ํ‚ค๋ณด๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ๋‹ค์‹œ ์ค‘๋‹จ๋œ ์ž‘์—…์„ ์‹คํ–‰. DYSEAC ์‹œ์Šคํ…œ์—์„œ ์ฒ˜์Œ ์‚ฌ์šฉ ๋จ.



* ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„ ๊ตฌ์กฐ::stack

ํ”„๋กœ๊ทธ๋žจ A ์˜ ์ƒํƒœ ์ €์žฅ
ํ”„๋กœ๊ทธ๋žจ B ์˜ ์ƒํƒœ ์ €์žฅ
ํ”„๋กœ๊ทธ๋žจ C ์˜ ์ƒํƒœ ์ €์žฅ

ํ”„๋กœ๊ทธ๋žจ C ์˜ ์ƒํƒœ ๋ณต์›
ํ”„๋กœ๊ทธ๋žจ B ์˜ ์ƒํƒœ ๋ณต์›
ํ”„๋กœ๊ทธ๋žจ A ์˜ ์ƒํƒœ ๋ณต์›

: ์ƒํƒœ๊ฐ€ ๋จผ์ € ์ €์žฅ๋  ์ˆ˜๋ก ์ƒํƒœ ๋ณต์›์€ ๋” ๋‚˜์ค‘์— ๋จ. ์ด ์Šคํƒ์€ ๋ฐ˜๋“œ์‹œ ์ปค๋„์— ์žˆ์–ด์•ผ ํ•จ.

 

 

 

6.2 ๋””์Šคํฌ๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ CPU ๊ฐ€ ํ•˜๋Š” ์ผ์€ ๋ฌด์—‡์ผ๊นŒ?

: ์Šค์ผ€์ค„๋ง. ๋””์Šคํฌ๊ฐ€ ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ์šด์˜์ฒด์ œ๋Š” CPU๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์Šค์ผ€์ค„๋งํ•จ.

 

๋””์Šคํฌ์˜ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ์™€ CPU๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์€ ์„œ๋กœ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ๋‘ ์ž‘์—…์ด๋ฏ€๋กœ ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

*๋””์Šคํฌ๊ฐ€ ์ž…์ถœ๋ ฅ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์—์„œ ์™œ CPU ๊ฐœ์ž…์ด ํ•„์š”ํ•˜์ง€ ์•Š์„๊นŒ ?

์žฅ์น˜ ์ œ์–ด๊ธฐ, ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ, ์ธํ„ฐ๋ŸฝํŠธ์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

1. ์žฅ์น˜ ์ œ์–ด๊ธฐ

: ๋””์Šคํฌ์˜ ๋ˆˆ์— ๋ณด์ด๊ณ  ๋งŒ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„ ๋ถ€๋ถ„์„ ์ œ์™ธํ•œ ๋ถ€๋ถ„

 

๊ธฐ๊ณ„ ์žฅ์น˜์ธ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ—ค๋“œ์˜ ํŠธ๋ž™์— ์—†์„ ๋•Œ ๋‹ค๋ฅธ ํŠธ๋ž™์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ ํƒ์ƒ‰ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ํƒ์ƒ‰ ์‹œ๊ฐ„์€ ๋””์Šคํฌ ์ž…์ถœ๋ ฅ ์ค‘์—์„œ ๋งค์šฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๋Š” ์ž‘์—…์ด๋‹ค. 

 

์ฆ‰, CPU์™€์˜ ์†๋„์ฐจ์ด๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ณ„ ์žฅ์น˜์™€ ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์ด์— ์žฅ์น˜ ์ œ์–ด๊ธฐ(ํ•˜๋“œ์›จ์–ด ์ „์ž๋ถ€๋ถ„)์„ ๋‘์–ด ์žฅ์น˜์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋‚˜ ์žฅ์น˜์— ์ €์žฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

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

: CPU ๊ฐœ์ž…์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ ์ง์ ‘ ์žฅ์น˜์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘๋™ ๋ฐฉ์‹.

 

1) CPU๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด๋ฅผ DMA์— ์ „๋‹ฌ.

2) DMA๋Š” ์ž์‹ ์˜ ์ž‘์—… ๋ชฉํ‘œ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ๋ฒ„์Šค์˜ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ์š”์ฒญํ•œ ํ›„ ์žฅ์น˜๋ฅผ ์ž‘๋™์‹œํ‚จ๋‹ค.

3) ์šด์˜์ฒด์ œ๊ฐ€ DMA์— ํ•„์š”ํ•œ ๊ฐ€์ƒ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์‚ฌ์ด์˜ ์‚ฌ์ƒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์„œ DMA๊ฐ€ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

4) DMA๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์™„๋ฃŒํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ์ž‘๋™ ๋ฐฉ์‹์œผ๋กœ CPU์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.



6.3 ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ?

 

1. ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ ์—์„œ์˜ ์ž…์ถœ๋ ฅ

: ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ ์—์„œ์˜ ์ž…์ถœ๋ ฅ์€ ๋‹จ์ˆœํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ์ผ ๋ฟ ๊ทธ ์ด์ƒ๋„ ์ดํ•˜๋„ ์•„๋‹ˆ๋‹ค.

: ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์™€ ์™ธ๋ถ€ ์žฅ์น˜ ์‚ฌ์ด์— ๋ณต์‚ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์™”๋‹ค ๊ฐ”๋‹ค ํ•˜๋Š” ๊ฒƒ์„ ์ž…์ถœ๋ ฅ(I/O)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

- ์ž…๋ ฅ(input): ๋ฐ์ดํ„ฐ๊ฐ€ ์™ธ๋ถ€ ์žฅ์น˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณต์‚ฌ

- ์ถœ๋ ฅ(output): ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์™ธ๋ถ€ ์žฅ์น˜๋กœ ๋ณต์‚ฌ

 

2. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ผ์„ ์ฝ๋Š” ์ „์ฒด ๊ณผ์ •

char buffer[LEN];
read(buffer);

์œ„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

 

ํ”„๋กœ์„ธ์Šค A์™€ ํ”„๋กœ์„ธ์Šค B ๋‘ ๊ฐœ๊ฐ€ ์žˆ๋‹ค. 

ํ”„๋กœ์„ธ์Šค A๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘ ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค A ์— ํŒŒ์ผ์„ ์ฝ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค.

 

์šด์˜์ฒด์ œ๋Š” ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค A์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ  ์ž…์ถœ๋ ฅ ๋ธ”๋กœํ‚น ๋Œ€๊ธฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

๋””์Šคํฌ๋Š” DMA ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋ณต์‚ฌํ•œ๋‹ค.

 

์ด ๋•Œ ์šด์˜์ฒด์ œ๋Š” ์‰ฌ์ง€ ์•Š๊ณ  ์ค€๋น„ ์™„๋ฃŒ ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค B๋ฅผ ๊บผ๋‚ด์„œ ์‹คํ–‰ํ•œ๋‹ค.

 

์ฆ‰, ์šด์˜์ฒด์ œ์˜ ์Šค์ผ€์ค„๋ง์— ๋”ฐ๋ผ CPU์™€ ๋””์Šคํฌ๊ฐ€ ๋ชจ๋‘ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉ๋œ๋‹ค.

 

๋””์Šคํฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ์„ธ์Šค A์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌํ•˜๋Š” ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋””์Šคํฌ๋Š” CPU์— ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

CPU๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ฐ›๊ณ  ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๋˜ ํ•จ์ˆ˜๋กœ ์ ํ”„ํ•œ๋‹ค.

 

์ด ๋•Œ, ์šด์˜์ฒด์ œ๋Š” CPU๋ฅผ ํ”„๋กœ์„ธ์Šค A์— ํ• ๋‹นํ• ์ง€, ํ”„๋กœ์„ธ์Šค B์— ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค B์— ํ• ๋‹น๋œ CPU ์‹œ๊ฐ„์ด ๋‚จ์•„์„œ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค B๋ฅผ ๊ณ„์† ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค(๊ฐ€์ •)

ํ”„๋กœ์„ธ์Šค B๋Š” ๊ณ„์† ์‹คํ–‰๋˜๊ณ , ํ”„๋กœ์„ธ์Šค A๋Š” ๊ณ„์† ๋Œ€๊ธฐํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค B๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ์‹คํ–‰๋œ ํ›„ ์‹œ์Šคํ…œ์˜ ํƒ€์ด๋จธ๊ฐ€ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค.

CPU๋Š”์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜๋กœ ์ ํ”„ํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค A๋ฅผ ์ž…์ถœ๋ ฅ ๋ธ”๋กœํ‚น ๋Œ€๊ธฐ์—ด์—์„œ ์ค€๋น„์™„๋ฃŒ ๋Œ€๊ธฐ์—ด๋กœ ์˜ฎ๊ธด๋‹ค.

ํ”„๋กœ์„ธ์Šค A๋ฅผ ์ค€๋น„ ์™„๋ฃŒ ๋Œ€๊ธฐ์—ด์—์„œ ๊บผ๋‚ด์„œ CPU์— ํ• ๋‹นํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

 

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

์šด์˜์ฒด์ œ๋ฅผ ํ†ตํ•œ ๋ณต์‚ฌ๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ณ„์ธต์ด ๋” ์กด์žฌํ•˜๋Š” ๊ฒƒ.

 

 

6.4 ๋†’์€ ๋™์‹œ์„ฑ์˜ ๋น„๊ฒฐ: ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”

๋ชจ๋“  ์ž…์ถœ๋ ฅ ์žฅ์น˜๋Š” ํŒŒ์ผ์ด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ์ถ”์ƒํ™”๋œ๋‹ค.

๋ชจ๋“  ์ž…์ถœ๋ ฅ ์ž‘์—…์€ ํŒŒ์ผ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

read(buffer);

 

* ํŒŒ์ผ ์„œ์ˆ ์ž(file descripter): ํŒŒ์ผ์— ๋ถ™์ธ ๋ฒˆํ˜ธ

ํŒŒ์ผ์„ ์—ด ๋•Œ, ์ปค๋„์€ ํŒŒ์ผ ์„œ์ˆ ์ž(file descripter)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ํŒŒ์ผ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๋•Œ, ํ•ด๋‹น ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ์ปค๋„์— ์ „๋‹ฌํ•œ๋‹ค.

์ปค๋„์€ ์ด ์ˆซ์ž๋ฅผ ์–ป์€ ํ›„ ํ•ด๋‹น ์ˆซ์ž์— ๋Œ€์‘ํ•˜๋Š” ํŒŒ์ผ์— ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ฐพ์•„ ํŒŒ์ผ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ํŒŒ์ผ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

 

๋˜ํ•œ, ๊ด€์‹ฌ ๋Œ€์ƒ์ธ ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ์ปค๋„์— ์•Œ๋ ค์ฃผ๊ณ  ์ปค๋„์—๊ฒŒ ๋Œ€์‹  ๊ฐ์‹œํ•˜๋‹ค๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ์„œ์ˆ ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์•Œ๋ ค์ฃผ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. => ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋™์‹œ์— ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”(input/output multiplexting) ๊ธฐ์ˆ .

 

์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™”๋กœ ์—ฌ๋Ÿฌ ์ž…์ถœ๋ ฅ์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) Linux ์—์„œ select, poll, epoll ๋“ฑ

 

1) select: ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™” ๊ธฐ์ˆ ์—์„œ 1024๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š๋Š” ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ์„œ์ˆ ์ž ๋ฌถ์Œ์„ ์ง€์›ํ•œ๋‹ค.

- ๋ฌธ์ œ์ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ๊นจ์–ด ๋‚ฌ์„ ๋•Œ ์–ด๋–ค ํŒŒ์ผ ์„œ์ˆ ์ž๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์–ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

2) poll: select์™€ ์œ ์‚ฌํ•˜๊ณ  ํŒŒ์ผ ์„œ์ˆ ์ž ๋ฌถ์Œ์— 1024๊ฐœ๋ผ๋Š” ์ œํ•œ์ด ์—†๋‹ค.

3) epoll: poll ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฒ„์ „. ์ปค๋„์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค€๋น„ ์™„๋ฃŒ๋œ ํŒŒ์ผ ์„œ์ˆ ์ž ๋ชฉ๋ก์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ์ž…์ถœ๋ ฅ ๋‹ค์ค‘ํ™” ๊ธฐ์ˆ .

 

 

6.5 mmap

๋ฉ”๋ชจ๋ฆฌ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ์— ๋น„ํ•ด ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋ณต์žกํ•˜๋‹ค.

๊ทธ๋Ÿผ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋””์Šคํฌ์˜ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜๋Š” ์—†์„๊นŒ ?

 

*mmap: ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๊ณต๊ฐ„์— ํŒŒ์ผ์„ mapping(์‚ฌ์ƒ)ํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

1) ์žฅ์ 

- ๋””์Šคํฌ์˜ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ๋•Œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋ถ€๋‹ด์ด ์—†๋‹ค.

- ํฐ ํŒŒ์ผ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๋™์  ๋งํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ, mmap์œผ๋กœ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์ง์ ‘ ์‚ฌ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

(๋™์  ๋งํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋ฌด๋ฆฌ ๋งŽ๋”๋ผ๋„ ์‹คํ–‰ ํŒŒ์ผ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์•„์„œ ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.) 

 

2) ๋‹จ์ 

- ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ํŒŒ์ผ์˜ ์‚ฌ์ƒ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์„ฑ๋Šฅ ๋ถ€๋‹ด.

- ํŽ˜์ด์ง€ ๋ˆ„๋ฝ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

728x90