I am writing a very simple operating system as a learning tool for myself. My current task is detecting as much about the hardware as possible.
I have so far been a
In order to find all of the processors in a system, you must parse either the ACPI tables or Intel's MP configuration table. See Bringing SMP to your UP Operating System for a tutorial on using the MP configuration table to find and start other processors. Find more information on ACPI at http://www.acpi.info/spec.htm. You may also want to check out Detecting CPU Topology, which can tell you which processors and cores are on which physical chip within a system.
When working on your OS, http://wiki.osdev.org will be your best friend. It is full of information on all of the different parts of operating system development, including common hardware and tools.