1. A method of providing quality of service scheduling in multithreaded processing, comprising: identifying a plurality of hardware resources utilized by a hardware thread and its corresponding software thread in simultaneous multithreaded processing, the plurality of hardware resources including at least a plurality of floating point units, a decoder, and an L1 cache wherein the hardware thread's usage information is tracked individually for each of the plurality of floating point units, the decoder, and the L1 cache; communicating by hardware to an operating system the identified one or more hardware resource utilization; and allowing reservation by the operating system of the one or more hardware resources for a software thread in the simultaneous multithreaded processing based on individually tracked usage information of said each of the plurality of floating point units, the decoder, and the L1 cache, wherein communication between the hardware and the operating system is achieved by using a mapping stored in a core that allows the operating system to log a software thread identifier, and the hardware to inserts a corresponding hardware thread identifier when the hardware executes the software thread.