Documente Academic
Documente Profesional
Documente Cultură
1. Kernel de Linux
El Kernel de Linux es lo que permite que todo lo que ves en tu computadora esté
allí; es responsable de administrar los recursos de hardware, asignar memoria,
permitir que los procesos se ejecuten, comunicarse y hacer lo que usted necesita
que haga.
Las nuevas versiones del Kernel de Linux se lanzan a menudo, incluidas las
versiones más importantes con nuevas características, optimizaciones del
rendimiento y soporte de hardware, y versiones menores que incluyen soluciones
de seguridad críticas o parches de errores.
2. Como se ve la versión del Kernel
uname -r
El comando uname le mostrará instantáneamente qué versión de kernel está
usando. La salida se verá similar a esto:
4.14.0-16-genérico
En este caso, puedo decir que estoy usando el kernel de Linux 4.14, pero ¿qué
significan estos números?
4. – Versión Kernel
14. – Revisión mayor
0 – Revisión menor
-16 – Detalle de reparación / revisión de errores
-genérico – arquitectura / construcción específica
El primer número es la versión del Kernel. Este número cambia con menos
frecuencia. En la actualidad Linux 4.x es la serie actual.
El segundo número es la revisión principal. En años pasados, un número de
revisión par denotaría una versión estable y un número impar una versión de
desarrollo, sin embargo, este ya no es el caso.
Los números tercero y cuarto se relacionan con la revisión menor y la versión
de seguridad/corrección de errores que está utilizando.
3. Clases de sistemas operativos gráficos:
Un sistema operativo gráfico es aquel que está basado en una interfaz gráfica de
usuario. El sistema operativo contiene elementos gráficos como ser ventanas,
menús, barras, puntero, gráficos, colores, sombras, efectos, etc.
En sistemas operativos antiguos o en ciertos sistemas donde es útil, se emplea
una interfaz de texto y de línea de comandos. En estos sistemas no hay gráficos,
sino que son exclusivamente formados por texto.
Visualmente son más atractivos los sistemas operativos gráficos, además de ser
más fáciles de manejar.
Ejemplos
Ø Windows
Ø Mac OS
Ø Linux (distribuciones como debían, Ubuntu, fedora etc.)
Ø AigaOS
Ø Unix
Ø BeOS
Ø Sabayón
Ø Haiku (BeOS)
o Proceso en serie
Inicialmente, finales de los 40, el programador interactúa directamente con
las máquinas mediantes conmutadoras, indicadores luminosos y tal vez
una impresora. No existe el sistema operativo y los usuarios de un
ordenador se turnan para acceder secuencialmente, en serie.
o Multiprogramación o multitarea
Con el ánimo de maximizar el uso de la CPU se cargan varios programas
de manera simultánea. Así mientras un proceso está bloqueado por una
operación de entrada/salida, la CPU puede continuar la ejecución de otro
proceso.
o Sistemas de tiempo compartido
El sistema reparte la atención de la CPU (o CPU) entre diferentes
procesos, simulando la ejecución en paralelo de los mismos. Los sistemas
de tiempo compartido permiten que varios usuarios trabajen de manera
simultánea y en modo interactivo. Uno de los primeros sistemas de tiempo
compartido fue el CTSS (Compatible Time-Schering Sistema) desarrollado
en el MIT.
o Multiusuario:
Varios usuarios pueden trabajar simultáneamente en el mismo sistema
informático. Además, el sistema realiza distinciones entre usuarios. La
gestión de los recursos (memoria, CPU, disco, etc.…) es mucho más
complicada, pero al tener a varias personas trabajando a la vez, se
rentabiliza con mayor facilidad la inversión.
o Monoproceso:
El sistema informático sólo puede mantener un proceso en ejecución, las
tareas se realizan secuencialmente.
o Multiproceso/Multitarea:
El sistema informático es capaz de ejecutar varios procesos
simultáneamente. Si hubiese suficientes CPU, se ejecutaría cada proceso
en una CPU distinta, si el número de CPU es menor (como habitualmente
ocurre) que el de procesos preparados para ejecutar. El sistema operativo
asigna franjas de uso de CPU a cada proceso, para simular una ejecución
en paralelo. De cualquier modo, realmente o de forma simulada, los
procesos en ejecución avanzan en paralelo.
o Tiempo compartido:
Se realiza una planificación del uso de las CPU disponibles entre los
procesos preparados para ser ejecutados. De este modo, aparentemente,
se ejecutan todos los procesos a la vez.
o Tiempo real:
Los sistemas operativos en tiempo real son predecibles, de tal manera que
se comprometen a realizar determinadas tareas dentro de unos límites de
tiempo. Su aplicación típica es el control de maquinaria y procesos
industriales. Ejemplos: Marte, QNX,
Un poco de historia:
1965: Multics
Multics (Multiplexed Information and Computing Service) aportó muchas de
las ideas presentes en Unix.
1970: Unix
Sistema operativo multiusuario, multitarea que ha contado con gran
aceptación en la industria. Unix es a la vez: un sistema operativo, un tipo
de sistemas operativos y una marca comercial.
Núcleo o kernel:
Controla el hardware y las operaciones básicas que realiza el sistema
operativo. Típicamente se encarga de la gestión de procesos, la gestión de
memoria y el control de todos los elementos hardware. Se dice que el
software del núcleo se ejecuta en modo núcleo. Un fallo en este software
arruina todo el sistema informático, por esto, cuanto menor sea la cantidad
de código que se ejecuta en modo núcleo, menores serán las posibilidades
de introducir bugs fatales. Se distingue entre núcleos monolíticos (los
tradicionales) y los micro núcleos (más modernos, pretenden incluir en el
núcleo sólo lo esencial).
HAL Hardware Abstraction Layer:
Se encarga de independizar los detalles de la arquitectura hardware para
el resto de los componentes. Forma parte del núcleo, de manera que la
migración a una nueva arquitectura no suponga reescribir todo el núcleo.
Programación
Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería
de software, pero no es necesariamente la porción más larga. La complejidad y la
duración de esta etapa está intimamente ligada al o a los lenguajes de
programación utilizados.
Pruebas
Consiste en comprobar que el software realice correctamente las tareas indicadas
en la especificación. Una técnica de prueba es probar por separado cada módulo
del software, y luego probarlo de forma integral,para así llegar al objetivo.
Documentación
Todo lo concerniente a la documentación del propio desarrollo del software y de la
gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas,
manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales
correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.
Mantenimiento
Mantener y mejorar el software para enfrentar errores descubiertos y nuevos
requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del
software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar
mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores,
o bugs.
Bases de datos.
Capa Principal: DB
Intermediario: Gestor de Bases de Datos
Capa Final: Usuarios (Persona física o Aplicaciones [Procesos])
Una forma de entender mejor esto es realizando un dibujo con círculos dentro de
otros más grandes. El primer círculo sería la DB, el segundo el intermediario y el
más externo la capa
o Conocimientos técnicos
Principalmente referido a las herramientas, tecnologías, lenguajes de
programación, paradigmas de programación, base de datos, arquitecturas, etc.
que deba utilizar para cumplir sus labores.
o Conocimientos funcionales
Relacionado a los procesos, metodologías, estándares, circuitos requeridos para
cumplir sus labores.
o Seguimiento requerido
Atención que requiere de su superior inmediato.
o Indicadores de productividad
Indicadores varios relacionados con el trabajo que realiza
o Cumplimiento de fechas
Cumplimiento de las fechas de entrega pautadas. Se aplica a las tareas de
análisis, desarrollos, documentación, reporting, etc.
o Relación interpersonal
(Gracias a Javier Scavino por mencionar este aspecto).
Junior: Puede tener dificultades para transmitir sus ideas con claridad. No logra
arribar a conclusiones concretables. No siempre sabe interactuar con otras
personas de forma colaborativa y profesional.
7. Categorías de desarrollador de BD