본문 바로가기

분류 전체보기

(694)
Device file 해당 글은 아래 사이트를 참조하여 개인적으로 공부한 바를 정리한 글이다. https://sysplay.in/blog/linux-kernel-internals/2015/10/waiting-blocking-in-linux-driver/ 리눅스 커널에서 프로세스를 관리하는 자료구조는 task_struct이며, state라는 멤버를 통해 현재 해당 태스크의 상태정보를 알 수 있다. /* Used in tsk->state: */ #define TASK_RUNNING0 //run 큐 내에 있거나, 실행중 인 상태. #define TASK_INTERRUPTIBLE1 //이벤트를 기다리는 상태, 시그널에 의해 wake up 될 수 있다. #define TASK_UNINTERRUPTIBLE2 //역시 이벤트를 기다리나,..
Kernel module compile 작성한 커널 모듈 소스코드를 컴파일 하는 방법이다. 아래의 Makefile을 참조하면 된다. obj-m 은 모듈 형태로 컴파일 하겠다는 의미로, 컴파일 할 소스코드와 그 이름이 같아야 한다. 커널 소스의 Makefile을 보면 obj-y 가 있는데 이는 obj-m 과 달리 컴파일 할 소스코드를 전체 커널에 합쳐놓은 형태로 컴파일 하겠다는 의미이다. 이어서 PWD 매크로는 현재 작업 디렉토리를 의미하는데, 이 Makefile과 컴파일 할 소스코드를 같이 두도록 해야한다. KDIR 매크로는 현재 사용 중인 커널 소스 디렉터리를 의미한다. build라는 파일은 심볼릭 링크파일이다. 실질적으로 컴파일하는 방법은 default, default1 에 있다. make의 -C 옵션은 man page 설명을 보면 컴파일..
QT 외부 라이브러리 추가 qtcreator에서 화면 좌측 Projects에서 각 프로젝트의 루트를 오른쪽 마우스로 클릭하여 라이브러리 추가 항목을 클릭하여 사용할 라이브러리 및 해당 라이브러리의 경로를 설정하고 저장하면 된다. 여기서 C로 작성한 라이브러리에 경우 추가를 하여도 문제가 발생 할 수 있는데, 이는 QT가 g++를 사용하기 때문이다. C++ 컴파일러는 컴파일 과정에서 Name Mangling이라는 작업을 진행하는데, 이 작업이 함수의 이름을 임의로 바꾸기 때문에 라이브러리를 사용 할 때 해당 함수를 찾을 수 없게 되는 것이다. 그래서 C로 라이브러리의 헤더파일을 작성할 때는 extern "C" { int aaa(); int bbb(); } 위와 같이 해주면 된다. https://stackoverflow.com/que..
QT kit selection no valid kits found qmake가 설정이 되지 않아서 발생하는 문제이다. Kit selection에서 qmake가 있는 경로를 등록해주어 해결 할 수 있다.
리눅스 QT 설치 리눅스용 GUI 프로그램 개발을 위해서 사용되는 방법에는 C로는 GTK, C++로는 QT가 있다. 여기서는 QT로 개발하는 방법에 대해 정리하는데, 먼저 IDE 설치과정이다. #apt-get install build-essential #apt-get install qtcreator #apt-get install qt5-default 그리고 추가적으로 개발 시 참조 문서나 예제 코드를 확인하기 위해서 문서파일을 설치 할 수 있다. #apt-get install qt5-doc #apt-get install qt5-doc-html qtbase5-doc-html #apt-get install qtbase5-examples http://www.digipine.com/index.php?mid=programming&..
라우터 문제들 1. 모든 인터페이스 확인 2. 192.168.10.0 으로 보내는 기본 네트워크 설정 3. interface 에 ip 설정 후 활성화 4. show version 5. encapsulation 6. interface 에 ip 할당 및 정적 라우팅 설정 ip route [대상 ip] [대상 netmask] [대상 gateway]
단답형 문제 - 2 문제 11. 답안 (A) 루핑, (B) STP 1. 스위치나 브리지는 2개 이상의 경로가 만들어 질 경우 위의 그림같이 루핑(Looping)이 발생한다. 2. 서버에서 브로드캐스트를 날리게되면 Switch B에서 브로드캐스트를 날리고 Switch A에서 다시 브로드캐스트를 날리고 그것을 다시 Switch B가 브로드캐스트를 날리는 것을 계속 반복한다. 이것을 루핑이라고 한다. 3. 루핑이 계속 발생하면 이더넷의 특성상 네트워크가 프레임 전송이 없어야 보낼 수 있기 때문에 다른 전송이 불가능 하기에 치명적이다 Spanning Tree Protocol 스위치나 브리지에서 발생할 수 있는 루핑을 미리 막기 위해 두 개 이상의 경로가 발생하면 하나를 자동으로 막아두었다가 기존 경로에 문제가 생기면 막아놓은 경로..
단답형 문제 9번 (A) 더미, (B) 스위칭 그림1 에서 더미 허브는 내부 메모리가 없어서 연결된 모든 호스트들에게 신호를 브로드 캐스팅 하고 있다. 더미라는 의미자체가 진보된 의미가 아닌 것을 연상하면 될 거 같고 그림2 에서 스위칭 허브는 내부 메모리가 있고, 이를 MAC 주소 테이블로 사용하여, 특정 호스트에만 유니 캐스트? 하므로 신호가 스위칭 된다고 연상 하면 될 듯 함. 10번 답안 ip route 192.168.20.0 255.255.255.0 176.18.1.2 pc 1 에 경우 서브넷 마스크가 없기 때문에 확실하진 않지만 pc 1가 pc 2의 네트워크 주소가 다르다고 유추 할 수 있다. 그래서 라우터 R1 에 연결된 pc1 에서 라우터 R2 에 연결된 pc2 와 통신을 하기 위해서는 라우터 R1 이..
Window server - 7 문제 풀이 네트워킹 구성에 대한 설정은 따로 언급되어있지 않으므로 넘어간다.
Window server - 6 문제 풀이 사용하지 않도록 설정이 되어 있으므로, 해당 정책의 보안 설정을 사용 안 함으로 바꿔주면 된다.