
소켓 인터페이스 기반 응용프로그램
참고 자료 Section 11 - Randal Bryant - 윤성우
- 네트워크
- · 2024. 7. 16.
Project 0: PintOSVirtual Machine ~= Hypervisor[ 가상 머신(Virtual Machine) ]하드웨어 자원을 소프트웨어적으로 추상화하여, 여러 개의 가상 환경(VM)을 생성하고 이들을 독립적으로 실행할 수 있는 가상화 기술.* 가상화(virtualization): 단일 PC나 서버가 동시에 여러 운영체제 또는 단일 운영체제의 여러 세션을 실행할 수 있게 해준다.[ Hypervisor ]가상 머신을 생성하고 관리하기 위한 가상화 소프트웨어로 하드웨어와 가상머신 사이에서 자원 중개자의 역할을 수행한다.qemuQuick Emulator의 약자Common bugsMemory leak(메모리 누수)컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상. 할당된 메모리..
다시 만난 C언어... 못할 건 없다탐험 준비 🧭 생각해볼 것 & 암기할 것C에서는 배열과 스택과 같은 소수의 자료구조만 사용 가능어셈블리어를 기계어로 돌려보기malloc을 사용하지 않는 방법은 무엇이 있을까?메모리를 할당하는 영역 3가지는?→ 코드(Code) 영역: 프로그램 코드가 저장되는 영역으로 실행할 수 있는 기계어 코드가 저장된다. 이 영역은 읽기 전용이며, 코드를 실행하는 데 필요한 명령어와 데이터가 저장된다.→ 데이터(Data) 영역: 전역 변수와 정적(static) 변수가 저장되는 영역이다. 이 영역은 초기화된 데이터와 초기화되지 않은 데이터로 구성된다.→ 스택(Stack) 영역: 지역 변수, 함수의 매개 변수, 반환 값 및 함수 호출 정보가 저장되는 영역이다. 이 영역은 후입선출(LIF..
참고 자료 Section 11 - Randal Bryant - 윤성우
서론새롭게 할당된 블록을 배치하기 위한 가용 블록을 선택하는 방법에는 first-fit, next-fit, best-fit 등이 있습니다. GeeksforGeeks>☝🏻 first-fit: 처음부터 탐색하고 크기가 맞는 첫 가용 블록을 선택한다.static void *first_fit(size_t asize){ void *bp; for (bp = heap_listp; GET_SIZE(HDRP(bp)) > 0; bp = NEXT_BLKP(bp)) { if (GET_SIZE(HDRP(bp)) >= asize && (!GET_ALLOC(HDRP(bp)))) { return bp; } } return NULL;}힙의 시작부터,..
서론동적 메모리 할당을 할 때 가용 리스트를 구성하는 방법에는 묵시적 가용 리스트(implicit), 명시적 가용 리스트(explicit), 분리 가용 리스트(segregated), 버디 시스템(buddy system) 등이 있습니다. 본문에서는 이 중 명시적 가용 리스트(explicit)를 사용한 동적 메모리 할당을 설명합니다.implicit에서 수정한 코드이기 때문에 수정되지 않은 코드는 설명을 적지 않습니다. 이전 게시글에 자세한 설명이 있습니다.explicit에서 블록의 구성implicit에서 사용한 블록과 달리 explicit에서는 가용 블록에 가용리스트의 다음 블록을 가리키는 Next와 이전 블록을 가리키는 Prev 포인터가 추가되어 있다.정의 & 선언#define GET_NEXT(bp) (*..
서론동적 메모리 할당을 할 때 가용 리스트를 구성하는 방법에는 묵시적 가용 리스트(implicit), 명시적 가용 리스트(explicit), 분리 가용 리스트(segregated), 버디 시스템(buddy system) 등이 있습니다. 본문에서는 이 중 묵시적 가용 리스트(implicit)를 사용한 동적 메모리 할당을 설명합니다.implicit에서 블록의 구성블록엔 데이터(+패딩) 앞 뒤에 헤더와 푸터가 있다. 헤더와 푸터는 같은 값으로 안에는 블록의 크기(헤더와 푸터를 포함한)와 할당 정보가 들어있다.🤔 푸터(footer)는 왜 있어야 할까?푸터는 경계 태그(boundary tag)로 이전의 헤더 블록을 찾기 위해서 존재한다. 푸터가 없다면 헤더를 통해 할당 정보를 확인해야 하는데, 거꾸로 훑고 가면..
서론C언어를 공부하다보면 malloc(), calloc(), realloc()이라는 함수를 사용하여 동적 메모리 할당을 합니다. 그럼 동적 메모리 할당은 무엇이며 어떻게 이루어지는 걸까요? '동적 메모리 할당'이란 프로그램 실행 중에 필요한 메모리를 힙(heap, 보통은)에 할당하는 것입니다.📝 그렇다면 힙이란 무엇인가?힙은 가상 주소 공간(virtual address space)에서 데이터 영역(data segment)과 코드 영역(code segment) 사이의 영역으로 동적으로 할당된 데이터를 저장하는 영역입니다.* 힙의 꼭대기를 brk ptr라고 합니다.🤔 그럼 동적 메모리 할당이 왜 필요한 것인가?가장 중요한 이유는 종종 프로그램을 실제 실행시키기 전에는 자료 구조의 크기를 알 수 없는 경우..