process context switch 확인

jinwook han·2023년 3월 20일
0

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

0개의 댓글