Skip to content

Commit

Permalink
general/drills: Add "Nightly Builds System" written task as exam
Browse files Browse the repository at this point in the history
Add Markdown file storing the question scenario and the questions
Modify config.yaml to render the new task

Signed-off-by: Petru-Vlad Ionescu <[email protected]>
  • Loading branch information
vladiouz committed Mar 16, 2024
1 parent 9b8b4cd commit 31050ce
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
47 changes: 47 additions & 0 deletions chapters/general/drills/tasks/nightly-builds-system.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Nightly Builds System

## Scenario

We are designing and implementing a nightly builds system, where different components and versions are compiled.
The system receives build requests in the form of build files (e.g., Makefiles); the reception is done by a dispatcher component, which then forwards the requests to worker components to be executed.
The worker components can (and it's recommended) run on other systems; in this case, the sources for building are located on a shared storage space (network file system).
Dispatcher components collect the build results and, in case of system errors, transmit them to another component; in case of runs without system errors, they transmit them back to the build requester.

Answer the following questions with "True" or "False" and justify your answer.
The justification should be simple, 2-3 sentences for each answer.

## Questions

1. The dispatcher component is a CPU-intensive process.
Answer: False

1. The connection between the dispatcher component and the worker components can be established through network sockets.
Answer: True

1. To utilize all available resources, worker components should use all system cores.
For this, we prefer a multi-threaded implementation over a multiprocess one.
Answer: False

1. The dispatcher component can run on a Windows system.
Answer: True

1. The dispatcher component can be implemented in an interpreted language (such as Python, Lua, Ruby).
Answer: True

1. Build systems (where workers run) need to have processors specific to the targets they obtain (if we want to compile ARM targets, we need ARM processors).
Answer: False

1. If we measure the time spent by the worker components, we will see that most of the time is spent in user space (user time) compared to kernel space (system time).
Answer: True

1. The storage space requirement is higher for a worker component than for the dispatcher component.
Answer: True

1. The system can function with just one worker component.
Answer: True

1. The dispatcher component does not cause page faults.
Answer: False

1. The dispatcher system can function as both a statically compiled and a dynamically compiled application.
Answer: True
1 change: 1 addition & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ docusaurus:
subsections:
- Digital Forensics/: digital-forensics.md
- Distributed System/: distributed-system.md
- Nightly Builds System/: nightly-builds-system.md
- Hackathons:
path: content/assignments
subsections:
Expand Down

0 comments on commit 31050ce

Please sign in to comment.