[TIL] 260921 공부기록
csapp 공부하기
TIL#
오늘은 후반부인 CSAPP 3장을 공부했다.
플래그 개념이 좀 이해가 안 갔는데, 코어타임 때 팀원 두 분이 설명해주시는 걸 듣고 얼추 이해는 갔던 것 같다.
특히 10시쯤 다른 팀원들의 정찰을 좀 가봤는데, 데이터 정렬에 관련된 구조체와 공용체의 특징들을 들은 게 인상 깊었다.
오늘 공부하면서 느낀 건 왜 CSAPP를 공부해야 하는지를 더더욱 이해하게 됐다는 것이다. C 디버깅 문제에서 디버깅을 하면 주소와 어셈블리 코드들이 나오는데, 이제는 예전처럼 막막하기보다는 “아하, 이게 이거구나” 하고 볼 수 있을 것 같다.
특히 중요한 파트인 것 같아서 나중에 한 번 더 읽고 CSAPP와 관련된 주제로 발표도 해보고 싶다.
생각보다 이론이 재밌는 것 같기도?
배운 점#
구조체 정렬 규칙을 공부하면서 왜 구조체에서 여러 타입을 사용할 때 메모리 공간이 생각보다 더 필요할 수 있는지 알게 됐다.
타입마다 정렬 기준이 달라서 구조체의 멤버 사이에 패딩이 생길 수 있고, 이 때문에 실제 멤버들의 크기를 단순히 더한 것보다 구조체의 크기가 커질 수 있다는 걸 배웠다.
그리고 공용체에서는 모든 멤버가 같은 메모리 공간을 공유하기 때문에 가장 큰 멤버의 크기만큼 공간을 사용한다는 것도 알게 됐다.
알고리즘 주차 때 배웠던 스택과 메모리 영역의 스택 부분이 서로 다른 개념이라는 것도 다시 공부했다.
64비트 시스템에서 일반적으로 스택은 높은 주소에서 낮은 주소 방향으로 자라고, pushq를 실행하면 값을 스택에 추가하면서 스택의 위치를 가리키는 %rsp가 감소한다. 반대로 popq를 실행하면 값을 꺼내면서 %rsp가 증가한다.
이런 것들을 오늘 공부했다.
느낀 점#
처음에는 양도 많고 어렵게 느껴졌는데, 용어들을 하나씩 공부하면서 조금씩 이해가 되기 시작했다.
어쩌면 좋은 징조인 건가?
다음 주의 내가 이번 주의 나를 바라봤을 때 뿌듯해했으면 좋겠다.
그러기 위해 블로그를 쓰는 이유기도 하다!
새 팀원이랑은 하루빨리 친해지고 싶긴 하다.. 아직 낯설어서 ..ㅎㅎ