반응형

학습자료(~2017) 232

[LINUX] Library constructor and destructor functions (라이브러리 생성자, 소멸자 기능 _init , _fini)

리눅스 라이브러리의 생성자와 소멸자를 등록하는 방법은 2가지가 있다.라이브러리 생성자나 소멸자는 라이브러리 전역에서 쓰이고 한번만 초기화 되어야 하는 객체에 사용하라. 예를 들어 전역적으로 쓰이는 변수, mutex 등을 말한다. 추천 void __attribute__ ((constructor)) my_init(void) void __attribute__ ((destructor)) my_fini(void) 생성자(constructor) 는 dlopen 이 반환되기 전이나 혹은 라이브러리가 로드 될 때에 실행된다. 소멸자(destructor) 는 dlclose 가 반환되기 전에 혹은 exit()나 main() 이 끝날때 실행된다.중요 : 공유 라이브러리는 컴파일시 -nostartfiles 혹은 -nostdl..

Cache 정리

cache 란? 캐시란 데이터를 임시로 저장해두는 장소를 말한다. 일반적으로 캐시는 기존 저장공간보다 빠른 공간이 사용되며 데이터의 지역성이나 접근 비율이 많은 경우 빠른 접근 공간인 캐시에 해당 데이터를 임시저장하여 해당 데이터를 필요로 하는 시점에서 빠르게 제공하는 것을 목적으로 한다. 컴퓨터에서는 RAM보다 빠른 L1,L2 레지스터를 캐시로 사용하고 웹 브라우저에서는 느린 네트워크 웹 서버보다 빠른 하드의 임시저장 공간이 캐시로 사용된다. cache 는 공간 지역성과 시간 지역성을 기초로 한다. 공간 지역성은 임의의 데이터를 참조했을 경우 다음 참조는 그 데이터의 가까운 곳에서 일어난다는 것이고 시간 지역성은 한번 읽은 데이터는 가까운 시일내에 다시 참조된다는 이론이다. 용어 cache hit : ..

학습자료(~2017) 2013.03.08

[Linux] path resolution , 경로 분석법

path resolution man page : http://linux.die.net/man/2/path_resolution path 값을 인자로 받는 함수는 path에 대한 검증을 해야한다. 상대경로일 경우 절대 경로로 바꾸어주고 (/test/../a -> /a) path 에 해당하는 파일의 종류를 파악하고 함수가 동작해야하는가 말아야하는가를 판단해야한다. 1.상대경로를 절대경로로 바꾼다.가. 연속된 '/' 는 '/' 하나로 대체한다. 예) '//' -> '/'나. '/./' 로 '/' 하나로 대체한다.다. '/../' 상위 토큰(폴더)을 제거 예) /test/test/../ -> /test/라. 경로의 마지막이 '/..' 일 경우 상위 토큰(폴더)을 제거마. 경로의 마지막이 '/' 라면 이 경로는 디..

[LINUX]ext3, ext4 크기 확장 - Resize an ext3, ext4

만약 LVM 을 통해 기존에 있던 Logical volume 을 lvresize 나 lvextend 혹은 lvreduce 를 통해 크기를 변경했을 때 lvdisplay 로 확인했을 때는 크기가 확장되거나 줄었는데 실제 mount (df) 를 통해 보면 이전하고 크기가 바뀌지 않았을 경우가 있다.이는 LVM logical volume 의 크기를 조정했으나 이 볼륨을 실제 ext3 나 ext4 등 파일시스템으로 초기 포맷 했을 때 크기가 고정되어 버렸기 때문이다. 용어는 정확히 모르겠으나 free block 테이블이 이미 고정되었기 때문일 것이다.(추측이다.)그럴때 resize2fs 라는 유틸을 통해 파일시스템을 다시 조정하면 된다.(용어가 맞나 모르겠다.)아래 내용은 http://en.positon.org..

[LINUX] samba 삼바 설정 및 해결

Samba(삼바)란? 리눅스에서 윈도우 시스템에게 파일시스템을 공유하기 위한 프로그램이다.SMB/CIFS 네트워크 프로토콜을 재구현한 프로그램이다.즉 리눅스의 파일시스템이나 프린트를 윈도우에게 공유할 수 있게 해준다. 설치(centos 기준) $ yum install samba 실행 및 중지 $ service smb start $ service smb stop 설정 /etc/samba/smb.conf 변경아래의 설정 설명은 http://blog.nextcube.pe.kr/126 에서 가지고 왔다.자동 홈디렉토리리눅스 계정 사용자들이 홈디렉토리를 로그인홈으로 사용하기 위한 설정[home]으로 선언된 부분에 정의프린터 설정네트워크 공유프린터에 대한 설정[printers]으로 선언된 부분에 정의주석처리 # ,..

[리눅스]쉘 명령어 중첩하기

간혹 백엔드" ` " 를 써서 쉘 스크립트를 작성해야 될 때가 있다.백엔드를 썼는데 그 백엔드 내부에 또 백엔드를 써야될 때억지로 예문을 만들어 보았다.예) $ ls -al `ls `pwd` `위와 같이 내부에 백엔드가 존재할 때 이렇게 하자$ ls -al `ls \`pwd\``쉘 명령어에서 \ 은 이스케이프 문자로 이스케이프 문자 다음에 백엔드는 문자 그대로 해석된다. 해석단계ls -al `ls \`pwd\`` => `ls \`pwd\`` => ls `pwd` => pwd나의 글재주가 부족하여 모라 말로는 설명을 못하겠다.외부의 백엔드가 해석되면서 \` 은 일반 문자 ` 로 해석되고 `은 다시 백엔드로 해석되는 것이다.. 정리 이중 중첩의 경우 = ` \` \` `삼중 중첩의 경우 = ` \` \\\`..

[자동 형변환] int 보다 작은 데이터 형의 연산시 문제점

int 보다 작은 데이터 형은 연산전에 int (정수) 형으로 캐스팅 된다.암시적인 타입 캐스팅후 문제점이 아래에 있다. 너무나도 쉽게 넘어갈수 있는 문제지만 그 결과는 참담하다.이제부터는 모든 연산에 대해서 타입 캐스팅을 확실히 해야겠다. 또한 왠만하면 연산을 한 라인에 쓰기 보다는 여러 라인으로 한 연산씩 처리해야겠다.맨 아래의 해결 방법도 좋지만 이 방법도 사용해볼만 하다. uint8_t port = 0x5a;uint8_t temp = (~port);uint8_t result_8 = temp >> 4; 출처 : https://www.securecoding.cert.org/confluence/display/seccode/INT02-C.+Understand+integer+conversion+rulesN..

반응형