This document discusses semantical cognitive scheduling, which aims to improve process scheduling by considering the current state of the operating system. It proposes assigning a utility value to each process-state pair based on the semantical progress gained from running that process in that state. This allows the scheduler to maximize total utility by considering the current system state. Obtaining utility values can be done through machine learning, user feedback, or from software vendors. While the general problem of finding the optimal scheduling order is hard, complexity can be reduced by assuming the number of states is bounded. Dynamic programming and greedy approaches are proposed to find high-utility schedules in polynomial time by exploiting this bounded state space assumption.