인프런 워밍업 클럽2 cs <day8>
알고리즘
정렬 : 배열을 가지고 하는 알고리즘
버블 정렬, 선택정렬 -> O(n*n)
버블정렬
첫번째 배열의 수(a)와 다음 수(b)와 비교하여 a>b일 시 b와 교체되고 작은 수는 정렬된 배열이기 때문에 나중에 비교대상이 아니게 된다.
선택정렬
정렬되지 않은 첫번째 배열안의 원소 값과 그다음 배열안 원소~끝까지 다 비교하고 첫번째보다 작을 경우 자리를 바꿔 정렬
운영체제
메모리
레지스터 : 메모리중 속도가 가장 빠르고 값도 비싸다.
캐시메모리 : 느린 RAM과 빠른 레지스터 중간에서 레지스터가 필요할 데이터를 미리 보기 좋게 저장한다.
RAM : 실제로 프로세스들이 올라가서 작업하는 공간
보조저장장치 : 메모리 중에서 효율이 제일 좋은 유일한 비휘발성 메모리
메모리와 주소
물리 주소 : 메모리의 실제 주소
논리 주소 : 사용자 입장에서의 주소 사용자는 실제 물리주소를 알 수 없기 때문에
실행될 주소를 0번지라고 가정하고 프로세스를 작업한다.
물리주소를 일일히 신경쓰지 않고 프로그램 개발물리주소로는 0x2000번지이지만 논리 주소로는 0x0번지라고 인지된다.
RAM은 항상 운영체제 영역과 사용자공간을 따로 빼놓는다.
이때 사용자 공간에서 운영체제 영역을 침범하면 안되기 때문에 ->? 왜여?
경계레지스터를 사용해서 선을 긋는다.경계레지스터 : 메모리 관리자가 사용자 프로세스가 경계 레지스터 값을 넘어갔는지 확인
넘어갔다면 해당 프로세스를 정지 시켜버린다.
CPU에 있다.
메모리를 가져오는 방식
사용자 : ㅌㅌㅌ번지 데이터가져와.
-->CPU : 응 알겠어~ ㅌㅌㅌ번지 데이터~. 메모리관리자야~ ㅌㅌㅌ번지 데이터좀~
--> 메모리관리자 : ㅌㅌㅌ번지 데이터? 음~ 재배치 레지스터엔 물리주소를 xxxx를 가리키는 번지네 알겠어~ xxxx번지데이터 보내줄게~
메모리 할당 방식
가변 분할 방식 : 메모리에 프로세스가 들어올 때 프로세스 크기에 맞게 메모리에 할당 시킨다.
연속된 메모리에 프로세스 할당
외부단편화 발생
고정 분할 방식 : 메모리에 프로세스에 들어올 때 정해진 크기에 맞게 프로세스를 잘라 메모리에 할당 시킨다.
단순하고 오버헤드가 없다.
내부단편화 발생
외부단편화 : 순서대로 프로세스가 할당되고 프로세스a와 프로세스b가 작업을 마친상태.
60mb짜리 프로세스가 들어올 때빈공간이 총 60mb이지만 고정분할 방식이 아니기때문에 많은 양의 손실이 생긴다.
해결 방법 : 조각모음
조각모음으로 메모리에 들어있는 프로세스를 멈추고 하나하나씩 땡겨서 이동시킨다. ->오버헤드 발생내부단편화: 낭비공간이 쪼그만한하게 생기는 현상
해결방법 : 버디시스템
메모리를 2승수단위로 쪼갠 후 할당하는 방식
(2048바이트를 1024바이트 두개로, 1024바이트를 512바이트두개로, 512바이트를 256바이트 두개로 ....)
들어가야할 프로세스 크기에 알맞는(프로세스크기보다 크지만 낭비가 제일 적은) 메모리에 할당시켜서 최소한의 낭비를 줄인다.
-> 내부단편화가 생겨도 전보다는 덜하다!어제 복습 블로그 글올렸어야했는데 ㅜㅜ 오늘 하니까 드문 기억만 나네
댓글을 작성해보세요.