🌝 인프런 설 릴레이 할인 시작 🌝

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

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

운영체제

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

    • 레지스터 : 가장 빠른 기억장소로 CPU 내에 존재한다. 컴퓨터가 꺼지면 데이터가 사라지기 때문에 휘발성 메모리하고 한다. CPU를 말할 때 32bit와 64bit는 레지스터의 크기를 말한다. 예를들어 32bi 레지스터를 가지고 있으면 32bit CPU라고 말한다. CPU는 계산을 할때 메인메모리에 있는 값을 레지스터에 가져와 계산을 한다. 그리고 메인메모리에 결과를 다시 저장한다.

       

       

    • 캐시 : 휘발성 메모리로 엄청 빠른 레지스터에 비해 메인메모리은 느리다. 따라서 메인메모리에서 필요한 데이터를 미리 가져와 저장하는 곳이 캐시이다. 만약 CPU가 값을 요청해 레지스터로 값을 옮겨야 한다면 단계에 따라 가장 속도가 빠른 L1캐시를 보고, 그 다음 L2캐시 그리고 메인메모리를 확인해서 값을 가져온다.

    • 메인메모리(RAM) : 실제 운영체제와 다른 프로세스들이 올라가는 공간이다. 전원이 공급되지 않으면 데이터가 지워지기 때문에 휘발성 메모리이다. 하드디스크나 SSD보다 속도는 빠르지만 가격이 비싸기 때문에 실행중인 프로그램만 올린다.

    • 하드디스크 : 가격이 저렴하고 전원이 공급되지 않아도 데이터가 지워지지 않은 비휘발성 메모리이다.

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


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


    세그멘테이션의 장점으로는 연속되게 할당되기 때문에 더 크게 할당되서 낭비되는 공간인 내부 단편화가 없다. 단점으로는 외부 단편화가 발생한다. 고정분할방식의 장점으로는 구현이 간단하고 오버헤드가 적다. 단점으로는 공간이 낭비되는 내부단편화 가 발생한다.

  4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요? - 스레싱이라고 한다. 스왑이 너무 많이 이루어져 CPU가 사용되지 않은 상태를 말한다.

  5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요. - 꼭 필요한 것은 아니지만 운영체제에서 데이터를 저장하는데 중요한 역할을 하기 때문에 필요하다.

  6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요? - free block list때문이다. 특정 파일을 삭제한다면 파일 시스템은 모든 정보를 지우는 것이 아니라 파일 테이블의 헤더를 삭제하고 free block list에 추가한다. 따라서 파일이 삭제한 것처럼 보여지지만 사용했던 블럭은 남아있기 때문에 포렌식으로 파일을 복구할 수 있다.


자료구조와 알고리즘

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

    • 버블정렬 : 구현이 간단하고 직관적이다. 효율성이 떨어진다. O(n²)

    • 선택정렬 : 구현이 간단하고, 추가적인 메모리를 사용하지 않는다. O(n²)

    • 삽입정렬 : 추가 메모리를 사용하지 않는다. 데이터가 많을 때 비효율적이다. O(n²)

    • 병합정렬 : 안정적인 정렬이며 . 큰 데이터를 다룰 때 효율적이다. 추가적인 메모리 공간이 필요하다. O(nlogn)

    •  

      퀵정렬 : 평균적으로 가장 빠른 정렬로 실무에서 많이 사용한다. O(nlogn)

  2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.- 메모이제이션은 재귀로 구현이 가능하지만 메모리가 부족할시 스택 오버플로우가 발생할 가능성이 있기때문에 타뷸레이션을 사용할 것 같습니다.

댓글을 작성해보세요.

채널톡 아이콘