바로가기 ㅇㅇ
우연찮게 회사와 연계가 되어 몬타비스타 교육을 다녀왔습니다, 임베디드 프로그래밍에서 사용되는 문법이나, 리눅스 체계에 대한 전반적인 이야기가 있었는데, 리눅스에 대해 무뇌한 이라면 모를까.. 살짝 지루한 감도 있었습니다. /proc에는 뭐가 있는 둥.. oom killer.. timer, signal.. 물론 호기심을 돋구는 부분도 있었는데, gdb 활용을 위해 target board에 gdbserver를 올리는 것이나, 평소 살짝쿵 궁금했던 static/shard library building. PPT를 묶어 놓은 스프링 노트를 받아왔으니 이따금씩 봐야겠습니다, 그나저나, 아직까지도 페도라니, 우분투니.. 몬타비스타니.. 무엇이 특장점이고 단점을 모르니.... 모자라네요, 끝도 없이.... 에고고..
※ memory_get_usage (PHP 4 >= 4.3.2, PHP 5)memory_get_usage -- Returns the amount of memory allocated to PHP Descriptionint memory_get_usage ( void ) Returns the amount of memory, in bytes, that's currently being allocated to your PHP script. memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option. ※ ini_set('memory_limit', '..M') (PHP 4..
◆ kmalloc : 연속적인 메모리 공간 사용: 최대 32 * PAGE_SIZE(4096byte) = 32*4096byte = 131,072 byte: 그 이상의 할당을 시도 할 경우 정상적인 예외처리가 지원하지 않는다면 프로그램이 비정상 종료 될 수 있음.: 이는 미리 slab에 지정 되어 있는 사이즈의 최대 cache가 131,072이기 때문, 즉 include/linux/kmalloc_sizes.h의 편집을 통해 값을 조정 할 수도 있다. (커널에서 확인은 cat /proc/slabinfo): 4K가 초과되는 경우 garbage collector가 동작하고 메모리를 더 확보하기 위한 시도가 있다고 하는데 확인 못함: 함수 형태 static inline void *kmalloc(size_t size..
기본적으로 dhcp discover message는 다른 서브넷으로 넘어가지 못하므로, 이를 위해 dhcp relay 기능이 고안되었습니다, 간략한 동작 모드를 살펴보고 주의점을 알아봅니다. 대략 동작은 위와 같습니다. (각 Message에 대한 의미는 여기를 참고하도록 합니다.) 꼭 기억해야 될 사항은 분명 서브넷은 넘어가지만 Offer Message나 Ack에서 dhcp server는 relay agent(A) 아이피에 대한 routing을 참조로 나가지는 않는다는것과 (단말 to dhcp relay agent 사이의 라우팅 참조), (dhcp server에서 offer msg나 ack를 보낼때 단말 쪽 라우팅을 참조하지 못할 경우 port unreachble을 맛 볼 수도 있습니다.) dhcp se..
mysql 에서 제공 된다니.. 놀랍습니다.. 활용하면 끝도 없는 Query... mysql> select num from my_table; +-----+ | num | +-----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | +-----+ 11 rows in set (0.00 sec) mysql> select num from my_table where num & 2; --> 10 (2진수) +-----+ | num | +-----+ | 2 | --> 10 | 3 | --> 11 | 6 | --> 110 | 7 | --> 111 | 10 | --> 1010 | 11 | --> 1011 +-----+ 6 rows in set (..
UTC : 원자시에 평균태양시를 가미한 협정세계시. 일기도에서 United time code의 약자라고 표현하는데, 정확한 표현은 Universal Time Coordinated. UTC(협정시계시) 에 timezone(Korea:KST-9 혹은 GMT+09:00)이 합산되면 각국의 시각이 도출 됩니다. 간단하게 언급하면 UTC는 현재 우리가 살고 있는 시각에서 9시간을 빼면 됩니다 (대한민국 기준), 그리고 보통 운영체제의 하드웨어 Clock (bios)은 UTC에 맞춰 있으므로 참고 하고 혼동하지 않도록 합니다. Linux의 경우 date 명령어를 통해 timezone이 반영된 시각을 알 수 있고, $ date Mon Mar 12 16:38:38 PDT 2012 hwclock 명령어를 통해 하드웨어 ..
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 64bit kernel 에서 32bit application이 내리는 ioctl을 처리하기 위한 함수, ioctl과 다르게 inode를 매개로 갖지 않고, 함수의 return 타입이 long 입니다. 커널 버전 2.6.11 부터 존재 했던 함수라는데.. 이제서야 알았네요.. 64bit kernel 빌드하면서 (생각지도 않게) ioctl이 정상적으로 내려오지 않아서 살짝쿵 당황, 여하튼, 이미 있는 함수는 잘 찾아서 사용하도록 합시다 :)
좋은 정보 :) 바로가기
#1 [교육 1일차] 전부터 한번은 듣고 싶었던 splunk 강의, (미리 밝히지만, 엄청난 기술에 대한 기대감 때문이 아닌.. 단지 호기심 때문에.. ^^; ) 근래에 mos쪽 splunk 직원분께서 회사에 방문해서 세미나를 갖은 적이 있었습니다. 일종의 협력 관계를 맺기 위한(?)...세미나였을려나.. (사실 아직 까지는 회사에서 splunk를 위한 라이센스를 구입할 의사는 전혀 없어 보입니다. -물론 개인적인 생각) 대용량으로 쏟아지는 로그 데이터 처리를 위한 기술로 알려진 splunk, 모든 로우 데이터(meta Data)에서 정확하게 필요한 정보를 뽑아내서 출력하는데 출력 또한 사용자 편의에 맞게 다양한 그래프와 차트 지원. (로우 데이터 포함) 그렇지만 이런 기술이 궁금해서 강의에 참여한것은 ..
기본 문법 익히기 !! 바로가기
make : 바로가기 ld : 바로가기
피할수 없는 if 문의 분기라면, 하지만 그 결과가 항상(거의) 참 혹은 거짓이라면..? 이때 사용할 수 있는게 likely, unlikely 명령어 입니다. 아래와 같이 내부적으로 gcc의 builtin 함수로 define되어 있습니다. #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) 사용 예를 보면, void* p = malloc(128); if (p==NULL) here(); 보통 위와 같은 코딩을 하지만, 사실 p가 NULL인 경우는 극히 드문데요, 이러한 경우 cpu에게 p가 대부분 false일 것이라고 알려주는 unlikely로 대체할 수 있는데 아래와 같습니다. void* p ..
보통 리눅스에서 "현재 free가 몇이야?" 라는 질문에서 free는, 실제 사용 가능한 메모리의 의미를 내포합니다. 하지만, 위와 같이 free command로 확인하는 free 필드는 buffers와 cached를 사용중(used)인 메모리로 간주하고 계산됩니다. (즉 used에 buffers와 cached가 포함되어 있고 free 필드에는 buffers와 cached가 포함되지 않았다는 의미) 커널 내부적으로 buffers나 cached는 메모리가 부족한 경우 언제든지 free되어 가용 될 수 있지만, 사용자 관점에서는 그저 어딘가(두리뭉실)에서 붙잡고 있는 메모리로 여겨지기 때문에 사용중인 영역으로 표현한것이 아닐까요? (엄밀히 말하자면 아직 storage와의 sync가 되지 않은 메모리라고..)..
아직 gdb가 강력한 디버깅 툴이라는 생각은 들지 않습니다 (딱히 사용할 일이 없다, 사실 제품에 gdb를 탑재 시키지 않기 때문에) 그렇지만 종종 유용하다거나, 기억하고 싶은 명령어를 나열하도록 합니다. 1) list 명령어 : 변수나 함수 근처 +-5 line씩 총 10 line 출력 (엔터 입력 시에 그 다음 10라인을 출력) (gdb) list debug_kernel 293 294 EXPORT_SYMBOL(loops_per_jiffy); 295 296 static int __init debug_kernel(char *str) 297 { 298 if (*str) 299 return 0; 300 console_loglevel = 10; 301 return 1; 302 } (gdb) 2) print 명..
kernel thread는 프로세스로서 프로세스와 마찬가지로 프로세스 ID(pid)가 할당되며 자신만의 실행 컨텍스트를 가집니다. thread의 특징은 오직 커널 공간에서만 존재(커널 코드를 자유롭게 부를 수 있다는 장점을 의미)하고 주소 공간을 가지지 않으며 다른 Kernel Thread에 의해서만 생성 가능하다는 점 입니다. 또한 프로세스 이므로 사용자 프로세스와 마찬가지로 시스템 콜을 부를 수가 있습니다. 즉 Kernel Thread는 커널 영역과 시스템 콜에 자유롭게 접근할 수 있는 커널 모드에서 동작하는 프로세스인 것입니다. 이러한 thread를 생성하는 루틴을 알아보도록 합니다. 우선 Kernel thread를 만들 때 이용되는 함수 원형은 아래와 같습니다. int kernel_thread (..
비트 연산 관련해서 참고하면 좋은 사이트 (여기)
- Total
- Today
- Yesterday