๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์šด์˜์ฒด์ œ4

[pthread] Thread ์‹ค์Šต (์šด์˜์ฒด์ œ๐Ÿฆ– ๊ฐ•์˜-Chpater4. Thread & Cocurrency) 1. Thread์˜ ๊ฐœ๋…Thread์˜ ์ข…๋ฅ˜Thread๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.User Thread: ์ปค๋„์˜ ์ง์ ‘์ ์ธ ์ง€์› ์—†์ด ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.Kernel Thread: ์ปค๋„์ด ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์“ฐ๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค.User Thread์™€ Kernel Thread ๊ฐ„์˜ ๊ด€๊ณ„ ๋ชจ๋ธMany-to-One Model: ์—ฌ๋Ÿฌ ๊ฐœ์˜ user thread๊ฐ€ ํ•˜๋‚˜์˜ kernel thread์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.One-to-One Model: ๊ฐ๊ฐ์˜ user thread๊ฐ€ ํ•˜๋‚˜์˜ kernel thread์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.Many-to-Many Model: ์—ฌ๋Ÿฌ ๊ฐœ์˜ user thread๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ kernel thread์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. 2. Thread ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌThread ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ๋Œ€ํ‘œ์ ์ธ .. 2025. 2. 28.
[Linux] Process์— ๋Œ€ํ•œ ์ดํ•ด + ์‹ค์Šต (์šด์˜์ฒด์ œ๐Ÿฆ– ๊ฐ•์˜2-Chpater3. Process) ์‹ค์Šต ์ „ ํ•„์š”ํ•œ Process ๊ด€๋ จ ๋ฐฐ๊ฒฝ์ง€์‹โ€‹Process์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๋ฅผ ์œ„ํ•ด ๊ด€๋ จ ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.โ€‹์‹ค์Šต์— ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด,โ€‹Process: RAM์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด CPU์— load ๋œ ์ƒํƒœPCB(Process Counter Block): ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด, ํ˜„์žฌ process ์ •๋ณด ๋“ฑ์ด ๋‹ด๊ธด ๊ณณContext-switch(๋ฌธ๋งฅ ๊ตํ™˜): ํ•˜๋‚˜์˜ PCB loadํ•˜๊ณ  ๋‹ค์Œ PCB๋ฅผ store. ์ด๋ ‡๊ฒŒ PCB ๋‹ค์Œ ๋‹ค์Œ ํ•ด์ฃผ๋Š” ๋ฌธ๋งฅ ๊ตํ™˜์„ ํ†ตํ•ด time sharing ํ•˜๋ฉฐ concurrent ํ•˜๊ฒŒ ์‹คํ–‰๋จโ€‹UNIX์™€ ๊ฐ™์€ O/S์—์„œ ์ƒˆ๋กœ์šด process๋Š” fork( )๋ผ๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด๋•Œ ํ˜„์žฌ process์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ณต์‚ฌํ•ด์„œ child process ๋งŒ๋“ ๋‹ค.. 2025. 2. 22.
์šด์˜์ฒด์ œ ๊ณต๋ฃก์ฑ… ๊ฐ•์˜2-Chpater1-2. ์šด์˜์ฒด์ œ์˜ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ ๊ณต๋ฃก์ฑ… 1์žฅ์—์„œ 2์žฅ๊นŒ์ง€์˜ ๋‚ด์šฉ์ด๋‹ค. ํฌ๊ฒŒ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ์—†์ง€๋งŒ ์ปดํ“จํ„ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ํ•ต์‹ฌ์  ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์šด์˜์ฒด์ œ๋ž€?์šด์˜์ฒด์ œ: ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์šด์˜์ฒด์ œ์˜ ์—ญํ• : application program๊ณผ ์ปดํ“จํ„ฐ ์‚ฌ์šฉ์ž, ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์—์„œ์˜ ๋งค๊ฒŒ์ฒด ์—ญํ• ์•„๋ž˜์„œ๋ถ€ํ„ฐ ํ•˜๋“œ์›จ์–ด, OS(์ถ”์ƒ์ ์ธ layer), ์‹œ์Šคํ…œ๊ณผ ์•ฑ, ์‚ฌ์šฉ์ž OS์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์€ kernel(์ปค๋„)์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ์ปค๋„์—์„œ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•ด์คŒCPU๊ฐ€ bus๋ฅผ ํ†ตํ•ด์„œ RAM๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  disk controller๋ฅผ ํ†ตํ•ด์„œ ๋””์Šคํฌ์™€ ์—ฐ๊ฒฐ, USB controller๋ฅผ ํ†ตํ•ด์„œ ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ ๋“ฑ๊ณผ ์—ฐ๊ฒฐ ๋“ฑ์˜ ๋ฐฉ์‹์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ์กฐ์ง(1) bootstrap program์ „์›์„ ๋ˆŒ๋ €์„ ๋•Œ CPU๊ฐ€ ๊ฐ€์žฅ ์ฒ˜์Œ.. 2025. 2. 22.
์šด์˜์ฒด์ œ ์‹ค์Šต์„ ์œ„ํ•œ ์œˆ๋„์šฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ์šด์˜์ฒด์ œ(Operating System Concepts) ์ผ๋ช… ๊ณต๋ฃก์ฑ…๐Ÿฆ–์„ ํŽผ์ณค๋Š”๋ฐ ๊ธ€์ด ๋ธŒ๋ผํ‚ค์˜ค ๋ชฉ ๊ธธ์ด ๋งŒํผ ๊ธธ๋‹ค...๋‹คํ–‰ํžˆ ์ธํ”„๋Ÿฐ์— ๊ณต๋ฃก์ฑ…์„ ๋ถ€๊ต์žฌ๋กœ ํ•˜๋Š” ๊ฐ•์˜๊ฐ€ ์žˆ์–ด ํ•จ๊ป˜ ๋“ค์œผ๋ฉฐ ๊ณต๋ถ€ํ–ˆ๋‹ค. ์šด์˜์ฒด์ œ ์‹ค์Šต์„ ์œ„ํ•ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ ์œˆ๋„์šฐ์—์„œ๋„ ๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹คโ€ผ๏ธโ€‹WSL2(Window System for Linux2)์™€ VSCode(Visual Studio Code)๋ฅผ ์—ฐ๋™ํ•˜๋ฉด ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ๋ฆฌ๋ˆ…์Šค ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ gcc๋กœ C, C++ ์ปดํŒŒ์ผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. โ€‹์–ด๋–ป๊ฒŒ ํ•˜๋ƒ๋ฉด!โ€‹1. WSL/๊ฐ€์ƒ๋จธ์‹  ๊ธฐ๋Šฅ ์ผœ๊ธฐ ์„ค์ •>๊ฒ€์ƒ‰>Windows ๊ธฐ๋Šฅ ์ผœ๊ธฐ/๋„๊ธฐ์—์„œ๐Ÿ“Œ Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ ์˜ต์…˜ ์ฒดํฌ ๐Ÿ“Œ ๊ฐ€์ƒ๋จธ์‹  ํ”Œ๋žซํผ ์˜ต์…˜ ์ฒดํฌ๊ทธ๋ฆฌ๊ณ  ์žฌ๋ถ€ํŒ…...(.. 2025. 2. 22.