Re: уникальная идентификация экземпляров устройств компа
В сообщении от 16 Апрель 2003 21:42 Andrey Kiselev написал: > On Wed, Apr 16, 2003 at 06:15:43PM +0300, sixthfish wrote: > > >> А в каких юниксах через ф-ии? > > > > AK> ИМХО, на всех остальных :-) Только в Линуксе через прерывание 0x80. > > > > FreeBSD, NetBSD, OpenBSD (x86) тоже int 80h > > Согласен. Поковырявшись немного, установил, что мои знания по этому > вопросу существенно протухли. lcall в FreeBSD использовался раньше, а > в новых ELF-версиях применяется int 0x80. > > А как дела обстоят в Solaris? Там, по-моему, до сих пор lcall. а какая собственно раздница как осуществляется передача управления ядру? если при этом происходит смена конткста в кернелмоде (или переход к кольцу с большим уровнем привелегий для х86) на х86 этого же результата можно добиться и с помощью lcal и даже ljmp. при этом будет использоваться практически тот же механизм, что и при int 0х80. только нужно забить под это дело стандартный дискриптор... а int 0х80 испоьзуют (на сколько я понимаю) чтобы вообще не трахаться с таблицами дискрипров для каждой задачи --- для flat модели они не нужны... а таблица дискрипроров прерываний всеравно должна быть, но она одна на всю систему... а 0х80 вектор выбран из соображений совместимости с остальнымм системами --- чтобы можно было пускть бинарники, собранные для другого юникса...
Re: уникальная идентификация экземпляров устройств компа
В сообщении от 16 Апрель 2003 12:26 Vlad Harchev написал: > On Wed, Apr 16, 2003 at 09:58:37AM +0400, Victor B. Wagner wrote: > > On 2003.04.16 at 10:48:58 +0500, Vlad Harchev wrote: > > > 3) Хранятся ли где-либо еще какие-либо серийные номера в x86 железе и > > > как их можно под линуксом узнать? > > > > Единственное, на что РЕАЛЬНО можно рассчитывать, это серийный номер > > процессора. Который добывается из него одной инструкцией. > > В процессорах выше PII (или даже PIII) этой инструкции уже нету. Спасибо > интелу, блин.. В свое время на сколько я помню, во Франции даже запретили импорт этих самых прцессоров из индентификационного кода... во всех факах писали, как эту фичу можно отключить через биос и что это нужно сделать пренепременно... > > > Обращение к любой другой железяки потребует системного вызова. > > А там где есть системный вызов, есть LD_PRELOAD, или возможность > > подредактировать драйвер в ядре. Читайте тьюринговскую лекцию > > одного из отцов-основателей - Кена Томпсона по-моему. > > Или Кернигана > > Системные вызовы в юниксах вызываются через прерывания - их не перехватить > кроме как подменив ядро ОС. а кто мешает пропатчить ядро? > Через LD_PRELOAD можно перехватить libc-обертки для них. > > > > Этот вопрос меня интересует в целях привязки софта к конкретному > > > серверу. > > > > Поубивал бы! Железо нынче штука ненадежная, его постоянно менять > > приходится. > > Ну это зависит от обстоятельств. Если железо менять разрешено только > вендору софта, то никаких осложнений это не принесет. ага через пару лет от вендора след простынет и облом :-( сколько уже таких случаев было... нет уж пользователей тоже нужно уважать...