๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ] ์š”์•ฝ (ํ”„๋กœ์„ธ์Šค, ์‹œ๊ทธ๋„, ์Šค๋ ˆ๋“œ, ๋™์‹œ์„ฑ) ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/Raspberry Pi

[ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ] ์š”์•ฝ (ํ”„๋กœ์„ธ์Šค, ์‹œ๊ทธ๋„, ์Šค๋ ˆ๋“œ, ๋™์‹œ์„ฑ)

์ง•์ง•์•ŒํŒŒ์นด 2024. 1. 18. 16:46
728x90
๋ฐ˜์‘ํ˜•

<์„œ์˜์ง„ ๋‹˜์˜ ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์„œ์ ์„ ์ฐธ๊ณ ํ•ด์„œ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

 

โญ ํ”„๋กœ์„ธ์Šค

์ผ์˜ ์ฒ˜๋ฆฌ ๋‹จ์œ„

ํ”„๋กœ์„ธ์Šค์˜ ์ค€๋น„์—์„œ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€์˜ ์—ฌ๋Ÿฌ ์ƒํƒœ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ps ๋ช…๋ น์–ด ์‚ฌ์šฉํ•œ๋‹ค

aux ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

 

โญ ์‹œ๊ทธ๋„

ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์— ๋น„๋™๊ธฐ์ ์ธ ์‚ฌ๊ฑด์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๋ฆฌ๋ˆ…์Šค ์‹œ๊ทธ๋„์— ๋Œ€ํ•œ ์ž‘์—… ์‹œ๊ทธ๋„์˜ ๋ฐœ์ƒ, ์ „๋‹ฌ, ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค

์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ์— ์‹œ๊ทธ๋„ ๋งˆ์Šคํฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณด๋‹ค ๋‹ค์–‘ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

sigprocmask() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ทธ๋„ ๋งˆ์Šคํฌ์— ํ•ด๋‹น ์‹œ๊ทธ๋„์„ ์„ ํƒ์ ์œผ๋กœ ๋ธ”๋ก์‹œํ‚ค๊ณ  ํ•ด์ œ

ํ•œ ๋ฒˆ ์‹œ๊ทธ๋„ ๋งˆ์Šคํฌ๊ฐ€ ์„ค์ •๋˜๋ฉด ๋‹ค์Œ ์„ค์ • ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ์„ค์ •๋œ ๊ฐ’์„ ๊ทธ๋ž˜๋„ ์‚ฌ์šฉํ•œ๋‹ค

์‹œ๊ทธ๋„ ๋งˆ์Šคํฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์— ์ „๋‹ฌ๋œ ์‹œ๊ทธ๋„์€ ๋ธ”๋ก๋˜๊ณ , ์‹œ๊ทธ๋„์ด ๋ธ”๋ก๋˜์–ด ์žˆ๋Š” ๋™์•ˆ ํ•œ ๋ฒˆ ์ด์ƒ์˜ ์‹œ๊ทธ๋„์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ธ”๋ก์ด ํ•ด์ œ๋œ ํ›„์—๋Š” ํ•œ ๋ฒˆ๋งŒ ์ „๋‹ฌ๋œ๋‹ค

 

โญ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•

๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ปดํ“จํ„ฐ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค

ex) ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ


ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฒ˜๋ฆฌ ๋‹จ์œ„

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ CPU ์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ์ชผ๊ฐœ์„œ ์ด๋ฅผ ๊ฐ๊ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

 

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋”ฐ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด๋‚˜ ์ž์›์˜ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ๋งŽ์€ ์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค

 

โญ ์Šค๋ ˆ๋“œ

ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์ƒ์„ฑ์ด ๋น ๋ฅด๊ณ  ๋‚ญ๋น„๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค

์Šค๋ ˆ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

์ด๋Ÿฌํ•œ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ธ๋งˆํฌ์–ด๋‚˜ ๋ฎคํ…์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ํŠน์ • ์‹œ์ ์—์„œ ์ข…๋ฃŒ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ข…๋ฃŒ์—๋Š” ์ •์ƒ ์ข…๋ฃŒ์™€ ๋น„์ •์ƒ ์ข…๋ฃŒ๊ฐ€ ์žˆ๋‹ค

์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋Š” main() ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ์˜ ๋ฆฌํ„ด, exit() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ

ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์• ์šฉํ•ด์„œ ์ข…๋ฃŒ ์ƒํƒœ ๊ฐ’์„ ๋ช…์‹œ์ ์„ ์ง€์ • or ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๋ฐ˜ํ™˜

 

๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋Š” abort() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ SIGABRT ์‹œ๊ทธ๋„์„ ๋ฐœ์ƒ or 0์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋“ฑ์˜ ์‹œ๊ทธ๋„์— ์˜ํ•ด ์ข…๋ฃŒ๋  ์ˆ˜ ์ž‡๋Š”๋ฐ, ์ปค๋„์ด ์ข…๋ฃŒ ์ƒํƒœ์— ๋Œ€ํ•œ ๊ฐ’ ์ƒ์„ฑํ•œ๋‹ค

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด fork()์™€ exec() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

fork() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค, ์ƒ์„ฑ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค

๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ์„ฑ๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ PID ๊ฐ–๊ณ , ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” 0์˜ ๊ฐ’ ๊ฐ–๋Š”๋‹ค

์ž์‹  ํ”„๋กœ์„ธ์Šค๋Š” getppid() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•œ๋‹ค

 

IPC ๋Š” ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ

FIFO ๋Š” FIFO ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉฐ, ๋ฒ„ํผ๋ง ์šฉ๋„๊ฐ€ ์•„๋‹Œ ์ฑ„๋„ ์„ค์ •์„ ์œ„ํ•ด ์‚ฌ์šฉ

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ปค๋„ ๋ฒ„ํผ ๊ฒฝ์œ ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค

BSD ์œ ๋‹‰์Šค์—์„œ ์ œ๊ณตํ•˜์˜€๋˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ธฐ๋ฐ˜ IPC ์™€ ์‹œ์Šคํ…œ V์˜ IPC, POSIX IPC ๋“ฑ์ด ์žˆ๋‹ค

 

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์œ„ํ•ด์„œ POSIX ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉฐ

pthread_create(), pthread_join(), pthread_detach(), pthread_cancle(), pthread_exit() ๋“ฑ์ด ์ž‡๋‹ค

์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ฒฝ์Ÿ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฎคํ…์Šค ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments