Pintos Part 1-4. Priority Scheduling w/ Priority Condition Variable
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 5. 13. 17:35Pintos Part 1-4. Priority Scheduling w/ Priority Condition Variable

priority-condvar ํ…Œ์ŠคํŠธ๊ฐ€ ๋‚จ์•˜๋‹ค์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Pintos์˜ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๊ตฌํ˜„์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ธ priority-condvar ๋ฐ ๊ด€๋ จ ๊ฐœ๋…์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ mutex์™€ semaphore, condition variable์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ์™€์ฃผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.์ž ๊น, Priority Scheduling์—์„œ Condition Variable์€?๋Œ€๋žต์ ์ธ ๊ตฌ์กฐ๋Š” ์œ„์™€ ๊ฐ™์œผ๋ฉฐ, ์•„๋ž˜๊ฐ€ ๋ฐ”๋กœ synch.h์— ์œ„์น˜ํ•œ ์ปจ๋””์…˜ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉPintos๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„์„ ์ ํ˜• FIFO ์ •์ฑ…์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋˜์–ด ์žˆ์—ˆ๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ €ํฌ๋Š” ์ด๋ฅผ ์„ ์ ํ˜• ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์œผ๋กœ ๊ณ ์น˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ synch.c/h์˜ ํ•จ์ˆ˜๋“ค์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์€ ์ฑ„ ๋‚ด๋ฒ„๋ ค๋‘๊ณ  ์žˆ์—ˆ์ง€์š”. syn..

Pintos Part 1-3. Priority Scheduling w/ Priority Donation
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 5. 13. 16:16Pintos Part 1-3. Priority Scheduling w/ Priority Donation

์ธํŠธ๋กœ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์—์„œ ์ค‘์š”ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋…์€ ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „(inversion)/๊ธฐ๋ถ€(donation)์ž…๋‹ˆ๋‹ค. ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•˜๊ณ  ์˜ค๋žซ๋™์•ˆ ๋†“์ง€ ์•Š์œผ๋ฉด, ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๋Š” ๊ณ„์† ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ์—ญ์ „ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„ ์ƒ์† ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•œ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ๋Š” ๊ทธ ๋ฎคํ…์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ƒ์†๋ฐ›์•„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฎคํ…์Šค๋ฅผ ํ•ด์ œํ•˜๋ฉด ์›๋ž˜์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ mutex์™€ semaphore, condition variable์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ์™€์ฃผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.์šฐ์„ ์ˆœ์œ„ ์—ญ์ „์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.์‹ฑ๊ธ€์ฝ”..

Pintos Part 1-2. Priority Scheduling
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 5. 12. 23:10Pintos Part 1-2. Priority Scheduling

์ธํŠธ๋กœPintos ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€์—์„œ timer_sleep ํ•จ์ˆ˜์˜ Busy Waiting ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์ธ Sleep ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” '์•Œ๋žŒ ์‹œ๊ณ„' ํŒŒํŠธ๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” OS์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ ์Šค์ผ€์ค„๋ง(Scheduling), ๊ทธ ์ค‘์—์„œ๋„ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง(Priority Scheduling)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ mutex์™€ semaphore, condition variable์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ์™€์ฃผ์‹œ๊ธฐ๋ฅผ ๊ถŒํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.์Šค์ผ€์ค„๋ง์ด๋ž€?๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ(๋˜๋Š” ํ”„๋กœ์„ธ์Šค)๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์„ ๋•Œ, CPU๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์–ด๋–ค ์Šค๋ ˆ๋“œ์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ• ..

Pintos Part 1-1. Busy Waiting vs. Sleep/Wakeup
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 5. 12. 15:46Pintos Part 1-1. Busy Waiting vs. Sleep/Wakeup

