![[인프런 워밍업 클럽 CS 2기] 3주차 발자국](https://cdn.inflearn.com/public/files/blogs/1de46550-56fa-4398-bf42-5bcec6e0620e/인프런.png)
[인프런 워밍업 클럽 CS 2기] 3주차 발자국
수강내용
가변분할방식 : 프로세스의 크기에 따라 메모리를 나누는 방식이다. 한 프로세스가 메모리에 연속된 공간에 할당되기 때문에 연속 메모리 할당
이라고도 한다. 장점으로는 연속되게 할당되기 때문에 더 크게 할당되서 낭비되는 공간인 내부 단편화
가 없다. 단점으로는 외부 단편화
가 발생한다. 가변 분할 방식을 세그멘테이션
이라고 한다. 외부단편화
에 대해서 설명하자면, 다음과 같이 빈공간이 있지만 연속된 공간이 아니라서 프로세스를 할당할 수 없는 상태를 말한다. 이때 외부 단편화가 발생한 공간을 합쳐주는 조각모음
을 하면 된다. 하지만 조각모음을 하려면 현재 실행되고 있는 작업을 일시 중지해야되고, 메모리 공간을 이동시키는 작업을 해야하기 때문에 오버헤드가 발생한다.
고정분할방식 : 프로세스의 크기와 상관없이 메모리 정해진 크기로 나눈다. 2MB로 분할된다고 가정하면 프로세스A는 구역 3개에 나눠서 할당된다. 그리고 1MB는 빈 공간으로 남는다. 프로세스C는 1MB에 할당되고, 1MB는 빈 공간으로 남는다. 이 방식은 한 프로세스가 메모리에 분산되어 할당되기 때문에 비연속 메모리 할당
이라고 한다. 장점으로는 구현이 간단하고 오버헤드가 적다. 단점으로는 공간이 낭비되는 내부단편화
가 발생한다. 가상 메모리 시스템에서 고정분할방식을 페이징
이라고한다. 책의 페이지처럼 크기가 정해져 있다고 해서 붙은 이름이다. 프로세스 A가 50MB가 필요하다고 가정했을 때 메모리 공간이 부족해 10MB는 하드디스크의 스왑영역에 할당됐다. 그리고 프로세스 C,D의 크기가 분할된 크기보다 작아서 낭비공간이 존재할때 이를 내부단편화
라고 부흔다. 하지만 이를 해결하는 방법은 없고, 분할되는 크기를 조절해서 내부단편화를 최소화한다.
버디 시스템은 가변분할방식와 고정분할방식을 혼합해 단점을 최소화한 방식이다. 버디 시스템은 2의 승수로 메모리를 할당한 방식이다. 2의 승수로 500B보다 작은 수를 나눌때까지 나눈다.500B이 256B보다 크기 때문에 계산을 멈추고 512B크기의 공간에 프로세스를 할당한다. 이때 12B가 낭비되지만 즉 내부단편화가 발생하지만, 프로세스가 끝나고 메모리에서 나가도 근접한 공간을 합치기 쉽다. 그 이유는 2의 승수로 동일하게 나눠 조립만하면 큰 공간이 만들어지기 때문에 조각모음보다 훨씬 간단하다. 따라서 이 방식은 가변분할처럼 프로세스 크기에 따라 할당되는 메모리 크기가 달라지고, 외부단편화를 방지하기 위해 메모리 공간을 확보하는 것이 간단하다. 또한 고정분할방식처럼 내부단편화가 발생하지만 많은 공간의 낭비가 발생하지는 않는다.
회고
3주동안 매일은 아니지만 꾸준히 자료구조와 운영체제 수업을 들었다. 가장 큰 수확은 운영체제에 대한 이해도가 높아진 것이다. 항상 운영체제는 우선순위가 뒤로 밀리는 감이 있었는데 이번 강의로 인해서 운영체제 지식이 높아져서 뿌듯하다. 아쉬운 점은 아무래도 자료구조인데 운영체제에 비해 자료구조 수강을 많이 못 했다. 이후에는 자료구조를 다시 복습하고 수강하면서 더 깊이있게 학습을 하고 싶다. 처음에는 스터디를 할까말까 고민했는데 역시 하길 잘했다는 생각이 든다. 좋은 강의 감사합니다. 😃
댓글을 작성해보세요.