La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IMPLEMENTACION DE ADVANCED POWER MANAGEMENT EN SODIUM.

Presentaciones similares


Presentación del tema: "IMPLEMENTACION DE ADVANCED POWER MANAGEMENT EN SODIUM."— Transcripción de la presentación:

1 IMPLEMENTACION DE ADVANCED POWER MANAGEMENT EN SODIUM

2 ADVANCED POWER MANAGEMENT(APM) EL ORIGEN

3 APM surgió a partir de la creación de las primeras notebooks en la década del 80'. El gasto de energía de estas maquinas era comparable al gasto de energía de una PC de escritorio, y estas computadoras portátiles no podían ser usadas con baterías. Por lo tanto se busco una forma de administrar la energía para reducir el consumo de las Notebooks. EL ORIGEN

4 Intel, Microsoft e IBM, comienzan una investigación cuyo resultado fue la versión 1.0 de APM la cual tenía inconvenientes relativos a la comunicación con el APM BIOS. El objetivo de APM 1.2 era coordinar el BIOS y el SO para evitar comportamientos impredecibles causados por la operación de ambos de forma independiente. EL ORIGEN

5 APM esta formado por 3 módulos que se comunican entre si para llevar a cabo la gestión de energía, estos son: Aplicaciones APM-aware APM Driver APM BIOS ESTRUCTURA DE APM

6

7 Aplicaciones APM-aware Una aplicación que participa en la gestión de energía del sistema a través de una interfaz con el APM Driver que es dependiente del sistema operativo. ESTRUCTURA DE APM

8 APM Driver El módulo de software que se conecta a la interfaz del APM BIOS. El APM Driver y el APM BIOS coordinan la gestión de energía del sistema APM a través de la conexión de software. ESTRUCTURA DE APM

9 APM BIOS El módulo APM BIOS del sistema es el que proporciona funcionalidad de manejo de energía para el hardware del motherboard que se apegue a la especificación de la interfaz APM. ESTRUCTURA DE APM

10 INTERFAZ DE APM APM requiere de soporte para las interfaces de modo real y protegido. La interfaz de modo real es una extensión de la existente Int 15h. La interfaz de modo protegido se accede mediante una call gate.

11 La interfaz comunica en ambos sentidos al APM Driver y el APM BIOS. –El APM BIOS informa al APM Driver los eventos APM que ocurren. –El APM Driver realiza llamadas a funciones del APM BIOS y también le proporciona información relacionada con la administración de energía. INTERFAZ DE APM

12 Conexión APM El primer paso es llamar a la función APM Installation Check. Esta función permite averiguar: –Si existe un módulo BIOS APM en el sistema –La versión de APM que soporta el BIOS APM –Los atributos de la implementación del BIOS APM. mov ax, 0x5300 mov bx, 0x00 int 15h

13 Conexión APM Luego se realiza una llamada a la función APM Protected Mode32-bit Interface Connect para establecer la conexión con el BIOS APM. –Esta función devuelve punteros a los segmentos de código y datos del BIOS APM. –Se crea una Call Gate usando estos punteros. –El APM Driver realiza llamadas a funciones del BIOS APM usando esta Call Gate. mov ax, 0x5303 mov bx, 0x00 int 15h

14 ESTADOS DE ENERGIA DE APM APM define los estados de energía en que puede entrar el sistema de la siguiente manera : » Full on. » APM enabled. » APM standby. » APM suspend. » Off.

15 ESTADOS DE ENERGIA DE APM Full on El sistema está funcionando. No hay administración de la energía. Todos los dispositivos están activos.

16 ESTADOS DE ENERGIA DE APM APM Enabled El sistema está funcionando. Hay administración de la energía. El clock del CPU se detiene o se pone a menor frecuencia según sea necesario. La energía de los dispositivos se administra según sea necesario.

17 APM standby El sistema puede no estar funcionando, se lo pone en un estado de bajo poder con algo de ahorro de energía. El clock del CPU se baja de frecuencia o se detiene. El sistema vuelve rápidamente al estado APM enabled. Puede requerirse la actividad del usuario para volver el sistema a APM enabled. Se notifica al sistema operativo luego de la transición a APM enabled. ESTADOS DE ENERGIA DE APM

18 APM suspend El sistema no está funcionando, sino que está en un estado de bajo poder con el máximo ahorro de energía. La mayoría de los dispositivos que tienen administración de energía, no están activos. El clock del CPU está detenido y el núcleo (core) del CPU está en su estado de mínimo poder. Tarda un tiempo relativamente largo para volver a APM enabled en comparación con Standby. Los eventos de wakeup que son definidos por el OEM devuelven al sistema al estado APM enabled. Se notifica al SO luego de la transición a APM enabled. ESTADOS DE ENERGIA DE APM

