
CS 미션 3주차
운영체제
메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
레지스터
가장 빠른 기억 장소로 CPU내에 존재.
휘발성 메모리
캐시
레지스터와 메인 메모리 사이에 존재하는 메모리
레지스터와 메인 메모리 데이터 속도의 차이 때문에 필요한 데이터를 미리 갖고와서 저장하는 공간
메인 메모리
실제 운영체제와 다른 프로세스가 올라가는 공간
휘발성 메모리
보조 저장 장치
전원이 공급되지 않아도 데이터가 지워지지 않는 비 휘발성 메모리
2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터
CPU내에 존재하는 레지스터로 메모리 관리자는 사용자 프로세스가 경계 레지스터의 값을 벗어 났는지 확인하고, 침범했다면 사용자 프로세스를 종료 시킴.
메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변 분할 방식
메모리에 연속된 공간에 할당 되기 때문에 낭비되는 공간인 내부 단편화가 없음
외부 단편화가 발생
고정 분할 방식
구현이 간단하고 오버헤드가 적음
작은 프로세스도 큰 공간에 할당 되면 내부 단편화 발생
CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱
HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
실행이 가능하긴 하나 일반 메모리에 파일을 저장 및 운영체제를 저장하는 방식은 비효율적이라 HDD 또는 SSD가 필요하다.
파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
파일이 직접 삭제되는게 아닌 Free Block List에 파일의 사용 공간이 등록되고 블록은 남아 있기 때문.
자료구조와 알고리즘
지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블 정렬
이해와 구현이 간단
좋지 않은 성능
O(n^2)
선택 정렬
이해과 우견이 간단
좋지 않은 성능
O(n^2)
삽입 정렬
이해과 우견이 간단
좋지 않은 성능
O(n^2)
병합 정렬
성능이 좋음
이해와 구현이 어려움
O(nlogn)
퀵 정렬
성능이 좋음
이해와 구현이 어려움
Θ(nlogn)
메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
메모리가 부족한 시스템에서는 메모이제이션 대신 타뷸레이션을 사용
메모이제이션은 중복 계산이 발생하여 성능 및 메모리 문제가 발생하지만 타뷸레이션은 중복된 값들을 저장하고 있어 중복 실행이 방지됨.
댓글을 작성해보세요.