# Week 7 Homework

1.먼저 -n 10 -H 0 -p BEST -s 0 플래그로 실행하여 몇 개의 무작위 할당과 해제를 생성하세요. alloc()/free()가 무엇을 반환할지 예측할 수 있나요? 각 요청 후에 프리 리스트의 상태를 추측할 수 있나요? 시간이 지남에 따라 프리 리스트에서 무엇을 알 수 있나요?

- -n 10: 10개의 무작위 할당 및 해제를 생성합니다.
- -H 0: 헤더 크기는 0입니다.
- -p BEST: 최적 적합 정책을 사용합니다.
- -s 0: 랜덤 시드는 0으로 설정합니다.

이 설정으로 프로그램을 실행하면, malloc 클래스의 malloc() 및 free() 메서드를 사용하여 메모리 할당 및 해제가 이루어집니다. BEST 정책에서는 최적의 잔여 공간을 찾아 할당을 시도하며, 이후 프리 리스트의 상태를 관찰할 수 있습니다. 시간이 지남에 따라 프리 리스트는 할당된 공간의 해제로 인해 업데이트됩니다.


2.프리 리스트를 검색할 때 최악 적합(Worst-fit) 정책(-p WORST)을 사용하면 결과가 어떻게 달라지나요? 무엇이 바뀌나요?

-> -p WORST: 최악 적합 정책을 사용합니다.
최악 적합 정책을 사용할 경우, 프리 리스트에서 가장 큰 공간을 찾아 할당을 시도하므로, 할당에 실패할 확률이 줄어들지만, 메모리 단편화가 발생할 가능성이 높아집니다. 프리 리스트의 관리 방식과 할당 성능이 변경됩니다.

3.최선 적합(First-fit) 정책(-p FIRST)은 어떤가요? 최선 적합을 사용하면 무엇이 빨라지나요?

-> -p FIRST: 첫 번째 적합 정책을 사용합니다.
최선 적합 정책은 프리 리스트를 순차적으로 탐색하여 처음으로 맞는 공간에 할당을 시도합니다. 이는 탐색 시간이 빠르지만, 남은 공간이 충분히 크지 않으면 할당에 실패할 수 있습니다.

4.위의 질문들에서, 리스트를 어떤 순서로 유지하느냐에 따라 일부 정책의 자유 블록 탐색 시간이 달라질 수 있습니다. 다양한 프리 리스트 순서(-l ADDRSORT,-l SIZESORT+,-l SIZESORT-)를 사용하여 정책과 리스트 순서가 어떻게 상호작용하는지 확인하세요.

-> -l ADDRSORT, -l SIZESORT+, -l SIZESORT- 등의 순서를 변경하여 정책과 프리 리스트의 상호작용을 확인할 수 있습니다. 주소나 크기에 따라 정렬된 리스트는 각 정책에 따라 다른 할당 및 해제 성능을 보일 수 있습니다.



5.프리 리스트의 병합(Coalescing)은 매우 중요할 수 있습니다. 무작위 할당 수를 늘려보세요(예: -n 1000). 시간이 지남에 따라 큰 할당 요청에는 어떤 일이 일어나나요? 병합 없이(즉, -C 플래그 없이) 그리고 병합과 함께 실행해 보세요. 결과에 어떤 차이가 있나요? 각 경우에 시간에 따른 프리 리스트의 크기는 어떻게 되나요? 이 경우 리스트의 순서가 중요한가요?

-> 무작위 할당 수를 늘리고, 병합 옵션(-C)을 사용하여 프리 리스트의 병합 효과를 확인할 수 있습니다. 병합을 사용하면 할당과 해제가 빈번하게 일어나도 프리 리스트의 단편화가 줄어들고, 큰 할당 요청에도 대응할 수 있습니다. 병합을 사용하지 않으면 단편화가 더 많이 발생할 수 있습니다.

6.할당된 블록의 비율을 나타내는 -P를 50 이상으로 변경하면 어떻게 되나요? 이 비율이 100에 가까워지면 할당은 어떻게 되나요? 0에 가까워지면요?

-> -P 옵션을 변경하여 할당된 블록의 비율을 조정할 수 있습니다. 비율이 높을수록 할당 연산이 빈번하게 발생하며, 비율이 100에 가까워질수록 거의 모든 요청이 할당됩니다. 반대로 비율이 낮을수록 할당 요청이 거의 발생하지 않습니다.

7.고도로 단편화된 프리 공간을 생성하려면 어떤 종류의 특정 요청을 만들 수 있나요? -A 플래그를 사용하여 단편화된 프리 리스트를 생성하고, 다양한 정책과 옵션이 프리 리스트의 구성을 어떻게 변경하는지 확인하세요.

-> 고도로 단편화된 프리 공간을 생성하려면, 크기가 다양하고 불규칙한 순서로 할당 및 해제 요청을 만들어야 합니다. -A 플래그를 사용하여 명시적인 할당 및 해제 목록을 지정할 수 있으며, 이를 통해 프리 리스트의 구성이 어떻게 변화하는지 확인할 수 있습니다. 다양한 정책과 옵션을 적용하여 프리 리스트의 단편화를 관찰하고, 각 정책이 어떻게 작용하는지 이해할 수 있습니다.





