DevLog ๐Ÿ“จ 24

[CS][Study] Monitor & Conditional Variable

์กฐ๊ฑด๋ณ€์ˆ˜๋ž€? ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ค‘ ์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค, ๋ฝ์€ ์ต์ˆ™ํ•œ๋ฐ ์—ฌ๊ธฐ์„œ ์•ฝ๊ฐ„ ๋” ์‹ฌํ™”ํ•œ๋‹ค๋ฉด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ์กฐ๊ฑด๋ณ€์ˆ˜๋‹ค. ์ƒ์„ฑ์ž-์†Œ๋น„์ž ๋ฌธ์ œ์™€ ๊ด€๋ จํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 1. Monitor ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ, ๋ชจ๋‹ˆํ„ฐ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ๊ฐ์ œ์˜ ์ƒํƒœ์— ๋™์‹œ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  ํ•ด๋‹น ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋™๊ธฐํ™” ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ์„ธ๋งˆํฌ์–ด๋‚˜ ์ผ๋ฐ˜ ๋ฎคํ…์Šค์™€ ๋‹ค๋ฅด๊ฒŒ, ๋ชจ๋‹ˆํ„ฐ๋Š” ํŠน์ • ์กฐ๊ฑด์˜ ์ถฉ์กฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋…์ ์ ์ธ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. (ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.) ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฝ๊ณผ ํ•˜๋‚˜ ์ด์ƒ์˜ ์กฐ๊ฑด ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. 2. Conditional Variable ์กฐ๊ฑด ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ์กฐ๊ฑด์˜ ์ถฉ์กฑ์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ..

DevLog ๐Ÿ“จ 2024.01.11

[DB] Postgresql@14 error 256

M1 MacOS ํ™˜๊ฒฝ homebrew๋กœ ์„ค์น˜ ๋งฅ์— postgresql ์„ค์น˜ํ•˜๊ณ  psql -d postgres ๋กœ ์ ‘์†ํ•˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค. psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket? brew services list ๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ postgresql@14 error 256 ์—๋Ÿฌ๊ฐ€ ๋œฌ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. ์—๋Ÿฌ์ฝ”๋“œ๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ /opt/homebrew/var/postgresql@14/postmaster.pid๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์žฌ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค๋Š” ..

[DevLog][PintOS] 3์ฃผ๊ฐ„์˜ ํ•€ํ† ์Šค ํšŒ๊ณ 

์ง„์‹ฌ ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ดˆ๋ฐ˜์—” ์žฌ๋ฐŒ์—ˆ๋Š”๋ฐ ๐Ÿ˜‡ 3์ฃผ๊ฐ„์˜ ํ•€ํ† ์Šค์—์„œ ๋ฌด์—‡์„ ๋Š๋ผ๊ณ  ๋ฐฐ์› ๋Š”์ง€ ๋‚จ๊ฒจ๋‘์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์— '์•„.. ํ•€ํ† ์Šค ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ..'๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ์–ด ์ •๋ฆฌํ•ด๋‘”๋‹ค. 'ํ”„๋กœ์„ธ์Šค๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•œ๋‹ค' ๋ผ๋Š” ๊ด€์ ์„ ์–ป์—ˆ๋‹ค. ๊ทธ ์ „๊นŒ์ง€๋Š” ํ”„๋กœ์„ธ์Šค, ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ, ์ž์›.. ๊ณผ ๊ฐ™์€ ์šฉ์–ด๋“ค์ด ๋ง‰์—ฐํ•˜๊ฒŒ๋งŒ ๋‹ค๊ฐ€์™”๋Š”๋ฐ, ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•œ ๊ฐœ๋…์œผ๋กœ์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์ž์› resource ์„ ๊ณต์œ ํ•˜๊ณ , ํš๋“ํ•˜๊ณ , ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋ฅผ ์ ‘ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ถ”์ƒํ™”์ด๋ฏ€๋กœ, ์‹ค์ œ ๋ฌผ๋ฆฌ์  ์ž์› (ex. CPU ์ ์œ ) ์„ ๊ณต์œ ํ•˜๋ฉด์„œ๋„ ๋งˆ์น˜ ํ˜ผ์ž๋งŒ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ์ ์—์„œ ๋™๊ธฐํ™”์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค์ด ์ค‘์š”ํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. Policy์™€ Mech..

DevLog ๐Ÿ“จ 2023.10.24

[DevLog][PintOS] PRJ3 Virtual Memory/Memory Mapped Files to Copy-on-write

