Explain the difference between process-level and thread-level concurrency, and how this impacts resource allocation.