[인프런 워밍업 클럽 CS 2기] 3주차 발자국
이번 주에는 운영체제와 자료구조 및 알고리즘에 대한 심도 깊은 학습을 진행하였다.
특히 운영체제의 기초부터 고급 개념까지 폭넓게 다루며, 이론과 실습을 통해 이해도를 높였다.
운영체제
우선, 메모리의 종류에 대한 이해를 심화했다.
레지스터, 캐시, 메인 메모리, HDD/SSD 각각의 속도 차이를 인지하면서,
각 메모리가 시스템에서 어떤 역할을 하는지 명확히 알게 되었다.
특히, 물리주소와 논리주소의 개념을 통해 메모리 관리의 중요성을 깨달았다.
메모리 할당 방식으로는 가변 분할 방식과 고정 분할 방식을 배웠고,
두 방식의 장단점을 이해하며 현대 시스템에서 왜 버디 시스템과 같은 혼합 방식을 사용하는지에 대한 통찰도 얻었다.
가상 메모리의 원리는 매우 흥미로웠다. 프로그램이 실제 메모리 크기와 상관없이 실행될 수 있게 해주는 이 기술을 통해,
메모리 사용의 효율성을 크게 향상시킬 수 있다는 점을 배웠다.
또한, 디맨드 페이징, 세그멘테이션, 페이징 등 메모리 주소 변환 기법에 대한 이해가 깊어지면서,
이들이 시스템 성능에 미치는 영향을 고려할 수 있게 되었다.
특히, 스레싱과 워킹셋 개념을 통해 과도한 스왑 작업으로 인한 성능 저하 현상을 이해하게 되었다.
이와 함께 주변장치의 구분 및 파일 시스템의 구조에 대해서도 배웠으며, 파일 관리의 중요성을 다시 한번 깨닫게 되었다.
다양한 파일 구조의 특징을 정리하면서 각 구조의 장단점을 비교하고, 실제 응용에서의 활용 가능성을 고민해 보았다.
자료구조와 알고리즘
자료구조와 알고리즘에서는 정렬 알고리즘의 기초를 다지는 데 주력했다.
버블, 선택, 삽입 정렬과 같은 구현이 간단하지만 성능이 떨어지는 알고리즘과, 병합 정렬 및 퀵 정렬과 같은 성능이 뛰어난 알고리즘의 차이를 비교하며 각 알고리즘의 특징을 파악했다.
각 정렬 알고리즘의 시간 복잡도를 분석하면서, 어떤 상황에서 어떤 알고리즘이 적합한지를 고민해보는 기회가 되었다.
또한, 동적 프로그래밍의 두 가지 기법인 메모이제이션과 타뷸레이션을 깊이 있게 이해하게 되었다.
메모이제이션은 재귀를 사용하여 중복 계산을 피할 수 있게 해주며,
타뷸레이션은 필요한 값을 모두 미리 계산해 테이블에 저장하는 방식으로,
각각의 장단점과 적용 가능성을 분석하는 데 중점을 두었다.
3주차 회고
이번 주는 운영체제와 자료구조 및 알고리즘 강의를 모두 마치게 되어 매우 기쁘다.
강의를 통해 시스템의 작동 원리와 알고리즘의 이론을 명확히 이해할 수 있었고,
혼자서는 경험하지 못했을 깊이 있는 학습이 이루어졌다.
특히 가상 메모리와 동적 주소 변환 개념은 흥미롭고 유용했다. 메모리 관리의 중요성을 깨닫고,
스레싱과 워킹셋의 이해를 통해 성능 최적화에 대한 고민을 하게 되었다.
강의를 통해 배운 이론들을 실제로 어떻게 적용할 수 있을지 고민하며,
더 나아가 이 지식을 바탕으로 실무에서도 활용할 수 있는 방법을 찾아보려 한다.
강의를 제작하고 이끌어주신 감자 님에게도 깊은 감사의 인사를 전하고 싶다.
향후 더 많은 강의를 수강할 기회를 기대하며, 앞으로도 계속해서 배우고 성장해 나갈 예정이다.
이 경험이 나의 개발자로서의 길에 큰 밑거름이 될 것이라 확신한다.😁
댓글을 작성해보세요.