[TIL] 260903 공부기록
정글 csapp 독서 및 시험
1. TIL쓰게 된 이유#
사실 TIL을 쓸 생각이 없었고 원래 정글에서 WIL로 주간 회고를 기록하는 과정이 있다.
근데 TIL을 갑자기 쓰게된 이유는 2주차 팀원들이 쓰는 TIL을 보고 생각이 좀 바뀌게 된것같다.
보통은 한달 회고와 현재 과정인 주차별 회고를 쓸 계획이였는데 영향을 받아서 공부 기록도 남겨보기로 했다.
(벨로그로 처음에 옮길까 하다가 깃허브 잔디 심는것에 요즘 빠져서 그건 잠시 보류)
2. 오늘 있었던 일#
오늘은 2주차 과정 알고리즘 공부가 끝나는 마지막 날이였고, 아침에 시험을 보게되었다.
사실 파이썬 문법도 제대로 익숙하지도않았고 알고리즘도 생소한게 많아서 걱정을 정말 많이 했었다.
스택과 큐 연결리스트 같은 용어 자체도 몰랐기 때문에 개념만이라도 이해를 했었고 그래도 이번 주차에 얻어갔던게 많았다.
팀 회고도 진행하면서 분위기도 정말 좋았고 모르는건 더 적극적으로 물어봐야겠다고 2주차에 큰 깨달음을 얻었던것같다.

특히 어릴때부터 수포자였어서 이번 알고리즘 주차에서 수학적 지식이 너무 부족한걸 깨달았고..
알고리즘에 나오는 수학개념들을 공부해야겠다 생각했다 싶어서 새벽내내 책들을 찾고 당근에서 수학리부트라는 책을 중고로 구매했다!(새 책은 40,500원이나 되서 쉽지않음… 책 궁금하신분들은 잠깐 실물 볼 기회 드립니다)
택배가 오면 읽을 시간이 있을까? 라고 생각은 하지만 일요일이나 저녁시간쯤에 몇페이지라도 읽어보려고 노력은 해야될것같다. 부족한 부분은 계속 채워나가다보면 지금처럼 몰랐던것들을 빠르게 습득할수있지 않을까 싶었다.
시험은 약 1시간 정도 진행했는데 상당히 참신한 문제가 많이 나왔고 코드를 짜고 출력되는 과정과, 2주차때 공부했던 시간복잡도, 스택,큐 ,재귀 등 알고있다면 풀수있는 문제였다.
파이썬 문법을 다 읽고나서 문제를 풀기 급급했었는데 겨우 진도를 따라갔지만 아직도 햇갈리는 문법? 같은건 시험 전날에 비슷한 문제를 풀어보고, 오답노트도 작성해서 하는식으로 했더니 기억에 많이 남았다.
CSAPP 배운것#
오늘은 1.4.1을 읽었던 내용들을 정리 해보았다.
.Ch-aTpmW_2srrFr.webp)
- 하드웨어 조직.
버스 : 시스템 내에 관통하는 전기적 배선군을 버스라 하고, 컴포넌트들 간에 바이트 정보들을 전송한다. 버스는 일반적으로 워드라고 하는 고정크기 바이트 단위로 데이터를 전송하도록 설계된다
입출력 장치: 키보드 마우스 등 처음 실행 가능파일 프로그램은 디스크에 저장되어있다. 입출력 버스와 컨트롤러나 어댑터를 통해 연결되고 이 두 장치의 차이는 패키징이라고 한다 각각의 목적은 입출력 버스와 입출력 장치들 간에 정보를 주고받도록 해주는일 을 함
메인메모리: 프로세서가 프로그램을 실행하는 동안 데이터와 프로그램을 모두 저장하는 임시장치다(메인메모리 DRAM)
프로세서: 주기억장치(CPU) 메인메모리에 저장된 인스트럭션들을 해독(실행)하는 엔진이다 프로세서 중심에는 워드 크기의 저장장치인 프로그램 카운터(PC)가 있다
프로세서는 자신의 인스트럭션 집합구조로 정의되는 단순하게 실행모델에 따라 작동하는것처럼 보인다 인스트럭션들은 규칙적으로 순서로 실행되고 한개의 인스트럭션을 실행하는것은 여러단계를 수행함으로 이루어진다
메인메모리,레지스터 파일,수식/논리처리기(ALU)주위를 순환한다 (ALU는 새 데이터와 주소값을 계산)
적재: 메인메모리에서 레지스터에 워드를 이전 값에 덮어쓰는방식
저장: 레지스터에서 메인메모리로 워드를 이전 값을 덮어쓰는 방식으로 복사
작업: 두 레지스터의 값을 ALU로 복사하고 두개의 워드로 수식연산을 수행한 뒤 결과를 덮어쓰기 방식으로 레지스터에 저장
점프: 인스트럭션 자신으로부터 한개의 워드를 추출하고, 이것을 PC에 덮어쓰는 방식 복사
- 프로그램 실행.
hello를 입력하면 쉘 프로긂은 각각의 문자를 레지스터에 읽어들인후에 메모리에 저장한다
쉘은 파일 내의 코드와 데이터를 복사하는 일련의 인스트럭션을 실행하여 실행 파일 hello를 디스크에서 메인 메모리로 로딩한다
데이터는 프로세서를 거치지 않고 디스크에서 메인 메모리로 직접 이동한다
main 루틴의 기계어 인스트럭션을 실행하기 시작하고 인스트럭션들은 hello,world 스트링 메모리로부터 레지스터 파일에 복사하고 디스플레이 장치로 전송하여 화면에 표시됨
오늘 느낀점#
문제를 아예 못풀까봐 걱정을 많이했는데 다행히 무난하게 4문제는 풀었던것같고..
이제 3주차 알고리즘문제를 해결해 나가야되는데 문제를 계속 많이 보고 풀어야겠다고 생각했다.
시험 이후에는 동석 코치님께서 또 깨달음을 주셨는데 array와 연결리스트 등 알고리즘을 각각 배우는게 아니라 상황에 따라서도 다른관점에서도 넓게 바라보라는 이야기를 해주셨고 오픈소스나 라이브러리와 같은 다른사람이 만든것들이 다 완벽하지않고 버그는 존재하다라는 말도 인상이 깊었다. 나중에 실력이 된다면 자주쓰는 프로그램의 오프소스도 기여해보고싶다!
이 이외에도 불편함을 항상 고민해보라 하셨는데 이번에 자주쓰게될 vsc단축키와 git 익스텐션을 찾아봐서 설치해봤다.

오늘은 시험이 끝나고 그동안 가족같던 팀원이랑 헤어져야되서 조금 아쉬웠지만 3주차부터 새팀원들과 또 으쌰 해보기로!