인프런 워밍업 클럽 스터디 3기 - CS 전공지식 (운영체제, 자료구조, 알고리즘) 미션
운영체제
메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
주기억장치(RAM): 실행 중인 프로그램과 데이터를 저장하는 공간, 속도가 빠름, 전원이 꺼지면 데이터가 소멸된다
보조기억장치(HDD/SSD): 데이터를 영구적으로 저장하는 공간, 속도가 느림, 비휘발성이라 전원이 꺼져도 데이터 유지된다
가상 메모리(Virtual Memory): RAM이 부족할 때 보조기억장치를 임시 메모리처럼 사용한다, 실행 가능한 프로그램 크기를 확장할 수 있다
레지스터(Register): CPU 내부에 있다, 용량이 작고 가장 빠른 속도, 연산이나 명령어를 실행하는 것에서 직접 사용된다
캐시 메모리(Cache Memory): CPU와 메인 메모리 사이에 있고 속도를 높이는 역할을 한다, 자주 사용하는 데이터를 저장하고 빠르게 접근할 수 있다
사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
-> 경계레지스터: CPU내에 존재하며, 메모리 관리자가 사용자 프로세스가 경계레지스터의 값을 벗어났는지 검사하고 만약 벗어난 경우 그 프로세스를 종료한다.
메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
-> 가변분할방식은 메모리를 동적으로 할당해서 공간을 활용하는 것이 유용한 장점이 있다. 하지만 연속된 공간이 부족한 경우에는 압축이 필요하다.
-> 고정분할방식은 관리가 간편하고 쉽다는 장점이 있지만, 프로세스 크기에 따라서 미리 메모리를 나눠야 하기 때문에 공간의 낭비가 심하다.
CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
-> 스레싱
5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
이유를 함께 적어주세요.
-> 필수적이지는 않지만, OS가 저장되어있지 않으면 부팅이 불가능하므로 일반적으로는
파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
-> 실제 데이터가 삭제되지 않고 사용했던 블록의 데이터가 그대로 남아있기 때문이다. 따라서 새로운 데이터를 덮어쓰기 전에는 복구할 수 있다.
자료구조와 알고리즘
1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블정렬: 이해가 쉽고 구현이 간단, 성능이 좋지못함, O(n²)
선택정렬: 이해가 쉽고 구현이 간단, 성능이 좋지못함, O(n²)
삽입정렬: 이해가 쉽고 구현이 간단, 성능이 좋지못함, O(n²)
병합정렬: 이해와 구현이 어려움, 성능이 좋음, O(n log n)
퀵정렬: 이해와 구현이 어려움, 성능이 좋음, 평균적으로 O(n log n), 최악의 경우는 O(n²)
메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.
여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
-> 메모리가 부족하다면 타뷸레이션을 이용한다. 왜냐하면 메모리를 최소로 사용할 수 있고, 빠른 속도로 해결할 수 있기 때문이다.
댓글을 작성해보세요.