rosieblue
article thumbnail
[Linux/C] ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ (1)

์˜ค๋Š˜ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ช…๋ น์–ด ํ–‰ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ์ฒ˜๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ฒ˜๋ฆฌ UNIX์—์„œ๋Š” cli์— ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด ์ด๋ฆ„, ์˜ต์…˜, ํŒŒ์ผ ๋“ฑ์„ main์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ cli์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๋ฒ•์˜ ๊ธฐ์ดˆ๋ฅผ ๋ฐฐ์›Œ๋ณด๊ฒ ๋‹ค. int main(int argc, char* argv[]) // int argc; ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆ˜ // char* argv[]; ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด argc์™€ argv์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด sample์ด๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๊ณ  ํ•˜๊ณ  ๋’ค์— ์ธ์ž๋ฅผ ์ž…๋ ฅํ•ด์คฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž sample aaa bbb ccc ์šฐ๋ฆฌ๊ฐ€ ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„์—์„œ ๋ช…๋ น์–ด ๋’ค์— ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณด๋‚ด๋Š” ๊ฒƒ๊ณผ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ผํ•˜๋‹ค. ์ด ๊ฒฝ์šฐ argc=4, argv๋Š” ..

article thumbnail
[Linux] ์…ธ ์ข…๋ฅ˜, ์…ธ ์Šคํฌ๋ฆฝํŠธ

