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

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

운영체제

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

     

    • 레지스터, 캐시 , 메인 메모리(RAM), 보조저장장치 하드디스크 가 있습니다.

    • 레지스터는 가장 빠른 기억 저장소로, CPU내에 존재하고, 휘발성 메모리입니다.

    • 캐시는 레지스터와 메인 메모리, 사이에 존재하고, 휘발성 메모리입니다. 캐시는 메인 메모리에 있는 값을 레지스터로 옮기는 시간을 단축하기 위해 미리 데이터를 가져와 저장하는 곳 입니다.

    • 메인 메모리는 실제 운영체제와 프로세스가 올라가는 곳으로, 휘발성 메모리입니다.

      • 하드 디스크나 SSD보다는 속도가 빠르지만, 가격이 비싸기 때문에 실행중인 프로그램만 올립니다.

         

    • 보조 저장장치 (HDD, SSD) 는 비휘발성 메모리로 가격이 저렴해, 작업한 파일들을 저장한다.

 

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

    • 경계 레지스터

      • CPU내에 존재하며 메모리 관리자가 사용자 프로세스가 경계 레지스터의 값을 벗어나는지 감시하고, 벗어날 경우 프로세스를 종료시킨다.

     

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

    • 가변 분할 방식

      • 장점) 프로세스의 크기에 따라 메모리를 할당하는 방식으로, 메모리의 연속된 공간에 할당되기 때문에, 낭비되는 공간인 내부 단편화가 없다 .

      • 단점) 외부단편화가 발생한다.

    • 고정 분할 방식

      • 장점) 프로세스의 크기 상관 없이 메모리를 할당하는 방식으로, 비연속 메모리 할당으로 구현이 간단하고 오버헤드가 적다.

      • 단점) 작은 프로세스도 큰 영역에 할당되어서 공간이 낭비되는 내부 단편화가 발생한다.

     

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

    • 스레싱

    CPU 사용률을 높이려하지만 오히려 더 떨어지는 상황이 나오는 것으로 ,


    CPU 사용률을 높이기 위해 멀티 프로그래밍 정도를 올리는데, 물리 메모리의 프레임을 할당하는데 한계가 있어 일부는 스왑영역에 저장하고, 이로 인해 Page Fault가 많이 발생하고, 그러면 CPU 작업 시간 보다 스왑 작업 시간이 더 길어 지고 CPU사용률이 떨어진다. 그럼 CPU 스케줄러는 CPU 사용률이 낮아져 더 많은 프로세스를 메모리에 올리게 되고 이 과정을 반복하다 보면 CPU 사용률이 0%에 가깝게 된다.

 

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

이유를 함께 적어주세요.

HDD나 SSD는 컴퓨터를 실행시키는 데 꼭 필요한 것은 아니지만, 현실적으로 대부분의 컴퓨터 환경에서 운영체제와 데이터를 저장하는 데 매우 중요한 역할을 하기 때문에 필수적이다.

HDD나 SSD가 아닌 다른 메모리는 속도가 빠르지만 가격이 너무 비싸고 휘발성이기 때문에, 비휘발성인 HDD나 SSD 같은 보조 기억장치에 운영체제를 저장하고 필요한 데이터와 소프트웨어를 로드하는 것이 저렴하면서도 효율적으로 컴퓨터를 이용할 수 있는 방법이다.

 

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

    • free block list 덕분이다.

    • 만약 특정 파일을 삭제한다면,

      파일 시스템은 파일의 모든 정보를 지우는 것이 아니라

      파일 테이블의 헤더를 삭제하고 free block list에 추가한다. 이렇게 처리하면 사용자는 파일이 삭제된 것처럼 느끼지만, 사용했던 블록의 데이터는 그대로 남아있기 때문에 포렌식을 통해 데이터를 복구할 수 있다.

 

자료구조와 알고리즘

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

    • 버블정렬

      • 장점 : 이해와 구현이 간단하다.

      • 단점 : 성능이 좋지 않다.

      • 시간 복잡도 : O(n²)

    • 선택 정렬

      • 장점 : 이해와 구현이 간단하다.

      • 단점 : 성능이 좋지 않다.

      • 시간 복잡도 : O(n²)

    • 삽입 정렬

      • 장점 : 이해와 구현이 간단하다.

      • 단점 : 성능이 좋지 않다.

      • 시간 복잡도 : O(n²)

    • 병합 정렬

      • 장점 : O(nlog n) 성능으로 버블, 선택 , 삽입 정렬보다 성능이 훨씬 좋다.

      • 단점 : 재귀적인 기법으로 이해하기 어렵고, 구현하기 어렵다.

      • 시간 복잡도 : O(n logn)

    • 퀵 정렬

      • 장점 : 성능이 좋고, 병합 정렬보다도 적은 메모리 공간을 차지해 더 좋은 알고리즘으로 평가 받는다.

      • 단점 : 재귀적인 기법으로 이해하기 어렵고, 구현하기 어렵다.

      • 시간복잡도 : O(n logn)

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

    • 타뷸레이션

       

    • 메모이제이션은 재귀 호출을 사용하기 때문에 함수 호출에 따른 오버헤드와 메모리 비용이 큽니다. 반면, 타뷸레이션은 반복문을 사용하여 오버헤드가 적고, 메모리 사용량도 예측 가능하기 때문에 더 효율적입니다

댓글을 작성해보세요.

채널톡 아이콘