사용자 모드와 커널 모드 실습

for {
	os.getppid()
}

이와 같이 현재 프로세스의 부모 프로세스 id를 계속해서 조회하는 프로그램을 실행하게 되면

시스템 콜을 계속해서 호출하게 되는 것이다.

따라서 sar -P 0 1 1 로 결과를 확인했을 때, %system 비율이 높아짐을 확인할 수 있다.

Strace -T

각각의 시스템 콜을 실행하는데 걸린 시간 정보를 마이크로 초 단위로 확인할 수 있다.

strace -T -o hello.log ./hello
hello world

$ cat hello.log
...
write(1, "hello world\\n", 12) = 12<0.000017>

즉, 문자열 출력 처리에 17 마이크로초가 걸린것을 알수가있다.

라이브러리

다수의 프로그램에서 공통으로 사용하는 처리를 제공해주는 패키지이다.

프로세스 고유의 코드 -- 개발자가 직접 접근하고 사용하는 부분 
OS 외부의 라이브러리 
OS 라이브러리 
-------------------------------------여기 위는 사용자 모드, 아래는 커널 모드에서 동작
커널
하드웨어

표준 C 라이브러리

리눅스에서는 표준 C 라이브러리로 (ISO에서 정해준) glibc 를 사용.