中庸
[System Programming] Linux 명령어
시스템 프로그래밍 2022. 12. 18. 12:53

cd (Change Directory) cd .. (이전 폴더로 이동) cd ~ (Home 디렉토리로 이동) cd / (Root 디렉토리로 이동) rm (remove) rm [파일이름 or 파일경로] rm -rf [폴더이름] ls (list) : 현재 디렉토리에 있는 파일을 보여줌 ps : 현재 실행되고 있는 프로세스를 보여줌. mkdir [폴더이름] : 현재 디렉토리 내에 폴더를 생성함. touch [파일이름 or 파일경로] : 현재 디렉토리 내에 파일을 생성함. mv (move) mv [변경 전 이름] [변경 후 이름] : 파일이름 변경 tar tar cvfz [압축 후 파일이름] [압축 전 디렉토리 or 파일경로] tar xvfz [압축해제 할 파일 이름] clear : 터미널 clear cat :..

article thumbnail
[Malloc Lab] LIFO 방식의 Explicit List (명시적 리스트)
시스템 프로그래밍 2022. 12. 4. 23:18

이번에는 Explicit List 방식으로 malloc / free 를 구현해보도록 하겠습니다. Introduction 에서 다뤘던 Explicit List 의 개념을 상기해보며 접근해봅시다. Explicit List 방식으로 다룰 때 가장 핵심은 Free Block 을 관리하는 Doubled Linked List 가 있다고 생각하는 것입니다. Free Block 중 가장 첫번째 가용 블럭은 prev로 NULL 을 가리키고 succ으로는 다음 free block 을 가리킵니다. 그리고 마지막 블럭의 succ 은 NULL을 가리킵니다. *prev = previous, succ = succeeding 그리고 LIFO 방식으로 가용블럭을 manage 할 것을 기억하며 가용블럭을 사용할 때는 가장 첫번째 fre..

article thumbnail
[Malloc Lab] Implicit List
시스템 프로그래밍 2022. 12. 4. 23:17

간접 리스트 방식으로 malloc, free 를 구현해보도록 하겠습니다. 간접 리스트 방식으로 구현하기에 앞서 Malloc / Free 를 구현할 때 유용한 매크로 변수, 매크로 함수, 메소드 들에 대한 설명을 첨부합니다. 먼저 mm_implicit.c 의 mm_init 메소드를 구현하겠습니다. mm_init 메소드는 동적 메모리 할당을 하기 위한 초기 힙 구조를 생성하는 메소드입니다. /* * Initialize: return -1 on error, 0 on success. */ int mm_init(void) { if ( (heap_listp = mem_sbrk(4*WSIZE)) == -1 ) // 초기 empty heap 설정 return -1; // heap_listp = 새로 생성되는 heap ..

article thumbnail
[Malloc Lab] Introduction to Malloc Lab
시스템 프로그래밍 2022. 12. 4. 23:11

이번 포스팅에서는 malloc lab의 기본 구성에 대해 알아보겠습니다. 먼저 malloc lab 의 가정은 다음과 같습니다. 1. 메모리는 워드 단위로 주소가 지정됩니다. (Malloc Lab 에서 1Word 는 4Bytes입니다.) 2. 응용 프로그램에서 무순의 할당과 반환 요청이 발생합니다. 반환 요청은 할당된 블록과 항상 pairing 이 되어야 합니다. 3. Allocator 는 이미 할당된 블록의 개수와 크기는 조정할 수 없습니다. 4. Allocator는 모든 할당 요청에 즉시 반응해야 합니다. 즉, 요청 순서를 변경하거나, 요청을 buffer 에 저장해 둘 수 없습니다. 5. Allocator 는 메모리 블록을 반드시 free Memory 에서 할당해야 합니다. 6. 블록들은 모든 주소 맞..