
๋ ธ์ ์ ์ ๋ฆฌํ๋ ค๋ค๊ฐ ๊ทธ๋ฅ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํ๋ค.. ๊ฐ์๊ธฐ ์ด๊ฑธ ํ๋ ์ด์ ๋ ๋ฉ์์ ๋ํํ ํ๋ผ๊ณ ํ์ ์ผ์ด ์ค๋ ๋ ๊ด๋ จ์ด์ด์ ๋จผ์ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ์ข ์ ๋๋ก ์์๋ณด๊ณ ์ผ์ ํ๋ ค๊ณ ํ๋ค.. ์ฐธ๊ณ ๋ก pthread๊ด๋ จ ์ฒ๋ฆฌ๋ฅผ ํ ๋, 'undefined reference to `pthread_create' ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ ์๋ ์๋๋ฐ, ์ด๊ฑธ ํด๊ฒฐํ๋ ค๋ฉด ์ปดํ์ผ ํ ๋ ์๋์ฒ๋ผ -lpthread ์ต์ ์ ์ถ๊ฐํด์ฃผ์ด์ผํ๋ค! gcc -o pthread pthread.c -lpthread pthread_create ํจ์ int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); /* ์ฒซ๋ฒ..

ํ๋ก์ธ์ค์์์ UID User ID(UID)๋ 32bit์ ์ ์๊ฐ! ์ด๊ฑธ๋ก user๋ฅผ ์๋ณ! ruid : Real User ID!! ์ฆ ์ด ํ๋ก์ธ์ค๋ฅผ '์์'ํ ์ ์ ์ ์์ด๋ euid : '๊ถํ ๊ฒ์ฌ'ํ ๋ ์ฌ์ฉ๋๋ id. ๋ณดํต์ ruid์ ๊ฐ๊ฒ ์ง๋ง SetUID๋นํธ ๋ฑ์ด ์ค์ ๋ ๊ฒฝ์ฐ, ํ์ผ ์์ ์์ ์์ด๋๋ก ๋ฐ๋. ๋ฐ๋ผ์ ์๋ฅผ root๋ก ๋ฐ๊พผ๋ค๋ฉด root๊ถํ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๊ฒ ์ง suid : Saved User ID!! Privileged Process(๋ณดํต root๊ฐ ์คํํ ํ๋ก์ธ์ค)๊ฐ ๋ชจ์ข ์ ์ด์ ๋ก ๊ถํ์ ๋ฎ์ถฐ์ผํ์ง๋ง ๋ค์ ๋์์ฌ๋ ํ์ํ ์์ด๋ Non-root process๊ฐ ์์ ์ euid๋ฅผ ๋ฐ๊พธ๋ ค๊ณ ํ ๋, euid๋ ํ์ฌ์ ruid, euid, suid๋ก ๋ฐ์ ์ค์ ํ ์ ์์ eui..

IPC (Inter-Process Communication) ์ด์ ํฌ์คํธ์์ ํ๋ก์ธ์ค๋ค์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค๊ณ ํ๋ค. ์ด์ ๋น๊ตํด์ ์ค๋ ๋๋ ํ ํ๋ก์ธ์ค ๋ด์์ ์คํ ์ธ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค์ ๊ณต์ ํ๋ค๊ณ ํ๋ค. ๊ทธ๋ ๊ธฐ์ ์์๊ณต์ ๊ฐ ์ฝ๋ค. ํ์ง๋ง ํ๋ก์ธ์ค๋ค์ ๋ณ๋์ ์ฃผ์ ๊ณต๊ฐ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์(๋ณ์, ์๋ฃ๊ตฌ์กฐ ๋ฑ)์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์๊ฐ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค๋ค์ ์๋ก ์์ํ ์์์ ๊ณต์ ํ ์ ์๋ ๊ฒ์ผ๊น? ๋ถ๋ช ์๋ ๊ฒ์ด๋ค. ์ค๋์ ํ๋ก์ธ์ค ๊ฐ ์์ ๊ณต์ ๊ฐ ์ด๋ป๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋๋ก ํ๊ฒ ๋ค. ํ๋ก์ธ์ค๋ฅผ ์์ ๊ณต์ ์ธก๋ฉด์์ ๊ตฌ๋ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง๋ก ๋๋ ์ ์๋ค. Independant : ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๋ฅผ ์์ ํ์ง ์๋ ํ๋ก์ธ์ค Cooperating : ๋ค๋ฅธ ..

๐ก๊ฐ๋ ์ดํดํ๊ธฐ ์ค๋์ ๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ์ ๋ํ์ฌ ์์๋ณผ ๊ฒ์ด๋ค. ๋จผ์ ๋๊ธฐ์, ๋น๋๊ธฐ์ ์ด์๋ถํฐ ์ดํด๋ณด์. ๋๊ธฐ์์ ์์ด๋ก Synchronized์ธ๋ฐ, ๋ฑ๋ฑ ์๊ฐ์ ๋ง์ถฐ์ง๋ค๋ ์๋ฏธ์ด๋ค. ์๋ฅผ ๋ค์ด ๋ฆฝ์ฑํฌ์์ ์ฑํฌ๋ Sync์ด๋ค. ์ ๋ชจ์๊ณผ ๋ ธ๋ ์๋ฆฌ๋ฅผ ์๊ฐ์ ๋ง์ถ๋ ๊ฒ์ด๋ ๋ฆฝ'์ฑํฌ'๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด IO์์ synchronize ๋์ด์๋ค๋ ๊ฒ์ ๋ฌด์จ ์๋ฏธ์ผ๊น? ์๋ ๊ทธ๋ฆผ์ ๋ณด์. ๋๊ธฐ์ ์ ์ถ๋ ฅ (Synchronized IO)๋ ์์ฐจ์ ์ผ๋ก ์ ์ถ๋ ฅ์ด ์ฒ๋ฆฌ๋๊ณ ์๊ณ , ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ (Asynchronized IO)์์๋ ์์๋ฅผ ์งํค์ง ์์์ฑ ์ฒ๋ฆฌ๋๊ณ ์๋ค. ์ด์ ๊ฐ์ด ์์๋ฅผ ์ง์ผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๊ธฐ์ (Synchronized), ๊ทธ๊ฒ์ ๋ณด์ฅํด์ฃผ์ง ์๋ ๊ฒ์ ๋น๋๊ธฐ์ (Asynchrono..

์ค๋ ๋(Thread)๋? ์ค๋ ๋(Thread)๋ ํ๋ก์ธ์ค(Process) ์์์ ์ค์ ๋ก ์์ ์ ์ํํ๊ณ ์๋ ํ๋์ ์ฃผ์ฒด์ด๋ค. ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ (์ฐธ๊ณ : [๐ฅ๏ธ Computer Science/OS] - [OS] ํ๋ก์ธ์ค vs ํ๋ก๊ทธ๋จ)์ด๋ผ๋ฉด, ์ค๋ ๋๋ ํ๋ก์ธ์ค ์์์ ์งํ๋๋ ์คํ์ ํ๋ฆ์ด๋ค. ์ค๋ ๋๋ ์ค์ง ํ ํ๋ก์ธ์ค ์์๋ง ์ํด์๋ค. ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ํน์ง์ ์ง๋๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ ํ๋ก์ธ์ค(lightweight process)๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๊ธฐ๋ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค๋ง ์ฌ์ฉํ๋ฉด ๋์ง ์ค๋ ๋๊น์ง ๊ท์ฐฎ๊ฒ ๋ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. (์ด ์์๋ ์ธํ๋ ๋ธ๋ก๊ทธ์ ์ค๋ช ์ ์ฐธ๊ณ ํ์์์ ๋ฐํ๋ค.) ์๋ฅผ ๋ค์ด ํฌ๋กฌ์ด๋ผ๋ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์๋ค๊ณ ํ์. ์ด..

TLS(Thread Local Storage)๋? TLS๋ Thread Local Storage์ ์ฝ์๋ก thread๋ณ๋ก ๊ณ ์ ํ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์ ์ฅํ ์ ์๊ฒ ํ๋ ๊ณต๊ฐ์ด๋ค. ์ค๋ ๋๋ ์๋ ์ค๋ ๋ ๋ณ๋ก ๊ณ ์ ์ ์คํ์ ๊ฐ์ง์ง๋ง, ์ ์ญ/์ ์ ๋ณ์๋ ํ๋ก์ธ์ค์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์ค๋ ๋ ๋ณ๋ก ํ ๋นํด์ฃผ๊ณ ์ถ์ ๋ TLS๋ฅผ ์ฌ์ฉํ๋ค. (๋ฐ๋ผ์ TLS์ ๋ค์ด์๋ ์ ๋ค์ ์ง์ญ ๋ณ์์ ๋ค๋ฅด๊ฒ ํจ์ above์์ ๋ค visibleํ๋ค) TLS๋ ํ๋ก์ธ์ค ์คํ์ ํ์ํ ์ฌ๋ฌ ์ ๋ณด๊ฐ ๋ค์ด์๋ค fs๋ TLS๋ฅผ ๊ฐ๋ฆฌํค๋๋ฐ, ์๋ฅผ ๋ค์ด fs:0x28์๋ ์คํ ์นด๋๋ฆฌ์ ๊ฐ์ผ๋ก ์ฐ์ด๋ ๋๋คํ ๊ฐ์ด ์ ์ฅ๋๋ค. ๋์ถฉ tls ์์ฑํ๋ ํจ์์ ์๋๋ ใ ใ static void * init_tls (v..