FreeBSD vs Linux: производительность соглашений о вызовах ядра

Вероятно, вам будет полезно использовать такой инструмент, как "ssh-add", который будет хранить ваш расшифрованный закрытый ключ в памяти, поэтому он не будет запрашивать вашу парольную фразу, когда она вам понадобится.

Итак, когда вы захотите использовать ssh для другого хоста,

1 / Если ваш открытый ключ находится на нем, ssh автоматически аутентифицирует вас

2 / Если вашего открытого ключа нет на нем, ssh попытается аутентифицировать вас с помощью ключа не удастся, затем запросит пароль.

Но, как сказал Этан Рейснер, похоже, что вы назвали свой идентификационный файл именем по умолчанию, иначе ssh не попытался бы его использовать. Если вы не хотите использовать ssh-агент, просто измените имя вашего закрытого ключа

3
30.05.2018, 10:40
1 ответ

Esto realmente se reduce a la opinión del autor, en mi opinión.

En la convención FreeBSD ("Unix" ), inserta los argumentos en la pila, especifica el número de llamada del sistema en EAXe invoca la interrupción 0x80 (con un operando adicional en la pila porque espera ser llamado desde una función separada ).

En la convención Linux i386, coloca los argumentos en los registros apropiados e invoca la interrupción 0x80.

El argumento voluminoso/lento presumiblemente proviene del hecho de que con la convención de Linux, la persona que llama necesita lidiar con el uso de registros. Si la llamada al sistema necesita argumentos en los registros que contienen valores que le interesan a la persona que llama, debe conservarlos, lo que resulta en trabajo adicional; vea este ejemplo de la biblioteca C . En este ejemplo, la llamada al sistema necesita valores en EAX, EBX, EDX, EDI y ESI; pero la persona que llama solo se preocupa por preservar EBX, EDI y ESI, por lo que solo los empuja a la pila. El caso general es un poco más complejo(pero eso también es el resultado de tratar con una mezcla de C y lenguaje ensamblador, tratando de generar código óptimo en todos los casos ), sin embargo, cuando se escribe en lenguaje ensamblador, cuál es el punto del sitio al que te refieres, eso no sería un gran problema.

Me parece que son seis y media -una -docena :en la convención de FreeBSD, empujas a la pila en todos los casos, en la convención de Linux, empujas a la pila (o en otro lugar )según lo que esté haciendo en el lugar de la llamada. Podría argumentar que la convención de Linux permite un código más rápido ya que puede realizar todos sus cálculos en registros... Sin embargo, como Rob señala, en Linux los registros aún terminan siendo empujados (para construir el struct pt_regsinstancia que se utiliza para proporcionar los argumentos a las funciones C que se ocupan de las llamadas al sistema ),por lo que el costo total es mayor en el lado de Linux que en el lado de FreeBSD.

En cualquier caso, discutir sobre el rendimiento cuando se habla de código basado en pilas o registros -en torno a una llamada al sistema parece bastante pedante, dado el costo de realizar la llamada al sistema en sí. Por supuesto, cualquier ciclo guardado es bueno en términos absolutos, pero la mejora relativa será pequeña.

10
27.01.2020, 21:10

Теги

Похожие вопросы