process들이 context switch하는 것을 확인한다.
** 이 예제는 <실습과 그림으로 배우는 리눅스 구조> 책의 62p 실습을 따라한 것입니다.
책에 나오는 테스트 프로그램을 작성한다.
프로그램 코드:
https://github.com/jinwookh/linux-c-example/blob/main/chapter12-process-api/sched.c
gcc -o sched sched.c
./sched 2 100 10
첫 번째 인자: 2
-> 실행할 프로세스의 수를 적는다.
두 번째 인자: 100
-> 프로세스가 동작할 시간을 적는다. ms 단위다.
세 번째 인자: 10
-> 몇 ms 간격으로 시간 데이터를 수집할지 적는다. 10으로 주었으니 10ms간격으로 데이터를 수집할 것이다.(코드에서는 10ms로 추정한 간격으로 데이터를 수집한다.)
process_number elapsed process_rate
1 11 10
0 11 10
1 23 20
0 23 20
1 34 30
0 34 30
1 45 40
0 45 40
1 57 50
0 57 50
0 68 60
1 68 60
0 80 70
1 80 70
0 91 80
1 92 80
0 102 90
1 103 90
0 115 100
1 115 100
context switch를 하면서 proces_number, elapsed, process_rate를 출력하는 모습을 볼 수 있다.
책에서는 프로세스별 진행 데이터를 버퍼에 모았다가 한 번에 출력한다.
context switch가 되는 것을 명확히 보기 위해 책의 코드를 수정했다.
특정 간격으로 진행될 때마다 출력하도록 바꾸었다.
https://github.com/jinwookh/linux-c-example/commit/d2fd3af174e9351a4a95f2647106482efbc256c5