CS/โ๏ธ ์ด์์ฒด์
์ค๋ ๋ ์ค๋ ๋ ํ๋ก์ธ์ค ๋ด๋ถ์ ์์. ํ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์์ โก๏ธ concurrency ๋ณ๋ ฌ์ฒ๋ฆฌ ์ค๋ ๋๋ผ๋ฆฌ address space, resource ๊ณต์ ๋ฉํฐ ์ค๋ ๋ modern OS embedded systems multi-core processors network servers ๐น Multiple Threads ๊ฐ thread๋ ๋ณ๊ฐ๋ก ์คํ Memory์ I/O state์ ๊ณต์ thread 1์์ thread 2๋ก context switching์ด ์ผ์ด๋๋ฉด thread1์ด ๊ฐ์ง๊ณ ์๋ register set์ CPU state์ ์ ์ฅ thread2์ CPU state์ register set์ load Hyper-Threading : Context switching ove..
CS/โ๏ธ ์ด์์ฒด์
ํ๋ก์ธ์ค ๐น ํ๋ก์ธ์ค ์ฝ๋์ ์ผ๋ถ. ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ ์๊ธฐ ๋
๋ฆฝ์ ์ธ resource ๊ฐ์ง. single address space โก๏ธ protection ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ X ๐น ํน์ง ํ๋ก์ธ์ค ๊ฐ๊ฐ ๊ณ ์ ์ ์คํ ๋ฉ๋ชจ๋ฆฌ ๋ณด์ ๊ณ ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง ๋ณด์ ๊ณ ์ ์ file descriptor table ๋ณด์ PID (Process ID) ๐น ํ๋ก์ธ์ค์ Context CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ Program Counter register ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ code data stack ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ๊ตฌ์กฐ PCB Kernel Stack ๐น ํ๋ก์ธ์ค ์์ฑ ์์์ ๋ถ๋ชจ์ ๊ณต๊ฐ์ ๋ณต์ฌํด ๊ทธ ๊ณต๊ฐ์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์ฌ๋ฆผ ํธ๋ฆฌ(๊ณ์ธต ๊ตฌ์กฐ) ํ์ฑ fork() ์์คํ
์ฝ์ ํตํด ์์ ๊ณผ ๋์ผํ ํ๋ก..
Server/๐ ์๋ฌ ๊ธฐ๋ก
์์ฃผ ๋ง์ฃผ์น๋ ์ค๋ฅ๋ค. ๐ ์ค๋ฅ ๋ด์ฉํจ์ค์๋๋ฅผ ์๋ชป ์
๋ ฅํ์ฌ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง, ์ ํํ ์
๋ ฅํ๋ค. ๋ค๋ฅธ ์ด์ ๊ฐ ์์๊น ๊ณ ๋ฏผํ๋ค๊ฐ ํฌํธ๋ฒํธ๊ฐ ๋์ผํ์ฌ ์ถฉ๋ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๐ฉ๐ง ํด๊ฒฐ๋ฐฉ๋ฒ docker-compose.yml ํ์ผ์์ ์ค์ ํ๋ ํฌํธ ๋ฒํธ๋ฅผ ์์ ํ๋ค.์๋๋ 3306:3306 :์ผ๋ก ์ค์ ํ์๋ค. ์ด๋ฏธ ๋ก์ปฌ DB๊ฐ 3306 ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ด ํฌํธ๋ฒํธ๊ฐ ๊ฒน์น๋ฏ๋ก 3305๋ก ์์ ํ๋ค. ํธ์คํธ์ 3305 ํฌํธ๊ฐ ์ปจํ
์ด๋ ๋ด์ 3306 ํฌํธ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ ๊ฒ์ด๋ค . ์ฐ๊ฒฐ์ ํ์ํ ์ ๋ณด๋ค์ ์
๋ ฅํ ํ ํฌํธ ๋ฒํธ๋ฅผ ์์ ์ค์ ํ 3305๋ก ์ ์ํ๋๋ก ์์ฑํ๋ฉด ์ฐ๊ฒฐ์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฐธ๊ณ ์๋ฃhttps://hipopatamus.tistory.com/..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
์์๊ฐ ์ ํด์ ธ์๋ ์์
์ ์ฐจ๋ก๋ก ์ํํด์ผํ ๋ ๊ทธ ์์๋ฅผ ๊ฒฐ์ ํด์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์๋ฅผ ๋ค์ด๋ณด๋ฉด, ์์ ๊ฐ์ ์ปค๋ฆฌํ๋ผ์์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํ๊ณ ์ ํ๋ฉด ์ ์๊ณผ๋ชฉ๋ค์ ์๊ฐํ ํ์ ๋ค์ด์ผํ๋ค๊ณ ํ์ ๋, ์ด์ฐ์ํ → Cํ๋ก๊ทธ๋๋ฐ → ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ → ์๋ฃ๊ตฌ์กฐ → ์๊ณ ๋ฆฌ์ฆ ์์๋ก ์๊ฐ์ ์ฒญ์ ํ๋ฉด ๋๋ค. ์ด ์ธ์๋ ์ฌ๋ฌ ๊ฐ์ ์์๊ฐ ์กด์ฌํ ์ ์๋ค. ์ ํ ๊ด๊ณ๊ฐ ๋ช
ํํ์ ๋ ์์๋ฅผ ๊ฒฐ์ ํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ์ด๋ค. ๐น ์์ ์ ๋ ฌ ํน์ง ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์๋ ๋ฐฉํฅ์ฑ ๊ทธ๋ํ์์์ ์ ๋ ฌ ๐ ์ฌ์ดํด์ด ์๋ค๋ฉด ์์ ์ ๋ ฌ ์ํ X (์์์ ์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก) ํ ๋๋ ์คํ ์ฌ์ฉ ์ง์
์ฐจ์ ๊ณ ๋ ค ๐น๏ธ ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ์ง์
์ฐจ์๋ ์ ์ ์ ๋ค์ด์ค๋ ๊ฐ์ ์์ด๊ณ , ๋นจ๊ฐ์ ์ซ์๋ ์ง์
์ฐจ์๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค. ์ง์
์ฐจ์..
์๊ณ ๋ฆฌ์ฆ/BOJ
โจ ๊ตฌํ & BFS https://www.acmicpc.net/problem/21609 21609๋ฒ: ์์ด ์คํ๊ต ์์ด ์คํ๊ต์ ์ฝ๋ฉ ๋์๋ฆฌ์์ ๊ฒ์์ ๋ง๋ค์๋ค. ์ด ๊ฒ์์ ํฌ๊ธฐ๊ฐ N×N์ธ ๊ฒฉ์์์ ์งํ๋๊ณ , ์ด๊ธฐ์ ๊ฒฉ์์ ๋ชจ๋ ์นธ์๋ ๋ธ๋ก์ด ํ๋์ฉ ๋ค์ด์๊ณ , ๋ธ๋ก์ ๊ฒ์์ ๋ธ๋ก, ๋ฌด์ง๊ฐ ๋ธ๋ก, ์ผ๋ฐ ๋ธ๋ก www.acmicpc.net ๐ ๊ณ ๋ คํด์ผํ ์ ๊ทธ๋ฃน์ ์ํ๋ ๋ธ๋ก์ ์กฐ๊ฑด ์ผ๋ฐ ๋ธ๋ก์ด ์ ์ด๋ ํ๋ ์ด์ ์ผ๋ฐ ๋ธ๋ก์ ์์ ๋ชจ๋ ๊ฐ์์ผํจ ๊ฒ์์ ๋ธ๋ก ํฌํจ X ๋ฌด์ง๊ฐ์ ๋ธ๋ก์ ๋ช๊ฐ๋ ์๊ด X ๋ธ๋ก์ ๊ฐ์๋ 2๊ฐ ์ด์ ๋ธ๋ก ๊ทธ๋ฃน์ ๊ธฐ์ค ๋ธ๋ก = ๋ฌด์ง๊ฐ ๋ธ๋ก์ด ์๋ ๋ธ๋ก ์ค์์ ํ์ ๋ฒํธ๊ฐ ๊ฐ์ฅ ์์ ๋ธ๋ก. ๊ทธ๋ฌํ ๋ธ๋ก์ด ์ฌ๋ฌ ๊ฐ์ด๋ฉด ์ด์ ๋ฒํธ๊ฐ ๊ฐ์ฅ ์์ ๋ธ๋ก .. ์คํ ํ๋ ์ด ๊ธฐ๋ฅ โ ๋ธ๋ก ๊ทธ๋ฃน์ด ์์ ๋..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
2์ฐจ์ ๋ฐฐ์ด์์ ๋ฌํฝ์ด๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ค. ๐ ์์ํ๋ ๊ณณ์์ ์ํ์ข์ฐ ๋ฐฉํฅ (๋ฐ์๊ณ ๋๋ ์๊ณ๋ฐฉํฅ)์ ๋ฐ๋ผ ๋ฌํฝ์ด ๋ฐฐ์ด์ ํํ๊ฐ ๋ฌ๋ผ์ง๋ค. ๋ฐฐ์ด ์ค์ (N/2, N/2) ์์๋ถํฐ ์์ ์ค์(N/2, N/2)์์๋ถํฐ ์์ํด์ผํ๋ฏ๋ก N์ด ํ์์ด์ด์ผ ํ๋ค. ←, ↓์ผ ๋๋ 1, 3, 5, 7 .... ๋งํผ ์ด๋ํ๋ ์นธ์ด ์ฆ๊ฐํ๋ค. →, ↑์ผ ๋๋ 2, 4, 6, 8 .... ๋งํผ ์ด๋ํ๋ ์นธ์ด ์ฆ๊ฐํ๋ค. 2๋ฒ ๋ฐฉํฅ์ ๋ฐ๊ฟ ๋๋ง๋ค ์ด๋ํ๋ ์นธ์ ์ฆ๊ฐ์ํจ๋ค. ๐ moveCnt++ ํ์ฌ๋ ์ค์์์ ์ผ์ชฝ๋ฐฉํฅ์ผ๋ก ์์ํด์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๊ณ ์์ง๋ง, ์ผ์ชฝ ์ธ์ ์, ํ, ์ฐ ๋ฐฉํฅ์ผ๋ก ์์ํด์ ๋ฐ์๊ณ ๋๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ๊ฒ๋ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ฉด ๋๋ค. ๋ฐฉํฅ์ ๋ ๊ฐ์ฉ ์ง๋ง ์ง์ด์ฃผ๋ฉด ๊ฐ๋ฅ ! impor..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
https://www.acmicpc.net/problem/12865 12865๋ฒ: ํ๋ฒํ ๋ฐฐ๋ญ ์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 ≤ N ≤ 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 ≤ K ≤ 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 ≤ W ≤ 100,000)์ ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 ≤ V ≤ 1,000) www.acmicpc.net ๐น๏ธ Knapsack ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ DP ๋ฌธ์ ์ค ํ๋๋ก, ๋ฐฐ๋ญ์ ํฌ๊ธฐ k์ n๊ฐ์ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ(w)์ ๊ฐ์น(v)๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ๋ฐฉ์ ๋ฌผ๊ฑด์ k์ ๋์ง ์๋๋ก ๋ฃ๊ณ ์ต๋ ๊ฐ์น์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ex) ๋ฐฐ๋ญ์ ํฌ๊ธฐ๋ k์ด๊ณ , 5๊ฐ์ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ์ ๊ฐ์น๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ก์ ๋, ์ต๋ ๊ฐ์น์ ํฉ์ ๊ตฌํ๊ธฐ ๋ฌผ๊ฑด 1 : w =..
Server/๐ ์๋ฌ ๊ธฐ๋ก
์ค๋ฅ ๋ด์ฉ์ธ์คํด์ค ๋ณด์๊ทธ๋ฃน์ 6379 ํฌํธ๋ฅผ ํฌํจํ์์๋ ๋ถ๊ตฌํ๊ณ Connection refused ์๋ฌ๊ฐ ๋ฌ๋ค. ๋ณต์ ์ค์ ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ผ๋๋ฐ ์๋ฒ๊ฐ ์ ๋๋ก ์ค์ ๋์ด์๋์ง ํ์ธํด๋ณด์. ํด๊ฒฐ ๋ฐฉ๋ฒ Master ์๋ฒ์ ์ค์ ์ ์์ ํ๋ค. Master ์๋ฒ์ Redis ์ค์ ํ์ผ('redis.conf')์ ์ด์ด์ 'bind' ์ ๋ง์คํฐ ์๋ฒ์ ์ฌ์ค IP ์ฃผ์๋ฅผ ์ถ๊ฐํ๋ค. 'bind' ์ค์ ์ ํตํด Redis๊ฐ ์์ ๋๊ธฐํ ์ฃผ์๋ฅผ ์ง์ ํ ์ ์๋ค. ์์ ์ค์ ๋ณ๊ฒฝ ํ์๋ Redis๋ฅผ ์ฌ์์ํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํด์ผํ๋ค. Replica ์๋ฒ๋ก ๋์์์ ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ฉด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ์ด ์ฑ๊ณต๋์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.