Fundamental

๋ฌธ ๊ณผ ์‹ ์˜ ์ฐจ์ด

๋ฌธ๊ณผ ์‹์€ ๋น„์Šทํ•˜์ง€๋งŒ ์กฐ๊ธˆ์€ ๋‹ค๋ฅธ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

  • ๋ฌธ
    • ์ฝ”๋“œ ์—”์ง„์—์„œ ํ•ด์„ํ•˜๊ณ  ๋ฒ„๋ฆฌ๋Š” ํžŒํŠธ ๊ฐ™์€ ๊ฒƒ
    • ๋Œ€ํ‘œ ์–ธ์–ด : Java, Javascript, C ๋“ฑ๋“ฑ
  • ์‹
    • ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜์–ด ์ €์žฅ ๋œ๋‹ค
    • ๋Œ€ํ‘œ ์–ธ์–ด : Ruby, Kotlin ๋“ฑ๋“ฑ

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ตฌ์กฐ์˜ ๋Œ€ํ•ด

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ ์šด์˜์ฒด์ œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น ํ•ด ์ค€๋‹ค.
์ด๋Š” ํฌ๊ฒŒ ๋ฐ์ดํ„ฐ (Data), ํž™ (Heap), ์Šคํƒ (Stack) ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜๋ฉฐ ๊ฐ๊ฐ์˜ ์‹œ๊ธฐ, ์šฉ๋„, ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„

์šฉ๋„ ์ƒ๋ช…์ฃผ๊ธฐ
๋ฐ์ดํ„ฐ (Data) ์ „์—ญ๋ณ€์ˆ˜์™€ static ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋Š” ์˜์—ญ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ํ• ๋‹น๋˜๊ณ 
ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด์•ผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์†Œ๋ฉธ
ํž™ (Heap) ํ•„์š”์— ์˜ํ•ด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ํ•  ๋•Œ ์‚ฌ์šฉ (Runtime)
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ฒฐ์ •ํ•˜๋ฉฐ ๋Ÿฐํƒ€์ž„๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„
-
์Šคํƒ (Stack) ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ์— ์ƒ์„ฑ๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ (Compile) ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง

์Šคํƒ (Stack) ๊ณผ ํž™ (heap) ์„ ์ข€๋” ์„ธ๋ถ€์ ์œผ๋กœ ๋น„๊ตํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์Šคํƒ (Stack) ํž™ (Heap)
์ ‘๊ทผ ์†๋„ ๋น ๋ฅธ ์ ‘๊ทผ ๋Š๋ฆฐ ์ ‘๊ทผ
๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œํ•œ์  ์ œํ•œ ์—†์Œ
Resize ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€ (Compile ์‹œ์— ๊ฒฐ์ •) ๊ฐ€๋Šฅ (ํŒŒํŽธํ™” ๊ฐ€๋Šฅ์„ฑ)
ํŠน์ง• ์ง€์—ญ๋ณ€์ˆ˜์—๋งŒ ํ• ๋‹น ์ „์—ญ์  ์ ‘๊ทผ

์ฐธ๊ณ ์ž๋ฃŒ

http://dsnight.tistory.com/50

Unsinged Int

๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜ํ˜•์˜ ๊ฐ’๋งŒ ๊ฐ€์ง„๋‹ค.
๋•Œ๋ฌธ์— ๋ถ€ํ˜ธ๋ฅผ ๊ฒฐ์ •์ง“๋Š” ๋น„ํŠธ๋งŒํผ์˜ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

์œ ํ˜• ๋ฐ”์ดํŠธ ์ด๋ฆ„ ๊ฐ’์˜ ๋ฒ”์œ„
int 4 signed โ€“2,147,483,648 ~ 2,147,483,647
unsigned int 4 unsigned 0 ~ 4,294,967,295
char 1 ์—†์Œ โ€“128~127(๊ธฐ๋ณธ๊ฐ’)
/J๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋œ ๊ฒฝ์šฐ 0~255
signed char 1 signed -128 ~ 127
unsigned char 1 unsigned 0 ~ 255

๊ต์ฐฉ ์ƒํƒœ (Deadlock : ๋ฐ๋“œ๋ฝ)

