21년 1월 21일
~
한 일
- 프로세스와 스레드의 차이점에 대해 공부하였다.
- 프로세스는 메모리에 적재하여 실행가능한 상태의 작업 단위이다.
- 스레드는 프로세스에 할당된 메모리 자원을 이용하여 실행되는 프로세스 내의 독립 실행 흐름이다.
- 스레드 간의 Context Switch는 레지스터 값과 Stack Pointer만 변경하면 되기 때문에 Process의 Context switch보다 빠르다.
- 스레드는 Stack영역 이외의 공간을 공유하기 때문에, 스레드 간의 통신이 쉽다.
- Process vs Thread
- OperatingSystem Three Easy Pieces 책을 80 page까지 읽었다.
- 운영체제의 주요 컨셉인 CPU 가상화, 메모리 가상화, 동시 실행, 영속성을 배웠다.
- 프로세스가 실행되는 과정을 배웠다.
- 커널 모드로의 전환과 프로세스 간의 컨텍스트 스위치 과정에 대해 배웠다.
- 커널 권한과 이에 따른 시스템 콜, 트랩 핸들러에 대해 배웠다.
- 프로그래머스 문제 불량 사용자, 단속카메라를 풀었다.
- 불량 사용자:
- 처음에 쉽게 접근했다가 복잡하다는 것을 깨달았다.
- DFS로 풀었는데, HashSet을 남발하여 다소 찜찜하다.
- DFS안에 현재까지의 불량 사용자 목록을 HashSet으로 담는다.
- 모든 밴 리스트를 참고하여 HashSet을 완성했으면 HashSet의 HashSet에 추가하여 중복을 제거한다.
- HashSet의 HashSet의 size()가 정답의 개수가 된다.
- 단속카메라:
- Greedy 문제였다.
- 구현은 매우 쉬운데 아이디어를 떠올리는게 정말 어려웠다.
- 각 Route의 end 지점을 기준으로 오름차순 정렬을 한다.
- end 지점을 기준으로 오름차순 정렬했기 때문에, 자신이 설치해야 하는 최선의 경우는 자신의 end지점에 설치하는 것이다.
- 정렬한 Routes를 순회하다가, 마지막에 설치한 카메라가 자신의 범위 안에 없으면, 자신의 end 위치에 카메라를 설치한다.
- 마지막에 설치한 카메라가 자신의 범위 안에 없으면 자신은 카메라를 안지나치는 것이다.
- 그 이유는 end를 기준으로 오름차순 정렬했고 이것을 순회하며 카메라를 설치하기 때문이다.
- 마지막에 설치한 카메라는 항상 설치된 카메라 중 제일 뒤쪽에 있는 카메라이다.
- 따라서 앞에 설치한 카메라가 자신의 범위 안에 있는데, 마지막 설치한 카메라가 자신의 범위 안에 없을 경우는 없다.
잘못한 것
잘한 것
- OS를 오랜만에 복습하고, 글로 정리하여 포스팅하였다.
- 레벨 3 카카오 문제를 한번에 풀었다 (80분 걸림)
- greedy문제를 끈질기게 생각해서 해결방법을 알아냈다 (50분 걸림)
느낌
- 오랜만에 OS를 복습했는데, 생각보다 까먹은게 많아서 아쉬웠다.(3학년때 정말 열심히 했는데 ㅠㅠ)
- 그래도 빠르게 읽고 다시 기억할 수 있어서 공부하길 잘했다는 생각이 든다.
- 카카오 문제 풀긴 했는데 HashSet의 HashSet을 쓴게 찜찜하여 다른 사람은 어떻게 풀었는지 참고해야겠다.
할 일
- 코드스쿼드 미션하기
- 프로그래머스 문제 풀기
- TCP/IP 쉽게 더쉽게 읽기