공부하다 재밌어서 갖고옴.
패스파인더의 소저너 로버는 VxWorks라는 우주선에 많이 쓰이는 운영체제를 사용했음.
처음에는 제대로 동작하던 시스템이 점점 오류를 일으키더니 데이터가 손실되기도 했음.
운영 체제에서 프로그램을 실행할 때 보통은 프로그램들 간의 우선 순위를 정해서 일정 시간만큼만 CPU를 차지하도록 함.
그리고, 만약 두 프로그램이 서로 공유하는 데이터가 있다면, 두 프로그램이 번갈아가면서 데이터에 접근한다면 여러 가지 이유로 원치 않는 값을 얻을 수도 있음.
그래서 한 번에 한 프로그램만 접근할 수 있게 하는 하드웨어가 있음.
소저너 로버에는 기상 정보를 수집하는 프로그램과 센서같은 부품과 데이터를 주고 받는 프로그램이 있었는데, 기상 프로그램은 자주 실행되지 않아서 우선순위가 낮은데, 데이터를 주고 받는 프로그램은 중요한 시스템 프로그램이기 때문에 우선순위가 매우 높음.
저 둘과 데이터를 공유하는 통신 프로그램은 우선순위가 중간 정도였는데, 아주 드물게 기상 프로그램을 실행하기 위해 데이터 버스 프로그램이 차단되는 일이 생김.
J1: 우선순위가 가장 높은 프로그램
J2: 우선순위가 중간인 프로그램
J3: 우선순위가 낮은 프로그램
위의 그림에서 critical section이 프로그램 사이에서 공유되는 데이터를 사용하는 부분임.
그래서 데이터 버스 프로그램이 다른 두 프로그램을 실행하느라 오랜 시간(컴퓨터 기준) 멈추는 일이 발생하고, 이걸 이상으로 여겨서 시스템 재설정이 계속 일어남.
이 문제는 기상 작업의 우선 순위를 통신 작업보다 위로 올려서 해결했다고 함.
그러면 이제 통신 작업 프로그램은 맨 마지막에 실행되서 데이터 버스 프로그램의 실행 간격을 줄일 수 있음.
https://www.cse.chalmers.se/~risat/Report_MarsPathFinder.pdf
위키피디아 읽어 보면 이런 문제는 이미 충분히 많이 일어나고 있음
Safe mode in spacecraft - Wikipedia
Safe mode in spacecraft - WikipediaSafe mode in spacecraft - Wikipediaen.wikipedia.org최근에는 허블 우주 망원경에서도 비슷한 문제가 일어남.
위키피디아 문서를 보면 우주선 컴퓨터의 오류는 상당히 자주 일어나는 일임.
우주선이 안전 모드에 진입한 경우 안테나를 지구 쪽으로 향하고 태양 전지판을 태양 쪽으로 향하게 한다고 함.
이온 엔진 탐사선의 경우 궤도에 진입하기 위한 엔진 점화를 아주 오랜 시간에 걸쳐 수행해서 이런 오류가 일어나도 궤도 진입 실패 확률이 더 작다고 함.
Modeling spacecraft safe mode events | IEEE Conference Publication | IEEE Xplore
컴퓨터 스위치로 인간 태우는 것도 괜찮을듯함.
댓글 0