워밍업 클럽 CS 3주차 발자국 : 미션

워밍업 클럽 CS 3주차 발자국 : 미션

운영체제

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

  • 주기억장치 (RAM):

    • 특징: 휘발성 메모리로, 전원이 꺼지면 데이터가 사라집니다. 빠른 접근 속도를 가지며, 운영체제와 애플리케이션이 실행될 때 사용됩니다.

  • 보조기억장치 (HDD, SSD 등):

    • 특징: 비휘발성 메모리로, 전원이 꺼져도 데이터가 유지됩니다. HDD는 기계적인 구조로 상대적으로 느리지만 큰 용량을 제공하고, SSD는 전자적인 구조로 빠른 속도를 제공합니다.

  • 캐시 메모리:

    • 특징: CPU와 RAM 사이에 위치하여 자주 사용되는 데이터를 저장합니다. 빠른 접근 속도를 제공하여 CPU의 성능을 향상시키는 역할을 합니다.

  • ROM (읽기 전용 메모리):

    • 특징: 비휘발성 메모리로, 주로 부팅 프로그램이나 펌웨어가 저장됩니다. 일반 사용자가 데이터를 수정할 수 없습니다.

  • 가상 메모리:

    • 특징: 물리적인 메모리 용량보다 큰 메모리를 사용할 수 있도록 해주는 기술로, 하드디스크의 일부를 메모리처럼 사용합니다.

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

사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 경계 레지스터(Bound Register)입니다.

  • 설명: 경계 레지스터는 프로세스가 접근할 수 있는 메모리의 범위를 정의합니다. 이 레지스터는 프로세스가 사용 가능한 메모리 영역의 최댓값을 설정하여, 프로세스가 해당 범위를 벗어나 메모리의 운영체제 영역이나 다른 프로세스의 영역에 접근하는 것을 방지합니다.

  • 작동 방식:

    • 프로세스가 메모리 접근을 시도할 때, CPU는 해당 주소가 경계 레지스터에 설정된 범위 내에 있는지 확인합니다.

    • 만약 접근하려는 주소가 경계 레지스터의 한계를 초과하면, CPU는 메모리 접근을 차단하고 오류를 발생시킵니다. 이를 통해 운영체제는 메모리의 보호 및 안정성을 유지할 수 있습니다.

이러한 방식으로 경계 레지스터는 운영체제와 사용자 프로세스 간의 안전한 메모리 관리를 도와줍니다.

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

  • 고정 분할 방식:

    • 장점: 관리가 간편하고, 메모리 할당 속도가 빠릅니다.

    • 단점: 내부 단편화가 발생할 수 있으며, 메모리의 유효 활용도가 떨어질 수 있습니다.

  • 가변 분할 방식:

    • 장점: 메모리를 더 효율적으로 사용할 수 있으며, 내부 단편화가 줄어듭니다.

    • 단점: 관리가 복잡하고, 외부 단편화 문제가 발생할 수 있습니다.

  1. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
    CPU 스케줄링의 목표는 CPU 사용률을 높이는 것입니다. 이를 위해 멀티 프로그래밍을 통해 동시에 실행되는 프로세스 수를 늘립니다. 하지만 프로세스 수가 많아지면 물리 메모리가 부족해져 일부 프로세스는 스왑 영역에 저장되고, 이로 인해 페이지 폴트가 빈번하게 발생합니다. 결국 스왑 작업이 CPU 작업 시간을 초과하게 되어 CPU 사용률이 떨어지고, 이 현상을 스레싱(thrashing)이라고 합니다.

 

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

HDD나 SSD는 컴퓨터를 실행하는 데 필수적이지는 않지만, 데이터와 프로그램을 저장하는 데 중요한 역할을 합니다. 일부 시스템은 RAM을 활용한 메모리 부팅이 가능하여, 저장 장치 없이도 작동할 수 있는 임베디드 시스템이 존재합니다. 그러나 일반적으로 컴퓨터 운영에 필요한 데이터를 지속적으로 저장하기 위해 HDD나 SSD와 같은 저장 장치가 필요합니다.

 

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

파일을 삭제하더라도 포렌식으로 복구할 수 있는 이유는, 파일 시스템이 삭제된 파일의 모든 정보를 즉시 지우지 않기 때문입니다. 파일이 삭제될 때, 파일 시스템은 해당 파일의 헤더를 파일 테이블에서 삭제하고 빈 공간을 관리하는 프리 블록 리스트에 추가합니다. 이 과정에서 파일의 데이터는 여전히 디스크에 남아 있습니다. 사용자는 파일이 삭제된 것처럼 느끼지만, 실제로는 데이터가 그대로 존재하기 때문에, 전문적인 도구와 기술을 사용하면 삭제된 파일의 데이터를 복구할 수 있습니다.

 


 

자료구조와 알고리즘

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

  • 버블 정렬

    • 장점: 구현이 간단하고 직관적이며, 이미 정렬된 경우 최선의 성능을 보인다.

    • 단점: 효율성이 떨어지며, 평균 및 최악의 경우 시간 복잡도가 O(n²)로 비효율적이다.

    • 시간 복잡도:

      • 최선: O(n)

      • 평균: O(n²)

      • 최악: O(n²)

  • 선택 정렬

    • 장점: 구현이 간단하고, 추가적인 메모리 공간을 사용하지 않는다.

    • 단점: 비효율적이며, 항상 O(n²) 시간 복잡도를 가진다.

    • 시간 복잡도:

      • 최선: O(n²)

      • 평균: O(n²)

      • 최악: O(n²)

  • 삽입 정렬

    • 장점: 작은 데이터 집합에 대해 빠르게 동작하며, 안정적인 정렬 알고리즘이다.

    • 단점: 큰 데이터 집합에 대해서는 O(n²)로 비효율적이다.

    • 시간 복잡도:

      • 최선: O(n)

      • 평균: O(n²)

      • 최악: O(n²)

  • 병합 정렬

    • 장점: 안정적인 정렬 방식이며, O(n log n)의 시간 복잡도로 효율적이다.

    • 단점: 추가적인 메모리 공간이 필요하여, 공간 복잡도가 O(n)이다.

    • 시간 복잡도:

      • 최선: O(n log n)

      • 평균: O(n log n)

      • 최악: O(n log n)

  • 퀵 정렬

    • 장점: 평균적으로 O(n log n)의 시간 복잡도를 가지고, 메모리 사용이 효율적이다.

    • 단점: 최악의 경우 O(n²)로 성능이 떨어질 수 있으며, 불안정한 정렬이다.

    • 시간 복잡도:

      • 최선: O(n log n)

      • 평균: O(n log n)

      • 최악: O(n²)

 

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

메모리가 부족한 시스템에서는 타뷸레이션을 사용할 것입니다. 타뷸레이션은 하향식 접근 방식으로, 모든 가능한 상태를 테이블에 저장하여 나중에 재사용할 수 있게 합니다. 메모리 사용량이 제한된 상황에서, 문제를 작은 하위 문제로 나누어 해결하기 때문에 최적의 공간 효율성을 유지할 수 있습니다.

반면, 메모이제이션은 재귀적인 방식으로 구현되어, 메모리가 부족한 시스템에서는 스택 오버플로우가 발생할 가능성이 높아질 수 있습니다.

따라서 타뷸레이션은 메모리를 더 효율적으로 활용하면서도 문제를 해결하는 데 유리한 선택이 될 것입니다.

채널톡 아이콘