Dev

Async๋Š” ์–ด๋–ป๊ฒŒ ๊ธฐ๋‹ค๋ ค์ง€๋Š” ๊ฑธ๊นŒ?

Jun Park ๐ŸŽต 2022. 11. 29. 17:01

โ—๏ธ์ด ๊ธ€์˜ ์ •๋ณด๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์›ํ•˜๋ฉด ๊ธ€ ํ•˜๋‹จ์— ์žˆ๋Š” ์ถœ์ฒ˜๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 

๋„คํŠธ์›Œํฌ, ํŒŒ์ผ ๋“ฑ ๊ฐ์ข… I/O ์ž‘์—… ์‹œ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” async. async ๋•์— UI thread๋Š” ๋ฉˆ์ถ”์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๋Š” ์ข‹์€ ๊ฒฝํ—˜์„ ๊ฐ–๋Š”๋‹ค.

 

async๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋”˜๊ฐ€์— I/O task๊ฐ€ ์ €์žฅ๋˜๊ณ , I/O task๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์— ์š”์ฒญํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ๋“ฏ์ด ๋ณด์ธ๋‹ค. ์ด ์ผ๋ จ์˜ ๊ณผ์ •์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์ผ๊นŒ? OS layer์—์„œ thread๋ฅผ ํ™œ์šฉํ•˜์—ฌ I/O task์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๊ณ„์† ํ™•์ธํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

 

Thread๋Š” ์—†๋‹ค. 

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์—์„œ ์š”์ฒญํ•œ I/O ์ž‘์—…์€ OS๋ฅผ ๊ฑฐ์ณ device driver์— ์ „๋‹ฌ๋œ๋‹ค. ์ด๋•Œ OS์—์„œ device driver๋กœ ์ „๋‹ฌํ•˜๋Š” ์š”์ฒญ์ด I/O Request Packet(IRP)๋‹ค. IRP๋ฅผ ๋ฐ›์€ device driver๋Š” device์— ์ž‘์—…์„ ๋ช…๋ นํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ async๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. device driver๋Š” device์˜ ์ž‘์—… ์™„๋ฃŒ ์œ ๋ฌด์™€ ์ƒ๊ด€์—†์ด IRP๋ฅผ pending ์ƒํƒœ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  OS์— ์‘๋‹ตํ•œ๋‹ค. 

 

device๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด CPU์—๊ฒŒ interrupt๋กœ ์•Œ๋ฆฐ๋‹ค. device๊ฐ€ ์ž์ฒด์ ์œผ๋กœ processor๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด ๊ฐ€๋Šฅํ•˜๋‹ค. CPU๊ฐ€ ๋ฐ›์€ ์ž‘์—… ์™„๋ฃŒ ๋ฉ”์‹œ์ง€๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋กœ ์ „๋‹ฌ๋œ๋‹ค. UI thread๋Š” pending ์ƒํƒœ์ธ task๋ฅผ ์ •์ง€ ์œ„์น˜๋ถ€ํ„ฐ ์‹คํ–‰ํ•œ๋‹ค.

 

์ถœ์ฒ˜

https://blog.stephencleary.com/2013/11/there-is-no-thread.html

https://superuser.com/questions/800329/why-are-they-putting-processors-on-hard-drives