본문 바로가기

리눅스

[커널] 리눅스 커널 모듈 프로그래밍 안내서 Version 1.1.0, 1999년 4월 26일. 원저자 : Ori Pomerantz 역자 : 채병철(dataeng@chollian.net) 번역시작 : 1999년 8월 16일. 이 책의 모든 번역 내용은 아래에 언급한, 그리고 원문의 GPL을 따릅니다. 누구나 이 책을 GPL하에서 자유롭게 배포할 수 있습니다. 다만 수정의 경우나 번역상의 오류는 본인에게 알려주시면 즉시 이를 반영할 것이며, 이 안내서가 일관된 내용을 유지하는 데 도움을 줄 것입니다. 부록 C,D는 이 책의 내용과 직접적인 관련이 없기에 번역하지 않았습니다. 부록 E의 GPL은 송창훈님의 번역을 그대로 인용했습니다. 이 가이드의 내용은 리눅스의 커널 모듈에 관한 것이다. 이것은 커널 모듈을 만드는 방법을 알기 원하는 그리고 C언어를 .. 더보기
[리눅스] 쓰레드는 무엇이며, 왜 이용하는가 출처 : joinc.co.kr 쓰레드는 무엇이며, 왜 이용하는가쓰레드는 세미(semi) 프로세스, 혹은 Light Weight 프로세스라고 불리우며, 여러개의 클라이언트를 처리하는 서버/클라이언트 모델의 서버프로그래밍 작업을 위해서 주로 사용된다. 비슷한 일을 하는 fork 에 비해서 빠른 프로세스 생성 능력과, 적은 메모리를 사용하는게 Light Weight 프로세스라고 불리우는 이유이다. 보통의 유닉스 프로세스는 main()함수에 의해서 시작되고 실행되는 single 쓰레드 로 이루어지며, 하나의 연속된 명령어들만을 처리한다. 반면 멀티쓰레드 프로그램은 여러개의 연속된 명령어들을 동시에 처리할수 있다. 스레드는 자기자신의 스택메모리영역을 가지고, 코드의 조각을 실행한다. 실(real) 프로세스 와는 .. 더보기
[리눅스] 인터럽트와 트랩의 차이 *** 인터럽터 인터럽트는 컴퓨터에 장착된 장치나 컴퓨터 내의 프로그램으로부터 오는 신호로서 운영체계가 하던 일을 멈추고 다음에 무엇을 할 것인지를 결정하게 한다. 오늘날 거의 모든 PC나 대형 컴퓨터들이 인터럽트 기반의 시스템인데, 즉 일단 프로그램 내의 컴퓨터 명령문을 시작되면, 더 이상 작업을 진행할 수 없거나, 또는 인터럽트 신호가 감지될 때까지 명령문들을 실행한다. 인터럽트 신호가 감지되면, 컴퓨터는 실행되고 있던 프로그램을 재개하거나, 또는 다른 프로그램의 실행을 시작한다. 기본적으로 단일 컴퓨터는 오직 한번에 한 개의 컴퓨터 명령어만을 수행할 수 있다. 그러나, 인터럽트 신호가 있기 때문에, 다른 프로그램이나 명령문을 수행할 수 있는 순서를 가질 수 있다. 이렇게 하는 것을 멀티태스킹이라고 .. 더보기
[디바이스 드라이버] 함수정리 MKNOD 기능 : 특수 파일을 만든다 형태 : #mknod [option] 디바이스 파일명 {bcu}주번호 부번호 옵션 :[-m mode] [--mode=mode] [--help] [--version] 옵션 : -m, --mode mode :생선된 파일의 모드를 지정하는 옵션이다. mode로 사용할 것은 chmod에서 사용하는 기호나 숫자 형식이다. --help:도움말을 보여주고 마친다. --version :버전 정보를 보여준다. 설명 : mknode명령은 FIFO,문자 디바이스 파일, 블록 디바이스 파일 등을 만드는세 사용된다. 초기값으로 만들어 지는 파일모드는 0666이다. 디바이스 파일명 인자를 쓴후 그 파일의 특수 형태를 알리는 값을 지정해야 한다. 여기서 사용할 수 있는 값은 다음과 같다. -.. 더보기
[디바이스 드라이버] Tip. 모듈로 작성한 디바이스 드라이버를 커널에 삽입할 때 에러가 발생할 경우 Tip. 모듈로 작성한 디바이스 드라이버를 커널에 삽입할 때 에러가 발생할 경우 디바이스 드라이버를 컴파일 하기 위해 참조하는 커널 소스와 실제로 시스템에서 동작하는 커널의 버전이 같은지 확인해야한다 [poohmong@localhost ~]$ cat /proc/version Linux version 2.6.11-1.1369_FC4 (bhcompile@decompose.build.redhat.com) (gcc version 4.0.0 20050525 (Red Hat 4.0.0-9)) #1 Thu Jun 2 22:55:56 EDT 2005 위에 적힌 버전과 디바이스 드라이버가 참조하는 커널 소스 버전이 일치해야 하는데, 커널 소스 버전은 커널 소스가 있는 최상위 디렉토리의 Makefile에 기술되어 있다. .. 더보기
[디바이스 드라이버] Chapter7. 디바이스 드라이버의 초기화와 종료 Chapter 7. 디바이스 드라이버의 초기화와 종료 1. 초기화와 종료 처리디바이스 1.1 드라이버가 동작하기 위한 초기화/종료에 필요한 처리 항목(대표적) 디바이스 드라이버의 등록과 해제디바이스 드라이버에 내부 구조체의 메모리 할당과 해제여러 프로세스가 하나의 디바이스에 접근할 때 필요한 사전 처리 및 종료 시 처리주 번호에 종속된 부 번호를 관리하기 위한 사전 처리 및 종료 시 처리하드웨어 검출 처리 및 에러 처리하드웨어 초기화와 제거 가능한 하드웨어의 제거 처리응용 프로그램에서 디바이스 드라이버를 사용하는 경우의 초기 처리 및 사용 종료 처리부 번호에 관련된 프로세스별 처리프로세스별 메모리 할당과 해제사용하는 모듈 수의 관리 1.2 디바이스 드라이버의 초기화/종료 처리 시점 모듈 적재와 커널 부팅.. 더보기