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

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

운영체제

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

  • 레지스터

가장 빠른 기억 장소로, CPU 내에 위치한다. 프로그램 실행 중 임시로 데이터나 명령어를 저장하며 컴퓨터가 꺼지면 데이터가 사라지는 휘발성 메모리입니다.

  • 캐시

CPU 내에서 레지스터와 메인 메모리 사이에 존재하는 휘발성 메모리로, 자주 사용하는 데이터나 값을 미리 복사해 놓음으로써 데이터에 대한 액세스를 빠르게 할 수 있도록 돕는다.

  • 메인 메모리

실제 운영체제와 다른 프로세스들이 올라가는 공간으로 휘발성 메모리입니다.

  • 보조 저장장치: 비휘발성 메모리로, 위의 메모리들에 비해 가격이 저렴합니다.

     

    • SSD: 속도가 빠르고 조용하며 충격에 강하지만 특정 부분에 데이터를 쓴 경우 덮어쓰기가 불가능하고 데이터 삭제 횟수가 정해져 있어 같은 부분에 데이터 삽입과 삭제를 반복할 경우 망가져 사용할 수 없게 됩니다.

    • 하드디스크: 속도가 느리고 소음이 발생하며 충격에 약합니다.

 

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

경계 레지스터는 CPU 내에 존재하는 레지스터로, 하드웨어적으로 운영체제 공간과 사용자 공간을 나눠 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 합니다. 메모리 관리자는 사용자 프로세스가 경계 레지스터 값을 벗어났는지 검사하고 만약 벗어났다면 그 프로그램을 강제 종료합니다.

 

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

  • 가변 분할 할당

     

    • 장점: 내부 단편화가 없습니다.

    • 단점: 외부 단편화가 발생하고 오버헤드가 발생합니다.

       

  • 고정 분할 할당

     

    • 장점: 구현이 간단하며 오버헤드가 적습니다.

    • 단점: 내부 단편화가 발생합니다.

     

     

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

스래싱(Thrashing)이라고 하며 성능 저하 및 응답 시간 지연을 초래합니다.

해결 방법은 다음과 같습니다.

  • 메모리 크기 증가

  • 프로세스에 적절한 페이지 수 할당

  • 프로세스에 맞게 유지할 페이지를 결정해 워킹셋 생성

 

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

HDD나 SSD가 없다면 컴퓨터는 운영 체제를 저장할 수 없기 때문에 부팅할 수 없습니다. 그러므로 컴퓨터를 실행시키는데 반드시 필요하다고 생각합니다.

 

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

파일 시스템의 블록 관리 방식에 그 이유가 있습니다.

파일을 삭제하면 파일 시스템은 파일 테이블의 헤더만 삭제하고, 파일의 정보는 그대로 남아 있습니다. 그렇기 때문에 사용자는 파일이 삭제된 것처럼 느끼지만 블록의 데이터는 그대로 남아 있어 포렌식으로 파일을 복구할 수 있습니다.

 

자료구조와 알고리즘

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

버블 정렬(Bubble Sort)

장점

  • 간단한 이해와 구현 가능

단점

  • 낮은 성능

시간 복잡도

  • O(n²)

 

선택 정렬(Selection Sort)

장점

  • 간단한 이해와 구현 가능

단점

  • 낮은 성능

시간 복잡도

  • O(n²)

 

삽입 정렬(Insertion Sort)

장점

  • 간단한 이해와 구현 가능

단점

  • 낮은 성능

시간 복잡도

  • O(n²)

 

병합 정렬(Merge Sort)

장점

  • 좋은 성능

단점

  • 이해와 구현의 어려움

  • 시스템의 스택 크기가 큰 데이터를 정렬할 때 제한적

시간 복잡도

  • O(nlogn)

 

퀵 정렬(Quick Sort)

장점

  • 좋은 성능

단점

  • 이해와 구현의 어려움

  • 최악의 경우 시간 복잡도가 O(n²)까지 증가

시간 복잡도

  • O(nlogn)

 

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

메모이제이션은 재귀로 쉽게 구현할 수 있을 것 같을 때 사용하면 좋은 방법이지만 메모리를 많이 차지합니다. 메모리가 부족한 시스템에서 메모이제이션을 사용하다 스택 오버플로우가 발생할 수 있기 때문에 조금 시간을 들이더라도 적은 메모리로 빠른 성능을 낼 수 있는 타뷸레이션을 이용해 문제 해결을 위한 코드를 구현할 것 같습니다.

댓글을 작성해보세요.

채널톡 아이콘