프로그래밍 언어로 작성된 소스 코드(고 수준 언어)를 기계어(저 수준 언어)로 변환하는 과정이다.컴퓨터는 0, 1로 이루어진 기계어만 이해할 수 있기 때문이다.컴파일 과정을 거친 후에는 실행 파일이나 라이브러리 파일이 생성되며, 이를 통해 컴퓨터가 해당 프로그램을 실행
열받는 segmentation fault... ㅠㅠㅠㅠ주로 Unix 및 Unix 계열 운영체제에서 발생한다. \- 즉, Linux, macOS, 그리고 다른 Unix 기반 시스템에서 이 오류를 자주 볼 수 있다.C나 C++에서 Segmentation Fault 오류가
유튜브 영상 내용을 정리한 포스팅 입니다!! 노션이 더 가독성이 좋으니 되도록 노션으로 봐주세요! 👩🏻💻 노션 링크 📹 참고 유튜브 영상 RB Tree란? 🔍 RB Tree 개념 이진 탐색 트리의 한 종류 스스로 균형 잡는 트리 이진 탐색 트리의 wor
tree = new_tree(): RB tree 구조체 생성=> 여러 개의 tree를 생성할 수 있어야 하며 각각 다른 내용들을 저장할 수 있어야 합니다.여러 개의 tree를 생성할 수 있어야 하며 각각 다른 내용들을 저장할 수 있어야 한다.RB tree에서 리프 노드
tree_insert(tree, key): key 추가 => 구현하는 ADT가 multiset이므로 이미 같은 key의 값이 존재해도 하나 더 추가 합니다.새 노드를 동적으로 생성한다.노드의 key를 입력받고, color를 RED로, 자식 노드들은 nil 노드로 설정한
ptr = tree_find(tree, key) => RB tree내에 해당 key가 있는지 탐색하여 있으면 해당 node pointer 반환 => 해당하는 node가 없으면 NULL 반환tree내에 해당 key가 있는지 탐색하여 해당 노드의 포인터를 반환한다.해당
⇒ 노드 두개를 매개변수로 넣고, 노드의 부모를 교체한다!교체되는 노드(부모 없어짐) : u교체할 노드 (부모 변경): vu 노드의 부모가 nil이라면 (= u 노드가 루트노드라면) v 노드를 루트노드로 바꿔준다.u 노드가 부모의 왼쪽 자식이라면, u 노드의 부모의 왼
tree_to_array(tree, array, n)=> RB tree의 내용을 key 순서대로 주어진 array로 변환=> array의 크기는 n으로 주어지며 tree의 크기가 n 보다 큰 경우에는 순서대로 n개 까지만 변환=> array의 메모리 공간은 이 함수를
동적 메모리 할당? 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상메모리 영역을 관리한다. 힙(heap)은 프로그램 실행 중 동적으로 할당되는 메모리 공간을 관리하는 메모리 영역이다. 동적 메모리 할당을 사용하는 가장 중요한 이유는 프로그램을 실행시키
메모리 할당과 해제 과정에서 발생하는 현상이다.할당된 메모리 공간들이 나눠져서 총 사용 가능한 메모리가 충분하지만, 실제로는 연속된 큰 메모리 블록을 할당하는 데에 실패하는 상황을 의미메모리를 효율적으로 사용하지 못하게 만들어, 프로그램의 성능에 영향을 줄 수 있다.1
동적 메모리 할당 및 해제를 위한 메모리 관리 방법 중 하나힙 블록을 배열로 표현한 구조를 묵시적 가용 리스트"묵시적(Implicit)"이라 표현하는 이유는 메모리 블록이 헤더 내 필드에 의해 암묵적으로 연결되기 때문이다.헤더 영역에는 블록의 크기와 할당 여부 정보가
가용 블록끼리 포인터로 연결해 다음 블록 위치를 명시적으로 알 수 있다.이러한 연결은 할당된 블록들 간의 연결이며, 메모리 풀에서 다시 사용 가능한 가용한 블록들의 집합을 형성한다. 명시적 가용 리스트에서는 각 가용 블록에는 헤더와 푸터가 있을 수 있지만, 데이터를 저
1) 블록 할당블록의 사용 여부와 블록의 사이즈를 각 블록 내부의 header 및 footer에 저장한다.리스트를 처음부터 검색해서 크기가 맞는 첫번째 가용 블록을 선택한다. (First fit)선택한 가용 블록이 사용할 사이즈보다 큰 사이즈를 가지고 있다면,필요한 사
mmap은 파일을 메모리에 매핑하는 시스템 콜이다. 파일을 메모리에 직접 로드하여 접근할 수 있다.대용량 파일을 효율적으로 처리할 수 있다.파일을 메모리에 직접 매핑하기 때문에 I/O 작업을 최소화할 수 있다.메모리 매핑은 파일의 크기에 따라 메모리를 동적으로 사용하므
BSD는 "버클리 소프트웨어 배포판(Berkeley Software Distribution)"의 약자로, 네트워크 통신을 위한 소프트웨어 인터페이스BSD 소켓은 BSD 운영 체제에서 개발되었으며, TCP/IP 프로토콜 기반 네트워크 통신을 가능하게 한다.일반적으로 so
웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜HTTP는 일반적으로 TCP/IP 위에서 동작기본적으로 클라이언트가 요청(Request)을 보내고 서버가 응답(Response)을 반환하는 방식으로 동작클라이언트-서버 모델에 기반을 둔 상태 없는(stateless
클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식즉, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.HTTP 메소드의 종류는 총 9가지가 있다.리소스 조회 메서드 (Read)서버에 전달하고 싶은 데이터
웹 서버가 클라이언트의 요청에 대한 결과를 알려주는 데 사용되는 코드100~500번대까지 상태 코드가 정의되어있다.상태 코드는 세 자리 숫자로 되어 있는데 첫 번째 숫자는 HTTP 응답의 종류를 구분하는 데 사용하며 나머지 2개의 숫자는 세부적인 응답 내용 구분을 위한
👩🏻💻 source codeint main(int argc, char \*\*argv)HTTP 웹 서버를 시작하고 클라이언트의 연결을 수신하여 처리한다.매개변수:argc: 인자 개수argv: 인자 배열인자 예시 예시 1: 프로그램이 명령행에 아무런 인자도 받
💡 csapp (번역본) 930p11.6.c / 11.7 / 11.9 / 11.11풀이 및 구현입니다.source code 👩🏻💻Tiny의 출력을 조사해서 여러분이 사용하는 브라우저의 HTTP 버전을 결정하라. => HTTP/1.0 or HTTP/1.1=> 왜
🔥 tiny 구현을 완료했다면 proxy를 구현해보자!🔗 http://csapp.cs.cmu.edu/3e/proxylab.pdf🔗 과제 요약💡 HTTP/1.0 GET 요청을 처리하는 기본적인 시퀀셜 프록시명시된 포트로부터 들어오는 요청을 항상 대기연결이
🔥 tiny, Sequential Proxy 구현을 완료했다면 Concurrent Proxy를 구현해보자!🔗 http://csapp.cs.cmu.edu/3e/proxylab.pdf🔗 과제 요약🔗 tiny🔗 Sequential Proxy💡 동시다발적인
✔️ 본 포스팅은 HTTP 완벽 가이드 1장을 기반으로 작성하였습니다.1장에서 다루는 내용
✔️ 본 포스팅은 HTTP 완벽 가이드 2장을 기반으로 작성하였습니다.URL 문법, 여러 URL 컴포넌트가 어떤 의미를 가지며 무엇을 수행하는지.여러 웹 클라이언트가 지원하는 상대 URL과 확장 URL 같은 단축 URL에 대해서.URL의 인코딩과 문자 규칙.여러 인터넷
✔️ 본 포스팅은 HTTP 완벽 가이드 3장을 기반으로 작성하였습니다.HTTP가 인터넷의 배달원이라면, HTTP 메시지는 무언가를 담아 보내는 소포와 같다.메시지가 어떻게 흘러가는가HTTP 메시지의 세 부분(시작줄, 헤더, 개체 본문)요청과 응답 메시지의 차이요청 메시