Recent Posts
Recent Comments
12-24 00:08
관리 메뉴

동글동글 라이프

Linux Kernel & Device Driver [2] 본문

개발자 이야기/Programming

Linux Kernel & Device Driver [2]

동글동글라이프 2010. 6. 23. 10:27

교육의 둘째날입니다 :)

photo

사진출처 : http://news.joins.com/article/483/4262483.html?ctg=14



새벽4시쯤 깨어 축구를 시청했는데

보자말자 한골~ 그리고 후반에 또 한골~

아슬했지만 한국이 16강에 가게되어

너무나 좋더군요^^

16강 상대가 우루과이라 할만하다는 생각도 들구요~ ㅋㅋ


하지만 저는 교육을 받으로 왔으니

교육에 관련된 이야기를 또 해보겠습니다.




오늘은 어제 이야기를 들었던 Signal 에 대해서 더 세부적으로 배웠습니다.

햐.. Signal 이 이렇게 많은 기능을 가지고 있다니..

perl 을 하면서도 signal 은 그냥 죽었을 때 다시 처리할때나 쓰는 줄 알았는데

심도있게 알아야 한다는것을 알았습니다.




- 커널 컴파일하는 방법



kernel.org 에서 접속하여 원하는 커널 버전을 다운 받은 후에

Linux 에서 다운을 받도록 합니다.


다운을 받는 방법은 웹으로 받아도 되고 ftp로 받아도 되고 wget으로 받아도 상관이 없습니다 :)

실행환경 Linux 는 CentOS 이고

Kernel 버전은 2.6.29.1 입니다.



압축을 풀어주고 난 후에

심볼링크를 걸어줍니다.



커널 컴파일을 하기 이전에 .config 파일을 설정해 줘야 하는데

이부분에서 사람들이 많이 막힌다고 합니다.

이 파일은 아래 이미지에 따른 경로에 있으며

아래 작업을 안했을 시 커널 컴파일을하더라도 죽어버릴 확률이 있다고 하네요 :)



그 후에 menuconfig 를 해주는데 아래와 같이 하나씩 컴파일이 되고


파란화면의 설정창을 확인할 수 있습니다.


menuconfig 설정 뒤에는 친절하게  아래와 같은 문구가 뜨는데 make 를 하라는 뜻입니다.



make 를 할때는 아래와 같이 입력해주시면 됩니다.


# make

# make modules_install

# make install


일일이 기다렸다 명령어를 입력하기 힘드니
 
;(클론) 을 이용하여 한줄로 쭉~ 써주시면 됩니다.


이제 컴파일이 되며 약 1시간 정도 시간이 소요 됩니다. ( 너무 오래 걸려 ㅡ_ㅠ )


커널 컴파일 할때 중요한점은

용량이 넉넉해야 한다는 점입니다.

Vmware 일 경우에는 적어도 15GB 이상으로 하드용량을 잡아주셔야 합니다.

아닐 경우에는 용량이 부족해서 간단한 파일조차 컴파일이 안되는 경우가 ㅡ_ㅠ







-alarm 함수


alarm 함수를 실습을 했는데

위의 코드는 3초 뒤에 프로그램이 "자명종시계" 라고 출력되며 자동 종료됩니다.


위의 코드를 이용하여 알람을 이용하여 3초 미만으로 입력되면 입력된 값이 출력되고

3초 이상 입력하지 않으면 자동 종료되는 코드입니다.

여기서 alarm(0) 의 리턴값에 따라 입력시간이 얼마나 남았는지도 확인 할 수 있습니다.

3번 입력받는 코드를 예제로 다시한번 완성해 보겠습니다.



위의 예제를 실행하면 아래와 같으며 남은 시간이 나오고

타임아웃이 걸리면 자동으로 종료됩니다.



그런데 위에서 exit(0) 으로 프로그램을 종료해버리면 너무 각박해 보임으로

다음으로 넘어가게 만들어야 합니다.

이때 goto 문을 쓰면 되지 않으므로 이때 setjump 를 사용하여 코드를 작성합니다.

아래는 setjump 의 코드 예제입니다.



윈도우에서 try catch 와 비슷한 예제라고 생각하면 되고,

longjmp 가 예외를 일으키는 부분입니다.

재밌는것을 많이 배우네요~


이제 이 소스와 위의 alarm 예제를 합쳐서 입력을 받을 때 타임아웃이 걸리면

예외사항으로 넘어가게 할 수 있다는 것을 알 수 있습니다.




실전 프로젝트에서 예제처리에서 이렇게 타임아웃을 넣을 곳이 많은데

이런식으로 setjump 를 이용합니다.



한번에 알아들어야 하고, 강사님이 코딩속도가 너무 빠르신지라

수업 따라가기가 쉽지많은 않네요

( 실습시간도 마땅히 없고 ㅡ_ㅠ )

이렇게 간단히 정리해두고 다음 기회에 확실하게 다시 실습해보는게 좋을 듯합니다.






Comments