
인프런 워밍업 클럽 CS 3기 3주차 발자국
✏ 학습회고
3주차 운영체제 강의에서는 가상메모리, 입출력장치, 파일시스템을 공부했습니다. 알고리즘은 설명만 듣고 구현해보니 훨씬 더 깊이 이해할 수 있었습니다.
🎯 미션
운영체제
메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
레지스터 : 가장 빠른 기억장치로 CPU내 존재
캐시 : 메인 메모리의 값을 레지스터로 옮기려면 한참 걸리므로 필요할 것 같은 데이터를 미리 가져와 저장
메인 메모리 : 운영체제와 다른 프로세스들이 올라가는 공간
보조저장장치 : 비휘발성 메모리로 데이터를 저장하는 공간
사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터.
경계 레지스터는 사용자 프로세스가 경계 레지스터 값을 벗어났다면 프로세스를 종료시킨다
메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변 분할 방식은 프로세스가 크면 메모리도 크게 할당하여 내부 단편화가 없지만 외부 단편화가 발생한다.
고정 분할 방식은 프로세스의 크기와 상관없이 메모리를 할당하여 구현이 간단하고 오버헤드가 적지만 공간이 낭비되는 내부단편화가 발생한다.
CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱
HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
HDD나 SSD에는 운영체제가 저장되어 있기 때문에 컴퓨터를 실행시키는데 꼭 필요합니다.
파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
파일을 삭제하면 파일시스템은 파일의 모든 정보를 지우는 것이 아니라 파일 테이블에서 헤더를 지우는데, 마치 파일이 삭제된 것처럼 보인다. 하지만 사용했던 블록데이터는 그대로 있기 때문에 복구가 가능하다.
자료구조와 알고리즘
지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블정렬, 선택정렬, 삽입정렬
이해하기 쉽고 구현하기도 간단하다
성능이 좋지않다
시간 복잡도 O(n^2)
병합정렬
성능이 좋다
이해와 구현이 어렵다
시간 복잡도 O(n log n)
퀵정렬
병합정렬보다 적은 비교와 적은 메모리 공간을 차지한다
성능이 좋다
이해와 구현이 어렵다
시간 복잡도 O(n^2), ∂(n log n)
메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
타뷸레이션을 이용하겠습니다. 타뷸레이션은 메모리를 적게 사용하므로 메모리가 부족한 시스템에서 적절합니다.
📝회고
병합정렬과 퀵정렬은 설명이 어려워서 강의를 반복해서 들었습니다.
기간 내 강의를 모두 수강하여 완주를 했는데 뿌듯함을 느꼈습니다. 앞으로도 인프런 강의를 통해서 성장하는 개발자가 되고 싶습니다.
댓글을 작성해보세요.