[워밍업 클럽] CS 전공지식 3주차 미션

[워밍업 클럽] CS 전공지식 3주차 미션

운영체제

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

  • 레지스터

    • 가장 빠른 기억 장소

    • CPU내 존재

    • 휘발성 메모리

    • 크기로 구분 — 32비트/64비트 CPU

  • 캐시

    • 레지스터와 메인 메모리 사이에 존재

    • 휘발성 메모리

    • 필요할 것 같은 데이터를 미리 가져와 저장하는 곳

    • 성능의 이유로 여러 개 — L1/L2/L3 …

  • 메인 메모리

    • 실제 운영체제와 다른 프로세스가 올라가는 공간

    • 휘발성 메모리

  • 보조 저장장치(HDD, SSD)

    • 비휘발성 메모리

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

경계 레지스터

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

  • 가변 분할 방식

    • 프로세스의 크기에 따라 메모리를 나누는 방식

    • 메모리의 연속된 공간에 할당되어 내부 단편화(낭비되는 공간)가 없음

    • 외부 단편화 발생

  • 고정 분할 방식

    • 프로세스의 크기와는 상관없이 메모리를 정해진 크기로 나누는 방식

    • 구현이 간단하고 오버헤드가 적음

    • 작은 프로세스도 큰 공간에 할당되어 공간이 낭비되는 내부 단편화 발생

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

스레싱

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

컴퓨터를 실행시키는데 꼭 필요하지는 않지만 데이터를 저장하기 위해 필요하다고 생각합니다.

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

특정 파일 삭제 시 파일 시스템은 파일의 모든 정보를 지우는 것이 아니라 파일 테이블에서 해당 파일의 헤더만 삭제하고 사용했던 블록을 free block list에 추가합니다. 즉, 사용했던 블록의 데이터는 그대로 남아있기 때문에 파일을 복구할 수 있습니다.

 

자료구조와 알고리즘

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

  • 버블정렬

    • 시간복잡도 : O(N^2)

    • 장점 : 이해와 구현 쉬움

    • 단점 : 성능이 좋지 않음

  • 선택 정렬

    • 시간복잡도 : O(N^2)

    • 장점 : 이해와 구현 쉬움

    • 단점 : 성능이 좋지 않음

  • 삽입 정렬

    • 시간복잡도 : O(N^2)

    • 장점 : 이해와 구현 쉬움

    • 단점 : 성능이 좋지 않음

  • 병합 정렬

    • 시간복잡도 : O(nlogn)

    • 장점 : 성능이 좋음

    • 단점 : 이해와 구현이 어려움

  • 퀵 정렬

    • 시간복잡도 : O(nlogn)

    • 장점 : 성능이 좋음

    • 단점 : 이해와 구현이 어려움

     

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

타뷸레이션을 이용하겠습니다.

메모이제이션은 재귀를 이용해 복잡한 문제를 쉽게 해결할 수는 있으나 속도를 위해 메모리를 더 많이 이용하게 됩니다. 메모리가 부족한 시스템에서는 타뷸레이션을 이용해 메모리를 절약하고 속도도 빠르게 해결할 수 있습니다.

댓글을 작성해보세요.

채널톡 아이콘