master-degree-notes/Concurrent Systems/notes/Lezione1.md

1.1 KiB

A sequential algorithm is the formal description of the behavior of an abstract state machine.

A program is a sequential algorithm written in a programming language.

A process is a program executed on a concrete machine, characterized by its state (values of the registers). If the process follows one single control flow (i.e. one program counter) then it is a sequential process, or thread.

A set of sequential state machines that run simultaneously and interact through shared memory through a shared medium is called concurrency. In a concurrent system there must be something shared.

Advantages of concurrent systems:
  • efficiency: run in parallel different stuff
  • simplification of the logic by dividing the task in simpler tasks, running them in different processes and combining the results together.

Features of a concurrent system

We can assume many features:

  • Reliable vs Unreliable
  • Synchronous vs Asynchronous
  • Shared memory vs Channel-based communication

Reliable system: every process correctly executes its program Async