[개발일지] 메모리 관리자 개발 및 템플릿 라이브러리 개발
어셈블리어

Lv.1 어셈블리어 (180.♡.243.82)

2025년 11월 30일 PM 10:13

조회 454 공감 0

https://github.com/kidleon/MarkFramework2


- core에 메모리 관리자를 만든 후에 그위에 Template 자료구조를 올렸습니다. 

- 메모리 관리자는 현재 3종류의 힙 할당을 지원합니다.

    - SysCall (OS레벨에서 힙 할당)

    - Pool (고정된 사이즈를 미리 생성한 메모리 풀에서 할당)

    - Temp (매 프레임마다 초기화 하는 Temp 메모리 - 가장빠름)

- STL은 굳이 안쓰고 템플릿 클래스를 따로 만든 이유는 필요한 기능만 작성하고 좀더 손쉬운 디버깅 그리고 작성된 메모리 관리자 위에서 작동 하여 메모리 할당 시간을 최소화 하기 위해서 따로 작성하였습니다.

- ranged-for 정도만 호환 되로록 만들고 본연의 자료구조 형태로 작동 하도록 하였습니다. 즉 딱히 C++ 문법에 호환되도록 노력하진 않았습니다.

- 템플릿 클래스는 엔진 레벨에서는 거의 사용되지 않고 툴과 클라이언트에서만 사용 될 예정입니다. 유연하게 사용 할 수 있겠지만 기본적으로 고속의 렌더링에서 템플릿 라이브러리 특유의 Node생성시 발생하는 할당 비용을 최소화 시키기 위해서 baselib에 있는 링크드 리스트와 해쉬 테이블 위주로 사용하게 될것 같습니다.

- Lock-free 템플릿은 만들지 않을 예정입니다. 사실 Lock-free라고 해도 OS에서 제공하는 atomic을 이용하기 때문에 컴파일된 코드를 보면 기본적으로 시스템IO에 가볍다고는 해도 락이 걸립니다. 엄밀히 말하면 멀티코어 CPU에서의 Lock-free는 존재 하지 않습니다. 과거에는 많이 썼는데 결과적으로 크게 차이 않나는 퍼포먼스 등으로 생각 했을때 굳이 필요 없을것 같습니다. 

- 다음은 파일 로드/저장 관련 스트림 코드를 작성한 후에.. 렌더러로 넘어갈 예정입니다.


댓글 (0)

  • 아직 댓글이 없습니다. 첫 댓글을 작성해보세요!

댓글을 작성하려면 이 필요합니다.