인프런 워밍업 클럽 스터디 2기 - CS 전공지식<10월 셋째주 발자국> +미션
⭐ 발자국
운영체제
가상메모리
가상메모리와 가상메모리를 효율적으로 사용하는 방법!
- 세그멘테이션 & 페이징 => 요즘엔 페이징과 페이지드 세그멘테이션 자주사용페이지 교체정책 : FIFO, LRU, 옵티멈, 클락 알고리즘, FIFO의 2차 기회 교체 알고리즘
스레싱과 워킹셋 모두 pagefault를 줄여서 cpu 사용률이 떨어지는 것을 막음!
입출력 장치
주변장치들 메인 보드 내의 버스로 연결(시스템버스, 입출력제어기,DMA ..)
하드디스크(헤드, 플레터, 실린더,트렉,섹터..) 읽어오는 방법
파일시스템 -> 위에서 공부한 메모리와 비슷하다
- 순차 파일 구조, 집적파일구조
- 파일의 파일 디렉토리
알고리즘
정렬 : 버블정렬, 선택정렬, 삽입정렬 모두 간단하지만 성능이 뛰어나진 않음
병합정렬, 퀵정렬 모두 앞서 말한 정렬보다 성능이 뛰어나다.동적 프로그래밍 : 메모이제이션(재귀), 티뷸레이션(상향식 계산방식)
⭐ 미션
운영체제
1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.
cpu안에 있는 레지스터, 캐시메모리가 있다. 그리고 메인 메모리인 RAM 과 보조저장 장치가 존재한다.
빠르고, 용량작고, 가격비쌈 ---> 느리지만,용량크고, 가격합리적!레지스터, 캐시메모리, RAM, 보조저장장치
레지스터 : cpu와 가장 가까운 메모리이다. 휘발성 메모리를 가지고 있어 직접적으로 프로그램을 작업하기 어렵다.
cpu가 연산처리를 할 때 RAM에 있는 정보를 가져와 레지스터에서 연산하고 결과를 RAM에 저장해둔다.캐시 메모리 : 너무 빠른 레지스터와 그에 비해 너무 느린 RAM을 이어주는 메모리.
RAM이 직접 레지스터에 데이터를 올리기엔 너무 느리기 때문에
레지스터가 필요할 것 같은 RAM에 있는 데이터를 캐시메모리에 올려놓는다.
캐시 메모리는 여러개 있을 수 있다~!메인메모리 : 실제로 프로세스들이 올라가서 작업하는 메모리 공간이다.
휘발성 메모리라 데이터를 저장하는 공간이기 보다는 운영체제, 프로세스들을 올리는 공간이다.보조저장장치 : 다른 메모리들과 다르게 휘발성이 아니면서 용량은 크고 가격은 합리적인 메모리.
2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?
경계 레지스터이다. 메모리관리자가 프로세스가 경계 레지스터 값을 벗어났는지 검사한다. 벗어났을 경우 헤당 프로세스를 종료시킨다.
3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?
가변분할 방식에서는 프로세스 크기에 맞게 메모리를 순서대로 할당 시킬 수있다. 연속적으로 메모리를 할당시켜서 내부단편화가 없다. 하지만 외부단편화가 생긴다.
외부단편화란, 외부단편화는 메모리크기 100에 프로세스 a,b,c가 20,30,40씩 메모리를 할당하고 있었다. 프로세스b가 먼저 작업이 끝나 메모리를 떠났고 40크기의 새로운 프로세스d가 작업을 해야한다. 메모리에는 사용가능한 공간이 총 40이지만 연속적으로 비어 있지 않기 때문에 40짜리 프로세스는 들어갈 수 없게 된다.
프로세스들을 끌어와서 빈공간이 연속적이게 만들 수있지만 오버헤드가 커지기 때문에 추천하지 않는다.고정 분할 방식에서는 정해진 크기로 메모리를 분할하고 프로세스는 크기에 맞게 할당된다. 외부단편화는 생기지 않지만 내부 단편화가 생긴다.
내부단편화란, 정해진 크기로 프로세스가 할당되고 정해진 크기로 분할한 메모리에 빈공간이 남는 현상이다. 버디 시스템을 이용해서 메모리를 얼만큼 분할할지 어떤 크기에 어떤프로세스를 할당할지 선택할 수있어서 내부단편화를 줄일 수있다.
4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?
스레싱이라고 한다. 물리적인 메모리의 크기가 작은 것이 원인이다. 메모리의 크기를 늘ㄹ려 스레싱을 없애 성능을 향상시킬 수 있다. 하지만 메모리가 클수록 좋은 것은 아니다. 만약 4GB에서 스레싱이 일어나지 않았다면 4GB일 때 스레싱이 일어나기엔 충분한 메모리의 크기이다. 굳이 큰 메모리로 바꿀 필요가 없다는 것이다. 16GB로 바꾼다고 4GB보다 성능향상이 일어나는 게 아니고 똑같다!
5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?
이유를 함께 적어주세요.
6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?
파일 전체를 다 지우는 것이 아니다. 파일 테이블의 헤더를 삭제하고 프리블록 리스트에 추가하게된다. 그렇게 되기때문에 삭제하고자 하는 데이터는 그대로 남아있기 때문에 파일을 리스트에서 불러와서 복구가 가능하다.
자료구조와 알고리즘
1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.
버블 정렬, 선택정렬, 삽입정렬 모두 O(n제곱) -> 구현이 쉽지만 효율이 떨어진다.
병합 정렬 O(n*logn) -> 재귀식을 사용해서 구현이 어렵지 효율up
퀵정렬 (세타 n logn)-> 다른 정렬알고리즘에 비해 가장 불균형이 없을 경우 빠르다. 정렬된 리스트에서는 불균형때문에 오히려 수행시간이 더 걸릴 수가 있다. 다른 정렬에 비해 메모리사용도 적고 데이터간의 비교도 적기 때문에 효율성이 좋다.
2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다.
여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.
메모이제이션을 사용해서 구현할 것 같다.
이전에 계산한 값을 메모리에 저장하기 때문에 중복적인 계산을 한 데이터를 지우며 전체적으로 실행 속도를 빠르게 해주기 때문에 메모리가 부족한 시스템에서 해결할 때 필요할 것같다.
회고
윽.. 너무 늦게 내버렸다. 이번주 목표가 하루하루 계획한 날짜에 수업들으면서 복습하는 거였다.. 이번주는 나자신에게 졌다.. 이긴쪽도 나니까 내가 이긴 거일지도. ^^~
여유롭게 복습하고 내고싶었는데 쫓기듯 수업을 듣게되어서 제대로 복습한 느낌도 별로 들지 않았다..... 이거 회고내고 내일 복습 다시하려고한다. 그래도 이해가안되면 다시 동영상듣고 복습하다보니까 자연스럽게 스토리(?)가 떠올라서 이 방식으로 공부하는 거. 나쁘지 않을지도
댓글을 작성해보세요.
+내일은 day13,14일 복습하기~.. 할 때 제대로 하지ㅜㅜ