Internet of Things (IoT) is an application domain that integrates different technological fields. IoT covers many areas ranging from enabling technologies and components to several mechanisms to effectively integrate low level components. Software that manages IoT platforms is a key factor enabling the success of future IoT platforms. IoT operating systems are designed to run efficiently on small form factor low power devices, while at the same time providing features to simplify and support the IoT system in its objectives. Programmability, middleware and open application programmable interfaces (APIs) are the key factors needed to ensure the success of future IoT platforms. IoT systems are predicted to grow to billions of devices within the next decade which implies sophisticated management systems are necessary large number of these devices. IoT places lot of requirements for the future design of cellular networks due to the large number of such devices. Moreover, such devices generate traffic which is very different from human generated traffic. The power consumption of IoT devices especially ones running on small batteries is also one of the key design requirements.