인프런 워밍업 클럽 2기 - CS 전공지식 스터디 3주차 마지막 발자국
3주차 회고
1주일에 3회 발표 하는 방식의 복습 스터디가 3주만에 드디어 끝이 났다.
팀원 분들이 없었다면 나는 아마 완강도 못했을것같다.
사실 이렇게 1주일에 3번의 스터디를 한다는거와 그중 1번은 무조건 발표 해야 한다는것은 굉장히 부담이다.
근데 무려 참석률 100% 를 달성하며 무사히 스터디를 마칠 수 있었던것은 정말 좋은 스터디원들을 만났기 때문이다.
스터디는 확실히 나에게 좋은 영향력을 끼친것 같다. 우선적으로 내가 공부하는 방법에 대해서 고민하게 되었다. 원래 내가 강의를 공부하는 방법은 강의를 한번 보면서 중요한것들만 요약하면서 공부를 했었다. 근데
A팀원분은 강의를 보면서 1차 정리를 하고 그다음에 한번더 2차정리를 하신다고 한다. 그러한 과정에서 이제 그림 그리면서 내용을 정리 하시는데 확실히 이렇게 2회독 정도 하면서 그림과 설명을 붙여가면서 정리를 하니까 복습도 잘되고 이해도 잘되는것 같았다.
B팀원분은 강의를 빠르게 1번 보고 2번째 볼때 꼼꼼하게 정리를 하신다고 하셨다. 근데 꼼꼼하게 정리한다는것이 나 같은 경우에는 강의에 있는 내용들만 보통 보고 넘어간다면 이분은 좀 더 자세하게 다른 서적이나 자료들을 찾아보면서 연관되는 내용들도 함께 공부하신다. 확실히 CS 개념들을 정확하게 짚고 넘어가려면 이렇게 꼼꼼하게 공부하는게 맞는것 같다. 왜냐하면 운영체제에 대한 질문이 들어오고 강의에 대한 내용만 기억하고 있다면 첫번째 질문에는 답변 할 수 있겠지만 그에 맞는 꼬리 질문이 들어온다면 아마 대답하지 못할것이기 때문이다.
앞으로 나에게 맞는 공부방법을 변형해가면서 연구 해봐야겠다. 추가적으로 해당 CS정리를 잘 하고 난후에 어떻게 해당 내용들을 개발 관련일을 하면서 휘발 되지 않고 오래 기억에 가져갈 수 있는지에 대한 고민도 해봐야겠다.
끝으로 마지막 발표 자료 캡쳐로 마무리 짓겠다.
3주차 학습 요약
운영체제
가상메모리 개요: 물리 메모리의 한계를 극복하여 프로그램이 실제 메모리 크기와 상관없이 실행될 수 있게 해줌. 스왑 영역과 함께 사용.
세그멘테이션과 페이징:
세그멘테이션: 프로그램을 함수나 모듈로 나누어 할당. 외부 단편화 o, 내부 단편화 x
페이징: 메모리를 동일 크기로 나누어 할당. 외부 단편화x . 내부 단편화 o
혼용기법 (페이지드 세그멘테이션): 세그멘테이션과 페이징의 장점을 결합.
디맨드 페이징: 자주 쓰이는 데이터만 메모리에 로드. 페이지 교체 알고리즘 사용.
스레싱과 워킹셋: 과도한 스왑 작업으로 인해 성능 저하가 발생하는 현상. 워킹셋은 자주 쓰이는 페이지 집합을 유지.
주변장치: 캐릭터 디바이스(마우스, 키보드)와 블록 디바이스(하드디스크, SSD)로 구분됨. DMA로 메모리에 접근.
파일과 파일시스템: 파일 관리자는 파일 생성, 수정, 삭제, 권한 관리 등을 수행. 디렉토리는 파일을 체계적으로 관리하기 위한 구조.
자료구조와 알고리즘
정렬 알고리즘:
삽입정렬: 이미 정렬된 부분에 새 값을 삽입. 시간복잡도 O(n²).
병합정렬: 재귀적으로 나눈 후 병합. 시간복잡도 O(n log n).
퀵정렬: 피벗을 기준으로 좌우 분할. 평균 시간복잡도 O(n log n), 최악 O(n²).
동적 프로그래밍:
메모이제이션: 재귀로 계산 시 결과를 저장해 중복 계산을 피함. 하향식 접근.
타뷸레이션: 상향식으로 필요한 값을 모두 미리 계산해 테이블에 저장.
댓글을 작성해보세요.