๋‘ ๊ฐœ ์ด์ƒ์˜ ์ž‘์—…์ด ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์˜ ์ž‘์—…์ด ๋๋‚˜๊ธฐ ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค.

๋Œ€๊ฐœ ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ํ•œ์ •๋œ ์ž์›์„ ์„œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

์›์ธ

ํ•œ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์•„๋ž˜ ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ์„ฑ๋ฆฝํ•˜๋ฉด ๋ฐœ์ƒ

  • ์ƒํ˜ธ ๋ฐฐ์ œ (Mutal Exclusion)
    • ์ž์›์€ ํ•œ ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ ์œ  ๋Œ€๊ธฐ (Hold and Wait)
    • ???
  • ๋น„์„ ์  (No Preemption)
    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ์‚ฌ์šฉ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ์ ์œ ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ˆœํ™˜ ๋Œ€๊ธฐ (Circular Wait)
    • ???

ํ•ด๊ฒฐ

  • ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ ๋ฐ ํšŒํ”ผ
  • ๊ต์ฐฉ ์ƒํƒœ ํƒ์ง€ ๋ฐ ํšŒ๋ณต
  • ๊ต์ฐฉ ์ƒํƒœ ๋ฌด์‹œ

์˜ˆ๋ฐฉ

๊ต์ฐฉ ์ƒํƒœ์˜ ํšŒํ”ผ ๋ฐฉ๋ฒ•์ค‘์— ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Banker's Algorithm) ์ด๋ผ๊ณ  ์žˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์š”๊ตฌํ•  ๋•Œ ์‹œ์Šคํ…œ์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์•ˆ์ •๋œ ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๋Š”์ง€ ์‚ฌ์ „์— ๊ฒ€์‚ฌํ•˜์—ฌ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ธฐ๋ฒ•
  • ์•ˆ์ •๋œ ์ƒํƒœ์— ์žˆ์œผ๋ฉด ์ž์›์„ ํ• ๋‹นํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž์›์„ ํ•ด์ง€ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

https://includestdio.tistory.com/12

Type-Safe ๋ž€?

์–ด๋– ํ•œ ์—ฐ์‚ฐ (Operation) ๋„ ์ •์˜ ๋˜์ง€ ์•Š๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“์ง€ ์•Š๋Š” ๊ฒƒ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋Š” ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์ง€ ์•Š๋Š”๊ฑด๋ฐ

์˜ˆ๋ฅผ ๋“ค๋ฉด

1 + '1' ์•„๋ž˜์˜ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์— ์ˆซ์ž 1์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ๋น„๋…ผ๋ฆฌ์ ์ธ ์ผ ์„ ์ผ์ปซ๋Š”๋‹ค.

๋ณดํ†ต type-safe ํ•˜๋‹ค๊ณ  ์•Œ๋ ค์ง„ ์–ธ์–ด์—์„œ๋Š” ์ปดํŒŒ์ผ์‹œ์— ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€๋งŒ type-safe ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด์—์„œ๋Š” ์ด๋ฅผ ์ ๋‹น์ด ์•”๋ฌต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๊ทธ๋ž˜์„œ javascript ๋Š” type-safe ํ•œ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ C#, java ๋“ฑ๊ณผ ๊ฐ™์ด ์ปดํŒŒ์ผ ๊ธฐ๋ฐ˜์–ธ์–ด๋“ค์„ type-safe ํ•œ ์–ธ์–ด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

Mutex vs Semaphore

๋ฎคํ…์Šค (Mutex) ๋ž€ ?

์ƒํ˜ธ๋ฐฐ์ œ๋ผ๊ณ  ํ•˜๋ฉฐ Critical Section ์„ ๊ฐ€์ง„ Thread ๋“ค์ด Running Time ์ด ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

์„ธ๋งˆํฌ์–ด (Semaphore) ๋ž€ ?

๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์นด์šดํ„ฐ๋กœ ์„ธ๋งˆํฌ์–ด ์นด์šดํ„ฐ๋กœ ํ‚ค๋ฅผ ๊ฐ€์ง„ Thread ๋งŒ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ธฐ๋‹ค๋ฆฌ๋Š”๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

https://sycho-lego.tistory.com/11