A computer-implemented method of allocating resources, the resources including threads, interrupts and pages, to one or more power regions, the computer-implemented method being performed by one or more processors executing computer executable instructions for the computer-implemented method, and the computer-implemented method comprising: obtaining power region classification information by: identifying one or more primary power regions having restrictions indicating that the primary power regions are not to be placed in an offline state, and identifying one or more secondary power regions that can either be parked or off-lined into a limited state having limited functionality in that functionality is removed from the one or more secondary power regions when placed in a limited state; and providing the obtained power region classification information to an operating system (101, 201) at boot time for the allocating of the resources by the operating system (101, 201), the allocating comprising: allocating an unmovable resource to one of the primary power regions during the boot time; identifying at least one interrupt that should be allocated to a primary power region, based on interrupt characteristics; allocating the at least one interrupt to an identified primary power region; identifying at least one thread that should be allocated to a primary power region, based on thread characteristics; allocating the at least one thread to an identified primary power region; identifying at least one page that should be allocated to a primary power region, based on page characteristics; allocating the at least one page to an identified primary power region; allocating at least one interrupt, one thread, or one page to a primary power region based on the at least one interrupt, one thread, or one page changing from a movable resource to an unmovable resource; and allocating at least one interrupt, one thread, or one page to a secondary power region based on the at least one interrupt, one thread, or one page changing from an unmovable resource to a movable resource. obtaining power region classification information by: identifying one or more primary power regions having restrictions indicating that the primary power regions are not to be placed in an offline state, and identifying one or more secondary power regions that can either be parked or off-lined into a limited state having limited functionality in that functionality is removed from the one or more secondary power regions when placed in a limited state; and identifying one or more primary power regions having restrictions indicating that the primary power regions are not to be placed in an offline state, and identifying one or more secondary power regions that can either be parked or off-lined into a limited state having limited functionality in that functionality is removed from the one or more secondary power regions when placed in a limited state; and providing the obtained power region classification information to an operating system (101, 201) at boot time for the allocating of the resources by the operating system (101, 201), the allocating comprising: allocating an unmovable resource to one of the primary power regions during the boot time; identifying at least one interrupt that should be allocated to a primary power region, based on interrupt characteristics; allocating the at least one interrupt to an identified primary power region; identifying at least one thread that should be allocated to a primary power region, based on thread characteristics; allocating the at least one thread to an identified primary power region; identifying at least one page that should be allocated to a primary power region, based on page characteristics; allocating the at least one page to an identified primary power region; allocating at least one interrupt, one thread, or one page to a primary power region based on the at least one interrupt, one thread, or one page changing from a movable resource to an unmovable resource; and allocating at least one interrupt, one thread, or one page to a secondary power region based on the at least one interrupt, one thread, or one page changing from an unmovable resource to a movable resource. allocating an unmovable resource to one of the primary power regions during the boot time; identifying at least one interrupt that should be allocated to a primary power region, based on interrupt characteristics; allocating the at least one interrupt to an identified primary power region; identifying at least one thread that should be allocated to a primary power region, based on thread characteristics; allocating the at least one thread to an identified primary power region; identifying at least one page that should be allocated to a primary power region, based on page characteristics; allocating the at least one page to an identified primary power region; allocating at least one interrupt, one thread, or one page to a primary power region based on the at least one interrupt, one thread, or one page changing from a movable resource to an unmovable resource; and allocating at least one interrupt, one thread, or one page to a secondary power region based on the at least one interrupt, one thread, or one page changing from an unmovable resource to a movable resource.