# CSAPP

1123-TIL(code review, 과제읽기, 프로세스와 쓰레드)
코드리뷰를 했는데 신기하게 작성하신 부분이 있었다.이 부분을if (!strcasecmp(method, "GET") == 0 || strcasecmp(method, "HEAD" == 0아래와 같이 작성하셨다.if (strcasecmp(method,"GET") && str

1113-TIL
주소 변환이 매우 간단하지만 단편화 문제가 많이 발생구현은 간단하지만 메모리 공간의 낭비라는 큰 단점을 가지고 있어 단편화가 발생한다.메모리에 적재되는 프로그램의 크기에 따라 분할의 크기, 개수가 동적으로 변하는 방식이다.프로세스에 딱 맞게 메모리 공간을 사용하기에 내

1111-TIL
Malloc returns a pointer to a block memory of at least size bytes that is suitably alignedMalloc returns NULL and sets errno when progrma requests a b

1106-TIL(rbtree,csapp linker, avl tree)
left_rotation 부터 format 다시 맞추기 rbtree following the psuedo new_rbtree(void) 이건 psudo code가 교재에 없다 Left/Right rotation psuedo code 수도코드 c언어로 옮기기 Ins
포인터 연산
C언어는 포인터에 산술 연산을 허용합니다. 계산된 값은 포인터가 참조하는 데이터 타입의 크기에 따라 스케일됩니다. 즉, p가 T 타입 데이터를 가리키는 포인터이고, p의 값이 xp라면, 식 p+i의 값은 xp + L \* i가 됩니다. 여기서 L은 데이터 타입 T의 크
TIL 10월 30일 2023년
Zero-extending과 Sign-extending은 작은 크기의 데이터를 더 큰 크기의 레지스터로 복사할 때 사용하는 방법입니다. 두 방법 모두 데이터를 소스에서 대상으로 복사하는데 사용되지만, 빈 공간을 채우는 방식이 다릅니다.Zero-extending (mov

1030-TIL(csapp:3.7 procedure)
모든 정점에서부터의 최단 경로를 찾는 알고리즘인데 간선이 끊어져 있는지 확인하기 위해서도 쓰임인접행렬두 시퀀스에 모두 들어있는 요소의 부분 시퀀스 중 가장 긴 것을 찾는 문제. dna 일치 얼마나 하는지 찾을 때 씀일단 기본

1027-TIL(csapp-3.1~3.6)
gcc 명령어는 소스코드를 executable code로 바꿔달라는 명령어.보고시프면 compiler explorer 보면 됨저 명령어가 내려지면 내부적으로는 아래와 같이 작동하게 된다.(주체 -> 결과물)C preprocesssor ->Compiler -> assem
저장 장치는 계층구조를 이룬다
메모리 계층구조의 주요 아이디어는 한 레벨의 저장장치가 다음 하위 레벨의 저장장치의 캐시 역할을 한다는 것이다. L1과 L2는 L2, L3의 캐시이다. L3는 메인 메모리의 캐시이다. 일부 분산 파일 시스템을 가지는 네트워크 시스템에서 로컬 디스크는 다른 시스템의 디스
캐시가 중요하다
프로그램이 동작 할 때 인스트럭션이 로딩되고 메인 메모리에 복사되는 과정에서 오버헤드가 발생함 그래서 시스템 설계자들의 주요 목적은 이러한 복사 과정들을 가능한 빠르게 동작하도록 하는 것임.물리적으로 큰 저장장치가 작은저장 장치보다 느림 마찬가지로 일반적인 레지스터 파
프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다.
프로세서(또는 CPU, Central Processing Unit)는 컴퓨터의 "두뇌" 로 생각할 수 있으며, 다양한 연산과 명령을 처리함. 프로세서가 하는 일 중 중 하나는 메모리에서 인스트럭션(명령어)을 가져와서 그것을 해석하고 실행하는 것임시스템 내를 관통하는 전
컴파일 시스템이 어떻게 동작하는지 이해하는 것은 중요하다.
어떤 코드가 기계어로 어떻게 변환되는지 이해하면 성능 병목을 피하거나 최적화 할 방법을 더 잘 찾을 수 있음. switch 문은 if-else 문을 연속해서 사용하는 것보다 언제나 효율적인가?함수 호출시 발생하는 오버헤드는 얼마나 되는가?while 루프는 for 루프보
프로그램은 다른 프로그램에 의해 다른 형태로 번역된다.
일반적으로 컴파일, 인터프리트, 트랜스파일 등의 과정을 통해 소스 코드가 다른 형식이나 언어로 변환되거나 실행되는 것을 의미함. 여기에는 여러 단계와 여러종류의 '프로그램'이 개입할 수 있음.컴파일러: 고급 프로그래밍 언어로 작성된 소스 코드를 기계어나 바이트코드로 변
정보는 비트와 컨텍스트로 이루어진다.
정보의 의미와 가치는 단순히 비트만으로 결정되지 않고 그 정보가 사용되는 컨텍스트에 따라 크게 달라질 수 있음.비트 : 컴퓨터 과학에서 비트는 정보의 가장 기본적인 단위, 모든 디지털 데이터는 결국 비트의 나열로 표현, 하지만 이러한 비트의 나열 자체는 그 의미나 용도