전체 글(23)
-
[Webproxy-lab] Echo server communication
GIT 0. echo 디렉토리 생성 및 Makefile 수정 # makefile (echo)CC = gccCFLAGS = -O2 -Wall -I .LIB = -lpthreadall: echoclient echoserverechoclient: echoclient.c csapp.o $(CC) $(CFLAGS) -o echoclient echoclient.c csapp.o $(LIB)echoserver: echoserver.c csapp.o $(CC) $(CFLAGS) -o echoserver echoserver.c csapp.o $(LIB)csapp.o: csapp.c $(CC) $(CFLAGS) -c csapp.cclean: rm -f *.o echoclient echoserver *~ 1. echoc..
2024.05.04 -
System Call (+ OS, Kernel)
OS (Operating system) Definition : - 컴퓨터 하드웨어와 사용자 사이의 인터페이스- 시스템 자원을 효율적으로 관리하여 응용 프로그램이 동작할 수 있게 하는 소프트웨어 Main Function :1. 자원 관리 CPU, Memory, Disk, 입출력 장치와 같은 시스템 자원 관리 다수의 프로그램 동시간대 진행, 각각의 프로그램 동작에 필요한 자원을 할당 및 해제하며 효율성을 높인다 2. 프로세스 관리 프로세스 생성 / 실행 / 정지 / 중단 / 스케줄링 등의 작업 관리 다수의 프로세스가 동시간대에 진행되도록 하고, 각 프로세스에 자원을 할당 및 해제하며 효율성을 높인다 3. 파일 시스템 관리 파일과 디렉터리 생성 / 읽기 / 쓰기 / 삭제 등의 파일 ..
2024.05.01 -
Malloc-lab (realloc 개선)
1. Next block이 Free block, 충분한 크기를 가질 때 if (!GET_ALLOC(HDRP(NEXT_BLKP(oldptr))) && (size + DSIZE 메모리 공간 및 시간적 이득을 얻을 수 있음 { PUT(HDRP(oldptr), PACK(next_size, 1)); // 현재 블록의 Header Block에, (현재 블록 사이즈 + 다음 블록 사이즈) 크기와 Allocated 상태 기입 PUT(FTRP(oldptr), PACK(next_size, 1)); // 현재 블록의 Footer Block에, (현재 블록 사이즈 + 다음 블록 사이즈) 크기와 Allocated 상태 기입 lastp = oldptr; ..
2024.04.30 -
Heap Sort
Definition : '부모의 값이 자식의 값보다 항상 크거나 작은' 힙의 특성을 이용하여 정렬하는 알고리즘Properties :1) Heap order property- 각 노드의 값은 자신의 자식노드가 가진 값보다 크거나 같다 (MAX Heap)- 각 노드의 값은 자신의 자식노드가 가진 값보다 작거나 같다 (MIN Heap) 2) Heap shape property- 트리의 모양은 완전이진트리- 리프 노드는 모두 왼쪽에 쏠려 있다 3) 부분 순서 트리- 부모 : 자식 간의 관계는 일정하지만, 형제 노드 사이의 대소 관계는 일정하지 않다완전이진트리: 마지막 레벨을 제외한 모든 레벨에서 노드들이 꽉 채워진 이진트리 한 노드는 최대 두 개의 자식 노드를 가진다. 1차원 배열로 표현이 가능하며, 부..
2024.04.29 -
Malloc Lab
묵시적 가용 리스트 + First_fit 묵시적 가용 리스트 + Next_fit 묵시적 가용 리스트 + Best_fit 전체 코드 (Github) 1. Macro #define WSIZE 4 // word & header/footer size 4 bytes#define DSIZE 8 // double word size 8 bytes#define CHUNKSIZE (1 (y) ? (x) : (y))#define PACK(size, alloc) ((size) | (alloc)) // pack a size and allocated bit into a word #define GET(p) (*(unsigned int *)(p)) // read a word at address p#define PUT(p, va..
2024.04.28 -
분할정복, Divde / Conquer / Combine
정의 : - 주어진 문제를 2개 이상의 유사한 하위 문제로 분할하여, 각 하위 문제에 대한 해결 이후, 해결들을 합쳐 처음 문제를 해결하는 방법 특징 : - 하위 문제로 나뉘어진 각 문제들은, 서로에게 독립적이며 중복되지 않는다. - 주어진 문제와 이를 나눈 하위 문제들은, 해결 방법이 동일하다. 장점 : - 빠르고 간편하다. 분할 이후 해결 방법이 동일하기 때문에, 코드 구현 시 하나의 해결 방법만 제시하면 된다. - 하위 문제가 독립적이기 때문에 병렬적으로 문제를 처리할 수 있으므로, 시간을 효율적으로 처리할 수 있다. 단점 : - 분할과 하위 문제 해결에 재귀적인 함수 호출이 일어나게 되어, 메모리 사용량이 증가한다. - 스택 과다 사용으로 인한 높은 메모리 사용이 발생할 수 있다. Dynamic ..
2024.04.06