인프런 워밍업 클럽 CS 2기 - 1주차 발자국
지난 일주일 동안의 강의 내용 중 일부를 발췌했습니다. 자세한 내용은 개인 노션 페이지에 타이핑했습니다.
자료구조와 알고리즘
자료구조: 데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타냄
예시: 변수, 배열
알고리즘: 어떤 문제를 해결하기 위한 확실한 방법
자료구조에 따라 알고리즘이 달라짐. 즉, 자료구조에 많은 영향을 받음
같은 자료구조더라도 여러 알고리즘이 있을 수 있음
시간 복잡도: 특정 알고리즘이 어떤 문제를 해결하는 데 걸리는 시간
특정 알고리즘의 성능을 평가할 때는 해당 알고리즘의 반복문을 보고 성능을 평가
스택: First In Last Out(FILO): 먼저 들어간 데이터가 나중에 나온다.
큐: First In First Out(FILO): 먼저 들어간 데이터가 먼저 나온다.
덱: 데이터의 삽입과 제거를 head와 tail 두 군데서 자유롭게 할 수 있는 자료구조
스택은 head에서만 처리할 수 있고, 큐는 head에서 삽입, tail에서 제거한다.
해시테이블: 해시와 테이블이 합쳐진 자료구조
테이블의 메모리를 적게 차지하고, 충돌이 덜 일어나도록 데이터를 골고루 분배시키는 좋은 해시 함수의 구현이 필수적
운영체제
커널
프로세스와 메모리, 저장 장치를 관리하는 핵심적인 기능을 담당
사용자는 커널에 직접 접근할 수 없으며, GUI/CLI를 통해 접근함
CPU를 구성하는 장치
산술 논리 연산 장치: CPU에서 실제로 데이터 연산을 담당하는 장치
제어 장치: 모든 장치들의 동작을 지시하고 제어하는 장치
레지스터: CPU 내에서 계산을 위해 임시로 보관하는 장치
메모리 종류
램(RAM): 랜덤으로 데이터를 읽어도 저장된 위치와 상관없이 읽는 속도가 같음. 전력이 끊기면 데이터를 잃어버리기 때문에 메인 메모리로 사용
롬(ROM): 전력이 끊겨도 데이터를 계속 보관할 수 있지만, 데이터를 한번 쓰면 수정할 수 없으므로, 컴퓨터의 부팅과 관련된 바이오스를 저장하는데 주로 사용
멀티프로그래밍
메모리에 여러 개의 프로세스가 올라온 것
멀티프로세싱
유니프로그래밍, 멀티프로그래밍을 메모리 관점에서 정의했다면, 멀티프로세싱은 CPU 관점으로 정의한 것
CPU가 여러 개의 프로세스를 처리하는 것
컨텍스트 스위칭
프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태 값으로 교체하는 작업
컨텍스트 스위칭이 일어날 때 PCB의 내용이 변경된다.
FIFO(First In First Out)
먼저 들어온 작업이 먼저 나간다는 뜻으로, 스케줄링 큐에 들어온 순서대로 CPU를 할당받는 방식
먼저 들어온 프로세스가 완전히 끝나야만 다음 프로세스가 실행될 수 있다.
회고
잘한 점
강의 계획 일정에 따라 밀리지 않고 들었다. 애매했던 개념을 잘 정리할 수 있어서 좋았다.
아쉬운 점
정해진 일정의 강의만 생각하다보니 생각의 유연함이나 확장이 부족했다. 주말 동안에 시간을 내서 보충했는데, 평일에 강의를 들으면서 조금만 더 시간을 투자하면 주말엔 다른 공부나 휴식하는 데 쓸 수 있을 듯하다.
목표
꾸준히 강의 듣고 학습하기
강의를 보면서 타이핑한 내용을 한 번만 보는 게 아니라 두 세번 보면서 이해하기
이전에 배웠던 내용도 꾸준히 복습하기
미션(https://inf.run/yyYhZ)
미션을 해결한 과정
한 주 동안의 강의 내용을 정리한 것을 보면서 미션을 해결했다. 강의에서는 나오지 않았지만, 비슷한 예시는 해당 강의를 다시 보면서 힌트를 얻었다.
회고
강의와 똑같은 내용이 미션에 나오기보다, 비슷한 유형을 낸 미션이었다. 처음 만났을 땐 막막했지만, 강의 내용을 되새겨보면서 힌트를 얻을 수 있었고, 해결했다. 이후 미션에 어떤 문제가 나올지 모르겠지만, 최대한 적용할 수 있도록 강의를 한 번 보고 끝내는 게 아니라 이해할 수 있도록 노력해야겠다.
댓글을 작성해보세요.