[목표]
6주차 발표
깃허브 코드 리뷰
6주차 퀴즈 정리
노션 정리
6주차 CS 지식 정리
커피 한잔에 빵먹으면서 어제 내용을 벨로그에 정리하고 있다.
와중에 깃허브에 코드리뷰자의 코드가 올라와서 코드리뷰를 했다.
WEEK06 전체 조 발표를 진행했다.
식사 진행 및 휴식(대화)
직접 개발 환경을 세팅해볼것.(우분투 18.04) → 난 완료했다.
환경 세팅, 형상관리 등의 상황을 해결해 나가는 경험을 해봐라
말록 랩을 구현하다가 어려우면 책을 보고 구현 해보자.
말록랩 방식에는 Implicit List, Explicit List, Segregated List, Buddy System이 있다.
책에 나온것이 임프리시? 방식이다. 메모리 블럭을 링크드 리스트 방식으로 구현(경계 태그)
N driver파일(테스트 10개)을 돌리면 점수 2개가 나오는데, 합친 점수를 올려보기(100점 넘음 1~3등)
책은 9장은 봐야하는데, 나머지 책 내용은 시간 남을때 읽기.(중요한 키워드들만 보자)
발표는 RB 트리 erase 함수 시행착오 과정(함수나 고려할 사항이 많아지며 GPT의 한계에 부딪치며 동료학습의 중요성, c언어 괄호)을 발표했다.
다양한 발표 양식과 공부 방식을 볼 수 있었다. 점점 발표에 대해 어떤 식으로 전개하는 것이 좋은지 생각하게 되었다. 다시금 발표 내용을 구성하며 내용 재확인하며 틀렸던 내용들을 수정할 수 있는 기회가 되었다.(벨로그나 발표를 진행할 때 다른 사람분들께 잘못된 정보를 주면 안된다는 마음에)
회사에서 발표시에 중요하게 보는 것들이 무엇일까에 대해 생각하며 발표 준비 방식을 계속해서 개선해나아가고자 합니다.
[코치님 조언]
[발표의 의도]
SW 개발자로써 HW란 무엇인가?
→ hw는 알아서 잘 움직이지만, 어떤식으로 움직이고 최적화를 시키면서 효율적인 개발할 수 있다.
요즘 sw 개발자도 HW를 잘아야 좋다
스스로 HW적 난제를 풀어나가야한다. 그래야 더 많은 경험과 배움을 얻을 수 있다.
사실상 성능 저하시 EC2의 성능을 올리는 방식이 있지만(비쌈), HW를 이해한 개발자는 최적화를 통해 개발하고 있는 프로그램의 성능을 올릴수도 있다. EC2의 성능을 올리는 것은 돈이 더 들기 때문에, HW를 이해한 개발자는 레이턴시를 줄이기 위한 치트키가 될 수 있다.(성능을 올림)
x86 확인해보면 모든것이 해결된다.
AI기술이 발전함에 따라 HW와 SW 융합 기술은 상시 중요하게 여겨질 것이다.
16시에 도커 기본 환경 설정에 대한 설명이 있었으나 안갔다. 기초적인 내용이고 오늘 할 일이 너무 많다.
먼저 코드 리뷰를 수행하여 6주차 코드에 관한 내용을 마무리하겠다. 내 코드를 리뷰 받는대로 동료 평가도 실시하겠다.

커널에서 어떻게 시스템의 자원을 구성하는지? 알아보겠다.
하드웨어: CPU, 디스크, 메모리
전체적으로 조작하는 것을 운영체제라고 한다.
초기의 어셈블리어 유닉스
C언어의 특징
유닉스 특징
리차드 스톨만의 GNU 프로젝트 시작
-> 교육용 리눅스인 minix를 보고 유닉스 시스템을 보고 리눅스를 개발하기 시작함
이후 리눅스와 GNU 소프트웨어가 합쳐져 GNU / Linux 탄생
유닉스 운영체제 구조
커널이 OS의 핵심이다.
대략적인 구조도
하드웨어 ← 커널 제어 ← 시스템콜 ← shell, 라이브러리 ← 응용프로그램
c언어의 stdin, stdout이 파일이다. printf() 코드를 쓰면 write() 시스템 콜을 사용한다. 그러나 사용자는 이 과정을 보지 못한다. 내부적으로 처리하기 때문이다. 그래서 이게 추상화이다.
시스템 호출
커널은 직접 서비스를 요청한다.
위의 방식은 프로그래밍 시 시스템 직접 접근해서 로우레벨까지 제어할 수 있지만, 남용하면 여러가지 문제가 발생할 수 있다.
휴식

공부하는 방법
위와 같이 공부할 수 있고 진로와 취업 버즈빌에 대해서 알아보는 시간을 가졌다.
동료 피드백을 깃허브 코드 리뷰가 되지 않아 추후에 동료 평가를 하겠다.
시놀로지 SFTP 환경 세팅을 할려 했다가 그냥 나중에 너무 필요하면 사용하도록 결정했다.
햄버거 식사를 하고 왔다. 저녁을 못먹었기 때문이다.(마지막 팀원 날 기념)

일단 어제자 벨로그를 빠르게 정했다.
퀴즈 복습, 노션 정리, 벨로그 / 티스토리 정리, 컴퓨터 시스템 정리, 시놀로지 작업 등 해야할 일이 많다.
동적 메모리 할당을 왜 쓰는가? → 어떤 형식의 함수를 효과적이고 동적으로 할당하기 위해 사용한다.
동적 메모리 할당은 malloc이 한다.
다음주에는 뭘 할까?
메모리가 삭제되거나 삽입시, 얼마나 메모리를 효율적으로 조절하냐가 다음주의 점수에 큰 영향을 미친다.
단편화
가용블록 할당에 대한 알고리즘(정책)
경계 태그 사용(4가지 케이스)
명시적 가용 리스트: 유저가 만든 가용 리스트
묵시적 가용 리스트: 자바나 파이썬의 가비지 컬렉션(스케줄링과 같은 때에 따라 메모리를 비워줌)
파이프라인: 어떤 인스트럭션을 만나면 MLPS 5단계를 쓴다.
MLPS 5단계
Fetch → decode → excute → mem → write-back
인스트럭션 1이 Fetch를 하고 decode를 할시 한 클록마다 한번씩 지나가는데, 뒷 단계로 간다.
fetch는 놀고 있으니 인스트럭션 2를 fetch 시킨다. 뒷엣 단계가면 다른 인스트럭션이 계속 들어온다.
계속 이러면서 CPU단에서 처리 작업의 효율을 5배이상 늘린다.
-> MLPS 5단계가 아닌 3,4 단계들도 있으나 5단계가 많이 쓰인다.
이어서 퀴즈를 정리하겠다. 자리를 이사하고 퀴즈를 다시 복습했다. 퀴즈 관련된 내용은 따로 포스팅 하겠다.
퀴즈를 하다가 시놀로지 리눅스 말록랩 작업하다가 깃 clone이 안되서 헤멧다. 모든 방법을 써봤는데 안되서 내일 다시와서 해봐야겠다. 오늘은 6주차 마무리를 확실히 하겠다.