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

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

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

3주차 미션


운영체제

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

    • 레지스터

      • CPU 내부에 있는 초고속 메모리

      • 용량이 적고 가격이 비쌈

      • 휘발성의 성질을 가져 컴퓨터가 종료되면 데이터도 같이 사라짐

    • 캐시 메모리

      • CPU와 RAM 사이에서 데이터 속도를 높이기 위한 메모리

      • 메인 메모리와 레지스터 사이 속도 차이가 있어서 필요한 데이터를 미리 가져와 저장하는 공간

    • 메인 메모리

      • 실행 중인 프로그램과 데이터를 저장

      • 휘발성 메모리

    • 보조기억장치

      • 데이터를 영구 저장하는 장치 (비휘발성)

      • 속도는 RAM보다 느리지만 대용량 저장 가능


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

    • 경계 레지스터

      • 프로세스가 접근할 수 있는 메모리의 최대 범위를 저장

      • 경계 레지스터 값을 벗어나면 프로세스를 종료


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

    • 고정 분할 방식 (Fixed Partitioning)

      • 장점:

        • 같은 크기로 나누어 관리가 쉽고 구현이 간단하며 오버헤드가 적음

      • 단점:

        • 내부 단편화 발생 → 프로세스가 할당된 파티션보다 작으면 공간 낭비

        • 파티션 크기를 적절히 설정해야 하므로 유연성이 부족함


    • 가변 분할 방식 (Variable Partitioning)

      • 장점:

        • 내부 단편화 문제 해결 → 필요한 만큼만 메모리를 할당하므로 공간 낭비가 적음

        • 파티션 크기를 유연하게 조정 가능해 고정 분할 방식보다 유연한 운영 가능

      • 단점:

        • 외부 단편화 발생 → 작은 빈 공간이 여기저기 생겨 전체 메모리를 충분히 활용하기 어려움


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

    • 스레싱

      • 멀티프로그래밍을 과도하게 증가시켜 페이지 부재 증가

      • 프로세스가 실제 작업을 수행하지 못하고 페이지 교체 작업에만 CPU 자원을 소비


  5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?

    이유를 함께 적어주세요.

     

    • 실행 시키기엔 필수가 아니지만 휘발성 메모리를 실행하고 종료할때 데이터가 날아가기 때문에 저장할 수 있는 공간인 HDD/SSD는 꼭 필요하다고 생각함.


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

    • 파일을 삭제하면, 운영체제는 파일이 저장된 위치를 빈 공간으로 표시할 뿐, 실제 데이터는 그대로 남아 있어 새로운 데이터가 덮어 쓰기 전에는 복구가 가능함.


자료구조와 알고리즘

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

    • 버블정렬

      • 장점: 거의 정렬된 배열에서는 빠르게 정렬 가능 , 구현이 쉬움

      • 단점: 큰 데이터는 비효율적

      • 시간복잡도: O(n²) (평균/최악) O(n) (최선)

    • 선택정렬

      • 장점: 추가적인 메모리 사용이 거의 없음

      • 단점: 데이터의 크기가 커질수록 성능이 매우 떨어짐

      • 시간복잡도: O(n²) (평균/최선/최악)

    • 삽입정렬

      • 장점: 거의 정렬된 배열에서는 매우 빠름

      • 단점: 선택 정렬과 비슷하게 데이터 크기가 커질수록 성능이 떨어짐

      • 시간복잡도: O(n²) (평균/최악) O(n) (최선)

    • 병합정렬

      • 장점: 큰 데이터를 정렬하는 데 적합하고 최악의 경우에도 O(n log n)을 보장

      • 단점: 이해와 구현이 어려움. 메모리 공간을 차지함

      • 시간복잡도: O(n log n) (평균/최선/최악)

    • 퀵정렬

      • 장점: 평균적으로 가장 빠른 정렬 알고리즘 중 하나

      • 단점: 피벗 선택이 잘못되면 성능이 급격히 떨어짐 (O(n²))

      • 시간복잡도: O(n log n) (평균/최선) O(n²) (최악)


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

     

    • 메모리가 부족한 환경에서는 스택 메모리를 많이 쓰는 재귀보다 반복문 기반의 타뷸레이션이 효율적일 것 같다 생각합니다.

댓글을 작성해보세요.


채널톡 아이콘