19 Off El sistema no está funcionando. La fuente de alimentación está apagada. El sistema se reestablece e inicializa cuando se realiza la transición al estado Full on. ESTADOS DE ENERGIA DE APM

20 EVENTOS APM Los eventos APM se comunican del APM BIOS al APM Driver a través de un mecanismo de polling. La función APM que se utiliza para esto es GET PM EVENT. El APM BIOS notifica los eventos APM sólo una vez. Los eventos se borran después de la notificación y ninguna notificación adicional se publica hasta que ocurra otro evento.

21 EVENTOS APM Esta es una lista definida de eventos de APM que el APM BIOS puede reportar. 0001H System Standby Request Notification 0002H System Suspend Request Notification 0003H Normal Resume System Notification 0004H Critical Resume System Notification 0005H Battery Low Notification 0006HPower Status Change Notification 0007H Update Time Notification 0008HCritical System Suspend Notification 0009H User System Standby Request Notification 000AH User System Suspend Request Notification 000BH System Standby Resume Notification 000CHCapabilities Change Notification 000DH - 00FFHReserved System Events 0100H - 01FFHReserved Device Events 0200H - 02FFHOEM-Defined APM Events 0300H - FFFFHReserved

22 Implementación en SODIUM Abarca prácticamente todas las funcionalidades definidas en la especificación APM 1.2 Principales funcionalidades APM implementadas: Standby. Suspend. Mejoras al Shutdown. Manejo de eventos APM. Limitaciones: Hibernación: no se pudo implementar debido a que es necesario tener la administración del disco (file system) por parte del SODIUM para poder realizarlo.

23 Implementación en SODIUM Comandos creados: apmstateapmrestoreapmstatus apmenableapmversionapmengage apmcapaapmbusyapmidle apmringapmresumeapmtimers apminfostandbysuspend

24 Implementación en SODIUM Funcionalidades APM mas relevantes implementadas en SODIUM: void vFnAPM_info() : Nos permite saber las capacidades de APM soportadas por el equipo, además de el código de segmento y el punto de entrada al código de BIOS APM luego utilizado para realizar el call a las funciones APM. void vFnAPM_shutdown(int): Función para apagar el equipo indicándole la unidad de tiempo, posteriormente transformada en segundos. void vFnAPM_getEvent(): Esta función es la encargada de estar realizando el polling constantemente para saber si el APM BIOS ha posteado un evento. void vFnAPM_suspend(int): Función para poner en modo Suspend el equipo void vFnAPM_standby(int): Función para poner en modo Standby el equipo int iFnAPMGetCapabilities(): Se usa para determinar las capacidades APM que soporta la implementación particular del APM BIOS del equipo.

