마지막 미션
운영체제
1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
레지스터
휘발성 메모리
CPU 내부에 있는 메모리로 ALU의 계산을 위한 값들을 저장하는 용도.
캐시 메모리
휘발성 메모리
레지스터와 RAM사이의 데이터 이동 작업으로 인한 병목 현상을 줄이기 위한 메모리
RAM
휘발성 메모리
프로그램을 실행시키면 해당 메모리에 올라가서 프로세스가 된다.
보조저장장치
비휘발성 메모리
HDD, SSD
파일 저장 공간으로 사용된다.
메모리 크기가 작은 메모리일수록 비싸고 데이터 전송이 빠르다
2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터 / CPU내에 존재하는 레지스터로 메모리 관리자가 사용자 프로세스가 경계 레지스터의 값을 벗어났는지 검사하고 만약 벗어났다면 해당 프로세스를 종료시킨다.
3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변 분할 방식
장점
메모리 영역을 모듈로 처리할 수 있기에 공유와 각 영역에 대한 메모리 접근 보호가 편리하다.
영역별로 분할돼서 관리가 쉽다.
단점
외부 단편화가 발생한다.
고정 분할 방식
장점
외부 단편화를 해결
효율적인 메모리 관리
단점
내부 단편화
특정 영역에 대한 공유, 권한 부여가 어렵다.
페이지 테이블의 메모리 오버헤드
페이지 폴트로 인한 오버헤드
4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱 / 제한된 물리 메모리에 의해 스왑 영역에 데이터가 많이 저장되고 Page Fault가 많이 발생하게 되면 스왑을 하는데 이 작업에 의한 오버헤드로 CPU 사용률이 떨어지며, 이를 통해 CPU 스케줄러에 의해 CPU 사용률을 올리기 위해 메모리에 더 많은 프로세스를 올리며 CPU 사용률이 0%에 가깝게 떨어지게 된다.
5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
이유를 함께 적어주세요.
CPU를 동작하는데에는 운영체제가 필요한데, 메모리에서 비휘발성의 특성을 가진 메모리는 HDD나 SSD같은 보조저장장치 밖에 없기에 컴퓨터를 실행하기 위한 운영체제를 저장할 공간이 필요하다.
6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
파일 시스템은 효율적인 관리를 위해 빈 공간을 모아둔 free block list를 가지고 있고,
특정 파일을 삭제할 경우 파일의 모든 정보를 지우는 게 아닌 파일 테이블의 헤더를 삭제하고 free block list에 추가한다.
데이터는 지워진 게 아니라 복구가 가능한 상태이다.
자료구조와 알고리즘
1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블 정렬 : O(n²)
선택 정렬 : O(n²)
삽입 정렬 : O(n²)
병합 정렬 : O(nlogn)
퀵 정렬 : 평균 O(nlogn) / 최악 O(n²)
2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.
여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
타뷸레이션
메모이제이션을 통한 방식은 재귀를 통해서 하기에 함수 호출에 대한 메모리 비용 또한 발생하기에
타뷸레이션이 더 좋을 것 같습니다. 또한 반복문을 사용하기에 메모리의 크기가 어느 정도 예측 가능하다.
댓글을 작성해보세요.