Problem
1. Use protected types in Ada to implement semaphores.
2. Define an Ada protected type to implement a shared protected variable that can be read and written in mutual exclusion.
3. How can you define task types in Ada? What are the main differences between protected types and task types?