130 likes | 263 Views
VSHELL. Embedded linux 를 위한 Unix domain socket 을 이용한 통신 library. dhyi123@hanmir.com. 프로그램 개요. Unix domain socket 을 이용한 통신 library 내부 process 간의 통신 Embedded linux 를 위한 통합 Shell 제공 각각의 daemon 별이 아닌 통합된 interface 및 help 제공 기존 daemon 들의 configuration 을 위한 통신구조 제공 .
E N D
VSHELL Embedded linux를 위한 Unix domain socket을 이용한 통신 library dhyi123@hanmir.com
프로그램 개요 • Unix domain socket 을 이용한 통신 library • 내부 process간의 통신 • Embedded linux를 위한 통합 Shell 제공 • 각각의 daemon 별이 아닌 통합된 interface 및 help 제공 • 기존 daemon들의 configuration을 위한 통신구조 제공. • Linux용 daemon들의 기본 configuration 방식은 .conf 파일을 이용하며 configuration 수정 시에 daemon을 down/up하거나 kill –HUP을 주어야 함. • 이 방식을 수정하여 별도의 down/up없이 처리토록 함.
중요 구조(2-1) 시 작 명령 install Daemon들에 연결 해당 daemon에게 명령 보내기 해당 function 수행 아니오 사용자 입력? 아니오 예 종료? 명령 찾기 예 아니오 정확한 명령? 끝 Client 순서도 예
중요 구조(2-2) 시 작 명령 install 해당 function 수행 아니오 Client 접속? 예 해당 client에게 명령 종료 notify 아니오 사용자 입력? 아니오 예 종료? 명령 찾기 예 아니오 정확한 명령? 끝 Server 순서도 예
중요 구조(3) Ready List Read task A 추가 Read List write task A write task B Write List timer task A Timer List Thread 기본 구조 (1)
중요 구조(4) 1. Notify arrival readfd, select: writefd, timer 2. 적절한 Tasks를 Ready List로 이동한다. Ready List Read task A write task A write task B timer task A Read List Write List Timer List Thread 기본 구조 (2)
중요 구조(5) Task 수행 : Ready List가 바닥날 때 까지 Read task A Ready List write task A write task B timer task A Read List Write List Timer List Thread 기본 구조 (3)
중요 구조(6) struct vshell vshell_client[VSHELL_MAX_INDEX] Daemon 1 1 Indicate socket descriptor 2 . . … 3 4 ….. Daemon n VSHELL_MAX_INDEX Indicate socket descriptor vshell 기본 구조 (1)
중요 구조(7) 기본적으로 2개의 리스트 존재 (Level 별로) Command 1 Command 2 Command n Normal Command 1 Command 2 Command n Admin Command list 기본 구조 (1)
중요 구조(8) Ex) Command string : show information. Description: show daemon’s information. daemon 명령의 대상이 되는 daemon level Normal / Admin “show” **cmd “information” *desc “show daemon’s information” *func int func(); 해당 명령에 대해 수행할 내용의 함수 *next cmd2 cmd3 cmdn Command 기본 구조 (1)
패키지 설명 config.h : 전체 설정 관련 파일 Makefile : 전체 build Makefile / daemon/ daemon_command.c: daemon에 필요한 명령들 추가, 관리 main.c : daemon program 본체 파일 lib/ command.c: 명령 구성 및 리스트 유지 thread.c : Task 유지 관리 vty.c : daemon 측 client연결 관리 vshell.c : client 측 user input 및 daemon 연결관리 client/ cli_command.c: client에 필요한 명령들 추가, 관리 main.c :client program 본체 파일
개선점 • User-Interface의 디자인 개선 • 한 command string이 너무 길어질 경우 화면이 깔끔하지 못함. • 명령별 grouping 필요 • 반복 매개변수 지원, 다양한 형태의 매개변수 지원 • 현재는 모든 것을 포괄적인 변수만 지원되나, 숫자형, 문자형 등에 따라 구분 짓고 타입에 따른 제약조건을 주도록 수정 필요. • 다양한 case에 대한 사전 처리가 가능해짐. • LEVEL의 재정의 • 현재는 NORMAL 과 ADMIN 2가지로 구분되나, 용도에 따라서 재정의 필요