Вы правы, есть аппаратные темы.Они напоминают реальные физические аппаратные структуры.Другими словами: аппаратные потоки реализуются с помощью нескольких «копий» всех необходимых «блоков» внутри ЦП, что позволяет ЦП действительно параллельно выполнять несколько «потоков выполнения».
Программное обеспечение потоки "отделены" от базового оборудования.Они представляют собой «виртуальный» ресурс.Операционная система управляет этими виртуальными потоками, и либо использует базовые аппаратные потоки или исключительно для управления потоками "только для программного обеспечения".
Значение: ОС ищетбазовые ЦП разрешают и используют аппаратные потоки n для запуска программных потоков m , о которых он знает.Теоретически, когда n равно 1 (то, что было у нас более 20 лет назад), тогда у вас нет никакого параллелизма, а только планирование на основе временных интервалов.
Ключевая вещь, которую нужно понять: все потоки, которыми управляет ОС, являются «программными» потоками.Как установлено, считать их виртуальным ресурсом.Теперь: есть просто разные типы этого ресурса.Некоторые программные потоки зарезервированы только для использования ядром ОС.Сама ОС использует их, и ни одно пользовательское приложение никогда не увидит их.Но очевидно, что приложения тоже хотят иметь «свои» потоки.Тогда это будут «пользовательские» потоки, так как они создаются по запросу в некотором коде пользовательского пространства.