PDF de programación - Guías de estilo, políticas, herramientas y el kernel 2.6

Imágen de pdf Guías de estilo, políticas, herramientas y el kernel 2.6

Guías de estilo, políticas, herramientas y el kernel 2.6gráfica de visualizaciones

Publicado el 31 de Octubre del 2019
108 visualizaciones desde el 31 de Octubre del 2019
24,0 KB
20 paginas
Guías de estilo, políticas, herramientas y el kernel

2.6

Juan Quintela
quintela@trasno.org





Introducción



¿Qué es el kernel Linux?

Herramientas principalmente utilizadas


Primeros contactos/impresiones con el kernel


Cambios principales en kernel 2.6


Otros cambios


Algunos temas de interés.


Conclusiones


Referencias




Herramientas
Compilador (gcc)
Depurador (gdb y kdb)
diff y patch
CVS y Bitkeeper
LXR
Martin Dovera: gengraph (cdep, genfull, ..)
bugzilla
patchset
VM Regress
ksymoops



rtc-debug (Puntos criticos)



Primeros comienzos con el kernel
Proyecto kerneljanitors
Proyecto kernelnewbies
Listas de correo (lkml, kmm, kcrypto..)
Subir código
Guías de estilo
Grupos de confianza
CodingStyle y Submitting Patches.




Principales cambios en kernel 2.6.x
Cambio del algoritmo de planificación O(1)
Preemptivo y baja latencia
Soporte ALSA
Amplio soporte ficheros
Nuevas arquitecturas
Linux Console
ACPI
Soporte Bluetooth
Soporte HotPlugging (CPU, PCMCIA, FireWire, PCI, SCSI..)
VM rmap
Hilos nativos
SCTP




Otros cambios:
Soporte NUMA
Añadido ACLs/HTree a ext2/3
UML
Oprofile
EVMS
IPsec

CryptoApi
kconfig y gconfig
Cambio en el cargador de módulos (LKM’s)



ide-tools



Planificación:
Procesos e hilos.
Estados de procesos.
Colas de espera.
Relación de parentesco.
Llamada al planificador.
Cambio de contexto, estado y proceso.




Planificador O(1)
Mejora escalabilidad.
No necesario recorrer runqueue.
Uso de dos arrays.
Mejora de prioridades
Verificación de prioridades dinámicas.
Dormir procesos interactivos (sleep_avg: dinámica menos está

tica muy pequeña.)

Soporte Hiperthreading.




Preempt
Junto baja latencia grandes cambios en respuestas.
Latencia de planificación: despertar
Latencia de interrupciones
Soluciones:
Uso planificador frecuentemente
Expulsión y schedule en tiempo real.
Cambio en spinlocks y API para preempt (*_enable&_disable&schedule)



rtc-debug: ej dcache



if (TEST_RESCHED_COUNT(100)) {

if (conditional_schedule_needed()) {

Ejemplo de preempt:

RESET_RESCHED_COUNT();

spin_unlock(&dcache_lock);
unconditional_schedule();
goto redo;



}
}



Mejoras en reescritura de:
Gestión de vm respecto a aa del 2.4
Lectura/escritura en disco
Framebuffer layer
API en carga de módulos
Documentation/sched-design.txt
SCHED_BATCH y mejora escabilidad




Mejora en PID accounting
Cambio de complejidad cuadratica a lineal.
NPTL (libc y aportaciones de Ingo Molnar) 1:1
NGPT (M:N por IBM)
Linuxthreads.




LSM
NSA, SELinux, SGI, Inmunix y Janus.
Mejora de capabilities y uso anterior de credenciales.
sys_security()
security_operations


Rama security/selinux
selinux_plug_init y selinux_plug_exit
execve_secure, task_security_struct superblock_security_struct

register_security y unregister_security
inode_security_ops

inode_security_struct, file_security_struct, ipc_security_struct,
sock_security_struct, skb_security_struct

Seguridad en netfilter.




Otras mejoras:
Sustitución de kbuild (antiguo CML1) por CML2.
Nueva configuración (kconfig)
Modificado xconfig para el uso de QT.
En 2.5.65 se añade el uso de gconfig con soporte para GTK+ 2.x




USB 2.0
Soporte USB 2.0 en 2.6 a 480 Mb/s
Mayores tasas de transferencia frente a 1.1.
Conectividad con dispositivos USB 1.1 a 12 Mb/s
Tecnologia denominada OTG (On The GO)
Cambio de usbdevfs a usbfs (usbtree)
Cambios notables: tipos de transferencias y alta velocidad.




ACPI
Advanced Configuration and Power Interface
Viene a substituir APM
Especificacion actual 2.0
PM tools.

/proc/acpi




NUMA (Non-Uniform Memory Access)
Características de NUMA.
Nuevo planificador.
Nueva API.
SGI MIPS64, Compaq/Alpha Wildfire, Nec Azusa, IBM x440 y

NUMAQ.

Mejora notable en escabilidad.
NUMA vs SMP.
NUMA junto SMP (IBM NUMAQ)
Configuración en anillo SGI MIPS64.



IBM PPC de arquitectura de varias CPU’s en un solo chip.

Estado actual de NUMA
Añadido nuevo planificador O(1): Arcangeli, Franke, Focht y



Libenzi.

Migración Páginas, Procesos y relacionada con I/O.
Nueva API en espacio de usuario.
Conjunto de utilidades (añadidas a top, ps, pstree, sar, vmstat..)
Asociar recursos a nodos y CPU’s (memoria, tareas..)




Pruebas o benchmarks:
Contest
LTT (Linux Trace Toolkit)
LSM: micro y macrobenchmarks.
Scripts que compilan continuamente el kernel
Envio/recepción constantemente de bloques por el loopback
Operaciones con números grandes
Uso de memoria compartida entre procesos.




Conclusiones:
Uso de 2.6 como version estable.
Un oops no hace daño a nadie, simplemente es un oops
Si encuentras un bug, oops, REPORTALO.
Bugs no importantes a pesar de notables mejoras.
Grandes mejoras notables ya comentadas.
  • Links de descarga
http://lwp-l.com/pdf16816

Comentarios de: Guías de estilo, políticas, herramientas y el kernel 2.6 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad