A multi-core personal computer can run many compute-intensive programs concurrently. An over-subscription occurs when the number of user programs exceeds CPU cores or memory resources, such that these resources are time-shared by several programs. Traditionally, over-subscription is an approach to improve system utilization when user programs are not compute intensive. However, with compute-intensive programs, peak system utilization is achieved even without over-subscription. In addition, over-subscription in such a scenario prolongs the completion time of each program, and risks trashing the memory resources. To prevent the over-subscription, we propose of a batch scheduler for personal multi-core systems. It imposes a job queuing policy to ensure that CPU cores and memory resources are not time-shared by multiple programs. To demonstrate our idea, we present a simple implementation of a personal batch scheduler by extending a batch scheduler designed for HPC (high performance computing) clusters, with virtualization technologies.