Embedded Systems

Embedded Systems Many of us might not be familiar with the term "embedded system" as it is not commonly used among people. However, it is likely that each of us uses an embedded system in the form of a tool or a gadget on daily bases.
Basically, "an embedded system is a dedicated computer system designed for one or two specific functions". Embedded systems can be found almost everywhere around us in the form of standalone devices, such as calculators, routers and thermostats, or as a tiny part within a larger device, such as the CPU in our PCs.

"Embedded systems are managed by single or multiple processing cores in the form of micro-controllers or digital signal processors (DSP), field-programmable gate arrays (FPGA), application-specific integrated circuits (ASIC) and gate arrays"

One of the earliest developers of a modernly recognized embedded system was Charles Stark Draper. He was credited for developing the Apollo Guidance Computer at the MIT Instrument Laboratory.
The embedded system used monolithic integrated circuits which helped reducing the size and weight of the machine. Other embedded systems also arouse in the 60's, such as the Autoneics D-17 guidance computer for the Minuteman missile, which is considered one of earliest mass-produced embedded machine system.
After these models were introduced, embedded systems became further developed to run more efficiently and started to sell at low, affordable prices. As a result, people started to use them to replace them with the expensive "knob-based analog components such as potentiometers and variable capacitors."

There are two main types of processors used in embedded systems:
1- Ordinary microprocessors:
"They use separate integrated circuits for memory and peripherals" "
2- Microcontrollers:
They have on-chip peripherals therefore, it is smaller, and consume less power."

Types of embedded software architectures:
1-Simple control loop:

This software uses a loop, that calls subroutines which is responsible for a part of the hardware or software.

2- Interrupt-controlled system:

This is a method to resolve situations during which the system is interrupted by multiple actions at the same time. This issue is handeled by the microprocessor in a way that allows it to process high-priority tasks first, and then process other tasks.

3- Cooperative multitasking

It is also known as non-preemptive multitasking, Basically it "is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process."

4- Preemptive multitasking / multi-threading

It uses a simple piece of code that is responsible for switching between tasks or threads according to a timer. Thus, the system is considered to have an "operating system" kernel. It helps increase the flexibility in terms of the complexity of managing multiple tasks running in parallel.

5- Microkernels and exokernels

6- Monolithic kerneld

Refernces:
http://www.ece.ncsu.edu/research/cas/ecs
https://www.techopedia.com/definition/3636/embedded-system
https://en.wikipedia.org/wiki/Embedded_system
http://www.futureelectronics.com/en/Microprocessors/embedded-processors.aspx
https://en.m.wikibooks.org/wiki/Embedded_Systems/Interrupts

Questions:
1- What makes embedded system so special?

2- Is't it better if embedded systems were replaced by multi-tasking systems, as it will consume less space and be more efficient ?

3- Why are embedded systems differentiated from other systems ?