Notes - MIECT
Sistemas De Operação
Notes - MIECT
Sistemas De Operação
  • Sistemas de Operação
  • Processes in Unix/Linux
    • Process
    • Multiprocessing vs. Multiprogramming
    • Processes in Unix
    • Execution of a C/C++ program
  • Introduction to operating systems
    • Global view
    • Evolution of computational systems
    • Key topics
  • Semaphores and Shared memory
    • Concepts
    • Semaphores
    • Shared memory
    • Unix IPC primitives
  • Threads, mutexes and condition variables in Unix/Linux
    • Threads
      • In linux
    • Monitors
    • Unix IPC primitives
  • Processes
    • Process
      • Diagrams
    • Process control table
    • Context switching
    • Threads
  • Processor Scheduling
    • Processor Scheduler
    • Short-term processor scheduler
    • Scheduling algorithms
    • Scheduling criteria
    • Priorities
    • Scheduling policies
      • In Linux
  • Interprocess communication
    • Concepts
    • Philosopher dinner
    • Access primitives
      • Software solutions
      • Hardware solutions
    • Semaphores
    • Monitors
    • Message-passing
    • Unix IPC primitives
  • Deadlock
    • Introduction
    • Philosopher dinner - Solution 1
      • Deadlock prevention
    • Philosopher dinner - Solution 2
      • Deadlock prevention
    • Philosopher dinner - Solution 3
      • Deadlock prevention
    • Philosopher dinner - Solution 4
    • Deadlock avoidance
    • Deadlock detection
  • Memory management
    • Introduction
    • Address space
    • Contiguous memory allocation
    • Memory partitioning
    • Virtual memory system
    • Paging
    • Segmentation
    • Combining segmentation and paging
    • Page replacement
      • Policies
    • Working set
    • Thrashing
    • Demand paging vs. preparing
Powered by GitBook
On this page
  • Problem statement
  • A solution
  • State diagram
  • Code
  • A race condition
  1. Interprocess communication

Philosopher dinner

PreviousConceptsNextAccess primitives

Last updated 2 years ago

Problem statement

5 philosophers are seated around a table, with food in from of them.

  • To eat, every philosopher needs two forks, the ones at her/his left and right sides.

  • Every philosopher alternates periods in which she/he medidates with periods in which she/he eats.

Modeling every philosopher as a different process or thread and the forks as resources, design a solution for the problem.

A solution

State diagram

This is a possible solution for the dining-philosopher problem.

  • when a philosopher gets hungry, he/she first gets the left fork and then holds it while waits for the right one.

Let’s look at an implementations of this solution!

Code

A race condition

This solution may work some times, but in general suffers from race conditions.

Let’s look at a code snippet: