운영체제 스터디
- https://github.com/orgs/gochu-charmchi/discussions
- 인원 : 카카오 테크 부트캠프에서 만난 4명
- 상황 : 12챕터 완료 (12주차 완료)
- 소재 : 운영체제 공룡책 1주 1챕터씩
공룡책(전공책)으로 공부하였고, 이제는 네트워크로 옮겨가면서 마무리 글을 쓰려고 한다.
모든 내용을 정리할 수는 없고, 그럴 필요도 없기 때문에 내가 배우게 된 점을 기준으로 정리해보고자 한다.
주요하게 배우게 된 점은 다음과 같다.
- 운영체제에서 메모리 관리, 파일 관리, 프로세스 관리 등이 어떻게 작동하는가?
- 운영체제에서 사용하는 개념
- 알고리즘, 자료구조 Use case
운영체제의 작동 방식
운영체제의 작동 방식을 이해할 수 있게 되었다.
- 왜 컨텍스트 스위칭이 일어나는가?
- 커널 모드와 사용자 모드는 왜 나뉘어 있는가?
- 논리 주소와 물리 주소를 분리하는 것이 왜 중요한가?
- 가상 메모리란 무엇이고 어떻게 작동하는가?
위와 같은 질문들을 들었을 때, 그냥 단어로 이해하고 있었던 것을 넘어서 이제는 그림을 그려가며, 흐름을 따라가며 설명할 수 있게 되었다.
물론!
운영체제에 대한 이해가 완전하다고 할 수는 없다. (공부를 하면 할수록 내가 아는 것은 쥐꼬리만하고, 알아야 할 것은 산더미같다. 😅)
하지만!
운영체제에 대해서 알게 되면서,
- 프로그래머의 역할과, 운영체제의 역할을 분리하여 생각할 수 있게 되었고,
- 어디까지 운영체제의 역할이고, 프로그래머(나)의 역할인지를 명확히 할 수 있었다.
운영체제에서의 개념
운영체제를 공부하면서 다양한 개념을 추가적으로 학습 할 수 있었다.
- 드라이버와 장치 컨트롤러
- DMA의 작동 방식
- RAID 구조
- 가상 메모리
물론!
코딩 테스트 하나 더 푸는게 당면과제(취업)에는 도움이 될 것이다.
하지만!
이러한 새로운 개념을 추가적으로 학습하는 것을 중요하다고 생각하는 이유는, 비슷한 패턴, 디자인, 아키텍처가 등장하기 때문이다.
비슷한 문제를 해결하기 위해서는 비슷한 구조를 사용하게 된다고 생각한다.
Use case
알고리즘, 자료구조, 디자인 패턴 등의 Usecase 자료로 훌륭한 교재가 되었다.
운영체제에서는FIFO(FCFS), 생산자-소비자, 큐, 힙, 스택 등 많은 단어가 등장하는데, 책을 정독하면서 알고리즘에 대한 이해를 높일 수 있었다.
풀어서 설명하자면, 책에서는 거의 일관적으로 다음과 같은 순서로 설명을 한다.
- 문제 : 해결해야하는 문제가 무엇인가?
- 해결 :해결 방법은 무엇인가?
- 탐구 : 해결 방법의 장점과 단점과 다른 해결 방법들
- 정리 : 해결 방법으로도 해소할 수 없는 문제들
이러한 과정을 같이 따라가면서, 문제에 대해 해결 방법을 선택하고 장점, 단점에 대해서 체크하는 눈을 더 기를 수 있었던 것 같다.
”트레이드 오프”가 항상 중요하게 생각하는 나는 이런 부분이 좋았다.
결론
어떤 사람들은 당연히 공부해야한다고 말하고, 어떤 사람들은 다른거 하는게 낫겠다고 말하지만.
결국 진행했고, 결국 끝냈다.
좋은지 나쁜지는 잘 모르겠으나, 확실한 것은 뿌듯하고, 후련하고,
12주 전의 나보다 더 나은 내가 되었다는 점이다.
+) 같이 하는 사람들 덕분에 재밌게, 끈기있게 할 수 있었고, 잘못된 이해를 바로잡을 수 있었다. 땡큐!