Download presentation
Presentation is loading. Please wait.
1
실시간 자원 량 정보 제공을 결합한 Heartbeat
클라이언트와 서버는 모두 리눅스 OS를 실행함 클라이언트의 실시간 자원 량을 주기적으로 서버에게 전송함 - memory info : /proc/meminfo - CPU info : /proc/cpuinfo - 현재 disk info : du/df 서버가 시스템 콜과 유사한 명령어를 실행하면 위의 프로그램이 실행됨 server client 1 (자원 량 제공) client 2 (자원 량 제공) client 3 (자원 량 제공) client 4 (자원 량 제공)
2
User application OS_monitor( ) 호출 Return C - Library NR_monitor Resume userspace Int 80 Kernel Call OS_monitor( ) Return System Call OS_monitor( )
3
실습 환경 CentOS 7.0 (x86_64) Kernel 시스템 비트 확인 #arch #get LONG_BIT
4
실습 환경 설정 #yum install –y wget gcc ncurses-devel vim
#mv linux tar.gz /usr/src/kernels/ #cd /usr/src/kernels #tar xvfz linux tar.gz #cd linux ($KERNEL) = /usr/src/kernels/linux vim의 라인 출력 :set nu[enter]
5
syscall 등록 #vim ($KERNEL)/arch/x86/syscalls/syscall_64.tbl
2. [syscall 번호] [비트환경] [syscall 이름] [해당 함수명] **(각 설정 사이는 “탭” 키를 사용하여 띄어 쓴다) **예제 314 common OS_monitor OS_monitor
6
syscall table 등록 #vim ($KERNEL)/include/linux/syscalls.h
1. #endif 전에 syscall 함수명 추가 ** 예제 asmlinkage long OS_monitor(int num);
7
syscall 함수 구현 #vim ($KERNEL)/kernel/OS_monitor.c #vim ($KERNEL)/kernel/Makefile 1. 13번째 줄 마지막에 OS_monitor의 object 파일 추가
8
커널 컴파일 #cp /boot/config-* .config #make #make modules #make modules_install #make install #reboot
9
syscall 사용 1. 제작한 시스템 콜을 이용한 코드 제작 2. 컴파일
#gcc –I($KERNEL)/include/ -o OS_monitor OS_monitor.c #./OS_monitor #dmesg | tail
Similar presentations