본문 바로가기

정글/C언어3

[Malloc Lab] 동적 메모리 할당(Dynamic Memory Allocation) - 이론 시작하기 가상 메모리는 mmap와 munmap 함수를 이용해 생성 및 삭제할 수 있다. mmap: 메모리의 내용을 파일이나 디바이스에 맵핑(mapping)하기 위해 사용한다. munmap: 맵핑된 메모리를 해제한다. 하지만 이러한 방식은 프로그램을 실행하기 전에 크기를 할당해야 한다. 만약 가상 메모리를 런타임에 획득하는 것이 필요하다면, 동적 메모리 할당기를 사용한다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다. 힙은 미초기화된 데이터 영역 직후부터 시작해서 위쪽으로(= 높은 주소 방향으로) 커진다. 이때 힙의 꼭대기를 가리키는 변수를 brk(break)라고 한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리하고, 각 블록은 할당되었거나 사용 가능한 가.. 2023. 5. 17.
AArch64, ARM64 시스템에서 32비트 애플리케이션 컴파일하기 지난번에는 MacOS에서 Docker를 이용해 Ubuntu 개발 환경을 설치하였다. Malloc 과제를 하기위해서는 32비트로 컴파일하는 것이 필요하다. 현재 사용하고 있는 환경은 AArch64 혹은 ARM64 비트 아키텍처로 64비트 환경이다. 잠깐만👋 AArch64는 아키텍처 개발사인 ARM Holdings의 공식 표현으로, ARM과 개발자들은 AArch64라고 부른다. 다만 Apple, Microsoft와 같은 기업 집단은 ARM64라고 표기한다. 원활한 환경 구축을 위해 자신의 개발 환경과 CPU 아키텍처에 대한 기본 개념을 아는 것이 도움되었다. 읽어보면 좋을 글을 함께 공유한다. https://velog.io/@480/이제는-개발자도-CPU-아키텍처를-구분해야-합니다 이제는 개발자도 CPU 아.. 2023. 5. 17.
MacOS에서 Ubuntu 개발 환경 설치하기(Docker) 💡 실습 환경 - MacBook Air Apple M1 - vscode 이번주차부터 C언어 학습을 시작한다. 프로젝트 시작에 앞서 Linux 환경 설정이 필요해 개발 환경을 설치한다. 가상 환경을 설치할 수 있는 방법으로 EC2를 할당받아 사용하는 방법도 있지만, 주변에서 Docker 이야기가 들리길래 전부터 궁금했던 기술이라 사용하기로 결정했다. 이 글은 크게 도커에 대한 소개와 개발 환경 구축 과정에 대해 다룬다. 도커란? 도커는 컨테이너 기반의 가상화 플랫폼이다. 그림의 고래 위에 여러 컨테이너 박스가 존재하는 것처럼 하나의 서버에 여러 컨테이너를 갖을 수 있다. 예를들어, Python, django, node.js, java 등 여러 컨테이너를 올려 독립적으로 관리한다. 소프트웨어 개발에서 컨테이.. 2023. 5. 12.