반응형

학습자료(~2017)/리눅스 110

지연 가능 함수, 커널 태스크릿 및 작업 큐 (bottom half)

지연 가능 함수, 커널 태스크릿 및 작업 큐 Linux 2.6의 하반부소개 스레드 작업의 빠른 처리를 위해 Linux? 커널에서는 태스크릿과 작업 큐를 제공합니다. 태스크릿과 작업 큐는 지연 가능 기능을 구현하고 드라이버의 기존 하반부 메커니즘을 대체합니다. 이 기사에서는 커널에서 태스크릿과 작업 큐를 사용하는 방법을 살펴본 후 이러한 API를 사용하여 지연 가능 함수를 작성하는 방법을 보여 줍니다. 이 기사에서는 커널 컨텍스트(특히 2.6.27.14 Linux 커널 내의 컨텍스트) 간의 처리를 지연하는 데 사용되는 두 가지 방법을 설명한다. 이러한 방법은 Linux 커널과 관련된 방법이지만 그 기본 아이디어는 아키텍처 관점에서도 유용하다. 예를 들어, 작업 스케줄링을 위한 기존 스케줄러 대신 이러한 아..

gdb 사용법 정리

gdb 사용법 사용법 help 도움말, 명령어 분류 목록 출력 help [class] 해당 class에 속한 명령어 목록 표시 help [command] 해당 command에 대한 도움말 표시 *** class와 command의 축약형도 지원됨 명령어 분류 목록 running 프로그램 수행 support 지원 도구 stack 스택 검사 user-defined 사용자 정의 명령 data 데이타 검사 aliases 다른 명령어의 별칭 files 검사할 파일 obscure 기타 status 상태 조회 internals 유지보수 명령 breakpoints 어떤 포인트에서 프로그램을 중단하게 만듦 프로그램의 수행 (running) show args 디버깅할 프로그램에 전달되는 argument를 보여준다. 이 명령..

gdb 를 통한 디버깅 따라하기

gdb 를 통한 디버깅 따라하기 참고서적 : 유닉스 리눅스 프로그래밍 필수 유틸리티 : vi, make, gcc, gdb, cvs, rpm 1. 우선 컴파일 시에 디버깅 정보를 담아야 한다. gcc -g -o [프로그램명] [소스파일명] 디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다. 2. 실행방법 gdb [프로그램명] gdb [프로그램명] [core파일명] gdb [프로그램명] [실행중인프로세스pid] 3. 종료방법 q Ctrl + d 4. 소스 찾아가기 (list) l : main 함수를 기점으로 소스의 내용이 출력된다 l 10 : 10 행 주변의 소스가 출력되는데 10 - 5 행부터 10 + 5행까지 총 10행이 출려된다. l func : func 함수의 소스를 출력..

Camera driver(V4L2) 에 관한 간략한 설명

Camera driver(V4L2) 에 관한 간략한 설명 원본 : Camera driver(V4L2) 에 관한 간략한 설명 - MIZI Wiki by 구글캐쉬 V4L2 프로그램 구조(카메라 드라이버와 관련된) - 쓰는 파일오퍼레이션의 종류 mmap() - VIDIOC_REQBUFS를 통해 할당한 버퍼를 mmap을 이용해 유저 공간에 맵핑해서 사용. 원래 read(), mmap(), user pointer 세 가지 경우가 있으나 일단 지금은 mmap()의 경우만 지원함. ioctl() poll() - ioctl operation의 종류 VIDIOC_QUERYCAP (Query Capability) : 드라이버가 할 수 있는 정도를 유저가 요청 VIDIOC_G_FMT (Get format) : 현재 드라이버..

리눅스 커널에 시스템 콜 추가하는 간략한 설명

How to add a system call in linux kernel (Ubuntu OS) Posted on March 26, 2011 by Enzam This is just a brief description, so read at your own risk. I have tested & used it. So it should be working. Please install a fresh install of Ubuntu. This tutorial is for both 32 and 64 bit x86 processors and operating system. I have assumed that you are working in Ubuntu 10.10 and using kernel version 2.6.3..

bind() 실행 에러 시 처리법

예제의 프로그램을 실행하면 이상없이 자료 송수신이 잘됩니다. 그런데 문제는 server쪽입니다. 프로그램을 강제 종료하든 그냥 종료하든 다시 실행하면 bind() 에서 에러가 발생합니다. 프로그램에도 이상이 없는데 왜 이럴까? 또, 몇 초 있다가 다시 실행하면 아무 이상없이 실행 됩니다. 이유는 프로그램에서 소켓을 close() 함수를 이용하여 소켓을 소멸 시켜도 커널은 바로 속멸 시키지 않고 몇 초 정도 생명(?)을 유지시켜 줍니다. 이렇게 함으로써 클라이언트와 아직 처리되지 않는 전문을 마저 처리할 수 있도록 하기 위함입니다. 이와 같이 바로 죽이지 않고 대기 시키는 상태를 TIME_WAIT 상태라고 하는데, bind()된 소켓이 아직 죽지도 않았는데 같은 주소, 같은 포트로 또 다른 소켓이 bind..

리눅스 - 압축, 압축해제(압축풀기)

리눅스 압축하기 & 해제하기 tar 옵션 -c : tar 파일 만들 때 사용 -x : 묶여진 tar파일 해제할 때 사용 -v : 파일들을 묶거나 해제할 때 파일들의 이름과 크기 표시 -f : 사용할 tar 파일을 지정 -t : 묶여진 tar 파일의 내용물을 출력 일반적으로 tar 묶을 때 : tar -cvf 파일명.tar 일반적으로 tar 풀 때 : tar -xvf 파일명.tar tar파일 안의 파일 리스트 표시 : tar -tvf 파일명.tar gzip 압축하기 gzip tar cvfz 압축풀기 gzip -d gunzip tar xvfz 옵션 -l : 압축 파일 정보 출력 -1 : 빠른 압축속도, 낮은 압축률 -9 : 느린 압축속도, 높은 압축률 => 숫자가 높을수록 압축 효율은 좋으나 속도는 느림. ..

우분투에서 ncurses

우분투에서 ncurses 설치 컴파일러가 설치되지 않는 배포판의 경우에는 소스 컴파일하는데 필요한 라이브러리가 없는 경우가 많습니다. CD1장에 필요한걸 담을려다보니 개발자를 위한 라이브러리가 빠지는 경우가 많기 때문이죠. 우분투에 ncurses를 설치하기 위해서는 다음과 같이 터미널에서 명령어를 실행해서 설치하자. sudo apt-get install build-essential sudo apt-get install libncurses5-dev 혹시 ncurses에 한글을 출력하고 싶을 땐 아래의 라이브러리를 추가로 설치하면 된다. sudo apt-get install libncursesw5-dev 물론 시냅틱 패키지 매니저를 이용하여 build-essential과 libncurses5-dev 그리고 ..

반응형