Q1) system/core/init/init.c의 main()에 보면, /dev, /dev/pts, /proc, /sys 등의 디렉토리를 생성하고 마운트하는데, 마운트 대상이 되는 실제 (물리적인) directory는 어디에서 오는가? (kernel이 부팅되면 filesystem을 구성하는 과정을 알고 싶은것?)
A)

Q2) /proc/cmdline, /proc/cpuinfo 등은 언제, 누가 생성하는가? 내용은 어디로부터 가져오는가? 기 입력된 고정된 데이터?
A)

Q3) system/core/init/init.c의 main()에서, property_set() 함수를 이용하여 몇몇 프로퍼티를 초기화하는 부분이 있는데, "부트로더로부터 커널로 전달된 부팅옵션의 내용"을 분석 import_kernel_nv() 해서 ro.factorytest ro.serialno ro.bootmode등을 초기화 한다. "부트로더로부터 커널로 전달"은 어떻게 이루어 지는가?
A)

Q4) SIGCHLD signal handling을 위해 socketpair() 함수를 통해 생성되는 2개의 socket을 이용하는 이유는?
(하나는 sigchld_handler에서 사용하고 다른 하나는 이벤트 핸들러(?)에서 사용된다.)
[참고] socketpair() 함수는 소켓 쌍을 생성한다. 생성된 소켓 쌍은 서로 구별할 수 없다. 보통 부모 자식 프로세스간 내부 통신(IPC)를 위해서 사용한다.
A)

Q5) dmesg를 이용하여 kmsg를 확인해 보면, start_kernel() 함수에서 출력하는 printk msg도 출력된다. stdout을 /dev/kmsg로 redirection하는 코드는 init process에서 실행되는데, 어떻게 그 전에 실행되는 start_kernel()의 printk msg도 보일까? /dev/kmsg로 redirection 되기 이전의 stdout도 buffering 되어 있다는 의미인가?
A)

Q6) 왜 android root file system image에는 "/dev" directory가 존재하지 않는가?
A)

Q7) android에서 사용하는 property service는 각 property 별로 사용자권한을 uid로 관리한다. "실제 구현하려는 시스템이 동작 중에 프로퍼티 설정을 변경할 필요가 있다면 각 프로퍼티에 대한 접근 권한을 고려하여 구현해야 한다"라고 되어 있는데, 어떤 프로세스에서 특정 property를 수정해야 할 필요성이 있다면, 어떻게 해당 프로세스를 특정(필요한) uid로 실행할 수 있는가? application level에서도 가능한 것인가?
A)

Q8) 위 Q7에 추가적으로, 만약 다른 uid를 필요로하는 property를 변경할 필요성이 있는 경우에는 어떻게 dynamic하게 uid를 변경하여 해당 property를 변경할 것인가?
A)

Q)
A)

Q)
A)

Posted by 세월의돌
잡담2011. 2. 3. 00:49
Posted by 세월의돌