시스템 콜의 동작 순서 - sohwaje/Linux GitHub Wiki
1. 화면에 “hello world”라는 글자를 출력하는 파이썬 스크립트 hello.py를 만든다.
]# cat hello.py
print(“Hello World”)
2. 이 프로그램이 어떤 시스템 콜을 호출하는지 strace 명령어를 통해 확인한다. -o 옵션을 사용하면 strace의 출력 결과를 지정한 파일에 저장할 수 있다.
]# strace -o hello.log python hello.py
Hello World
3. hello.log를 확인한다.
]# cat hello.log
execve(“/bin/python”, [“python”, “hello.py”], [/* 19 vars */]) = 0
brk(NULL) = 0×63f000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×7fa03af75000
….생략….
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×7fa03af74000
write(1, “Hello World\n”, 12) = 12
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0×7fa03a77c5d0}, {0x7fa03aa9f680, [], SA_RESTORER, 0×7fa03a77c5d0}, 8) = 0
brk(NULL) = 0×710000
brk(NULL) = 0×710000
brk(0×70c000) = 0×70c000
brk(NULL) = 0×70c000
exit_group(0) = ?
+ exited with 0 +
4. write() 시스템 콜이 호출되면서 스크립트의 내용이 출력되는 것을 확인할 수 있다.
5. 시스템 콜 처리에 걸린 시간을 보다 정밀하게 측정하려면 strace -T 옵션을 사용한다.
write(1, “Hello World\n”, 12) = 12 <0.000033> → 33마이크로초가 걸렸다.