miércoles, 25 de noviembre de 2015

Variables de entorno en aplicaciones de usuario

Las variables de entorno en Linux son variables que contienen valores que pueden ser utilizadas por diferentes programas. 
Existen varias variables de entorno que ya están definidas con la instalación del sistema operativo, pero también es posible agregar otras según sean las necesidades.
Entre las variables de entorno predefinidas están:
  1. HOME: Contiene la dirección al home del usuario actual.
  2. LANG: Especifica el lenguage que está siendo utilizado en el sistema operativo.
  3. PATH: Una de las más importantes variables de entorno. Contienen direcciones a carpetas donde están los binarios. Esto nos permite poder escribir el comando en la consola sin necesitar escribir toda la dirección hasta donde se encuentra el binario.
  4. PWD: Contiene la dirección del directorio actual de trabajo.
  5. SHELL: Nombre de la consola que se ocupa por defecto en el sistema.
  6. USER: Nombre del usuario actual.
Para poder consultar todas las variables que están seteados como variables globales podemos usar el comando export:

    emco@debian:~$ export


Lo que da como resultado una salida similar a esta:

declare -x COLORTERM="Terminal"
declare -x DISPLAY=":0.0"
declare -x GLADE_CATALOG_PATH=":/usr/share/glade3/catalogs"
declare -x GLADE_MODULE_PATH=":/usr/lib/glade3/modules"
declare -x GLADE_PIXMAP_PATH=":/usr/share/glade3/pixmaps"
declare -x GTK_PATH=":/usr/lib/gtk-2.0"
declare -x HOME="/home/emco"
declare -x HUSHLOGIN="FALSE"
declare -x LANG="es_SV.UTF-8"
declare -x LANGUAGE="es_SV:es"
declare -x LIBGLADE_MODULE_PATH=":/usr/lib/libglade/2.0"
declare -x LOGNAME="emco"
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
declare -x PWD="/home/emco"
declare -x SHELL="/bin/bash"
declare -x SHLVL="2"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/usr/share"

Zona de datos en memoria

Para usar memoria compartida en Linux es necesario seguir una serie de pasos que luego se traducen a llamadas al sistema.
  1. Necesitamos obtener un identificador de IPC. Para ello convertimos una ruta (path) del sistema en un identificador IPC. Este identificador es necesario para crear la crear la zona de memoria virtual. Esto es muy sencillo de hacer con la llamada al sistema ftok.
  2. Crear el segmento de memoria compartida con la llamada al sistema shmget.
  3. Operar con la memoria compartida. Indicamos lo que queremos compartir con la llamada al sistema shmat.
  4. Destruimos el segmento de memoria compartida con la llamada al sistema shmdt y shmctl.
Modo de uso:
#include <sys/types.h>
#include <sys/ipc.h>

key_t ftok(const char *pathname, int proj_id);

Requerimientos de hardware para SO



Windows 10:
2 GB (64 bits).


Espacio en disco duro: 16 GB (32 bits) o 20 GB (64 bits).


Tarjeta gráfica: Dispositivo gráfico Microsoft DirectX 9 con controlador WDDM.


Cuenta de Microsoft y acceso a Internet.


Resolución de pantalla de al menos 1366 x 768 píxeles.


Es posible que algunos juegos y programas requieran tarjetas gráficas compatibles con DirectX 10 o superior para un rendimiento óptimo.

Básicamente se conservan los mismos requisitos que con Windows 8, así que si tu equipo puede correr sin problemas la versión 8.1 no tendrás ningún problema para actualizar o instalar la nueva versión.

Linux Ubuntu:



Procesador: x86 a 1 GHz.


Memoria: 1 GB de RAM.


Espacio en disco duro: 15 GB.


Tarjeta gráfica: capaz de soportar una resolución de 800 x 600.


Puerto USB.


Tarjeta de red.


Conexión a Internet no indispensable.





Anímate a probar Ubuntu, existe una amplia gama de programas gratuitos y de paga para este sistema operativo.
Linux Knoppix:


>Procesador:

AMD o Intel superior a 500MHz (Pentiun III o K6-2 en adelante)


>Memoria RAM:

- Mínimo: 384MB

- Recomendada: 384MB


>Disco duro:

- Mínimo: 4GB

- Recomendado: 4GB






Fuentes:


https://mx.answers.yahoo.com/question/index?qid=20100714150028AAkacmX


http://tecnologia.starmedia.com/tutoriales/requisitos-minimos-para-instalar-windows-10-en-tu-pc.html


http://tecnologia.starmedia.com/tutoriales/requisitos-minimos-para-instalar-ubuntu-en-pc.html

Código reentrante



En informática, un programa informático o subrutina se llama re-entrada si puede ser interrumpido en medio de su ejecución y volver a llamarse de forma segura ("re-entrar") antes de que las invocaciones anteriores completen su ejecución. La interrupción puede ser causada por una acción interna como un salto o llamada, o por una acción externa como una interrupción o señal. Una vez que la invocación re-entrante completa, las invocaciones anteriores reanudarán su ejecución de forma correcta.

Este es un ejemplo de un swap() función que no sea reentrante (así como dejar de ser seguro para subprocesos). Como tal, no debería haber sido utilizado en el servicio de interrupción rutina isr():






Ejemplo
int t; void swap(int *x, int *y)
{
t = *x;
*x = *y; // hardware interrupt might invoke isr() here!
*y = t;
} void isr()
{
int x = 1, y = 2;
swap(&x, &y);
}
Fuente:
https://es.wikipedia.org/wiki/Reentrancia_(inform%C3%A1tica)