์‰˜ (์…ธ) ๋ช…๋ น์–ด์™€ ์ปค๋„์ด ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…๋ น์–ด ํ•ด์„๊ธฐ๋ผ๊ณ  ๋ด๋„๋จ ์œ ์ €๊ฐ€ ์…ธ(๋ช…๋ น์–ด ํ•ด์„๊ธฐ)์— ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๋ฉด ์…ธ์ด ์ปค๋„ํ•œํ…Œ ๋ถ€ํƒํ•˜๊ณ , ์ปค๋„์ด ๋‚ด๋ถ€์ ์ธ ์ž‘์—…์„ ์‹คํ–‰ํ•œ ํ›„ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์…ธ์„ ํ†ตํ•ด ์œ ์ €์—๊ฒŒ๋กœ ์ „๋‹ฌ ์…ธ(shell)์€ ๊ป์งˆ์ด๋ผ๋Š” ๋œป์œผ๋กœ ์ปค๋„์„ ๊ฐ์‹ธ๊ณ  ์žˆ์–ด์„œ ๊ทธ๋Ÿฐ ์ด๋ฆ„์ด ๋˜์—ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ : ์‹œ์Šคํ…œ์ฝœ(syscall), ์…ธ, ์ปค๋„๋ชจ๋“œ vs ์œ ์ €๋ชจ๋“œ ์…ธ ์ข…๋ฅ˜ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ๊ฐ€ $์ด๋ฉด ๋ณธ ์…ธ ๊ณ„์—ด, %์ด๋ฉด C์…ธ ๊ณ„์—ด์ด๋‹ค. Bourne-Shell(/bin/sh) - ์œ ๋‹‰์Šค์˜ ์˜ค๋ฆฌ์ง€๋„ ์‰˜. ์ƒํ˜ธ ๋Œ€ํ™”ํ˜• ๋ฐฉ์‹ ๋ถˆ๊ฐ€๋Šฅ C shell(/bin/csh) - C ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง. ๋นŒ ์กฐ์ด(vi ์—๋””ํ„ฐ ๋งŒ๋“  ์‚ฌ๋žŒ)๊ฐ€ ๋งŒ๋“ค์—ˆ์Œ. Bourne-agin shell(/bin/..

article thumbnail
[Linux] Virtual Device (๊ฐ€์ƒ ์žฅ์น˜)

Virtual Device ์‹ค์ œ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ VM์—์„œ๋Š” ์„ฑ๋Šฅ, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€, ๋„คํŠธ์›Œํ‚น ๋˜๋Š” ๊ทธ๋ž˜ํ”ฝ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‹œ์Šคํ…œ์— ์ œ๊ณตํ•˜๋Š” ํŠน์ˆ˜ ์žฅ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฌผ๋ฆฌ์  ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ชฉ์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ VM์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌํ˜„์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ƒ ์žฅ์น˜๋ผ๊ณ  ํ•˜๋Š” ์ด๋Ÿฌํ•œ ์žฅ์น˜์— ๋Œ€ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ถ”์ƒํ™”๋ฅผ ํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ virtual device๋ž€, ์‹ค์ œ๋กœ ์—ฐ๊ฒฐ๋œ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์—†๋Š” ๋””๋ฐ”์ด์Šค ํŒŒ์ผ์„ ๋งํ•œ๋‹ค. virtual device๋Š” sw ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋‚˜ hw์ธ ์ฒ™(?)์„ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์œผ๋กœ ํ•˜์—ฌ๊ธˆ ํŠน์ • hw๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฐฉ๊ฐํ•˜๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์ด๋Ÿฌํ•œ virtual device๋Š” ์™œ ์กด์žฌํ•˜๋ƒ? ๋ณดํ†ต OS์—์„œ ์—๋Ÿฌ๋ฅผ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ..

article thumbnail
[OS] ํ”„๋กœ์„ธ์Šค Process (2) - ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž์› ๊ณต์œ  (IPC)

IPC (Inter-Process Communication) ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด์— ๋น„๊ตํ•ด์„œ ์Šค๋ ˆ๋“œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์Šคํƒ ์™ธ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์€ ๊ณต์œ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ž์›๊ณต์œ ๊ฐ€ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋ณ„๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ์˜ ์ž์›(๋ณ€์ˆ˜, ์ž๋ฃŒ๊ตฌ์กฐ ๋“ฑ)์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๋“ค์€ ์„œ๋กœ ์˜์›ํžˆ ์ž์›์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ผ๊นŒ? ๋ถ„๋ช… ์•„๋‹ ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜์€ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ž์› ๊ณต์œ ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž์› ๊ณต์œ  ์ธก๋ฉด์—์„œ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. Independant : ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ๋ฅผ ์•„์˜ˆ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค Cooperating : ๋‹ค๋ฅธ ..

article thumbnail
[Linux] inode, ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(์†Œํ”„ํŠธ ๋งํฌ), ํ•˜๋“œ๋งํฌ

๋ฆฌ๋ˆ…์Šค์˜ ๋งํฌ์—๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋ฐ”๋กœ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(์†Œํ”„ํŠธ ๋งํฌ)์™€ ํ•˜๋“œ๋งํฌ์ด๋‹ค. ์ด๋ฅผ ์•Œ๊ธฐ ์ „์— ๋จผ์ € i-node์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ๋ณด๊ณ  ๊ฐ€์ž. inode inode๋Š” index-node์˜ ์•ฝ์ž์ด๋‹ค. index๋Š” ํ•œ๊ตญ์–ด๋กœ๋Š” '์ƒ‰์ธ'์ด๋‹ค. ์ฆ‰, ๋ณดํ†ต ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ์„ ๋•Œ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์“ฐ์ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด arr[3]์˜ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด index 3์„ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.๋”ฐ๋ผ์„œ index-node, ์ฆ‰ inode๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์ถ”์ธกํ•  ์ˆ˜์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ '๋ฌด์–ธ๊ฐ€'๊ฐ€ 'ํŒŒ์ผ'์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.์ฆ‰ inode๋Š” ํŒŒ์ผ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํŒŒ์ผ๋งˆ๋‹ค ๋ถ€์—ฌ๋œ ๋…ธ๋“œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. * ์ฐธ๊ณ ๋กœ ๋ฆฌ๋ˆ…์Šค๋Š” ๋ชจ~~~๋“  ๊ฒƒ์„ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ฐ˜ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ..

๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ๋‚ด์šฉ์„ ๋ณด์‹œ๋ ค๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.