본문 바로가기

개발 Note/Linux

(16)
link error, undefined symbol undefined symbol error는 흔히 어떤 함수를 사용하려고 하는데, 실제 함수의 구현체가 없는 경우에 linking 하는 과정에서 발생하는 에러입니다. 개발자가 보기에는 에러가 발생안해야 하는데, 이상하게 발생한다고 느껴지는 경우들이 종종 있습니다. 몇가지 경우를 살펴봅시다. 1) header file에만 해당 함수가 정의되어있고 구현부가 없는 경우,만약 바이너리(binary)로 되어있는 lib과 h 파일을 사용하는 경우, lib안에 해당 함수가 구현이 안되어있을 것입니다. 2) binary에도 구현이 되어있는데, 안되는 경우,binary 가 so또는 dll 과 같이 shared lib으로 만들어졌을때에, 해당 함수가 export안되어 있어서, 외부에서는 사용할 수 없는 경우입니다. 3) 구..
open 되어있는 fd 확인하기. 코딩이나, 디버깅을 하다보면, open되어있는 fd들을 확인해보고 싶을 때가 있습니다. 어떤 socket이 열려 있는지, 어떠 파일을 지금 사용하고 있는지 등등 말이죠. 리눅스에서는 process 별로 확인할 수 있는 방법이 있습니다. /proc/ "pid"/ fd 여기에 들어가서 ls를 해보면, 사용중인 fd들을 확인할 수 있습니다.
프로세스의 메모리 사용량 USS(Unique Set Size) : 프로세스만의 고유한 페이지 수. 공유되지 않는 프로세스에 private한 메모리 크기이다. PSS(Proportional Set Size) : USS + (공유 페이지 / 공유하는 프로세스 수). 즉, 프로세스 고유 메모리 사용량 + 하나의 프로세스가 차지하는 공유 메모리 비율이다. 만약 A프로세스가 6MB 메모리를 사용하고 그 중 2MB가 그 프로세스의 고유 영역이라면, 나머지 4MB는 공유 메모리이다. 4MB의 공유메모리를 4개의 프로세스가 공유하고 있다면 PSS는 2MB + (4MB/4) = 3MB가 된다. [펌] http://ecogeo.tistory.com/255
rpm 사용법 rpm -qip 패키지.rpm rpm -Va : 설치되어 있는 rpm 정보 rpm -qf 파일 절대 경로 : 이미 설치되어 있는 rpm의 버젼 정보 rpm -qRp 패키지.rpm : 해당 파일과 의존성을 갖는 파일들 출력 rpm -qip 패키지.rpm : 해당 파일에 대한 파일 목록 표시 spec파일에 쓰인 정보 출력 rpm -qpl 패키지.rpm : 설치할 파일의 목록 표시 rpm2cpio 패키지.rpm | cpio -i --make-directories -E 패키지 : rpm 패키지를 설치하지 않고 그냥 풀거나, 특정 파일만 골라내고 싶을때는? 참조1] http://kltp.kldp.org/tips/KLTP-KLDP-11.html#ss11.3 참조2] http://kltp.kldp.org/storie..
Linux 커널 드라이버 모형: 협업의 장점 - in Beautiful code Linux 커널 드라이버 모형: 협업의 장점 그레그 크로아 - 하트먼 리눅스 커널 드라이버 모형은 운영체제가 관리하는 모든 종류의 장치를 포괄하는 하나의 시스템 전역적 트리를 구축하기 위한것이다. 지난 수년 동안, 이를 위해 핵심 자료구조와 코드는 몇안되는 장치들을 다루는 하나의 아주 단순한 시스템으로 시작해서 현실 세계에서 처리할 필요가 있는 모든 종류의 장치를 제어하는 고도로 규모가변적인 시스템으로 발전해 왔다. Linux 커널이 발전함에 따라 처리해야 하는 주변 장치들의 종류도 점점 더 늘어나게 되었는데, 그 과정에서 커널의 핵심부(Core)는 그렇게 다양한 장치 형식들을 좀 더 쉽게 관리할 수 있는 방식들을 받아들이며 진화해 왔다. 거의 모든 장치는 두 개의 구별되는 부분으로 구성된다. 하나는 운..
Linux kernel : NMI 감시기 NMI 감시기 검사 멀티 프로세서 시스템에서 커널 개발자를 위한 Watchdog Sytem 이 watchdog system은 시스템을 멈추게 하는 커널 버그를 감지하는데 유용하게 사용된다. 이 감시기는 모든 CPU에 주기적으로 NMI 인터럽트를 발생시키는 지역 입출력 APIC의 똑똑한 하드웨어 특징에 기초한다. cli 어셈블러 명령어로 NMI 인터럽트를 금지할 수 없으므로 인터럽트를 금지한 경우라도 감시기는 데드락을 발견할 수 있다. 슬랩 할당자 메모리 영역을 일련의 자료구조와 생성자 소멸자 라는 메소드를 포함한 객체로 바라본다. 생성자는 메모리 영역을 초기화 하고, 소멸자는 나머지에 대한 정리를 한다. 슬랩 할당자는 객체를 반복해서 초기화 하지 않도록 할당하다가 해지한 객체를 폐기하지 않고 메모리를 그..
kernel에서 user mode 로 정보 전달 방법 Kernel Korner - Why and How to Use Netlink Socket January 5th, 2005 by Kevin Kaichuan He in SysAdmin Use this bidirectional, versatile method to pass data between kernel and user space. Average: Select ratingCancel ratingPoorOkayGoodGreatAwesome Your rating: None Average: 4.4 (63 votes) Due to the complexity of developing and maintaining the kernel, only the most essential and performance-critic..
[Windowing System] Linux X Server 요즘 관심사가 Multi-process, 상의 Windowing system이다 보니, 이런 저런 자료들을 찾아보게 되는데, 제 입장에서 가장 쉽게 접할 수 있는 System이 Windows의 windowing system과 linux 의 windowing system이더군요. 저도 제가 쓰는 OS가 Windows 이고, 학생때 주로 Windows 프로그래밍을 하다보니, embeded 에서도 어떤 모듈을 개발해야 될때 밴치마킹을 windows로 했었습니다. "화면복원을 windows에서는 어떻게 구현했을까? Clipboard를 만들생각인데, MSDN에서 한번 찾아볼까? " 대충 이런식 이죠. Windowing System이란? 기본정의는 application의 GUI를 사각형 영역(window, 창) 안..