์ธํŠธ๋กœํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ 9์ฃผ์ฐจ, Pintos ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐฐ์šฐ๊ณ  ๋А๋‚€ ์ ๋“ค์„ ๊ณต์œ ํ•˜๋Š” ์‹œ๋ฆฌ์ฆˆ์˜ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž…๋‹ˆ๋‹ค. Pintos ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ก ์œผ๋กœ๋งŒ ๋ฐฐ์šฐ๋˜ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๊ฐœ๋…๋“ค์„ ์ง์ ‘ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ๊นŠ์ด ์ดํ•ดํ•  ์•„์ฃผ ์ข‹์€ ๊ธฐํšŒ์ธ๋ฐ์š”. ๊ทธ ์ฒซ ๋ฒˆ์งธ ํŒŒํŠธ์ธ '์•Œ๋žŒ ์‹œ๊ณ„(Alarm Clock)' ๊ตฌํ˜„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.์ฐธ๊ณ : ์ €ํฌ๋Š” ์Šคํƒ ํฌ๋“œ๋Œ€ CS 112/212์˜ ์˜ค๋ฆฌ์ง€๋„ Pintos๊ฐ€ ์•„๋‹Œ, x86-64์— ๋งž์ถ˜ Pintos-KAIST๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํฌ์ŠคํŠธ ๋˜ํ•œ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.๊ณผ์ œ ๋ชฉํ‘œ: timer_sleep() ๊ฐœ์„ ์ €ํฌ๊ฐ€ ๋‹ค๋ฃฐ ํ•จ์ˆ˜๋Š” devices/timer.c์— ์ •์˜๋œ void timer_sleep(int64_t ticks)์ž…๋‹ˆ๋‹ค. ์ตœ์ดˆ๋กœ ๋ฐ›์•˜์„ ๋‹น์‹œ ๊ธฐ๋ณธ ๊ตฌ..

SF UI Display ํฐํŠธ (OTF)
IT/๊ธฐํƒ€2025. 5. 11. 16:44SF UI Display ํฐํŠธ (OTF)

์‹œ์Šคํ…œ UI๋‚˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์— ์ ํ•ฉํ•œ SF UI Display OTF์ž…๋‹ˆ๋‹ค. ์••์ถ• ์•”ํ˜ธ 123

Ubuntu์— APT๋กœ Firefox Developer Edition ์„ค์น˜
IT/๊ธฐํƒ€2025. 5. 10. 14:36Ubuntu์— APT๋กœ Firefox Developer Edition ์„ค์น˜

Ubuntu์—์„œ๋„ Windows์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Firefox Developer Edition์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์•ˆํƒ€๊น๊ฒŒ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด .tar.xz ์••์ถ• ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋˜๊ธฐ์— ์ด๋ฅผ /opt/firefox ๊ฐ™์€ ๊ณณ์— ์ง์ ‘ ํ’€๊ณ  ๋ฐ์Šคํฌํ†ฑ ์—”ํŠธ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋“ฑ ๋ถˆํŽธํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Windows์ชฝ์— ๋น„์œ ํ•˜์ž๋ฉด ๋งˆ์น˜ ํฌํ„ฐ๋ธ” ZIP ํŒŒ์ผ์„ ๋ฐ›์•„๋‹ค๊ฐ€ ํŠน์ • ๊ฒฝ๋กœ์— ํ’€๊ณ  ๋ฐ”ํƒ•ํ™”๋ฉด์— EXE ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฑด ์„ค์น˜ ์ž์ฒด๋„ ๋ฒˆ๊ฑฐ๋กญ์ง€๋งŒ ์ž๋™ ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ๋œ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.๋‹ค๋งŒ ์ตœ๊ทผ์— APT๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋‚ด์–ด ํฌ์ŠคํŠธ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค.์„ค์น˜ ๋ฐฉ๋ฒ• (APT ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž)APT ํ‚ค ์ €์žฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑsudo install -d -m 0755 /etc/apt/keyringsMozil..

C์–ธ์–ด๋กœ ํŒŒ์‹ฑํ•˜๊ธฐ
IT/๊ธฐํƒ€2025. 5. 7. 16:40C์–ธ์–ด๋กœ ํŒŒ์‹ฑํ•˜๊ธฐ

