운영체제 과제[Posix Timer를 사용해서 혈압 생성 및 평균 계산(Linux&C언어)]
- 최초 등록일
- 2020.11.22
- 최종 저작일
- 2019.11
- 7페이지/ 어도비 PDF
- 가격 5,000원
목차
1. Problem Definition
2. Algorithm
3. S/W Diagram
4. Program Sources
5. Conclusion
본문내용
1. Problem Definition
한 쓰레드에서 혈압을 난수로 10 번 부여하고 다른 쓰레드에서 그 평균을 구하는 프로그램을 구현했습니다. data_acquisition_thread 에서 이완기 혈압과 수축기 혈압을 돌아가면서 10 번씩 부여합니다. 1/100 초마다 혈압을 난수로 생성합니다. 이완기 혈압의 범위는 60~90 이고, 수축기
혈압의 범위는 110~150 이어야 합니다. bp_processing_thread 는 1/10 초마다 실행되며 평균을 계산한 후, 어떤 혈압인지 평균과 함께 출력합니다.
2. Algorithm
프로그램이 실행되면서 POSIX timer 와 쓰레드 두 개를 생성합니다. 각 쓰레드는 data_acquisition_thread 함수와 bp_processing_thread 함수를 실행합니다. 혈압들이 저장될 bp_queue 는 전역변수 배열로 선언되어 있습니다. 두 함수가 실행되면모두 tt_thread_register 함수를 호출해 condition 을 초기화하고 TCB 에 쓰레드 정보를 추가합니다. 이는 POSIX timer handler 에서 사용됩니다.
data_acquisition_thread 함수는 POSIX timer 에 의해 1/100 초마다 실행되고, 이완기 혈압 값을 생성할 지, 수축기 혈압을 생성할 지 결정해주는 turn 변수를 가집니다. 이완기 혈압의 경우 60~90 의 범위에 해당하는 난수를, 수축기 혈압의 경우 110~150 의 범위에 해당하는 난수를 bp_queue 에 넣어줍니다. 1/100 초마다 함수가 실행되어 10 번 실행되면 크기 10 의 bp_queue 배열은 꽉 차고, 다른 쓰레드의 bp_processing_thread 함수를 wait 한 condition 에 signal 을 보내서 실행시킵니다
참고 자료
없음