The Internet of things (IoT) has attracted a great deal of research and industry attention recently and is envisaged to support diverse emerging domains including smart cities, health informatics, and smart sensory platforms. Operating system (OS) support for IoT plays a pivotal role in developing scalable and interoperable applications that are reliable and efficient. IoT is implemented by both high-end and low-end devices that require OSs. Recently, the authors have witnessed a diversity of OSs emerging into the IoT environment to facilitate IoT deployments and developments. In this study, they present a comprehensive overview of the common and existing open-source OSs for IoT. Each OS is described in detail based on a set of designing and developmental aspects that they established. These aspects include architecture and kernel, programming model, scheduling, memory management, networking protocols support, simulator support, security, power consumption, and support for multimedia. They present a taxonomy of the current IoT open-source OSs. The objective of this survey is to provide a wellstructured guide to developers and researchers to determine the most appropriate OS for each specific IoT devices/applications based on their functional and non-functional requirements. They remark that this is the first such tutorial style paper on IoT OSs.