커널 코드를 수행하는 주체는 무엇인가요?
글쓴이: rajakym / 작성시간: 화, 2019/01/15 - 5:22오후
커널이라 함은 운영체제 내에서 프로세스 간의 스케줄링과 메모리 관리 등등..한다는게 일반적인 정의로 알고 있습니다.
아래 bbs 에서도 만족할만한 답변을 듣지 못해 문의 드립니다.
https://kldp.org/node/82997
1) 커널은 스케쥴링 및 메모리 관리 등을 하는 하나의 프로세스(프로그램) 으로 볼 수 있나요?
(ps -aux 명령어로 확인이 가능한?)
2) device driver 의 prove() 함수를 수행하는 주체가 kernel 인가요?
3) A 라는 device driver 에 printB 라는 sysnode 가 있어서 아래 처럼 명령어를 입력하면 driver 내부의 변수를 출력합니다.
# cat /sys/devices/printB
# 11
그렇다면 driver 내부의 printb() 라는 코드를 수행하는 주체는 쉘 인가요? 아니면 커널 인가요?
Forums:
어떤 커널 코드이던 실행하는 주체는 프로세스입니다
1. 어떤 커널 코드이던 실행하는 주체는 프로세스입니다.
보고 있는 코드를 어떤 프로세스가 실행 중인지 확인하려면 다음 패치 코드를 추가해보세요.
+ printk("[+] current process[%d], pid \n", current->comm, current->pid);
커널 로그로 프로세스 이름과 PID를 확인할 수 있습니다.
2. 커널과 프로세스와 관계
다음 ftrace 로그는 sched_switch 이벤트 메시지입니다.
chromium-browse-2352 [003] d... 11145.688366: sched_switch: prev_comm=chromium-browse prev_pid=2352 prev_prio=120 prev_state=S ==> next_comm=TaskSchedulerRe next_pid=2493 next_prio=120
prev_comm에서 next_comm 프로세스로 컨택스트 스위칭되는 동작입니다.
prev_comm=chromium-browse prev_pid=2352 -> next_comm=TaskSchedulerRe next_pid=2493
그런데 가장 왼쪽 로그를 보면 "chromium-browse-2352" 메시지가 보입니다. 이는 현재 실행 중인 프로세스 정보입니다.
따라서 스케줄링 동작을 수행하는 프로세스가 chromium-browse-2352 인 것입니다.
큰 범위로 보면 스케줄링을 실행하는 주체는 프로세스입니다.
(개인블로그)
http://rousalome.egloos.com
댓글 달기