🎁 모든 강의 30% + 무료 강의 선물🎁

[인프런 워밍업 클럽 스터디 3기] CS - 3주차 미션

[인프런 워밍업 클럽 스터디 3기] CS - 3주차 미션

운영체제


1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.

컴퓨터에서 사용하는 메모리는 레지스터, 캐시, 메인메모리(RAM), 보조저장장치(HDD, SSD) 등이 있다.
- 레지스터는 CPU 내에 있는 가장 빠른 휘발성 메모리로, 비싼 가격과 작은 용량을 가지고 있다.
- 캐시는 미리 RAM에서 자주 사용하는 데이터를 가져와서 한다. 레지스터는 빠르나 RAM은 느리기 때문에 캐시에 데이터를 저장한다.
- RAM은 비싼 가격으로 인해 실행 중인 프로그램만 올라가는 공간으로 휘발성 메모리이다.
- 보조 저장장치는 용량이 크고 가격이 저렴하며 비휘발성 메모리이다.

 

  1. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?

경계 레지스터이다.
경계 레지스터는 CPU 내에 위치하며, 하드웨어적으로 운영체제 영역과 사용자 영역을 분리한다. 메모리 관리자는 사용자 프로세스가 경계값을 벗어났는 지 감시하고, 벗어났을 경우 그 프로세스를 종료한다.

 

  1. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?

가변 분할 방식의 장점은 프로세스 크기에 따라 메모리를 가변적으로 분할할 수 있어 내부 단편화가 발생하는 것이 적다. 단점은 메모리 공간보다 프로세스의 크기가 더 커서 외부 단편화가 발생할 수 있다.

고정 분할 방식의 장점은 메모리 할당 시 정해진 크기로 분할하기 때문에 관리와 구현이 간단하다. 단점은 프로세스 크기보다 큰 공간이 할당되면서 내부 단편화가 발생할 수 있다는 것이다.

 

  1. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?

CPU 사용률을 높이려 했지만 잦은 스왑으로 인해 CPU 사용율이 오히려 더 떨어지는 현상을 스레싱이라고 한다.

 

  1. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요.

HHD와 SSD는 컴퓨터를 실행시키는 데 반드시 필요하다. 이들은 운영체제와 프로그램을 저장하기 때문에 없을 경우 부팅에 실패하거나 소프트웨어를 실행할 수 없다.

 

  1. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?

파일을 삭제하면 파일 테이블에서 해당 파일의 헤더만 삭제되고, 삭제된 파일 자체는 free block list에 추가된다. 사용자는 파일 삭제 시 완전히 삭제된 것처럼 느끼나 실제로는 새 데이터로 덮어 쓰여질 때 까지 디스크에 남아있어 포렌식으로 파일을 복구할 수 있다.

 

알고리즘 & 자료구조


  1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.

버블 정렬 - O(n), 최악 O(n²)
구현하기 쉬우나 이중 for문으로 인해 성능이 좋지 않다.
선택 정렬 - O(n²)
구현하기 쉬우나 데이터가 많아질수록 비효율적이다.
퀵 정렬 - O(NlogN), 최악 O(n²)
병합 정렬보다 더 적은 비교를 하고 더 적은 메모리 공간 차지하지만 피벗 선택이 잘못되었을 경우 최악의 시간 복잡도를 가질 수 있다.
병합 정렬 - O(NlogN)
분할 정복 방식을 적용했다는 장점이 있지만 구현이 복잡하다.
삽입 정렬 - O(n²)
구현하기 쉽고, 이미 정렬되어있을 경우 효과적이다. 그러나 배열 크기가 커질수록 성능이 저하된다.

 

  1. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.

타뷸레이션 방식을 사용할 것이다.
타뷸레이션은 도출된 모든 중간 값을 테이블에 저장하지만, 일반 재귀나 메모이제이션과 비교했을 때 성능이 더 우수하다. 또한, 반복문으로 한 번에 계산을 처리할 수 있기 때문에 메모리가 부족한 시스템에서 더 적합할 수 있다.

채널톡 아이콘