thread safe는 단순히 용어만 보더라도, thread 환경에서 잘 동작하는 구나라는 것을 직관적으로 알 수 있다. 하지만 reentrant는 그렇지 않다. 과거에는 reentrant와 thread safe를 혼용하여 쓰는 책들도 더러 있었다. 이에, 이 둘을 명확히 구분하고 이해해보고자 한다. thread safe `thread safe`는 말 그대로, 멀티 스레드 환경에서도 원래 의도한 대로 동작하는 코드를 의미한다. 예를 들어 `critical section`에 접근하고자 할 때, 스레드 별로 동기화를 하지 않게 되면 원치 않는 결과와 직면하게 된다. char arr[10]; int idx = 0; int func(char c) { int i = 0; if (idx >= sizeof(arr))..
C언어로 동작하는 프로세스는 크게 4가지의 메모리 영역(text, data, heap, stack)을 통해 구성된다. 전역 변수, 지역변수 등 사용되는 위치나 키워드 등에 따라 메모리 영역이 달라지게 된다. 작은 프로그램 단위에서는 크게 신경 쓰지 않아도 되지만, 다루는 자료구조의 크기가 큰 경우 stack overflow와 같은 오류에 직면할 수 있다. 이러한 오류를 방지하기 위해서는 메모리 영역에 대한 명확한 이해가 필요하다. Memory Layout stack & heap stack 함수 호출 시 생성되고, 함수 종료 시 반환되는 영역이다. 즉 지역 변수(local variable)이 할당되는 영역이다. heap 동적으로 할당되는 변수를 위한 영역이다. 예를 들면, malloc 또는 calloc을 ..
네트워크의 계층에서 2 계층은 MAC 주소를 사용하고, 3 계층은 IP 주소를 사용한다. 따라서 각 계층에서는 사전에 정의된 규격 (MAC, IP)를 사용하여 통신이 가능하다. 만약, 2-3 계층으로 통신이 필요다면 ARP, RARP를 통해 각 계층에서 사용하는 주소를 변환하여야 한다. 이에 ARP에 대해 알아보고, 실제 주고받는 패킷을 분석해보고자 한다. ARP? ARP는 `Address Resolution Protocol`의 약자로, 말 그대로 주소 결정 프로토콜이다. ARP를 이해하기 위해서는 4가지의 용어(Term)에 대해 이해하면 보다 쉽게 이해할 수 있다. Cache ARP를 통해 MAC 주소를 확인 후, ARP Table에 정보를 유지하는 것 Cache Timeout ARP Table에 Ca..
이진 탐색 트리를 구현하기 위해, 구글에 여러 코드들을 보았지만, 데이터 타입에 상관없이 사용할 수 있는 코드는 없었다. 이에 이진 검색 트리의 동작 원리나 이해보다는, 구현을 중점으로 글을 정리해보고자 한다. BST? Binary search tree - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Data structure in tree form sorted for fast lookup A binary search tree of size 9 and depth 3, with 8 at the root. The leaves are not drawn. In computer science, a binary s..