전체 글

전체 글

    커널 모듈 에서 쉘 명령어 실행하기

    argv[0] = "/bin/bash"; argv[1] = "-c"; argv[2] = "/usr/bin/free"; argv[3] = NULL; envp[0] = "HOME=/"; envp[1] = "TERM=linux"; envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin"; envp[3] = NULL; call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);

    [펌] 빅데이터를 위한 다양한 플랫폼들

    빅데이터 기술이란, 많은 양의 데이터를 저장할 수 있으면서 그 안에서 의미 있는 데이터를 검색하여 시각화하고 이를 바탕으로 예측/분석하는 기술과 비즈니스 프로세스에 내재화하여 적용하는 기술을 말합니다. 이 글에서는 빅데이터 분석에 대한 기술적인 내용을 플랫폼 관점에서 설명할 것입니다.미래의 문제를 해결하려면데이터에 기반한 의사 결정은 이를 사용하는 개인이나 조직의 경쟁력에 결정적인 영향을 미친다. MIT Sloan Management Review지에서 전 세계 기업인을 대상으로 조사한 바에 따르면, 해당 비즈니스 분야에서 주도적인 기업은 데이터에 기반해 의사 결정을 내리며, 조직적, 문화적으로 데이터에 기반한 의사 결정을 내재화한다고 한다. 다음 그림에서처럼, 약 2년 후에는 과거의 추세를 분석하고 이를..

    커널에서 64비트 연산시 주의할 점

    커널모듈에서는 64bit 숫자를 나누기나 모듈러 연산시 그냥 컴파일 하면 아마도 __udivdi3 와 __umoddi3 에 대해 unresolved symbol 에러가 날 것임. 그냥 / 연산자 쓰지말고것 do_div 연산자를 쓰자. 다만. do_div(a, b) 의 의미가 a = a / b 이기 때문에 입력값a 에 결과값이 들어있다는 것을 기억해주자. #include 해줄것[출처] 커넒모듈에서 나누기나 모듈러 연산시|작성자 baksejin

    프로세스 정보 얻기 (Task Struct 이용)

    struct thread_info *thread = current_thread_info();struct task_struct *task = thread->task; for_each_process(task){printk("pid = %d tgid = %d ppid=%d comm=%s\n ",task->pid,task->tgid,task->real_parent->pid,task->comm);}

    커널영역에서 파일 입출력

    #include mm_segment_t old_fs=get_fs();set_fs(KERNEL_DS); //file openfilp = filp_open(fname, O_RDWR, S_IRUSR|S_IWUSR);if(IS_ERR(filp)){printk("open error\n");return;}//file readret = vfs_read(filp, buff, sizeof(buff), &filp->f_pos);printk(KERN_ALERT "cmd[%s] ", buff); //file closefilp_close(filp, NULL);set_fs(old_fs);strcpy(cmd,buff);

    커널영역 파일 입출력

    이 문서를 읽기 전에 우선 숙지해야 할 사항은 kernel 영역에서 user 영역의 file에 대해 read/write를 사용하는 것은 절대 좋지 않은 정책이라는 것이다. 첫번째 이유는 커널의 보호문제이다. File의 data를 interrupt해가는 과정에서 유발되는 error는 buffer overflow 공격을 받을 가능성이 있다. 두번째 이유는 정책의 문제이다. 특정 fle system으로부터 특정 위치에서 특정 file을 읽어야 하는 kernel module은 user 영역에 의존성을 가지게 된다. 이것은 kernel developer들이 가장 피하는 정책이기도 하다.이럼에도 불구하고 kernel 영역에서 user 영역의 file을 handling하여야 하는 경우는 종종 발생하는데, 이런 경우에..