Abstract: This paper examines the problem of guaranteeing response times, on a uniprocessor, to sporadic tasks with preemption constraints. The preemption constraints arise from the fact that tasks require exclusive access to shared software resources during portions of their computations. The primary objective is to determine conditions under which we can guarantee a response time to each task which is less than or equal to the task's minimum inter-execution request time. We analyze three different characterizations of a task's resource requirements. We show that for restricted patterns of resource usage, there exist synchronization and scheduling disciplines which are optimal for executing these tasks.