Programming(178)
-
맵 사용에 따른 메모리 누수
가비지 컬렉터에서는 논리적으로 더이상 사용하지 않는 객체에 대한 정리 작업을 실행한다. 하지만 만약 이러한 객체가 맵 안에 존재하고 있다면 어떻게 될까? 정리 작업을 실행해야 할까 말아야 할까??정답은 '정리 작업을 실행하지 않음' 이다.아래의 예제 소스를 보면,public class Manager {private Map map = new Hashmap();public void setData(Key k, Value v){map.put(k, v);}public Object getData(Key k){ return map.get(k);}public void removeData(Key k){map.remove(k);} 해시 맵을 사용할 때 위와 같은 방법으로 사용을 많이 한다. 위의 코드에서 발생할 수 있는 ..
2013.01.08 -
failed to load the JNI shared library jvm.dll
몬가 해서 봤더니 64bit 운영체제에서 32bit 이클립스를 설치해서 생긴 오류..64bit로 다시 다운받아서 하니 잘된다!
2013.01.04 -
강제 종료 이벤트
Console에서 Ctrl + C를 눌렀을 경우에 이벤트를 발생하고 싶을 때는 다음과 같이 해주면 된다. 프로세스 강제 종료시 이벤트 받을 수는 없을까...
2013.01.04 -
PS/2 Mouse Filter 드라이버
WPF 책을 독파하고 난 후, DDK에 있는 Mouse Filter 드라이버 코드를 분석하기 시작했다.일단은 Mouse Filter 드라이버가 삽입되어야 할 위치를 알아야 하고, 어떤 IRP를 가로채야 하는지 등에 대해 알아야 하기 때문에 PS/2 마우스 드라이버의 스택 구조를 알 필요가 있었다. Mouclass Filter (FIDO Driver - Class upper Filter Driver) I8042prt Driver (FDO Driver) ACPI Bus Driver (PDO Driver) PS/2 마우스 드라이버의 스택 구조는 위의 그림과 같이 하위의 ACPI Bus Driver(PDO), 기능 드라이버 역할의 I8042prt Driver(FDO), 그리고 맨 상위에 Mouclass Filt..
2013.01.04 -
디바이스 오브젝트란?
OS는 디바이스 오브젝트에 의해서 디바이스들을 나타낸다. 하나 또는 그 이상의 디바이스 오브젝트들은 각각의 디바이스와 관련되어 있다. 디바이스 오브젝트는 디바이스 상의 모든 동작의 타겟 역할을 한다. 커널 모드 드라이버들은 다음의 경우를 제외하고 각각의 디바이스를 위해 반드시 적어도 하나 이상의 디바이스 오브젝트를 생성해야 한다. - 클래스 혹은 포트 드라이버와 연관되어 있는 미니드라이버들은 그들 자신의 디바이스 오브젝트들을 생성하지 않는다. 클래스 혹은 포트 드라이버는 디바이스 오브젝트를 생성하고, 미니드라이버에게 동작을 디스패치 한다. - NDIS 미니포트 드라이버와 같이 드라이버 타입이 명시된 하부시스템의 일부로 동작하는 드라이버들은 하부시스템에 의해 그들 디바이스 오브젝트가 생성된다. 만약 드라이..
2013.01.04 -
Io Request 처리하기
드라이버가 I/O reqeust를 수신하였을 때, 다음과 같은 동작을 한다.1. request를 다른 queue로 Requeue 한다.2. request를 완료한다.3. request를 취소한다.4. I/O target 드라이버로 request를 전송한다. 드라이버는 request를 무시하거나 삭제할 수 없다. Requeuing I/O Requests 드라이버는 I/O queue로부터 수신한 I/O requests를 requeue 할 수 있다. 또한 버스 드라이버는 자식 디바이스의 I/O queue로부터 부모 디바이스의 I/O queue로 I.O request를 requeue할 수 있다. I/O Request를 다른 I/O Queue에 Requeuing 하기 - 드라이버의 request 핸들러가 I/O ..
2013.01.04