5주차 끝! 이번주도 재미있었다.
갈수록 규모가 큰 프로젝트 파일을 다루고 있는데, 마치 복잡한 기계의 어느 한 부품을 고치면 전체가 살아움직이는(?) 그런 미묘한 카타르시스가 느껴진다. 다만 아직 디버거를 사용하는 법에 익숙하지 않아서 시간 나면 한번 익히고 넘어가야 될 것 같다.
돌아오는 주는 Proxy lab 이다.
지금껏 컴퓨터 내부만 뜯어보다가, 컴퓨터 간의 연결로 세계관이 확장되는 순간이다.
네트워크에 대해서는 아직 아는 바가 없어서, 초반 며칠은 개념 공부에 더 집중해야 할 것 같다.
이번주도 기대중!
이번주 배운 것
- 가상메모리
- 메모리 관리 기법 (특히 페이징)
- 메모리 단편화
- 동적 메모리 할당기의 내부구조
- 힙, sbrk, malloc, free
- implicit free list, explicit free list
- 메모리 할당 정책 (first fit, next fit, best fit)
이번 주차는 지난주에는 완성된 함수로 다루기만 했던 malloc(), free()등 동적할당의 내부 원리를 공부하는 한 주였다.
저장장치들이 가진 특징과 제약, 그리고 이를 극복하기 위해 소프트웨어적으로 어떤 기법을 사용했는지(가상메모리)를 공부했고,
가상주소공간의 구조(힙, 스택, 데이터, 코드 영역)와 CPU가 이를 어떻게 처리하는지,
또 개발자가 힙 영역을 다루고자 할 때 장치 내부에서 어떻게 이 요청을 처리하는지를 조금이나마 엿볼 수 있었다.
확실히 예전 버릇이 있어서 그런지 반도체 관련 얘기가 나올 때마다 눈이 조금 더 번뜩이는 건 어쩔 수 없었다ㅎㅎ
많이 까먹긴 했지만 가끔 기억나는 내용이 나오면 괜히 반갑고 그랬던.. ^-^
개인 목표 체크
1. 매주 과제 완수율 90% 이상 달성하기 ✅
(!! 미니프로젝트 제외하고, 정글 생활하면서 처음으로 90%를 달성했다.😭😭 딱 90 턱걸이!)
2. 주 3회 이상 운동하기 ✅
3. 공부 내용 기록하기 ✅
4. 주 3회 이상 알고리즘 ✅
알고리즘 목표를 스터디 참여에서 주 3회 이상 풀기로 바꿨다.
물론 스터디 참여를 하긴 하지만, 참여 여부보다는 꾸준히 풀고 있는지를 체크하는 게 더 목적에 부합하다고 생각하기 때문이당
5주차 퀴즈 문제
- 페이징과 세그멘테이션의 1) 정의, 2) 각각의 장단점에 대해 서술하시오.
- first-fit, next-fit, best-fit의 작동 방식
- DMA의 기본 개념을 설명하고, DMA가 시스템 성능에 미치는 이점을 두 가지 이상 제시하시오.
- 힙 정렬의 배열 표현 ([1 2 4 4 3 5 5 6]에 힙 정렬을 수행했을 때, 과정을 배열로 표현하기)
- 아래 코드의 실행 결과를 적어보시오.
#include <stdio.h>
int main() {
char* str[2];
str[0] = "hello!";
str[1] = "jungler";
printf("1. %s\n", str[0] + 1);
printf("2. %s\n", (str + 1)[0] + 2);
return 0;
}
5번 문제는 특히 포인터 개념을 이해하는데 중요한 문제인 것 같아서 5번의 풀이만 조금 적어두면,
정답은
"1. ngler"
"2. ello!"
이다.
C에서 문자열을 저장할 때는 항상 문자열 끝에 null 문자를 함께 넣는다.
char[20] 이런 식으로 크기를 정해놓는게 아니라면, 문자열(%s) 출력 시 시스템이 어디까지 읽어야할지를 알 수 없기 때문이다.
따라서 null 문자가 문자열의 끝임을 알려주는 flag 역할을 해준다.
만일 이 문제에서 printf 출력 타입을 %c로 지정했다면 정답은 "1. n", "2.e" 였을 것이다.
그러나 %s 타입으로 출력했기 때문에, printf 함수는 null 문자를 만날 때까지 출력한다.
'일상기록장 > 크래프톤 정글 일지' 카테고리의 다른 글
Week 7. PintOS 프로젝트 1(Threads) 회고 (1) | 2023.12.03 |
---|---|
Week 6. Proxy Lab 주차 회고 (1) | 2023.11.23 |
Week 4. RB-tree Lab 주차 회고 (1) | 2023.11.09 |
Week 3. 자료구조/알고리즘 주차(3) 회고 (1) | 2023.11.02 |
Week 2. 자료구조/알고리즘 주차(2) 회고 (1) | 2023.10.26 |