Linked by Thom Holwerda on Mon 6th Aug 2012 14:42 UTC
OSNews, Generic OSes As the first images of the Mars Curiosity lander start pouring in, let's talk about what operating system it runs. As I found out via Hacker News, the project runs on VxWorks, a very popular embedded operating system used for truly mission critical tasks. I'd love to know just how much work has gone into making it bug-free - this isn't the kind of environment where you want code to fail.
Thread beginning with comment 529902
To read all comments associated with this story, please click here.
Micro-kernel and security conscious.
by moondevil on Mon 6th Aug 2012 15:42 UTC
moondevil
Member since:
2005-07-08

From what I can see from the VxWorks documentation, it also belongs to the successful micro-kernel family of operating systems like QNX.

It is also one of the embedded operating systems that has Ada as part of the standard set of native supported languages.

As for the Pathfinder, even if it was written in C, most likely JPL guys were following their security guidelines to write safe C code.

http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

Reply Score: 8

kjmph Member since:
2009-07-17

Whoa, awesome read. I like the explicit cast to (void) for return code checking.

Reply Parent Score: 1

ingraham Member since:
2006-05-20

I am fairly certain that VxWorks is not a micro-kernel based system. It's one of the things that QNX brags about as being superior to VxWorks; whether that's true or not is open to debate, and VxWorks has considerably higher market share in the embedded space. One thing that always disturbed me about VxWorks is that it uses global variables as REALLY global variables. As in every program you run on the system has access to all the global variables of all the others. Naming conflicts can be a disaster. I much prefer message passing, as is native to QNX and OSE.

Reply Parent Score: 2

TomR Member since:
2012-08-07

It used to be true several years ago in VxWorks that all global variables were global, but that was when you could only have kernel applications. Now with Real-Time Processes (RTPs) added, each address space can have its own global variables. They can be of the same name as in other RTPs (or in the kernel) if desired (good for spawning multiple copies of an RTP from one copy in flash to differently named tasks). In multi-core VxWorks SMP, the Memory Management Unit protects all of the data and code in RTPs not intentionally shared. Data can be shared in Shared Data Regions and code in Shared Libraries.

Reply Parent Score: 3

moondevil Member since:
2005-07-08

I am fairly certain that VxWorks is not a micro-kernel based system.


Oh, I lack VxWorks experience, so I just inferred that from the documentation, maybe due to my bias in favour of micro-kernel architectures.

Reply Parent Score: 2