본문 바로가기

전체 글77

7.3 문자 드라이버 7.3 문자 드라이버7.3.1 디바이스 번호디바이스 번호는 dev_t 타입으로 표현한다. 예시)typedef __kernel__dev_t dev_t;typedef __u32 __kernel_dev_t;typedef unsigned int __u32; Major 번호디바이스의 주번호. 물리적인 디바이스를 구분하는데 사용된다. Minor 번호디바이스의 부번호. 부번호는 동일한 디바이스가 여러개인 경우, 이들 디바이들을 구분하는 용도로 사용한다. 즉, 같은 종류의 디바이스는 주번호가 동일하고, 부번호는 다르다. 7.3.2 디바이스 번호 할당 및 반납int register_chrdev_region(dev_t from, unsigned count, const char* name);디바이스 번호 고정할당name이란.. 2018. 7. 1.
7.2 모듈 7.2 모듈7.2.1 모듈이란?모듈은 커널 영역에 동적으로 로딩/언로딩되고, 로딩 후에 커널 코드와 동일하게 동작한다.모듈을 사용하면 커널 코드에 직접 코드를 올려서 컴파일하지 않아도 되기 때문에, 커널 이미지가 작아지는 효과가 있다.따라서, 필요할 기능을 때에 따라 모듈로 로드해서 사용하면 편리하다. (동작 속도도 느려지지 않는다) 모듈 명령insmod: 모듈을 로딩한다.rmmod: 모듈을 언로딩한다.lsmod: 현재 로딩된 모듈을 출력한다. 7.2.2 모듈 매크로module_init( function() )모듈로 컴파일하면, insmod 명령 시 (로딩), init_module() 대신 function() 이 호출된다. 여기서 function()은 임의의 함수.커널에 포함하여 컴파일하면, 커널 초기화.. 2018. 7. 1.
7.1 디바이스 드라이버 7.1 디바이스 드라이버7.1.1 디바이스 드라이버 종류문자 디바이스 드라이버GPIO, 시리얼 등 문자 디바이스를 제어한다.open, close, read, write 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 바이트 단위로 액세스한다. 블록 디바이스 드라이버HDD, SD 카드 등의 블록 디바이스를 제어한다. (파일시스템 포함)open, close, read, write 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 블록 단위로 액세스한다. 네트워크 인터페이스 드라이버이더넷, 무선랜 등 네트워크 디바이스를 제어한다.read, write, recvfrom, sendto 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 패킨 단위로 액세스한다. 7.1.2 디바이스 파일 만들기# mkno.. 2018. 7. 1.
JVM, JRE, JDK에 대해 알아보자 JVM (Java Virtual Machine)개요JVM은 자바를 실행시키기 위한 가상 서버이다. 자바로 개발한 프로그램을 어떤 운영체제에서든지 동일하게 동작시키기 위해 개발되었다. JVM은 프로그램과 운영체제 사이에 매개체 역할을 하고, 프로그램은 JVM 위에서 동작하기 때문에, 개발자들은 운영체제 환경을 신경쓰지 않고 편리하게 개발할 수 있다. 문제점JVM은 필연적으로 프로그램이 실행될 때 구동하고 있어야하기 때문에 메모리와 CPU 사용량을 차지한다. 하드웨어의 성능이 좋지 못한 임베디드 시스템에선 동작이 어려울 수 있다. 하지만,과거에 비해 하드웨어 성능이 비약적으로 발전함에 따라 JVM 성능 문제는 무시할 정도가 되었다. (안드로이드 어플리케이션을 생각하면 편하다. iOS에 비해 상대적으로 느렸던.. 2018. 7. 1.