์ด๋ฒˆ ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ 8์ฃผ์ฐจ์—์„œ web proxy lab ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ C์–ธ์–ด๋กœ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํŒŒ์‹ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•œ ์ค„์ด๋ฉด ๋๋‚  ์ž‘์—…๋“ค์ด C์—์„œ๋Š” ์™œ ์ด๋ฆฌ ์–ด๋ ต๊ณ , ๋ฒ„๊ทธ๋Š” ์™œ ์ด๋ฆฌ ์ž์ฃผ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์ ˆ์‹คํžˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๋งŽ์€ ๋ถ„๋“ค์ด ๋น„์Šทํ•œ ๊ฒฝํ—˜์„ ํ•˜์…จ๊ฑฐ๋‚˜, ์•ž์œผ๋กœ ๊ฒช๊ฒŒ ๋˜์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ C์–ธ์–ด์—์„œ์˜ ํŒŒ์‹ฑ ์ž‘์—…์ด ์™œ ์œ ๋… ๊นŒ๋‹ค๋กœ์šด์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ—ค์ณ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•œ ์ œ ๊ฒฝํ—˜๊ณผ ํŒ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.C์–ธ์–ด ํŒŒ์‹ฑ, ์™œ ์ด๋ ‡๊ฒŒ ์–ด๋ ค์šด ๊ฑธ๊นŒ์š”?'๋งจ์†์œผ๋กœ ์ ˆ๋ฒฝ ํƒ€๊ธฐ' - ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ: C๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ๊ณต๊ฐ„์„ ๋‚ด๊ณ , ๊ทธ ๊ณต๊ฐ„์„ ์ฐธ์กฐ, ์—ฐ์‚ฐ, ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ง์ ‘ ํ•œ๋‹ค๋Š” ๊ทธ ์ž์ฒด๊ฐ€ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ์ด..

์›น ํ”„๋ก์‹œ ๋žฉ: ๋‹ค๋œ ์บ์‹œ์— ํ•ด์‹œ ๋ผ์–น๊ธฐ (djb2 ํ•ด์‹œ + ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)
IT/๊ธฐํƒ€2025. 5. 6. 11:46์›น ํ”„๋ก์‹œ ๋žฉ: ๋‹ค๋œ ์บ์‹œ์— ํ•ด์‹œ ๋ผ์–น๊ธฐ (djb2 ํ•ด์‹œ + ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

ํ‚ค์›Œ๋“œ: djb2 ํ•ด์‹œ, ํ•ด์‹œโ€ฏ+โ€ฏ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(LRU), Readerโ€‘Writer Lock, MAX_CACHE_SIZE, MAX_OBJECT_SIZE1. ์™œ ๋ณ„๋„์˜ ์บ์‹œ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?ํ”„๋ก์‹œ ์„œ๋ฒ„์—์„œ ์ธ๋ฉ”๋ชจ๋ฆฌ ์บ์‹ฑ์ด๋ž€? ๋™์ผ ๊ฐ์ฒด ์žฌ์š”์ฒญ ์‹œ, ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ €ํฌ ์ด๋ฒˆ 8์ฃผ์ฐจ ์›น ํ”„๋ก์‹œ ๋žฉ์˜ ์บ์‹ฑ ๋ถ€๋ถ„์˜ ์š”๊ตฌ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.์ธ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋‹ค์ค‘ ์ฝ๊ธฐ, ๋‹จ์ผ ์“ฐ๊ธฐ ๋ณด์žฅ → ์‚ฌ์‹ค์ƒ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ตฌํ˜„์ด ๊ฐ•์ œLRU ์ •์ฑ…์œผ๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ (๋˜๋Š” ์ง€์ •๋œ ์šฉ๋Ÿ‰์„ ๋งž์ถœ ๋•Œ๊นŒ์ง€) ๊ฐ์ฒด ์ž๋™ ํ‡ด์ถœ์ œ ๊ฐœ์ธ์ ์œผ๋กœ ๋ชฉํ‘œํ•˜์˜€๋˜ ์ถ”๊ฐ€ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ปค์ ธ๋„ ๋น ๋ฅธ ์‘๋‹ต์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด O(1) ํƒ์ƒ‰์‘๋‹ต ํ—ค๋”๊นŒ์ง€ ํ†ต์งธ๋กœ ์บ์‹œ (์žฌ์ „์†ก ์‹œ ์™„์ „ ๋™์ผํ•œ ์‘๋‹ต ๊ฐ€๋Šฅํ•˜๋„๋ก)์ผ๋ฐ˜์ ..

image