04) Memory Mapped Files ์‹œ์Šคํ…œ ์ฝœ mmap๊ณผ munmap์„ ๊ตฌํ˜„ํ•œ๋‹ค. ํ˜„์žฌ๊นŒ์ง€๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ anonymous, ์ฆ‰ ์Šคํƒ ํŽ˜์ด์ง€์˜€์ง€๋งŒ mmap์„ ํ†ตํ•ด ํŒŒ์ผ๊ณผ ๋งคํ•‘๋œ ํŽ˜์ด์ง€๋Š” file-backed page๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋งคํ•‘์ด ํ•ด์ œ๋  ๋•Œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํŒŒ์ผ์— ๋‹ค์‹œ ๊ธฐ๋กํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋””์Šคํฌ์— ํŒŒ์ผ์„ ์“ฐ๋Š” ์ž‘์—…์€ RAM๋Œ€๋น„ ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š” ํŽ˜์ด์ง€๋งŒ ๋””์Šคํฌ์— ๊ธฐ๋กํ•ด์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ, mmu๋Š” ์•Œ์•„์„œ pml4 ํ…Œ์ด๋ธ”์— dirty bit๋ฅผ ์„ธํŒ…ํ•ด์ค€๋‹ค. /* Write back a single page to file. Called when unmap. */ static bool file_write_back(struct page *page, s..

DevLog ๐Ÿ“จ 2023.10.24

[DevLog][PintOS] PRJ3 Virtual Memory/Memory Management to Stack Growth

Project3: Virtual Memory 01) Memory management struct page ์š”๊ตฌ ํŽ˜์ด์ง• (Demand Paging)์„ ๊ตฌํ˜„ํ•˜๊ณ , ์Šค์™‘ ์ธ/์•„์›ƒ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด์ง€ ๊ตฌ์กฐ์ฒด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค. va๋Š” ํŽ˜์ด์ง€์˜ ์‹œ์ž‘ ์ฃผ์†Œ, ์ฆ‰ ์œ ์ € ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ƒ์ฃผ์†Œ์ด๋‹ค. frame์€ ํŽ˜์ด์ง€์™€ ๋งคํ•‘๋œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ์ฒด๋กœ, ๋งคํ•‘ ์ „๊นŒ์ง€๋Š” NULL๋กœ ์œ ์ง€๋œ๋‹ค. struct page { const struct page_operations *operations; void *va; /* Address in terms of user space */ struct frame *frame; /* Back reference for frame */ union { struct un..

DevLog ๐Ÿ“จ 2023.10.17

[DevLog][PintOS] PRJ2 User Program/Out of Memory Test

Memory Leak in C ํ•€ํ† ์Šค์˜ Project2์—๋Š” OOM ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ์ž์›์„ ๋ชจ๋‘ ์†Œ์ง„ํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ forkํ•˜๋Š” ๋ฌด์‹œ๋ฌด์‹œํ•œ ํ…Œ์ŠคํŠธ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๊ณผ์ •์„ 10ํšŒ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ์„œ fork ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๊ฐ€ ๋งค๋ฒˆ ๊ฐ™์€์ง€, ์ฆ‰ ์ข…๋ฃŒ ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค. ์šด์˜์ฒด์ œ์™€ ์‹œ์Šคํ…œ ์ฝœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•Œ๊ณ , ๊ตฌํ˜„ํ•˜๋ฉด pass๋˜์—ˆ๋˜ ํ…Œ์ŠคํŠธ์™€๋Š” ๋‹ฌ๋ฆฌ, ์ด ํ…Œ์ŠคํŠธ๋Š” ์‹ค์ œ๋กœ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ (๋ˆ„์ˆ˜ ์—†์ด) ์งœ์—ฌ์ ธ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์—‡๋ณด๋‹ค๋„ ๋…ผ๋ฆฌ์ ์œผ๋กœ.. ์ฝ”๋“œ๋ฅผ ์ž˜ ์งœ๋Š” ์—ญ๋Ÿ‰์ด ์ค‘์š”ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. 1) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด, ์ž˜ ํ•ด์ œํ•ด ์ฃผ์ž. tid_t thread_create(...) { struct thread_child *chi..

DevLog ๐Ÿ“จ 2023.10.10

[DevLog][PintOS] PRJ1 Threads/PintOS ์Šค๋ ˆ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐˆ๊นŒ?

Pintos Project 1: Threads thread_init์„ ํ•˜๋ฉด main thread(initial_thread)๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์‹คํ–‰๋œ๋‹ค. ์Šค์ผ€์ค„๋ง์„ ์œ„ํ•ด thread_start๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, idle_thread๋ฅผ ๋งŒ๋“ค๊ณ  ๋Œ๋ฆฐ๋‹ค. idle_thread๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ž๊ธฐ ์ž์‹ ์„ ๋ธ”๋ฝํ•œ ๋‹ค์Œ, sti; hlt; ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜๋Š” ์ผ์„ ๋ฐ˜๋ณตํ•œ๋‹ค. create_thread๋Š” ์Šค๋ ˆ๋“œ ์ด๋ฆ„, ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ์Šค๋ ˆ๋“œ๋ฅผ ์ดˆ๊ธฐํ™”(init_thread)ํ•˜๊ณ , ์Šค๋ ˆ๋“œ ๋‚ด๋ถ€ intr_frame ๊ตฌ์กฐ์ฒด์— ์ธ์ž๋กœ ๋ฐ›์€ ์‹คํ–‰ ํ•จ์ˆ˜ (thread_func type)์™€ ๊ทธ ์ธ์ž๋ฅผ ์ €์žฅํ•œ ํ›„ thread_unblock์„ ํ†ตํ•ด st..

DevLog ๐Ÿ“จ 2023.10.03

[DevLog][PintOS] PRJ1 Threads/Scheduling Algorithms

Scheduling ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์˜ (๋˜๋Š” ๋ช‡ ๊ฐœ์˜) CPU๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ• ๊นŒ? ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒ˜๋ฆฌ๊ฐ€ ๋นจ๋ฆฌ ๋˜๋Š” ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 1. ์Šค์ผ€์ค„๋ง์˜ ํ‰๊ฐ€ ๋ฐ˜ํ™˜ ์‹œ๊ฐ„: ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ์‹œ๊ฐ„ - ํ”„๋กœ์„ธ์Šค์˜ ๋„๋‹ฌ ์‹œ๊ฐ„ ์‘๋‹ต ์‹œ๊ฐ„: ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘์‹œ๊ฐ„ - ํ”„๋กœ์„ธ์Šค์˜ ๋„๋‹ฌ ์‹œ๊ฐ„ ์ผ๋ จ์˜ ์ž‘์—…๋“ค์ด ์ฒ˜๋ฆฌ๋  ๋•Œ, ํ‰๊ท ์ ์ธ ๋ฐ˜ํ™˜์‹œ๊ฐ„๊ณผ ์‘๋‹ต์‹œ๊ฐ„์ด ์ ์„์ˆ˜๋ก ์ข‹์€ ์Šค์ผ€์ค„๋ง์ด ๋˜๊ฒ ๋‹ค. ์„ฑ๋Šฅ: n๊ฐœ์˜ ์ž‘์—…์„ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ ๊ณต์ •์„ฑ: ๊ฐ๊ฐ์˜ ์ž‘์—…์„ ์–ผ๋งˆ๋‚˜ ๊ท ๋“ฑํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ ์˜ˆ๋ฅผ ๋“ค์–ด ๋งŒ์•ฝ ์ž‘์—…์‹œ๊ฐ„์ด ๋น ๋ฅธ ์ˆœ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•œ๋‹ค๋ฉด, ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ ๊ทธ์ € ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๊ฐ ์ž‘์—…์„ ๊ณต์ •ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ..

DevLog ๐Ÿ“จ 2023.10.03

[DevLog][PintOS] PRJ1 Threads/Priority Scheduling

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง Assignment Overview ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•ด ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•ด๋ผ. ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ step์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋‹จ์ˆœํžˆ ์ค€๋น„ ํ๋ฅผ ์ •๋ ฌํ•˜๊ณ , ์ฆ‰์‹œ CPU๋ฅผ ์–‘๋„ํ•˜๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” ๋™๊ธฐํ™” (synchronization)์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋กœ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ๋„ ์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ์šฐ์„ ์ˆœ์œ„ ๊ธฐ์ฆ (priority donation)์ด๋‹ค. ๋ฌธ์ œ 1: ์ฃผ์–ด์ง„ ์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ค์–ด๋ผ ์Šค๋ ˆ๋“œ๋Š” ์ค€๋น„ ํ์—์„œ ์šฐ์„ ์ˆœ์œ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ํ˜„์žฌ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ค€๋น„ ํ์— ๋“ค์–ด์˜ค๋ฉด, ์ฆ‰์‹œ CPU๋ฅผ ์–‘๋ณดํ•ด์•ผ ํ•œ๋‹ค. ํ˜„์žฌ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์ค€๋น„ ํ์˜ ์Šค๋ ˆ๋“œ์™€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋น„๊ตํ•ด์„œ ์ ..

DevLog ๐Ÿ“จ 2023.09.27

[DevLog][CSAPP] 10์žฅ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ์ž…์ถœ๋ ฅ (10.1~10.5)

proxy-lab์—์„œ ์†Œ์ผ“ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ reading 10. ์‹œ์Šคํ…œ ์ˆ˜์ค€ ์ž…์ถœ๋ ฅ ์ž…์ถœ๋ ฅ์€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ, ํ„ฐ๋ฏธ๋„, ๋””์Šคํฌ์™€ ๊ฐ™์€ ์žฅ์น˜๋“ค ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. C์—์„œ๋Š” printf, scanf๊ฐ™์€ ๊ฒƒ๋“ค์ด ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์ž…์ถœ๋ ฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•˜์ง€๋งŒ Unix์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ ์ฝœ ์ˆ˜์ค€์˜ ์ž…์ถœ๋ ฅ (Unix I/O)์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์ž…์ถœ๋ ฅ์€ ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์“ธ ์ˆ˜ ์—†๋‹ค. Unix I/O๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 10.1. Unix I/O ๋„คํŠธ์›Œํฌ, ๋””์Šคํฌ, ํ„ฐ๋ฏธ๋„์„ ๋ชจ๋‘ 'ํŒŒ์ผ'๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (ํŒŒ์ผ๋กœ ๋ชจ๋ธ๋ง๋œ๋‹ค?) ๋„คํŠธ์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์ด ๊ฒฐ๊ตญ ํ†ต์‹ .. ์ด๋‹ค. ๐Ÿ‘€ Unix ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜ ext๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‹ค. ์—ฌ๋Ÿฌ ๋ฒ„์ „..

DevLog ๐Ÿ“จ 2023.09.24