[커널 18차] 4주차

2021.06.19 23:27

V4bel 조회 수:92

2021/06/19 스터디 4차

 

1) 입장하신 분들은 오후 3:00 시작전까지 참가자명을 한글 실명으로 변경.

2) 출첵을 위해 구글 문서의 다음 참석 항목에 성함을 기록.

    jake.dothome.co.kr 에 링크가 있습니다.

3) 접속 후 3시 정각에 웹캠 on.

참석

  • 40명 참석(문영일, 김각래, 정동훈, 류호은, 송기원, 김준영, 김태완, 강혁, 이정재, 유민호, 차민희, 최준근, 이일영, 안유빈, 박노은, 최서정, 송준영, 안이수, 이민욱,김정임, 이한솔, 김경인, 이재훈, 서민혁, 황성민, 이형래, 박진현, 문연수, 임채훈, 김현우, 이정민, 황바른, 최영민, 박시현, 민호기, 한동수, 김지태, 김성준, 조현철, 안성원, 김성원

  • 참석자 가나다순:강혁, 김각래, 김경인, 김성준, 김정임, 김준영, 김지태, 김태완, 김현우, 류호은, 문연수, 문영일, 민호기, 박노은, 박시현,  박진현, 서민혁, 송기원, 송준영, 안성원, 안유빈, 안이수, 유민호,이민욱, 이일영, 이재훈, 이정민, 이정재, 이한솔,이형래, 임채훈, 정동훈, 조현철, 차민희, 최서정, 최영민, 최준근, 한동수, 황바른, 황성민,

진도 및 내용

서기: 김현우, 김성원

공유: 이민욱

 


 

kmem_cache_alloc_node

kmem_cache_free

kmem_cache_destroy

 

 

Q. Slab cache랑 kmalloc cache는 다른 것이고, Slab cache랑 전용(?) 캐시랑 같은 건가요???

  1. 다 같은 Slab cache이고, 전용 캐시는 커널 내부에서 어떠한 오브젝트 전용으로 Pre-defined된 캐시를 의미함

Q. 아까 cat /proc/slabinfo 했을 때 나온 리스트(kmalloc-* 제외)가 전용 캐시인건가요?

  1. 맞음.


 

예) 다음 프로그램의 ELF 구성 및 VMA들을 알아본다.

test.c

int g[100] = { 1, };

int bss[1000];

 

int main()
{
volatile int i = 0;

while (1)
i++;
}

 

 

00010000-00011000 r-xp 00000000 b3:02 131240     /home/lmu/a.out

00020000-00021000 r--p 00000000 b3:02 131240     /home/lmu/a.out

00021000-00022000 rw-p 00001000 b3:02 131240     /home/lmu/a.out

00022000-00023000 rw-p 00000000 00:00 0

b6e4c000-b6f84000 r-xp 00000000 b3:02 5239       /usr/lib/arm-linux-gnueabihf/libc-2.28.so

b6f84000-b6f94000 ---p 00138000 b3:02 5239       /usr/lib/arm-linux-gnueabihf/libc-2.28.so

b6f94000-b6f96000 r--p 00138000 b3:02 5239       /usr/lib/arm-linux-gnueabihf/libc-2.28.so

b6f96000-b6f97000 rw-p 0013a000 b3:02 5239       /usr/lib/arm-linux-gnueabihf/libc-2.28.so

b6f97000-b6f9a000 rw-p 00000000 00:00 0

b6faf000-b6fb3000 r-xp 00000000 b3:02 5218       /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

b6fb3000-b6fc2000 ---p 00004000 b3:02 5218       /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

b6fc2000-b6fc3000 r--p 00003000 b3:02 5218       /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

b6fc3000-b6fc4000 rw-p 00004000 b3:02 5218       /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

b6fc4000-b6fe4000 r-xp 00000000 b3:02 5130       /usr/lib/arm-linux-gnueabihf/ld-2.28.so

b6ff2000-b6ff4000 rw-p 00000000 00:00 0

b6ff4000-b6ff5000 r--p 00020000 b3:02 5130       /usr/lib/arm-linux-gnueabihf/ld-2.28.so

b6ff5000-b6ff6000 rw-p 00021000 b3:02 5130       /usr/lib/arm-linux-gnueabihf/ld-2.28.so

bede3000-bee04000 rw-p 00000000 00:00 0          [stack]

bee8f000-bee90000 r-xp 00000000 00:00 0          [sigpage]

bee90000-bee91000 r--p 00000000 00:00 0          [vvar]

bee91000-bee92000 r-xp 00000000 00:00 0          [vdso]

ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

 

0x21000 = 135,168 

 

rCIOcUY8P15RNf2N4OhTRHL9hD2qtJnD7BK7xmJD

 

$ objdump -S -D a.out

$ readelf --all a.out


 

linux 지원 실행 파일 포멧

   1 332  5.10/fs/binfmt_aout.c <<init_aout_binfmt>>

          register_binfmt(&aout_format);

   2   2299  5.10/fs/binfmt_elf.c <<init_elf_binfmt>>

          register_binfmt(&elf_format);

   3 92  5.10/fs/binfmt_elf_fdpic.c <<init_elf_fdpic_binfmt>>

          register_binfmt(&elf_fdpic_format);

   4 99  5.10/fs/binfmt_em86.c <<init_em86_binfmt>>

          register_binfmt(&em86_format);

   5   1031  5.10/fs/binfmt_flat.c <<init_flat_binfmt>>

          register_binfmt(&flat_format);

   6 147 5.10/fs/binfmt_script.c <<init_script_binfmt>>

          register_binfmt(&script_format);

 

참고: PLT와 GOT 자세히 알기 1:

https://bpsecblog.wordpress.com/2016/03/07/about_got_plt_1/

 

참고: 각종 파일 포맷

https://en.wikipedia.org/wiki/Comparison_of_executable_file_formats

XE Login