В Microsoft Windows вы можете получить идентификатор процессора (не идентификатор процесса) через WMI, который основан в этом случае (только при приобретении идентификатора процессора) по команде CPUID
Существует ли аналогичный метод для получения этого идентификатора на Linux?Идентификатор процессора Acquring в Linux
ответ
Я не знаю, что такое WMI
и MS-Windows «CPUID
инструкция», так как я не знаю или не использую MS-Windows (здесь мало пользователей). Поэтому я не могу сказать точно, если это предлагает ту же информацию, но попробуйте с cat /proc/cpuinfo
. Если вам требуется определенное значение, вы можете легко удалить grep
.
Если вам нужно сделать это изнутри программы, вы можете использовать файлы utils для чтения такой информации. Всегда помните об одном из основных принципов операционных систем стиля «unix»: все - файл.
это набор info по wmi [WMI] (http://en.wikipedia.org/wiki/Windows_Management_Instrumentation) И инструкция CPUID не ограничивается Microsoft Windows, это на самом деле инструкция по сборке, см. [CPUID] (http: // ru. wikipedia.org/wiki/CPUID) –
Вы думаете, что я не пытался увидеть файл cpuinfo? Поскольку я не получил результат, я ожидаю, что я разместил этот вопрос –
Извините, я не могу _guess_ пытались ли вы прочитать файловую систему proc. Вы ничего не писали об этом, поэтому я предположил, что вы этого не сделали. По тому, как вы спрашиваете, я предположил, что вы новичок в Linux, поэтому я подумал, что подсказка в этом направлении может помочь. Это может быть неправильный вывод с моей стороны, не ошибайтесь. Но если вы не пишете то, что уже пробовали, то вы не можете ожидать, что мы об этом узнаем! И поскольку вы даже сейчас не писали, что вам до сих пор не хватает в этой информации, я не могу с этим поделать. Сожалею. – arkascha
Для контекста вопроса Ора, в ProcessorID
значении, возвращенное WMI является documented таким образом:
Информации о процессоре, который описывает функцию процессора. Для процессора x86 формат поля зависит от поддержки процессора инструкции CPUID. Если инструкция поддерживается, свойство содержит 2 (два) формата в формате DWORD. Первый - это смещение 08h-0Bh, которое является значением EAX, которое возвращает команда CPUID с входом EAX , установленным в 1. Второй является смещением 0Ch-0Fh, который является значением EDX , которое возвращает инструкция. Только первые два байта являются значимыми и содержат содержимое регистра DX при сбросе ЦП. Все остальные установлены в 0 (ноль), а содержимое находятся в формате DWORD.
В качестве примера, на моей системе:
C:\>wmic path Win32_Processor get ProcessorId
ProcessorId
BFEBFBFF000206A7
Обратите внимание, что ProcessorID просто двоичным кодом формата информации обычно доступны в других форматах, в частности, подпись (Семейный/модель/Stepping/Тип процессора) и флаги функций. Если вам нужна только информация, вам может не понадобиться этот идентификатор - просто получите уже декодированную информацию от /proc/cpuinfo
.
Если вы действительно хотите эти 8 байтов, есть несколько способов получить ProcessorID в Linux.
с корневым/Судо, идентификатор содержится в выводе dmidecode
:
<snip>
Handle 0x0004, DMI type 4, 35 bytes
Processor Information
Socket Designation: CPU Socket #0
Type: Central Processor
Family: Other
Manufacturer: GenuineIntel
ID: A7 06 02 00 FF FB EB BF
<snip>
Примечание порядок байтов обращенно: Windows возвращает результаты в Big-Endian порядке, в то время как Linux возвращает их в Литтл -Индийский порядок.
Если у вас нет прав суперпользователя, то почти можно восстановить ProcessorID из /proc/cpuinfo
двоичных-кодирования значений он возвращается. Для «подписи» (первые четыре байта в Windows/последние четыре байта в Linux) вы можете бинарно кодировать идентификацию, извлеченную из /proc/cpuinfo
, чтобы соответствовать Intel Documentation. Рисунок 5-2 (другие производители используют его для совместимости).
- Степпинга в битах 3-0
- модели находится в битах 19-16 и 7-4
- семьи в битах 27-20 и 11-8
- типа процессора в битах 13 -12 (
/proc/cpuinfo
не говорит вам об этом, предположим, 0)
Кроме того, вы можете заполнить оставшиеся четыре байта перебором художественных флагов (flags
ключ в /proc/cpuinfo
) и установки битов в соответствующих случаях в таблице 5- 5 o Док-станция Intel связана выше.
Наконец, вы можете установить пакет cpuid
(например, на Ubuntu, sudo apt-get install cpuid
). Затем, запустив команду cpuid -r
(raw), вы можете проанализировать ее вывод. Вы бы объединить значения из EAX и EDX регистрирует на начальное значение EAX 1:
$ cpuid -r
CPU 0:
0x00000000 0x00: eax=0x0000000d ebx=0x756e6547 ecx=0x6c65746e edx=0x49656e69
0x00000001 0x00: eax=0x000206a7 ebx=0x00020800 ecx=0x9fba2203 edx=0x1f8bfbff
<snip>
принять посмотреть здесь: [получить-CPUID-программы] [1] Небольшой c- программа показывает, как это происходит. [1]: http://stackoverflow.com/questions/15368394/determine-cpuid-as-listed-in-the-intel-intrinsics-guide – user3054986
Спасибо за вашу помощь –