usleep을 이용해서 간단하게 프로그램을 짰는데요...
글쓴이: leo~~~~ / 작성시간: 목, 2005/08/18 - 10:03오전
안녕하세요~^^
제가 초보라 모르는게 많은데요
QnA 게시판에 질문 올릴때마다
답변해 주시는 분들 감사드립니다~
정말 KLDP 없었으면 어찌했을지....ㅡㅡ
다름이 아니구요.....
전에 타이머에대한 질문을 올렸을때
많은 분들이 sleep을 사용하라고 하셔서
usleep을 사용해서 했습니다...
근데 교수님꼐서 sleep은 정확한 시간이 아니라는데요...
그래서 타이머를 사용해서 하라고 하시더군요.....ㅡ,.ㅡ;;
타이머 사용법이 어떻게 되는지 알고 싶어서요....
시리얼 통신 프로그램이구요...
usleep써서 0.1초에 하나씩 시리얼을 통해
데이터를 보내는 프로그램입니다..
제가 usleep 이용해서 짠 프로그램 소스가 필요하다면
소스 올리라고 말씀해주세요~
허접한거지만....^^;;
그래두 실력을 늘리려면 그 정도 창피함(?)은
감수해야겠죠.....
부탁드립니다~
Forums:
교수님께서 말씀하시는 타이머는 타이머 인터럽트가 아닐까 싶네요.인터럽
교수님께서 말씀하시는 타이머는 타이머 인터럽트가 아닐까 싶네요.
인터럽트의 사용방법은 개발환경마다 조금씩 차이가 있을 수 있습니다.
임베디드 보드를 이용하여 개발하신다면 보드의 매뉴얼 및 예제들을 살펴보시는 것이 좋을 것 같아요.
범용 프로세서에서도 인터럽트를 쓸 수 있을 것 같은데요, 그 방법은 잘 모르겠네요
훗, 못 믿겠나?
오차의 한계는 어디까지인가요?오차는 작을수록 좋겠으나, 비실시간 운영
오차의 한계는 어디까지인가요?
오차는 작을수록 좋겠으나, 비실시간 운영체제에서 오차는 어쩔 수 없는 것입니다.
현재 시간 보고, 다음 시간까지 usleep()하여 코딩하는 것에도 오차가 있고,
다른 방법을 동원해도 오차는 있기 마련입니다.
적어도 시스템 호출하는데 걸리는 시간, 실제 시스템호출에 대한 처리시간, 리턴하는데 걸리는 시간, 또한 글로벌하게 컨텍스트 스위치하는데 걸리는 시간등이 그 오차로 작용할 것입니다.
* 동일 컴퓨터에서 테스트
setitimer()는 커널이 주기적으로 알람시그널을 유저프로세스에게 줍니다.(알람핸들러가 주기적으로 불리겠지요) 이경우에도, 시간을 찍어보면 수밀리초 오차가 발생함을 알 수 있습니다.(테스트 머신에 따라 차이가 있음)
=> 0.00xxxx
usleep()으로 코딩하면 약 수십밀리초 오차가 발생했습니다.
=> 0.0xxxxx
select()로 코딩하면 약 수백마이크로초의 오차가 발생했습니다.
=> 0.000xxx
* 결론:
- 비실시간 운영체제에서는 이와 같은 방법으로 코딩할 경우, 시간을 보정해 주는 루틴이 필수적이다.
- 실시간 운영체제를 검토해본다.(리눅스 변종도 있음)
* 참고 : 위 주제와 다소 차이 있으나, 분산된 장치들의 시간 동기화에서, 시간을 GPS장치로 부터 받는 방법이 있다. 시간 동기화에서는 현재 방법중 가장 훌륭하다고 알려진것으로 알고 있다(GPS살 돈 없음). 단, GPS수신가능위치(지하실? 건물 속?)에 안테나가 있어야 한다는...
음 우연인지 모르지만, 내가 예전에 올린 글이 있는 쓰레드에 비교적 빈번
음 우연인지 모르지만, 내가 예전에 올린 글이 있는 쓰레드에 비교적 빈번하게 이런 해괴한 댓글이 달리는 군요.
글올리지 말라는 경고인지... ㅎㅎ
아님 스토킹? ㅋㅋ
[quote="Anonymous"]음 우연인지 모르지만, 내가 예전에 올
스팸봇입니다. 그나저나 너무 심각하네요 저거 -_-
- 토끼군
댓글 달기