🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

인프런 워밍업 클럽 스터디 2기 - CS 미션 3

인프런 워밍업 클럽 스터디 2기 - CS 미션 3

운영체제

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

  • 레지스터

    • 가장 빠른 기억장소이며, CPU 내에 존재합니다.

    • 휘발성 메모리입니다. -> 컴퓨터 전원이 꺼지면 데이터가 사라집니다.

    • CPU가 계산할 때 메인메모리에 있는 값을 레지스터로 가져와 계산을 합니다.

     

  • 캐시

    • 레지스터보다 느리고, 메인메모리보다 빠릅니다.

    • 메인메모리에 있는 값을 레지스터로 가져오면 느리기 때문에, 필요할 것 같은 데이터를 미리 저장하는 곳입니다.

    • 캐시는 여러 개로 나누어지고, L1 캐시에 데이터가 없다면 L2 캐시를 확인합니다.

  • 메인메모리

    • 실제 운영체제와 다른 프로세스들이 올라가는 공간입니다.

    • 휘발성 메모리입니다.

    • 가격이 비싸기 문에 데이터를 저장하기보다는 실행중인 프로그램만 올라갑니다.

       

       

  • HDD, SDD

    • 비휘발성 메모리입니다. -> 파일을 저장하기 적합합니다.

    • 가장 느린 메모리입니다.

    • 가격이 저렴합니다.

     

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

  • 경계 레지스터입니다.

  • 메모리 관리자는 사용자 프로세스가 경계 레지스터의 값을 벗어났는지 검사하고 만약 벗어났다면 그 프로세스를 종료시킵니다.

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

  • 가변 분할 방식

    • 장점 : 메모리가 프로세스의 크기에 딱 맞게 할당되기 때문에, 프로세스 크기보다 더 크게 할당돼서 낭비되는 공간인 내부 단편화가 없습니다.

    • 단점 : 새로운 프로세스에게 비연속된 공간의 메모리를 할당할 수 없는 외부 단편화가 발생합니다.

  • 고정 분할 방식

    • 장점 : 메모리를 같은 크기로 나누기 때문에 구현이 간단하고 오버헤드가 적습니다.

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

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

  • 스레싱입니다.


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

이유를 함께 적어주세요.

  • USB 같은 보조기억장치가 있다면 꼭 필요하지는 않을 것 같습니다.

  • 컴퓨터가 부팅이 될 때 바이오스가 실행된 후 부트로더를 메모리로 가져와서 실행합니다. 부트로더가 없으면 컴퓨터를 실행시킬 수 없습니다.

  • 결국 부트로더가 저장될 수 있는 저장매체가 필요합니다.

 

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

  • 파일이 삭제될 때 파일시스템은 파일의 모든 정보를 지우는 것이 아니라 파일 테이블의 헤더를 삭제합니다.

  • 그리고 사용했던 파일 테이블의 블록을 free block list에 추가합니다.

  • 사용했던 블록의 데이터는 그대로 남아있기 때문에 복구가 가능합니다.

 

자료구조와 알고리즘

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

  • 버블정렬

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

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

    • 시간복잡도 : O(n^2)

     

  • 선택정렬

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

       

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

    • 시간복잡도 : O(n^2)

  • 삽입정렬

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

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

    • 시간복잡도 : O(n^2)

     

  • 병합정렬

    • 장점 : 성능이 좋습니다.

       

    • 단점 : 이해와 구현이 어렵습니다.

    • 시간복잡도 : O(nlogn)

  • 퀵정렬

    • 장점 : 성능이 좋습니다.

       

    • 단점 : 이해와 구현이 어렵습니다.

    • 시간복잡도 : 피벗이 한쪽에 쏠리는 경우 O(n^2), 피벗이 배열의 반을 가르는 경우 Ө(nlogn)


      => 피벗이 계속해서 한쪽에 쏠리는 경우가 드물기 때문에, 보통 Ө(nlogn) 의 시간복잡도를 가집니다.

     

2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.

여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.

  • 메모리가 부족한 시스템이라면 타뷸레이션을 사용할 것입니다.

  • 메모이제이션으로 재귀 문제를 해결하는 것이 더 쉽다고 해도, 더 많은 메모리를 사용함으로 인해 시스템에 메모리 관련 이슈가 생긴다면 더 심각한 문제가 발생할 수 있다고 생각합니다.

  • 타뷸레이션을 사용하는 방식이 문제 해결에는 더 어렵겠지만, 시스템에 크리티컬한 이슈를 피할 수 있다고 생각합니다.

 

 

 

댓글을 작성해보세요.

채널톡 아이콘