Linux/Kernel Analysis

    디바이스 드라이버

    리눅스 계열은 모든 것을 파일로 취급합니다. 키보드, 마우스, 모니터 등의 디바이스 또한 파일로써 취급하게 됩니다. 사용자 태스크가 file-operations 구조체에 정의되어 있는 함수를 통해 장치 파일에 접근할 때 호출할 함수를 정의하고 구현해 주는것이다. 디바이스 드라이버는 각 디바이스마다 번호를 부여하는 데 이 번호를 major number라 한다 major number는 아이도느 객체에 저장되어 있다. Task에서 특정 파일에 접근하게 되면 major number를 통하여 함수를 호출하게 된다. 하지만, 동일한 장치를 여러가지를 사용한다면 어떻게 될까? 동일한 장치는 동일한 major number를 사용한다. 하지만 각각 다른 기능을 하므로 구분을 해줘야 한다. 그리하여 major number..

    커널

    커널의 종류는 두가지가 있다 모노리틱 커널(monolithic kernel) 과 마이크로 커널(u_kernel) 1. 모노리틱 커널(monolithic kernel) -모노리틱 커널은 커널이 제공해야 할 모든 기능(task 관리, 메모리 관리, 파일시스템, 디바이스 드라이버, 통신 등)의 기능이 단일 커널 공간에 구현된 구조 2. 마이크로 커널(u_kernel) -커널의 크기가 모노리틱에 비해 매우 작은 커널로써 그 소형화에 따른 장점이 있다. 커널의 소스 크기고 작아지고 깨끗해 질 수 있으며, 관리, 개선, 유지 등이 쉬워진다. 커널이 작기에 휴대용 시스템의 운영체제로도 사용될 수 있고, 많은 기능이 사용자 공간에서 서버 형태로 구현되기 때문에 분산환경 특히 클라이언트 서버 모델에 잘 적용된다.

    인터럽트(interrupt)

    인터럽트는 주변 장치와 커널이 통신하는 방식 중 하나로써 어떠한 Event가 발생하였을 시에 커널에게 그 Event에 대하여 알리는 것이다. Event를 알리는 방식은 크게 2가지가 있는데 폴링 방식과 인터럽트 방식이다. 먼저 폴링 방식은 주기적인 시간을 가지고 Event의 발생 유무를 지속적으로 확인하는 방식이고, 인터럽트 방식은 Event가 발생하였을시에 그 신호에 의해 Event를 처리하는 방식이다. 예를 들어 폴링 방식은 편의점의 점원이 손님이 오는가를 지속적으로 1분마다 확인 하는 방식이고, 인터럽트 방식은 문에 방울을 달아 손님이 들어왔을 시에만 소리로 신호를 알린다. 리누그 커널에서는 Event가 발생하면 interrupt handler가 발생한다. 인터럽트의 종류는 외부 인터럽트와 내부 인..

    [ubuntu 12.04] eclipse 실행 에러

    java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: no swt-gtk-3740 in java.library.path no swt-gtk in java.library.path Can't load library: /home/xxx/.swt/lib/linux/x86/libswt-gtk-3740.so Can't load library: /home/xxx/.swt/lib/linux/x86/libswt-gtk.so 무슨 so 파일(windows 에서 DLL 같은 파일)을 참조 하려는 데 없다는 소리구나. 해당 경로로 이동해서 확인해보니 x86 디렉터리 밑에 아무것도 없다;; 관련해서 찾아보니, 먼저 고생한 분들의 글이 조금씩 보인다.(__) ..

    tftp 설치 및 설정

    tftp는 우분투에서 시냅스 꾸러미 관리자를 이용하는 것 보다는 apt-get install을 직접 사용하는 것이 편하더군요.~$ sudo apt-get install xinetd tftp tftpd 설치 후에는 tftp를 사용하기 위한 /etc/xinetd.d/tftp 파일을 생성합니다.~$ sudo vi /etc/xinetd.d/tftpservice tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } tftp에서 파일을 제공할 때 사용하는 디..

    ubuntu 에서 eclipse 설치

    JDK 설치 sudo add-apt-repository ppa:upubuntu-com/java sudo apt-get update sudo apt-get install oracle-java7-installer 설치된 경로 확인 $ ls -al /usr/bin/java* lrwxrwxrwx 1 root root 22 5월 18 17:17 /usr/bin/java -> /etc/alternatives/java lrwxrwxrwx 1 root root 25 5월 18 17:17 /usr/bin/java_vm -> /etc/alternatives/java_vm lrwxrwxrwx 1 root root 23 5월 18 17:17 /usr/bin/javac -> /etc/alternatives/javac lrwxr..