[Linux][Kernel] 슬랩 메모리: kfree 소개
By Guillermo Austin Kim | 2018년 4월 10일 |
이번에는 kfree에 대해서 알아봅니다. 이번에도 패치 코드를 하나 작성할게요. 이번에는 kmalloc 함수로 메모리를 할당 후 kfree 함수를 호출해서 메모리를 해제합니다. 그리고 바로 커널 크래시를 유발하죠. 커널 크래시가 발생하면 코어 덤프(vmcore)가 생깁니다. 이 파일을 Trace32로 올려서 메모리 해제 시 어떤 동작을 하는 지 상세히 알아 보려고 하거든요. 우선 할당된 메모리 주소는 0xE7AE1300입니다.(static u32 *) austin_debug_data = 0xE7AE1300 0xE7AE1300 메모리 공간은 어떤 값들로 구성됐는지 알아볼까요?_____address|_data________|value_____________|symbolNSD:E7AE1300|6B 6B 6B
[bash: sed] 문자열 대체 명령 여러개를 파일에 저장해서 활용하기
By 반달가면 | 2018년 1월 15일 |
sed 명령에서 여러개의 문자열을 각각 대체할 경우 -e 옵션을 활용할 수 있는데(이전 게시물을 참고하자. 여기로), 대체 명령을 파일에 저장해서 이용할 수도 있다. 우선 -e 옵션의 예시를 보자. # 문자열 abc를 123으로, def를 456으로 대체 echo "abc def xyz" | sed -e 's/abc/123/' -e 's/def/456/' 123 456 xyz 위의 작업에서 -e 옵션에 사용할 명령들을 파일에 저장해서 불러올 수 있다. 예를 들어 test.sed 파일에 이 명령들을 저장했다면 아래와 같은 형태가 된다. # test.sed 파일 내용 확인 cat test.sed s/abc/123/ s/def/456/ test.sed 파일에 있는 명령어를 적용
curlftpfs - 리눅스에서 ftp 서버를 디렉토리에 연결(마운트)하기
By 반달가면 | 2018년 5월 9일 |
리눅스에서 curlftpfs를 활용하면 ftp 서버에 접속해서 작업하는 과정을 로컬(local) 디렉토리에서 작업하는 방식과 동일하게 만들 수 있다. ftp 서버의 디렉토리를 로컬 디렉토리에 연결(마운트)해 준다. 우선 curlftpfs 패키지를 설치하자. 데이안/우분투 계열 기준으로 터미널창에서 아래와 같이 입력 # curlftpfs 설치 sudo apt-get install curlftpfs 이제 연결을 해 보자. 예를 들어 ~/ftpfs_test 디렉토리에 연결할 ftp 서버 주소는 ftp.my_server.net, 접속 계정은 john, 암호는 abcd라면 아래와 같이 실행할 수 있다. curlftpfs ~/ftpfs_test 이제 ~/ftpfs_test 디렉토리로 가 보
[리눅스] insmod 명령어로 드라이버 설치 시 커널 내부 동작 디버깅해보기(ftrace)
By Guillermo Austin Kim | 2020년 6월 28일 |
이전에 다음 글에서 insmod 명령어를 통해 모듈 타입 디바이스 드라이버가 설치될 때,커널 내부 함수가 어떤 흐름으로 작동하는지 코드를 리뷰했습니다. [리눅스] 드라이버: module_init 키워드로 지정한 함수가 호출되는 원리 - sys_finit_module()http://rousalome.egloos.com/10016090 이어서 이번 시간에는 ftrace를 통해 hello_module_init() 함수가 어떻게 호출되는지 살펴보겠습니다. insmod 명령어로 디바이스 드라이버를 설치할 때의 전체 흐름 먼저 다음 그림은 insmod 명령어로 디바이스 드라이버를 설치할 때의 전체 흐름을 나타냅니다. 그림의 윗 부분에서 '유저 공간'으로 표기된 부분을 봅시다. insmod가 실행되어 시