inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 스터디 2기 - CS 전공지식<10월 셋째주 미션>

손준석
1

운영체제

  1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
    (아래로 갈수록 속도는 감소한다. 용량은 증가한다)

    • 레지스터 : cpu가 사용하는 메모리 가용 공간이 가장 작고 속도가 제일 빠르다.

    • 케시 : 미리 데이터를 저장하는 용도

    • 메인메모리 : os와 process가 실행되는 공간

    • 보조저장장치 : 비휘발성 데이터 저장소 프로그램이 저장


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

    • 경계 레지스터

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

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

     

    • 스레싱

     

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

     

    • 일반적으로 운영체제를 HDD 혹은 SDD에 저장합니다. 컴퓨터가 부팅되었을 때, os의 데이터, 코드, 힙영역을 메모리에 올려서 실행합니다. 따라서 현재 사용하고 있는 컴퓨터를 사용하기 위해서는 HDD, SDD가 필요합니다.

    • 하지만 경량화된 운영체제를 usb에 저장하거나 운영체제를 사용하지 않는다면, 반드시 필요하다고는 할 수 없습니다.

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

    • 파일 시스템은 파일 테이블의 헤더를 삭제하고 free block list에 추가합니다. 따라서 사용한 파일 정보가 남아있기 때문에 포렌식 복구가 가능합니다.

자료구조와 알고리즘

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

    • 거품 정렬: 구현이 간단하다. 하지만 성능이 o(n^2)으로 좋지 않다.

    • 삽입 정렬 : 거품정렬과 동일하게 구현이 간단하다. 하지만 이또한 성능이 좋지 않다. o(n^2)

    • 선택 정렬 : 배열에서 가장 작은 값을 순차적으로 정렬하는 방법. 위의 정렬 방법과 똑같이 성능이 좋지 않다. o(n^2)

    • 병합 정렬 : 재귀적인 방법을 활용하여 데이터를 작은 단위로 나누어 정렬을 진행하여 합치는 방법입니다. 위의 정렬 방법 보다 속도가 더 뛰어납니다. o(n*logn)

    • 퀵 정렬 : pivot을 기준으로 데이터를 나눕니다. 이후 pivot을 재외하고 왼쪽 인덱스와 오른쪽 인덱스의 값을 pivot과 비교합니다. 왼쪽인덱스에는 pivot값보다 큰값이 나올때까지 인덱스를 증가하고, 오른쪽 인덱스는 pivot보다 작은 값이 나올때까지 인덱스 값을 감소합니다.

      • 만약 각 인덱스가 교차되지 않았다면 양 값을 교환합니다.

      • 해당 과정을 서로 교차 될때까지 수행합니다.

      • 왼쪽, 오른쪽 인덱스가 교차되었다면, pivot과 오른쪽 인덱스를 교체합니다.

      • 해당 방식을 통해 오른쪽 인덱스 값을 기준으로 정렬이 수행됩니다.

      • 해당 과정을 왼쪽 인덱스를 기준으로 다시금 반으로 나누어 재귀적으로 수행합니다.

      • 해당 방법은 최악의 경우 o(n^2)이고, pivot값을 잘 선택해야 합니다. 하지만 대채적으로 평균 성능인 o(n*logn)을 띄고 더 적은 비교와 메모리 공간을 차지하기 떄문에 병합 정렬보다 퀵정렬이 보다 띄어난 정렬 알고리즘으로 평가합니다.

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

답변 0