๐Ÿ‘Š CS/ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ก 

๋ณด๋Ÿฌ์™”์œผ๋ฉด ๊ณต๊ฐ๋ˆ„๋ฅด๊ณ  ๊ฐ€์…ˆใ…‹ ์†กํ”„์–ธ ํ™”์ดํŒ…ใ…Žใ……ใ…Ž 13.1 ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์†Œ๊ฐœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์„œ๋“ค์ด ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ๋“ค ๋˜๋Š” ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ„ํ• ๋œ ๋ถ€๋ถ„๋“ค์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ  ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋ถ„๋ฅ˜ (Flynn์˜ ๋ถ„๋ฅ˜) SISD SIMD(๋˜‘๊ฐ™์€ ์—ฐ์‚ฐ, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ) : ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ MISD MIMD(์—ฌ๋Ÿฌ ์—ฐ์‚ฐ, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ) : ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์„œ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ : MIMD ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (shared memory architecture) ๋ถ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (distributed memory architecture) ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ƒํ˜ธ ์—ฐ๊ฒฐ๋ง / ๋ฒ„์Šค, ํฌ๋กœ์Šค๋ฐ” ์Šค์œ„์น˜.. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์„œ์—์„œ ๊ฐ™์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ(critical section) ์ฝ๊ฑฐ๋‚˜ ..
10.1 ๊ฐœ์š” ๋ถ€ ํ”„๋กœ๊ทธ๋žจ ์ผ๋ จ์˜ ํ–‰์œ„๋‚˜ ๊ณ„์‚ฐ์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์ œ๊ณต ์‹คํ–‰๊ณผ ๋ถ„๋ฆฌํ•ด์„œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก : ํ˜ธ์ถœ ์š”๊ตฌ ํ•จ์ˆ˜(Function) : ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ ์„œ๋ธŒ๋ฃจํ‹ด(Subroutine), ํ”„๋กœ์‹œ์ €(Procedure) : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ ๊ฐ ํ”„๋กœ์‹œ์ €๋Š” ๋‹จ์ผ ์ง„์ž…์ ์„ ๊ฐ€์ง Caller๋Š” Callee์˜ ์‹คํ–‰ ๋™์•ˆ ์ค‘๋‹จ๋จ ๋ถ€ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ, ์ œ์–ด๋Š” ํ˜ธ์ถœ์ž์—๊ฒŒ ๋˜๋Œ์•„๊ฐ 10.2 ๋งค๊ฐœ๋ณ€์ˆ˜ ํ‰๊ฐ€์™€ ์ „๋‹ฌ ๊ธฐ๋ฒ• ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ํ˜ธ์ถœ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์‹ ๋˜๋Š” ์ด๋ฆ„ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ, ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ญ ๋ณ€์ˆ˜ ์—ญํ•  a. ์ฐธ์กฐ ํ˜ธ์ถœ (call by reference) ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๋Œ€์‹  ์ฃผ์†Œ๋ฅผ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ• c..
9.1 ์ •์  ๋ฐ ๋™์  ๊ธฐ์–ต ์žฅ์†Œ ๋ฐฐ๋‹น ์ •์  ๊ธฐ์–ต ์žฅ์†Œ ํ• ๋‹น ๋ฒˆ์—ญ ์‹œ๊ฐ„์— ํ• ๋‹น ๊ธฐ์–ต์žฅ์†Œ ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ์ •์ ์œผ๋กœ ๊ณ ์ • ๋ฐฐ์—ด ์ ‘๊ทผ์ฝ”๋“œ๊ฐ€ ํšจ์œจ์  (ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ์„œ๋ธŒํ”„๋กœ๊ทธ๋žจ์€ recursion์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ ๋™์  ๊ธฐ์–ต ์žฅ์†Œ ํ• ๋‹น ์‹คํ–‰ ์‹œ๊ฐ„์— ํ• ๋‹น ๋ณ€์ˆ˜ ์ œํ•œ ์™„ํ™” (์ž๋ฃŒํ˜•, ํฌ๊ธฐ ๋“ฑ) ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด.. c, c++ ๊ฐ™์€๊ฑด ์ •์  ๋™์  ๋‹ค ํ•จ. static / auto 9.2 ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ (module) ์„ ์–ธ ๊ฐ€๋Šฅ : ์ง€์—ญ ์‹๋ณ„์ž ๋„์ž… ์ง€์—ญ ๋ณ€์ˆ˜ : ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜ (์ฆ‰, ํ•ด๋‹น ๋ชจ๋“ˆ์— ์—†๋Š” ๋ณ€์ˆ˜๋Š” non-local ํ˜น์€ global ๋ณ€์ˆ˜์ด๋‹ค) ํ™œ์„ฑํ™” ์ƒํƒœ : ํ•œ ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๋ธ”๋ก๋„ ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์— ์†ํ•œ๋‹ค. ๋‹จ์œ„ ํ™œ์„ฑํ™” (unit activat..
8.1 ๋ธ”๋ก๊ณผ ์˜์—ญ ์˜์—ญ ์‹๋ณ„์ž์˜ ํšจ๋ ฅ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์˜์—ญ (์šฉ์–ด์ •๋ฆฌ) ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์–ด๋–ค ์„ ์–ธ์ด ์œ ํšจํ•œ ๋ถ€๋ถ„ ์ˆ˜๋ช… ์‹๋ณ„์ž(๋ณ€์ˆ˜) ๊ฐ’์„ ๋ณด์œ ํ•  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฐฐ์ •๋˜์–ด ์žˆ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๋ถ€ํ„ฐ ํ•ด์ œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์‹๋ณ„์ž ์˜์—ญ ์ œ๊ณต์˜ ๊ฐ„๊ฒฐํ•œ ๋ฐฉ๋ฒ• ๊ทธ๋ƒฅ ๋ชจ๋“  ์‹๋ณ„์ž๋ฅผ ์ „ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ (์ „์—ญ๋ณ€์ˆ˜๋กœ) ํ•˜์ง€๋งŒ, ์‹๋ณ„์ž ์‚ฌ์šฉ์˜ ๋ณต์žกํ™”, ํ˜ผ๋™, ํ”„๋กœ๊ทธ๋žจ ํ•ฉ์„ฑ ์‹œ ๋ฌธ์ œ์  ๋ฐœ์ƒ ํ•ด๊ฒฐ์ฑ… : ๋‹จ์œ„ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹๋ณ„์ž ์‚ฌ์šฉ (localization ์š”๊ตฌ) 8.2 ๋™์  ์˜์—ญ๊ณผ ์ •์  ์˜์—ญ ์ง€์—ญ๋ณ€์ˆ˜ (local variable) : ํ˜„์žฌ ๋ธ”๋ก์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜, ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋น„์ง€์—ญ ๋ณ€์ˆ˜ (non-local variable) : ํ˜„์žฌ ๋ธ”๋ก์—์„œ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋ฐ”๊นฅ ๋ธ”๋ก์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ์ „์—ญ ๋ณ€์ˆ˜ (global) : ๋ชจ..
์ž๋ฃŒํ˜• ์ •์˜๋œ ๊ฐ์ฒด ์ง‘ํ•ฉ + ์—ฐ์‚ฐ (์ƒ์„ฑ, ์ž‘์„ฑ, ์†Œ๋ฉธ, ์ˆ˜์ •, ๋ถ„ํ•ด) 7.1 ์ž๋ฃŒํ˜•๊ณผ ์„ ์–ธ ๋ณ€์ˆ˜, ์ž๋ฃŒํ˜• ์„ ์–ธ ์ •์  ์ž๋ฃŒํ˜• ๊ฒ€์‚ฌ ๋ช…์„ธ๋ถ€๋ฅผ ๊ตฌํ˜„๋ถ€์™€ ๋ถ„๋ฆฌ -> ์ถ”์ƒ ์ž๋ฃŒํ˜• ํ”„๋กœ๊ทธ๋žจ ์‹ ๋ขฐ์„ฑ, ํŒ๋…์„ฑ ์ฆ๊ฐ€ ์Ÿ์  ์‚ฌํ•ญ ๋ฐ”์ธ๋”ฉ ์‹œ์  : ๋ฒˆ์—ญ์‹œ๊ฐ„ or ์‹คํ–‰์‹œ๊ฐ„ ๊ฐ•์ž๋ฃŒํ˜• : ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์— ๋ช…์‹œ์ ์ธ ํ˜• ๋ณ€ํ™˜์„ ์š”๊ตฌ (Ada ๊ฐ™์€๊ฑฐ) 7.x ๋‹จ์ˆœํ˜• ์—ด๊ฑฐํ˜• : pascal์ด ์ง„์‹ฌ ๋ฐฐ์—ด : ๋ณดํ†ต์€ ํ–‰์šฐ์„ . / ํฌํŠธ๋ž€์€ ์—ด์šฐ์„  ์—ฐ์ƒ ๋ฐฐ์—ด ๋ ˆ์ฝ”๋“œ ํฌ์ธํ„ฐ ์ž๋ฃŒํ˜• : ์ž๋ฐ”๋Š” ํฌ์ธํ„ฐ ๋Œ€์‹  ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ฐธ์กฐ ์ด๋ช… : ๋‹ค์ˆ˜์˜ ํฌ์ธํ„ฐ๊ฐ€ ๋™์ผ ๊ฐ์ฒด ์ง€์‹œ garbage : ํฌ์ธํŠธ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด ์กด์žฌ ํ—ˆ์ƒ ์ฐธ์กฐ : ๋นˆ ๊ฐ’(์žฅ์†Œ)์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”๊ฑฐ ์ž๋ฃŒํ˜• ๋ณ€ํ™˜ ์ถ•์†Œ๋ณ€ํ™˜์€ ๋ฌด์กฐ๊ฑด ๋ช…์‹œ๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค. ์ž๋ฃŒํ˜• ๋™์น˜ ์ด๋ฆ„ ๋™์น˜ / ๊ตฌ์กฐ ๋™..
6.1 ๋ณ€์ˆ˜ (X := 3.141592) ์ด๋ฆ„ : X ์†์„ฑ : ์›์ฃผ์œจ, ์‹ค์ˆ˜ ์ฐธ์กฐ : ๊ฐ’์ด ์ €์žฅ๋œ ์œ„์น˜ (๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ) ๊ฐ’ : 3.14159 6.2 ๋ฐ”์ธ๋”ฉ ๋ณ€์ˆ˜์˜ ์œ„ 4๊ฐ€์ง€ ์š”์†Œ์— ๊ฐ’์„ ํ™•์ •ํ•˜๋Š” ํ–‰์œ„. ์ด๋ฆ„์— ํŠน์ • ์†์„ฑ์„ ์—ฐ๊ฒฐ (์ถ”์ƒํ™”) 1. ์‹คํ–‰ ์‹œ๊ฐ„ (runtime) : ๋™์  ๋ฐ”์ธ๋”ฉ ๋ณ€์ˆ˜์— ๊ฐ’ ๋ฐฐ์ •, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น 2. ๋ฒˆ์—ญ ์‹œ๊ฐ„ (translation time) : ์ •์  ๋ฐ”์ธ๋”ฉ ๋ณ€์ˆ˜, ์ž๋ฃŒ๊ตฌ์กฐ, ๋ ˆ์ฝ”๋“œ์˜ Data Type(์ž๋ฃŒํ˜•)์„ ํ™•์ • 3. ์–ธ์–ด ๊ตฌํ˜„ ์‹œ๊ฐ„ ์–ธ์–ด๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ๊ตฌํ˜„ํ• ๋•Œ (์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ƒ์„ฑํ• ๋•Œ..?) ์–ธ์–ด์˜ ํŠน์ง•์„ ๊ตฌํ˜„ intํƒ€์ž…์˜ ํฌ๊ธฐ, ์‹ค์ˆ˜์˜ ์œ ํšจ์ˆซ์ž ๊ฐœ์ˆ˜ ๋“ฑ๋“ฑ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋”ฑ ์ง“๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฆ„ 4. ์–ธ์–ด ์ •์˜ ์‹œ๊ฐ„ ์–ธ์–ด๋ฅผ ์ •์˜ํ• ๋•Œ ํ™•์ •ํ•˜๋Š” ๋ฐ”์ธ๋”ฉ. ์–ธ์–ด์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ์กฐ๊ฐ€..
BNF ๊ตฌ๋ฌธ ํ˜•์‹์„ ์ •์˜ํ•˜๋Š” ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ํ‘œ๊ธฐ ::= ์ •์˜ ๋น„๋‹จ๋ง (nonterminal) : BNF ๊ทœ์œจ๋กœ ๋‹ค์‹œ ์ •์˜๋  ๋Œ€์ƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹จ๋ง (terminal) : ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํ˜ธ EBNF BNF๋ฅผ ํ™•์žฅํ•ด์„œ ๋ณด๋‹ค ์ฝ๊ธฐ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ ๋ฉ”ํƒ€๊ธฐํ˜ธ {} : 0๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต {s}+ [] : 0๋ฒˆ ๋˜๋Š” 1๋ฒˆ ์„ ํƒ () : ๋ฒ”์œ„์ค‘ ํƒ1 BNF ::= + | - | * | / EBNF ::= ( + | - | * | / ) ::= ๊ฐ™์€๊ฑฐ(๋ฉ”ํƒ€๊ธฐํ˜ธ)๋ฅผ Terminal๋กœ ์“ธ๋•Œ : ‘’๋กœ ๊ฐ์‹ผ๋‹ค ::= '::=' ::= {'|' } ๊ตฌ๋ฌธ ๋„ํ‘œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋Š”๊ฒŒ produce ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋Š”๊ฒŒ reduce ๋ชจํ˜ธ์„ฑ ::= - | \* ์ผ ๋•Œ, 3 - 2 * 5 ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํŒŒ์‹ฑ ํŠธ๋ฆฌ๋ฅผ ๋‘๊ฐœ ๋งŒ๋“ค ์ˆ˜..
3.2 ๊ธฐ๋ณธ์›์น™ ํšจ์œจ์„ฑ ๋ชฉ์  ์ฝ”๋“œ์˜ ํšจ์œจ์„ฑ : ๋ฒˆ์—ญ๊ธฐ๊ฐ€ ํšจ์œจ์ ์ธ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•จ (์ปดํŒŒ์ผ๋œ ํŒŒ์ผ) ๋ฒˆ์—ญ์˜ ํšจ์œจ์„ฑ : ์„ค๊ณ„๋œ ์–ธ์–ด๊ฐ€ ๋ฒˆ์—ญ๊ธฐ์— ์˜ํ•ด ๋น ๋ฅด๊ฒŒ ๋ฒˆ์—ญ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ (์ปดํŒŒ์ผ ๊ณผ์ •) ๊ตฌํ˜„์˜ ํšจ์œจ์„ฑ : ๋ฒˆ์—ญ๊ธฐ ๊ตฌํ˜„์ด ์–ด๋ ต๊ฑฐ๋‚˜ ๋ณต์žกํ•˜์ง€ ์•Š์Œ (์ปดํŒŒ์ผ๋Ÿฌ ๊ตฌํ˜„) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํšจ์œจ์„ฑ : ์„ค๊ณ„๋œ ์–ธ์–ด๋กœ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ์ง€ (์ฝ”๋“œ ๊ตฌํ˜„) ์ผ๋ฐ˜์„ฑ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๊ณ , ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋…๋“ค์„ ์ผ๋ฐ˜์ ์ธ ํ•˜๋‚˜์˜ ๊ฐœ๋…์œผ๋กœ ํ†ตํ•ฉํ•ด ์–ป๋Š” ์„ฑ์งˆ → ๋‹น์—ฐํžˆ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ž‘๋™๋˜์–ด์•ผ ํ•จ (๋ฒ”์šฉ์ ์œผ๋กœ) ๋Œ€์ž…์—ฐ์‚ฐ์ž : ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด๋Š” ‘=’ ์ธ๋ฐ, ํŒŒ์Šค์นผ์—์„œ๋Š” ‘:=’๋กœ ์‚ฌ์šฉ ๋งค๊ฐœ๋ณ€์ˆ˜ : Fortran์—์„œ๋Š” callby Reference๋กœ๋งŒ ์ „๋‹ฌ (์ผ๋ฐ˜์„ฑ x) / ADA๋Š” ๋‹ค ๋จ (์ผ๋ฐ˜์„ฑ ใ…‡)..
ํ•œ๊ทœ์ง„
'๐Ÿ‘Š CS/ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ก ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก