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

์ „์ฒด ๊ธ€27

[java] Thread ์‹ค์Šต (์šด์˜์ฒด์ œ๐Ÿฆ– ๊ฐ•์˜-Chpater4. Thread & Cocurrency) 1. Thread๋ž€?์šด์˜์ฒด์ œ์—์„œ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค(process)๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ(thread)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰ ํ๋ฆ„์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉด์„œ๋„ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.1.1. ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ์˜ ์ฐจ์ดํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค๋กœ, ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Code, Data, Heap, Stack ๋“ฑ)์„ ๊ฐ€์ง„๋‹ค.์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ, ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋“ค๊ณผ Code, Data, Heap, File ๋“ฑ์˜ ์ž์›์„ ๊ณต์œ ํ•˜์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC), ๋ ˆ์ง€์Šคํ„ฐ, ์Šคํƒ(Stack)์€ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC.. 2025. 2. 23.
EP.01 ๋Ÿฐ๋˜ – 18๋ฐ• 19์ผ ์œ ๋Ÿฝ ์—ฌํ–‰์˜ ์„œ๋ง‰ 18๋ฐ• 19์ผ ์œ ๋Ÿฝ ์—ฌํ–‰๊ธฐ๊ธฐ๋ง๊ณ ์‚ฌ์˜ ํญํ’ ์†์—์„œ ๋ฉฐ์น  ๋ฐค์„ ์ง€์ƒˆ์šฐ๊ณ , ์ข…๊ฐ•ํ•˜์ž๋งˆ์ž ์ˆจ ๋Œ๋ฆด ํ‹ˆ๋„ ์—†์ด 18๋ฐ• 19์ผ ์œ ๋Ÿฝ ์—ฌํ–‰์„ ๋– ๋‚ฌ๋‹ค. ์ด๋ฒˆ ์—ฌํ–‰์ง€๋Š” ์˜๊ตญ ๋Ÿฐ๋˜์„ ์‹œ์ž‘์œผ๋กœ ์˜ค์ŠคํŠธ๋ฆฌ์•„ ์ž˜์ธ ๋ถ€๋ฅดํฌ์™€ ์ธ์Šค๋ถ€๋ฅดํฌ, ์ดํƒˆ๋ฆฌ์•„ ๋ฐ€๋ผ๋…ธ์™€ ๋ฒ ๋„ค์น˜์•„, ๊ทธ๋ฆฌ๊ณ  ์ŠคํŽ˜์ธ์˜ ๋ฐ”๋ฅด์…€๋กœ๋‚˜์™€ ๋งˆ๋“œ๋ฆฌ๋“œ๊นŒ์ง€. ์‹œํ—˜๊ณผ ์—ฌํ–‰ ์ค€๋น„๋กœ ์ •์‹ ์—†๋Š” ์™€์ค‘์— ์ถœ๋ฐœํ–ˆ์ง€๋งŒ, ์—ฌํ–‰์˜ ์ˆœ๊ฐ„์ˆœ๊ฐ„์€ ๋ชจ๋‘ ๊ฐ’์ง€๊ณ  ํŠน๋ณ„ํ–ˆ๋‹ค.์˜๊ตญ ๋Ÿฐ๋˜ 1์ผ์ฐจ: ๋„์ฐฉ๊ณผ ์ ์‘์ธ์ฒœ๊ณตํ•ญ์—์„œ ๋น„ํ–‰๊ธฐ๋ฅผ ํƒ€๊ณ  ๋Ÿฐ๋˜ ํžˆ์Šค๋กœ ๊ณตํ•ญ์— ๋„์ฐฉํ–ˆ๋‹ค. ๋Œ€ํ•™์ƒ์˜ ํ•œ์ •๋œ ์˜ˆ์‚ฐ์œผ๋กœ ์ˆ™์†Œ๋ฅผ ์—์–ด๋น„์•ค๋น„์—์„œ ์˜ˆ์•ฝํ–ˆ๋Š”๋ฐ, ๊ฐ€๊ฒฉ์ด ์ €๋ ดํ•œ ๋งŒํผ ๊ณต๊ฐ„์ด ์˜ˆ์ƒ๋ณด๋‹ค ํ›จ์”ฌ ์ข์•˜๋‹ค. ๊ฑฐ๋ฆฌ์—๋Š” ๋Œ€๋งˆ ๋ƒ„์ƒˆ๊ฐ€ ๊ฐ€๋“ํ–ˆ๊ณ ๐Ÿšฌ, ๊ณต์šฉ ํ™”์žฅ์‹ค์ด๋ผ ๋ถ๊ทน๊ณฐ ๊ฐ™์€ ์•„์ €์”จ๋“ค๊ณผ ์”ป์œผ๋Ÿฌ ๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋งˆ์ฃผ์ณ์•ผ ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋‹นํ™ฉ์Šค๋Ÿฌ์› ์ง€๋งŒ, ๋ฉฐ์น  ๋ฌต์œผ๋‹ˆ .. 2025. 2. 22.
[Linux] ํ”„๋กœ์„ธ์Šค ์‹ค์Šต (C++) (์šด์˜์ฒด์ œ๐Ÿฆ– ๊ฐ•์˜2-Chpater3. Process ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ์ด๋ก ๊ณผ ์‹ค์Šต) Process ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ์ด๋ก IPC: Inter-Process CommunicationCooperating ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์€ IPC ๋ฉ”์ปค๋‹ˆ์ฆ˜(๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ)์„ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•จIPC์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ (a)๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(b)์ƒ์‚ฐ์ž ์†Œ๋น„์ž ๋ฌธ์ œ์ƒ์‚ฐ์ž๋Š” ์ •๋ณด๋ฅผ ์ƒ์‚ฐ, ์†Œ๋น„์ž๋Š” ์ •๋ณด๋ฅผ ์†Œ๋น„ (์˜ˆ๋ฅผ ๋“ค์–ด ์›น ์„œ๋ฒ„๊ฐ€ HTML ํŒŒ์ผ์„ ์ƒ์‚ฐ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์†Œ๋น„ ๋“ฑ)shared-memory ํ†ตํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๋™์‹œ์— ์‹คํ–‰, buffer๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์‚ฐ์ž๋ฅผ buffer๋ฅผ ์ฑ„์šฐ๊ณ , ์†Œ๋น„์ž๋Š” buffer๋ฅผ ๋น„์›€. buffer๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด wait, ๋น„์›Œ์ง€๋ฉด ์ฑ„์šฐ๊ธฐ ์‹œ์ž‘๋ฌธ์ œ์ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์„œ ์ฝ”๋“œ๋ฅผ ์งœ์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ share ํ•ด์•ผMessage-PassingOS๊ฐ€ cooperating proce.. 2025. 2. 22.
[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.
Dreamhack ๋ฆฌ๋ฒ„์‹ฑ ๋ฌธ์ œํ’€์ด: rev-basic-9 sub_140001000 ํ•จ์ˆ˜๋กœ ์ฐธ๊ฑฐ์ง“ ํŒ๋‹จํ•ด ์ถœ๋ ฅ.๊ทธ๊ฒŒ ์–ด๋–ค ํ•จ์ˆ˜์ธ์ง€ ๋“ค์–ด๊ฐ€์„œ ์‚ดํŽด๋ดค๋‹ค.v4๊ฐ€ sub_140001000 ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ”๋‹ค. ์ฆ‰ al์ด v4, ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•˜๋‹ค.์ž…๋ ฅ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ v3์— ์ €์žฅ๋๊ณ  (6๋ฒˆ์งธ์ค„)์ปดํ“จํ„ฐ๋Š” 0์ด๋ฉด ๊ฑฐ์ง“ 0์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒŒ ์ฐธ์ด๋ฏ€๋กœ (๋ฌธ์ž์—ด์˜ ๊ธธ์ด+1)์ด 8๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด return 0๋œ๋‹ค.๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 8์˜ ๋ฐฐ์ˆ˜์—ฌ์„œ๋Š” ์•ˆ๋œ๋‹ค.(7๋ฒˆ์งธ์ค„) ๊ทธ ๋‹ค์Œ ์ค„์—์„œ๋Š” for๋ฌธ์ด ๋“ฑ์žฅํ•œ๋‹ค.i๊ฐ€ (0xv3+1)๋ฒˆ ๋™์•ˆ 8์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ sub_1400010A0 ํ•จ์ˆ˜์— ์ž…๋ ฅ๋ฌธ์ž์—ด[ i ]์˜ ์ฃผ์†Œ๊ฐ’์„ ์ค€๋‹ค.๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ž…๋ ฅ ๋ฌธ์ž์—ด์˜ 0๋ฒˆ์งธ, 8๋ฒˆ์งธ...v3๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ ํ•˜์—ฌํŠผ 8์˜ ๋ฐฐ์ˆ˜๋ฒˆ์งธ ๋ฌธ์ž์˜ ์ฃผ์†Œ๋ฅผ sub ํ•จ์ˆ˜์— ๊ณ„์† ์ฃผ๋Š”๊ฑฐ๋‹ค.๊ทธ๋Ÿฐ ๋‹ค์Œ memcm.. 2023. 11. 1.
Dreamhack ๋ฆฌ๋ฒ„์‹ฑ ๋ฌธ์ œํ’€์ด: rev-basic-8 x=arr[i] (x*0xFB)&0xFF=๋‹ต AND ์—ฐ์‚ฐ ์—ญ์—ฐ์‚ฐ-> ๊ฐ™์œผ๋ฉด 1 ๋‹ค๋ฅด๋ฉด 0, XOR ์—ฐ์‚ฐ์ž์˜ ๋ฐ˜๋Œ€ 10110 01101 00100 00์ด๋ฉด1 01ใ…‡๋ฉด0 11์ด๋ฉด1 00์ด๋ฉด1 01์ด๋ฉด0 x*0xFB=๋‹ต(XOR์—ฐ์‚ฐ์˜ ๋ฐ˜๋Œ€)0xFF x= ๋‹ต(XOR์—ฐ์‚ฐ์˜ ๋ฐ˜๋Œ€)0xFF / 0xF ์ด๋Ÿฐ์‹์œผ๋กœ ๊ฑฐ๊พธ๋กœ ํ’€๋ ค๋‹ค๊ฐ€ ํฌ๊ธฐ.. ๊ทธ๋ƒฅ ์•„์Šคํ‚ค ์ฝ”๋“œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์ถœ๋ ฅํ•ด์คฌ๋‹ค.. #include int main(void) { int i, j; int arr[0x15]={0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5}; for(i=0.. 2023. 11. 1.