[인프런 워밍업 클럽 3기] CS - 3주차 미션
[인프런 워밍업 클럽 3기 - CS 전공지식 스터디]의 3주차 미션 내용을 작성한 글입니다.운영체제Q1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.A1.- 레지스터(Register) - CPU 내부에 있는 매우 작은 용량의 초고속 메모리 - 명령어 수행에 직접적으로 사용되며, 접근 속도가 가장 빠름- 캐시(Cache) - CPU와 메인 메모리(RAM) 사이에 위치하는 고속 메모리 - 접근 속도는 레지스터보다는 느리지만, 메인 메모리보다 훨씬 빠름- 주기억장치(Main Memory, RAM) - 프로그램이 실행되는 동안 데이터를 저장하는 휘발성 메모리 - 전원이 꺼지면 데이터가 사라짐- 보조기억장치(Secondary Storage, HDD/SSD 등) - 데이터를 영구적으로 저장하는 장치 - RAM보다 훨씬 큰 용량과 비교적 저렴한 가격을 가짐 Q2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?A2. 경계 레지스터, 접근 주소가 올바른 범위 내인지 확인해 불법 접근을 차단한다. Q3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?A3.- 고정 분할 방식 - 구현이 단순하고 관리가 쉬움 - 메모리를 효율적으로 사용하기 어렵다.- 가변 분할 방식(Variable Partitioning) - 필요한 만큼 동적으로 메모리를 할당 - 압축 등의 추가 작업이 필요할 수 있음 Q4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?A4.스래싱(Thrashing), 너무 많은 프로세스를 동시에 메모리에 두려다가, 실제로는 페이지 부재가 연속으로 발생하고 디스크 스왑 작업만 과도하게 일어나 CPU가 작업을 거의 못 하게 된다. Q5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요.A5.- HDD나 SSD와 같은 보조기억장치가 있어야 운영체제를 설치하고 부팅할 수 있다.- 하지만 외부 저장장치 없이도 OS를 구동할 수 있습니다.- 즉, 일반적 PC에서 표준 운영체제를 쓰기 위해서는 HDD/SSD 가 거의 필수적이나, 특수 환경이나 임시 부팅을 통해서면 꼭 필요지는 않다. Q6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?A6.- 운영체제의 파일 시스템은 파일을 삭제할 때 실제 데이터 영역을 즉시 ‘0’으로 지우기보다, 파일에 대한 메타데이터를 지우거나 갱신하는 방식으로 처리하는 경우가 많습니다. - 실제 데이터 블록 자체는 덮어쓰기가 일어나지 않는 한 그대로 남아있기 때문에, 이를 전문적인 포렌식 기법을 통해 스캔하면 파일이 부분적 또는 완전히 복구될 수 있다.자료구조와 알고리즘 Q1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.A1.- 버블정렬: 구현이 간단하지만 비효율적, O(n²)- 선택정렬: 메모리 쓰기가 상대적으로 적음, 수행 시간이 오래 걸림, O(n²)- 삽입정렬: 정렬되어 있거나, 데이터 개수가 적을 때 빠름, 역순으로 정렬된 경우 비효율적, O(n²)- 병합정렬: 최악의 경우에도 O(n log n)으로 동작, 추가적인 메모리 공간이 필요, O(n log n)- 퀵정렬: 평균적으로 매우 빠름, 평균적으로 O(n log n), 최악의 경우는 O(n²) Q2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.A2.메모리가 부족한 시스템이라면, 재귀 호출 스택을 많이 쓰는 메모이제이션보다는 반복문 기반의 타뷸레이션 방식을 이용할 것이다.- 타뷸레이션 방식을 이용하면 스택 오버플로를 방지하고, 함수 호출 오버헤드를 줄일 수 있다.