분류 전체보기 779

[ Linux Kernel ] 21. 모듈 프로그래밍

21. 모듈 프로그래밍 커널 모듈(Kernel Module) 시스템 부팅후에 동적으로 loading할 수 있는 커널 구성요소를 말한다. 커널을 다시 컴파일하거나 시스템 재부팅 할 필요없이 커널의 일부분을 교체하는 것이 가능하다 디바이스 드라이버, 파일 시스템, 네트워크 프로토콜 등이 모듈로 제공된다. 일반 응용프로그램과 뭐가 다른거죠?? 커널 모듈은 일반 응용 프로그램과 달리 main함수가 없다. 대신에 커널에 로딩 및 제거될 때 불러지는 함수가 존재하는데, 이는 아래와 같다. Loading 시 : module_init()로 지정된 함수 호출 Unloading 시 : module_exit()로 지정된 함수 호출 25.1 리눅스 디바이스 드라이버의 특성 커널 코드 디바이스 드라이버는 커널의 한 부분이므로,..

[ Linux Kernel ] 20. Linux Device Driver

20. Device Driver Device 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 티보드, 하드디스트, 플로피디스크, 프린터 등과 같은 주변 장치들을 말함 디바이스 구동에 필요한 프로그램, 즉 디바이스 드라이버가 필수적으료 요구됨 Device Driver 실제 장치 부분을 추상화시켜 사용자 프로그램이 정형화된 인터페이스를 통해 디바이스를 접근할 수 있도록 해주는 프로그램 디바이스 관리에 필요한 정형화된 인터페이스 구현에 요구되는 함수와 자료구조의 집합체 표준적으로 동일 서비스 제공을 목적으로 커널의 일부분으로 내장 응용 프로그램이 하드웨어를 제어할 수 있도록 인터페이스 제공 하드웨어 독립적인 프로그램을 작성할 수 있도록 함. 24.1 리눅스 디바이스 드라이버 - 사용자 관점에서의 디바이..

[ Network ] 10. OSI 7계층

OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다! 그럼 예를 들어서, PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인해보자 1. 모든 PC에 문제가 있다면 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선문제(1계층 물리 계층) 2. 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면(7계층 어플리케이션 계층), 오버워치 소프트웨어에 문제가 없고 스위치게 문제가 있으면(2..

[ Programmers ][JAVA][42583] 다리를 지나는 트럭

programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 문제설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어..

[ Baekjoon ][JAVA][7812] 중앙 트리

www.acmicpc.net/problem/7812 7812번: 중앙 트리 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫 줄에는 트리의 정점의 수 n이 주어진다. (1 ≤ n ≤ 10,000) 각 정점은 0번부터 n-1번까지 번호가 붙여져 있다. 다음 n-1개 줄 www.acmicpc.net 문제 트리는 사이클을 갖지 않는 연결된 그래프이다. 중앙 정점은 모든 정점으로 이르는 비용의 합이 가장 작은 정점이다. 트리의 정점 개수가 작은 경우에는 모든 경우의 수를 다 계산해보는 프로그램을 이용해 쉽게 구할 수 있다. 위의 그림은 가중치가 있는 트리로, 정점의 개수는 5개이다. 이 트리의 중앙 정점은 B이다. B-A = 2, B-D = 7, B-C = 1, B-E = 7+5=12, ..

[ Linux Kernel ] 19. Ubuntu에서 Wi-Fi 연결하기

1. USB 연결 제품의 USB단자를 PC에 연결한다. 2. 드라이버 설치 Windows환경에서는 iptime 공식홈페이지에 이 제품에 제공되는 드라이버가 있어서 바로 설치하기만 하면 된다. 하지만 여기서는 리눅스 전용 드라이버를 제공하지 않는다. 대신 별도로 Realtek 88 12BU chipset을 설치하면 된다. 터미널로 들어가서 다음 명령을 실행시켜준다. 드라이버 설치명령 sudo apt update sudo apt install dkms bc git git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959 sudo dkms add ./rtl88x2BU_WiFi_linux_v5.3..

[ Linux Kernel ] 18. Kernel Module

18. 커널 모듈 리눅스 커널에서 module은 광범위하게 쓰인다. 아마 대다수가 device driver로 동작하는 형태일 것이고 드물게는 network protocol이나 filesystem을 지원하는 데도 쓰일 것이다. module 형태를 취함으로써 가질 수 있는 이점은 flexibility가 좋기도 하고, 뭔가 시스템 내에서 변화를 추구할 떄 쉽게 반영하고 그 결과를 확인할 수 있는 점이다. module과 관련하여 Linux에서 제공하는 utility는 다음과 같다. lsmod : load되어 있는 module들을 보여준다. insmod : Insert module, 말그대로 module을 load시켜준다. rmmod : remove module, 말그대로 module을 제거해준다. modprob..

[ Embedded ] 16. Loopback(루프백)

Loopback 루프백(Loopback, loop-back)이란 전기신호의 라우팅, 디지털 미디어 스트림, 또는 품목의 흐름이 의도적인 가공이나 수정 없이 원래의 장치나 장비로 돌아가는 것 주로 전송이나 수송 기반 시설을 테스트하는 수단으로 사용 하나의 종단점(endpoint)만 가지는 커뮤니케잉션 채널, 이러한 채널에서 전송된 메시지는 어떤 것이라도 같은 채널로부터만 즉시 수신됨. Serving switching center로부터 온 액세스 라인의 전송 테스트 수행시 served terminal에서 인력을 필요로 하지 않음 두 라인이 사용되는 스테이션(반드시 인접할 필요는 없음)의 연결 테스트. 한 스테이션에서 그리고 멀리 떨어진 스테이션에서 상호 연결된 두 라인에서 이루어지는 테스트를 동반함. 일반적..

[ Network ] 09. Linux에서 FTP로 디렉토리 전체 다운받기

linux에서 FTP로 디렉토리 전체 다운받는 방법 FTP를 이용해서 특정 디렉토리 및 그 하위 내용을 모두 받으려면 (recursively) 어떻게 해야 할까? 물론 FileZilla 같은 GUI FTP 클라이언트 프로그램을 사용하면 쉽게 받을 수 있다. 하지만 GUI 프로그램을 사용할 수 없는 Shell 환경에서라면 wget 명령을 사용해서 받아오는 방법이 있다. wget [OPTION]... [URL] ... 예를 들어, FTP 서버 IP가 1.1.1.1 이고 계정은 user1 암호는 password1 받고 싶은 디렉토리 경로가 /home/user1/download 라면 아래와 같이 입력하면 된다. wget -r --ftp-user=user1 --ftp-password=password1 ftp://..

[ Network ] 08. FTP(File Transfer Protocol)

FTP File Transfer Protocol 파일전송 프로토콜의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 FTP에 TLS 프로토콜이 적용된 FTPS가 있으며, 비슷한 기능을 제공하는 SSH 프로토콜 기반의 SFTP가 있다. SFTP는 FTP라는 키워드를 포함하고 있으며 용도 또한 같으나 FTP와 기술적인 연관성은 없는 완전히 다른 프로토콜임을 주의해야 한다. FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는걸 적극 권장한다. FTPS의 경우 PROT P를 사용하면 데이터 전송까지 암호화되어 높은 보안성을 지니..

[ Embedded ] 15. 세마포어(Semaphore)

Semaphore 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있다. 즉, 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것으로써 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데 이를 위하여 고안된 것이 바로 Semaphore(세마포어)이다. Critical Section이란? OS에서 Critical Section은 아주 중요한 부분이다. 다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 데이터를 액세스하는 프로그램 코드 부분을 가리키는 말이다. 공유 데이터를 여러 프로세스가 동시에 액세스하면 시간적인 차이 때문에 잘못된 결과..

[ VoIP ] 06. VoIP Open Source의 종류

VoIP Open Source의 종류 PJSIP PJSIP는 설치 공간이 매우 작고 성능이 뛰어난 오픈소스 SIP 프로토콜 스택 jsip 는 오픈소스로 제작된 멀티미디어 통신 라이브러리이다. pjsip 에서 제공하는 라이브러리를 이용하면 자동 SIP 콜 테스트 프로그램 등을 쉽게 제작할 수 있다. Library 뿐만 아니라, pjsip 설치시 함께 컴파일되는 모듈 중에 pjsua 라는 모듈이 있는데 이는 CLI(Command line interface) 지원하는 SIP 클라이언트 프로그램이다. 즉, library 를 제공하는 것 뿐만 아니라 CLI 기반 클라이언트 프로그램도 같이 제공한다. 그리고 Library 모듈 중, Python 모듈은 Python 을 이용한 스크립트 제작을 가능하게 해준다. 즉, ..

[ Embedded ] 14. 멀티플렉서(MultiPlexer)

멀티플렉서 Multiplexer (MUX) Demultiplexer(DeMUX) 복수 개의 입력신호로부터 특정 조건에 의해 입력 신호 한 개만 선택할 때 사용하는 것이 멀티플렉서 또는 MUX(먹스)라고 불리운다. 그리고 그 반대의 목적에 사용되는 것이 디멀티플렉서 또는 DeMUX(디먹스) 멀티플렉서(MUX)는 n개의 선택선의 조합에 의해 선택된 2n개의 입력선 중에서 하나를 선택하여 출력선에 연결시켜 주는 회로이며 여러 개의 회로가 단일 회선을 공동으로 이용하여 신호를 전송하는데 사용한다. 아래는 멀티플렉서의 진리표이다. ( 4 x 1 ) S1, S0은 Y 출력을 결정하게 할 결정자 또는 선택자가 된다. 진리표를 보면 S1, S0가 각각 00일 때는 I0이 출력되고, 01일 때는 I1, 10일 때는 I2..

[ LeetCode ][JAVA][103] Binary Tree Zigzag Level Order Traversal

leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Binary Tree Zigzag Level Order Traversal - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to le..