week 05 {swjungle} {malloc-lab}
- 0016 swjungle ๐ค
- 0015.1 CSAPP Third Edition Bryant, Randal E. O'Hallaron, David. ๐ป
- WEEK04 ๋ชป๋ค ์ฝ์ ์ฑํฐ๋ค
- WEEK05 ์ฝ์ด๋๋ฉด ์ข์ ์ฑํฐ๋ค
- 9.9์ฅ, ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ถํฐ
- 6์ฅ, ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ
- 7์ฅ, ์์ธ์ ์ธ ์ ์ดํ๋ฆ
- 8์ฅ, ๊ฐ์๋ฉ๋ชจ๋ฆฌ
- [ChoiWheatley/malloclab-jungle]
- malloclab ๊ณผ์ ์ค๋ช ์ {pdf}
- http://csapp.cs.cmu.edu/3e/labs.html โ CSAPP์์ ๋ง๋ จ๋ ๊ฐ์ข ๊ณผ์ ๋ค ๋ชจ์์ง
- cmu_system_programming.zip {Google Drive}
- ๊ด๋ จ ์ฑํฐ
- malloc lab๊ณผ ์ง์ ๊ด๋ จ๋๋ section๋ค
- 19์ฅ: malloc-basic
- GNU malloc API์ ๋ค์ํ ๊ตฌํ ๋ฐฉ์ ์ค๋ช
- implicit list ๋ฐฉ์์ malloc ๊ตฌํ์ ๊ดํ ์์ธํ ์ค๋ช
- 20์ฅ: malloc-advanced
- explicit & seg list๋ฐฉ์์ malloc ๊ตฌํ, garbage collection ๊ฐ๋ ์ ๋ํ ์ค๋ช
- well-known memory bug์ ๊ดํ ์ค๋ช
- 44p : gdb, valgrind๋ฑ์ memory bug๋ฅผ ์ก๊ธฐ์ํ ์ ๊ทผ ๋ฐฉ์ ์ค๋ช ํฌํจ
- 19์ฅ: malloc-basic
- malloc lab ์ํ์ ๋์์ ์ค ์ ์๋ ๋ด์ฉ์ ๋ด์ section๋ค
- 14์ฅ: ecf-procs
- exception์ ๊ฐ๋ ๊ณผ ์ข ๋ฅ, process์ ๊ฐ๋ ์ ๋ํ ์ค๋ช
- 14p : segmentation fault์ ๊ดํ ์ค๋ช ํฌํจ
- 11์ฅ: memory-hierarchy
- ์ปดํจํฐ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ์ ๋ํ ์ค๋ช
- 17์ฅ: vm-concepts
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ page fault์ ๋ํ ์ด๋ก ์ ์ค๋ช
- 14์ฅ: ecf-procs
- malloc lab๊ณผ ์ง์ ๊ด๋ จ๋๋ section๋ค
- ๊ด๋ จ ์ฑํฐ
- WEEK05 ํค์๋
- ๋ฉ๋ชจ๋ฆฌ ๋จํธํ
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ ์ฑ
- ์์คํ ์ฝ
- sbrk
- mmap
README
ํ์๋ค๊ณผ ์ ๋ต์ ์ธ์ ๋ค. CSAPP ์ฑ ์ ๋ฐ๋ผ ์ฝ๋๊ฒ์ด ์ผ์ฃผ์ผ์ 80%๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ , ๋ฐ๋ผ์ ์ฑํฐ๋ฅผ ๋ค ๊ฐ์ด ๊ณต๋ถํ๋, ๋ฐํํ๊ณ ์ถ์ ์ฑํฐ๋ฅผ ๋ฐ๋ก ๋ ๊ณต๋ถํ์ฌ ๋งค์ผ๋งค์ผ ๋ฐํํ๋ ์์ผ๋ก ์งํ๋ ๊ฒ ๊ฐ๋ค. ์ผ๋จ ๊ธ์์ผ์ ํฌ๊ด์ ์ธ ๋ด์ฉ์ ๋ค๋ฃฐ ์์ . ๋ฌด์๋ฌด์์ด ์๋์ง, ์ด๋ค ์ฑํฐ๋ฅผ ์ค์ ์ ์ผ๋ก ์ฝ์ ๊ฒ์ธ์ง, ์ง์์ ํ์๋ค๊ณผ ์ฑํฌ ๋ง์ถ๋ ๊ฒ์ด๋ค.
Daily Dump
09/07 ๋ชฉ ~ 09/08 ๊ธ
๋ฐ๋ฆฐ ์ฑ
๋ถ๋ถ ์ฝ๊ณ ๋ฐํ ์ค๋น ํ๊ธฐ
09/09 ํ
โญ๏ธ 9.9. Dynamic Memory Allocation ๋ฐํ @์์์ธ
09/10 ์ผ
7. Linking {CSAPP} ๋ฐํ @์ต์นํ
09/11 ์
์์คํ
์ฝ ๋ฐํ @์ด์ธ๋ณต
09/12 ํ
09/13 ์
malloclab
syscall @์ด์ธ๋ณต
user mode by programmer VERSUS previledge mode by kernel
์ค๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด์ ์ธํฐ๋ฝํธ or ์์คํ ์ฝ ๋ฐ์ํ์ ๋ ์ปค๋์ฝ๋์ชฝ์ผ๋ก ์คํ ํ๋ฆ์ด ์ฎ๊ฒจ๊ฐ๋ค๊ฐ ๋ค์ ๋์์ด.
CPU์ ์ํ๋ฅผ ์ ์ฅ. ๋์ค์ ์คํ์ ์ด์ด๊ฐ์ผ ํ๋๊น.
WHY syscall?
๋ถํ ํ๋ฉด BIOS ํ๋ฉด ๋ํ๋๊ณ , Power self test? ๊ฐ์๊ฒ ๋ํ๋๋ค. ์ ์์ธ์ง ํ์ธํ๊ณ ๋ณด์กฐ๊ธฐ์ต์ฅ์น (DISK, ROM)์ ์ ๊ทผํ๋ค.
OS๋ํ ํ๋ก๊ทธ๋จ์ด๊ณ RAM์ ์ฌ๋ผ๊ฐ์ผ ์คํ์ด ๋๋ค.
interface between Kernel and Programmer, actually not that directly, proxy such as shell, stdio libraries
Kind of syscalls
Interrupt
- hardware level (=Interrupt)
power, io, timer, - program level (=Trap)
div by 0, unauthorized memory access
Process/Threads
File IO
Socket
Device
IPC
state machine diagram
Quiz
5.
๋ค์๊ณผ ๊ฐ์ ํจ์๋ฅผ ์คํํ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ธฐ๋์ง ๋ ผํ์์ค. (msg ๋ก ์ ๋ฌ๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 64 ์ด์์ธ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํ์์ค.) ์ด์ ์ ์ฌํ ์ฝ๋๋ฅผ ํฌํจํ ์ํํธ์จ์ด๋ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์๊น? ์๋ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ ์ ์์๊น?
void print_err(char *msg) {
char *s = (char *) malloc(10);
sprintf(s, "%s\n", msg);
fprintf(stderr, s);
free(s);
};
๋ฌธ์ ์ ์์ง
malloc์ ๊ตฌํํด๋ดค๊ธฐ ๋๋ฌธ์ malloc์ด ์ง์ ํด์ค ์์ญ๋ณด๋ค ๋์น๋ ๊ณต๊ฐ์ ์ฌ์ฉํ์ ์ ์ด๋ค ์ํฅ์ด ๊ฐํด์ง๋์ง ์ ์ ์๋ค.
์ ๋ต
ํ์ด๋ก๋ ๋ฐ์ ์์ญ์ ์๋ footer, ๋ค์ ๋ธ๋ญ์ header๊ฐ ๊นจ์ง๋ค. malloc ๊ด๋ฆฌ์ ๋ณด๊ฐ ํ๊ดด๋๋ฏ๋ก ์ถํ malloc/free ํธ์ถ ์ ์๋ฑํ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ์ ์์ผ๋ฉฐ, ๋์ค์ ๋๋ฒ๊น
๋ ์ด๋ ค์์ง๋ค.
๋ชจ๋ฒ์ฝ๋
char *s = (char *)malloc(strlen(msg) + 2);
extra A.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋๋ฐ ์ ๋ธ๋ญ๋จ์๋ก ํ ๋นํ๋์ง ์ค๋ช ํด ๋ณด์์ค {malloc-lab}