25 Implementación en SODIUM Algunos ejemplos del código desarrollado: vFnAPM_info() { int r_ecx; int carry; vFnImprimir("\nAPM Installation Check:"); vFnImprimir("\n AX: 0x%x", uiAPM_check_ax); vFnImprimir(" BX: 0x%x", uiAPM_check_bx); vFnImprimir(" CX: 0x%x", uiAPM_check_cx); vFnImprimir("\nAPM Protected Mode 32-bit Interface:"); vFnImprimir("\n 32-bit Code Segment: 0x%x", uiAPM_32_cs); vFnImprimir("\n 16-bit Code Segment: 0x%x", uiAPM_16_cs); vFnImprimir("\n Offset Entry Point: 0x%x", uiAPM_offset_entry_point); vFnImprimir("\n Data Segment: 0x%x", uiAPM_ds); if ( 0x7000 == uiAPM_ds ) //ds fue remapeado vFnImprimir("\nRemapeo de memoria: si\n"); else vFnImprimir("\nRemapeo de memoria: no\n"); }

26 Implementación en SODIUM void vFnAPM_shutdown(int segundos) { int iOk; int r_ecx; int carry; if ( uiAPM_ok == 1 ) { vFnImprimir("\nShutdown w/ APM "); iFnAPMTimerBasedRequests(1); iOk = vFnCuentaRegresiva(segundos); asm ( "pushl %ebp \n\t" "movl %esp, %ebp \n\t" "pushl %eax \n\t" "pushl %ebx \n\t" "pushl %ecx \n\t" "movl $0x5307, %eax \n\t" //SHUTDOWN "movl $0x0001, %ebx \n\t" "movl $0x0003, %ecx \n\t" "lcall $0x30,$0x0 \n\t" "jnc sincarry7\n\t" "movl $0x0001, %1 \n\t" "mov %eax, %0\n\t" "jmp final7\n\t" "final7: \n\t" "popl %ecx \n\t" "popl %ebx \n\t" "popl %eax \n\t" "popl %ebp \n\t" :"=r" (r_ecx), "=r"(carry) : :"eax", "ecx", "ebx" ); vFnImprimir("\nAPM Set Power State SHUTDOWN: "); if(carry) { vFnImprimir("ERROR eax = 0x%xh ",r_ecx); if((r_ecx & 0xff00) == 0x0100) vFnImprimir("(Power management functionality disabled)\n"); if((r_ecx & 0xff00) == 0x0300) vFnImprimir("(Interfacce not connected)\n"); if((r_ecx & 0xff00) == 0x0900) vFnImprimir("(Unrecognized device ID)\n"); if((r_ecx & 0xff00) == 0x0a00) vFnImprimir("(Parameter value out of range)\n"); if((r_ecx & 0xff00) == 0x0b00) vFnImprimir("(Interface not engaged)\n"); if((r_ecx & 0xff00) == 0x6000) vFnImprimir("(Unable to enter requested state)\n"); return -1; } else } { vFnImprimir("OK\n"); return 1; } else { //Tuvimos algun error al establecer la conexion en modo real vFnImprimir("\nError en conexion APM PM 32-bit..."); vFnImprimir("\nPara informacion detallada consulte comando \"apminfo\""); }

27 Implementación en SODIUM void vFnAPM_getEvent() { int b=-1, carry= -1; asm ( "pushl %ebp \n\t" "pushl %eax \n\t" "pushl %ebx \n\t" "pushl %ecx \n\t" "movl $0x530b, %eax \n\t" //GET PM EVENT "lcall $0x30,$0x0 \n\t" "jnc sincarry \n\t" "movl $0x0001, %1 \n\t" "jmp final \n\t" "sincarry: \n\t" "movl $0x0000, %1 \n\t" "final: \n\t" "movl %ebx, %0 \n\t" "popl %ecx \n\t" "popl %ebx \n\t" "popl %eax \n\t" "popl %ebp \n\t" :"=r" (b), "=g" (carry) : :"eax", "ebx" ); if(carry == 0) { vFnImprimeEventoAPM(b); vFnCompruebaEjecutaEventoAPM(b); }

28 Implementación en SODIUM void vFnImprimeEventoAPM(int ebx) { vFnImprimir("\nEvento APM (0x%xh): ", ebx); switch(ebx) { case APM_SYS_STANDBY: vFnImprimir("System Standby Request Notification.\n"); break; case APM_SYS_SUSPEND: vFnImprimir("System Suspend Request Notification.\n"); break; case APM_NORMAL_RESUME: vFnImprimir("Normal Resume System Notification.\n"); break; case APM_CRITICAL_RESUME: vFnImprimir("Critical Resume System Notification.\n"); break; case APM_LOW_BATTERY: vFnImprimir("Battery Low Notification.\n"); break; case APM_POWER_STATUS_CHANGE : vFnImprimir("Power Status Change Notification.\n"); break; case APM_UPDATE_TIME: vFnImprimir("Update Time Notification.\n"); break; case APM_CRITICAL_SUSPEND: vFnImprimir("Crytical System Suspend Notification.\n"); break; case APM_USER_STANDBY: vFnImprimir("User System Standby Request Notification.\n"); break; case APM_USER_SUSPEND: vFnImprimir("User System Suspend Request Notification.\n"); break; case APM_STANDBY_RESUME: vFnImprimir("System Standby Resume Notification.\n"); break; case APM_CAPABILITY_CHANGE: vFnImprimir("Capabilities Chage Notification.\n"); break; }

29 La evolución de APM: ACPI ACPI (Advanced Configuration and Power Interface) se publicó por primera vez en Es una especificación desarrollada en conjunto por Intel, Compaq, Microsoft, Toshiba y Phoenix. Permite la gestión de todos los recursos hardware directamente por el sistema operativo. Mejora muchos de los defectos de APM al ofrecer una interfaz comprensiva de gestión para todos los dispositivos del sistema. La especificación puede ser dividida en dos partes principales : la implementación ACPI a nivel de BIOS y hardware, y la funcionalidad ACPI incorporada en el sistema operativo (OSPM).

30 Diferencias entre ACPI y APM ACPI es la tecnología de sustitución al APM. ACPI es más compatible con un hardware más nuevo, mientras que APM es más compatible con los dispositivos de legado. ACPI es más completo en comparación con APM. ACPI es mas complejo y robusto que APM. ACPI se centra en el SO, mientras que APM se centra en el BIOS. El SO tiene un mayor conocimiento que el BIOS, acerca del estado del sistema.

31 Fin Sistema Operativos Grupo APM Fernando J. Lo Tartaro Carlos A. Gergela


Descargar ppt "IMPLEMENTACION DE ADVANCED POWER MANAGEMENT EN SODIUM."

Presentaciones similares


Anuncios Google