serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/3장/3.518 / 40

3.5 · 메모리와 포인터

malloc 아래에서 운영 체제는 무엇을 할까?

힙에 줄 빈 공간이 부족하면 할당자는 누구에게 요청할까요?

malloc은 먼저 사용자 공간의 빈 블록을 찾고, 부족하면 시스템 호출로 가상 메모리 영역을 늘립니다.

먼저 생활 비유

창고 담당자와 건물 관리실

담당자는 기존 창고에서 자리를 먼저 찾고, 정말 부족할 때만 관리실에 새 구역을 열어 달라고 합니다.

컴퓨터 예제로 바꾸기

큰 버퍼 요청

buffer = malloc(8 * 1024 * 1024);

할당자가 brk나 mmap 같은 운영 체제 기능으로 주소 공간을 확보할 수 있습니다. 실제 RAM은 접근 시점에 붙을 수도 있습니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

프로그램 malloc

필요한 바이트 수를 표준 라이브러리에 요청합니다.

주소와 저장 공간주소가 붙은 메모리 공간프로그램 malloc단계 1할당자단계 2시스템 호출단계 3가상 메모리단계 4페이지 연결단계 5메모리 요청현재: 프로그램 malloc

이 그림에서 기억할 한 문장

메모리 할당은 라이브러리의 블록 관리와 운영 체제의 가상 메모리 관리가 이어진 결과입니다.

현재 상태

이동하는 것
메모리 요청
현재 위치
프로그램 malloc
다음 위치
할당자

30초 확인 문제

작은 malloc마다 반드시 커널로 전환할까요?

처음 보는 용어 두 개

사용자 모드
응용 프로그램이 제한된 권한으로 실행되는 상태
시스템 호출
프로그램이 커널 기능을 요청하는 통제된 입구

이 절을 다 읽었다면

메모리 할당은 라이브러리의 블록 관리와 운영 체제의 가상 메모리 관리가 이어진 결과입니다.

← 이전 절

3.4 힙의 동적 메모리 할당은 어떻게 동작할까?

다음 절 →

3.6 고성능 서버는 왜 메모리 풀을 사용할까?