[워밍업 클럽] CS 전공지식 3주차 미션
운영체제
1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
레지스터
가장 빠른 기억 장소
CPU내 존재
휘발성 메모리
크기로 구분 — 32비트/64비트 CPU
캐시
레지스터와 메인 메모리 사이에 존재
휘발성 메모리
필요할 것 같은 데이터를 미리 가져와 저장하는 곳
성능의 이유로 여러 개 — L1/L2/L3 …
메인 메모리
실제 운영체제와 다른 프로세스가 올라가는 공간
휘발성 메모리
보조 저장장치(HDD, SSD)
비휘발성 메모리
2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터
3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변 분할 방식
프로세스의 크기에 따라 메모리를 나누는 방식
메모리의 연속된 공간에 할당되어 내부 단편화(낭비되는 공간)가 없음
외부 단편화 발생
고정 분할 방식
프로세스의 크기와는 상관없이 메모리를 정해진 크기로 나누는 방식
구현이 간단하고 오버헤드가 적음
작은 프로세스도 큰 공간에 할당되어 공간이 낭비되는 내부 단편화 발생
4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱
5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
이유를 함께 적어주세요.
컴퓨터를 실행시키는데 꼭 필요하지는 않지만 데이터를 저장하기 위해 필요하다고 생각합니다.
6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
특정 파일 삭제 시 파일 시스템은 파일의 모든 정보를 지우는 것이 아니라 파일 테이블에서 해당 파일의 헤더만 삭제하고 사용했던 블록을 free block list에 추가합니다. 즉, 사용했던 블록의 데이터는 그대로 남아있기 때문에 파일을 복구할 수 있습니다.
자료구조와 알고리즘
1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블정렬
시간복잡도 : O(N^2)
장점 : 이해와 구현 쉬움
단점 : 성능이 좋지 않음
선택 정렬
시간복잡도 : O(N^2)
장점 : 이해와 구현 쉬움
단점 : 성능이 좋지 않음
삽입 정렬
시간복잡도 : O(N^2)
장점 : 이해와 구현 쉬움
단점 : 성능이 좋지 않음
병합 정렬
시간복잡도 : O(nlogn)
장점 : 성능이 좋음
단점 : 이해와 구현이 어려움
퀵 정렬
시간복잡도 : O(nlogn)
장점 : 성능이 좋음
단점 : 이해와 구현이 어려움
2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.
여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
타뷸레이션을 이용하겠습니다.
메모이제이션은 재귀를 이용해 복잡한 문제를 쉽게 해결할 수는 있으나 속도를 위해 메모리를 더 많이 이용하게 됩니다. 메모리가 부족한 시스템에서는 타뷸레이션을 이용해 메모리를 절약하고 속도도 빠르게 해결할 수 있습니다.
댓글을 작성해보세요.