When a workunit is created at the project server, there are AFAIK per-host requirements for disk space and RAM embedded into the WU properties, besides other resource requirements. When a host requests new work at the project server's scheduler, these requirements are checked against what the host claims to offer to the project server, and based on that the scheduler will assign a task or won't.
However, these checks can only go so far: Firstly, the project admin may not have had all necessary information to predict the resource requirements of a new batch of workunits. Secondly, I understand the client and server can base these checks only on the resources of the host in its entirety, but can't really take into consideration (or even predict) how the host will handle a workload of n concurrent tasks.
The latter, instead, happens ad hoc locally on your host while the tasks are running. The client monitors how much disk and RAM each task is really using, and how much disk and RAM is really free for BOINC to use at any given time. When RAM usage by tasks gets too high, the client will suspend one task after another. When disk usage gets too high, the client may see itself forced to abort tasks eventually.
In extreme cases, the client may be unable to react on excessive RAM usage early enough, and the operating system's kernel may kill a task with high memory allocation.
TN-Grid may be a good alternative if you are specifically looking for COVID-19 related CPU (non-GPU) work.