Sunteți pe pagina 1din 13

Preguntas sistemas operativos

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)

4. Historia de los sistemas operativos

Introducción y evolución histórica


El Sistema Operativo es el software que permite controlar el hardware de una
manera eficiente para que se puedan realizar las tareas de forma cómoda. El
sistema operativo presenta al usuario un entorno en el que se pueden ejecutar
aplicaciones para llevar a cabo diversas tareas, gestionando los recursos
disponibles (CPU, memoria, disco, comunicaciones en red, dispositivos
periféricos...). De este modo un usuario puede realizar tareas como abrir un
fichero y acceder a la información que contiene sin preocuparse de aspectos de
bajo nivel como: mover los cabezales del disco, la velocidad de giro del motor del
disco, la posición que ocupan los bits en la superficie del disco, etc.

Mientras el usuario final trabaja con aplicaciones, el administrador de sistemas


habitualmente trabajará con el sistema operativo para conseguir que el sistema
informático (hardware + software) realice su función con la máxima eficiencia.

Evolución de los sistemas operativos


La evolución de la informática nos proporciona sistemas operativos que cada vez
realizan más funciones, facilitando el trabajo a los usuarios.
Pasos evolutivos:

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 Proceso por lotes


Se desarrolla un elemento de software denominado monitor que es capaz
de ejecutar tareas, lotes, de manera secuencial. En estos sistemas
informáticos los programadores pasaban a los administradores de sistemas
los programas a ejecutar en cinta (o tarjetas perforadas) y el sistema los
ejecutaba secuencialmente y de manera no interactiva.

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.

Tipos de sistemas operativos


Según las necesidades que plantean diferentes usos y entornos, encontramos
sistemas operativos:
o Monousuario:
Desde el punto de vista de la máquina (o el sistema informático) no se
hace distinción entre los usuarios que utilizan la máquina. Sólo un usuario
puede estar trabajando en un momento determinado. Ejemplos: MS-DOS,
Windows 3.x, 95, 98, Me.

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.

1973: Se decide reescribir Unix en C


Anteriormente se utilizaba el lenguaje ensamblador para programar los
sistemas operativos. Las ventajas de utilizar C son: portabilidad y facilidad
de desarrollo.
1981: MS-DOS v1.0
Capaz de soportar 16KB de memoria RAM y discos flexibles de 5.25
pulgadas de 160KB.
1984: Apple Macintosh utiliza interfaz gráfica
Steve Jobs copia de Xerox la idea de utilizar una interfaz gráfica de usuario
(GUI) en los ordenadores.
1991: Aparece el núcleo Linux y se completa GNU/Linux
El proyecto GNU necesitaba un kernel para completar su sistema
operativo. Gracias al desarrollo de Linux a cargo de Linus Torvalds se pudo
contar con un núcleo libre.
1992: Beta de Windows NT 3.1 (primera versión comercial)
Microsoft desarrolla un nuevo sistema operativo multiusuario, multitarea y
estable dedicado a competir con los servidores Unix, se trata de Windows
NT.
1995: Se lanza al mercado Windows 95
Evolución del sistema operativo MS-DOS que reemplaza la cónsola y el
entorno gráfico de las versiones anteriores (Windows 3.x)

2001: Aparece Mac OS X


Apple abandona su obsoleto sistema operativo para presentar un nuevo
sistema operativo que forma parte de la família Unix.

Componentes de un Sistema Operativo


En un Sistema Operativo moderno se aprecian diferentes capas, del más alto nivel
al más bajo encontramos:
Aplicaciones de usuario:
Colección de herramientas que utilizan los usuarios en sus quehaceres.
(The Gimp, Firefox, Inkscape, Apache, GCC...)

Intérprete de comandos/Interfáz gráfica de usuario:


Permite la comunicación entre el sistema y el usuario. Existen distintas
posibilidades, tanto de intérprete de comandos (Bash, csh, ksh, ...) como
de interfáz gráfica (X Window, Gnome, KDE, ...)
Llamadas al sistema:
Se escriben bibliotecas con funciones de uso frecuente, de tal manera que
otros componentes software las puedan utilizar sin tener que volverlas a
implementar (funciones matemáticas, de acceso a ficheros,
comunicaciones, procesado gráfico...).

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.

5. Diferencia entre desarrollo de software y desarrollo de BD.


Ingeniería de software
Disciplina formada por el conjunto de métodos herramientas y técnicas utilizadas
en el desarrollo de programas informáticos. No solo se refiere a la programación el
desarrollo de software se encarga de toda la gestión del proyecto incluyendo el
análisis previo de la situación el diseño y desarrollo del proyecto.
Análisis de requisitos
Extraer los requisitos de un producto de software es la primera etapa para crearlo.
Mientras que los clientes piensan que ellos saben lo que el software tiene que
hacer, se requiere de habilidad y experiencia en la ingeniería de software para
reconocer requisitos incompletos, ambiguos o contradictorios.
Diseño y arquitectura
Se refiere a determinar como funcionará de forma general sin entrar en detalles.
Consiste en incorporar consideraciones de la implementación tecnológica, como el
hardware, la red, etc. Se definen los Casos de Uso para cubrir las funciones que
realizará el sistema, y se transforman las entidades definidas en el análisis de
requisitos en clases de diseño, obteniendo un modelo cercano a la programación
orientada a objetos.

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.

Una base de datos (DB) es un conjunto de ficheros. Para guardas información en


la BD usamos un gestor de base de datos que sirve como intermediario entre un
usuario (persona física o aplicación) y la base de datos.
Una aplicación es un fichero binario que ejecuta una acción que crea un proceso y
tiene su tiempo de ejecución. Cuantas más veces abras una aplicación más
procesos creas.

Capas de una Base 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

Cosas a tener en cuenta antes de hacer una DB:

 Informaciones datos, Reglas de negocio (como funciona la empresa Ej:


Camiones y empleados) y los Datos relacionados (Ej: Transportista usa X
camión)
 Diseño de la base de datos

Fases de desarrollo de una DB:

1. Fase analísis: (Solicitar información a los usuarios). Objectivo: Abstración de


datos (Conceptualización = Buscamos un modelo). Obtenemos el modelo
conceptual de una base de datos también llamado “Modelo Entidad-Relación”
(MER). La representación gráfica del modelo se llama “Diagrama Endidad-
Relación” (Son los datos que usamos en la segunda fase). En este caso el
soporte de información es el papel
2. Modelo Lógico Relacional: Necesitamos usar las “Reglas de
Transformación”. En este paso se “definen el conjunto de tablas” que necesito
para registrar el modelo conceptual previamente creado en la fase de analísis.
3. Modelo físico: Creación de una base de datos. Realizamos consultas SQL
para crear la DB.
6. Categorías de un desarrollador
o Experiencia laboral
Cantidad de años de experiencia laboral en informática.
No cuentan los trabajos prácticos realizados ni trabajos dentro de otras
actividades.

Junior: Menos de 2 años de experiencia.


Semi Senior: De 2 a 6 años de experiencia.
Senior: Más de 6 años de experiencia.

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.

 Junior: Para desempeñarse suele requerir acompañamiento. El código que


genera puede presentar mayor cantidad de bugs de lo esperado.
Probablemente no maneja todas las herramientas que se necesitan para la
tarea.

 Semi Senior: Técnicamente autosuficiente. Puede desarrollar


funcionalidades más complejas y ejecutar proyectos de mayor envergadura.
Pero no es un crack y todavía comete errores “evitables”.

 Senior: Es referente técnico dentro del equipo. Su conocimiento le permite


colaborar en definiciones arquitectónicas y desarrollar los proyectos más
desafiantes. Su código funciona, es bueno y fácil de mantener.

o Conocimientos funcionales
Relacionado a los procesos, metodologías, estándares, circuitos requeridos para
cumplir sus labores.

Junior: Para desempeñarse suele requerir cierto nivel de acompañamiento. No


conoce todos los procesos, ni los estándares. No es experto en los temas propios
del negocio.
Semi Senior: Maneja los circuitos lo suficiente como para desempeñarse. Respeta
los estándares y metodologías. Conoce buena parte de los procesos del negocio.
Senior: Ayuda a definir procesos, metodologías, estándares y circuitos. Por
supuesto cumple los existentes.
o Proactividad
Indicando si la persona espera a que le asignen sus tareas o si por el contrario
toma una actitud de mayor iniciativa.

Junior: Necesita que frecuentemente le definan su trabajo. Está a la espera del


siguiente pedido. Cuando tiene tiempo libre no sabe con qué seguir. Depende de
otros para avanzar con sus tareas.
Semi Senior: Se preocupa por aprovechar mejor su tiempo. Pide nuevas
asignaciones cuando tiene tiempo disponible y es autosuficiente para llevar
adelante una gran parte de sus tareas.
Senior: No solamente recibe requerimientos, sino que los busca y genera. En
muchas oportunidades es él quien le genera asignaciones nuevas a su superior.

o Seguimiento requerido
Atención que requiere de su superior inmediato.

Junior: Requiere seguimiento diario a nivel detallado.


Semi Senior: Requiere seguimiento semanal y a nivel general.
Senior: Proactivamente reporta el estado y avance de sus tareas.

o Indicadores de productividad
Indicadores varios relacionados con el trabajo que realiza

Junior: Calidad: Baja/Media – Productividad: Baja/Media – Innovación: Poca o


Nula
Semi Senior: Calidad: Media – Productividad: Media – Innovación: Poca
Senior: Calidad: Alta – Productividad: Alta – Innovación: Alta

o Cumplimiento de fechas
Cumplimiento de las fechas de entrega pautadas. Se aplica a las tareas de
análisis, desarrollos, documentación, reporting, etc.

Junior: La mayoría de las veces no cumple con sus estimaciones.


Semi Senior: A veces cumple, a veces no.
Senior: Siempre cumple. Cuando surge un desvío (inevitablemente) lo informa
adecuadamente y con anticipación.

o Respuesta bajo presión


Referido a situaciones extremas… no a la corrida semanal para cumplir con la
fecha de entrega del siguiente reléase en producción.
Junior: Le pueden pasar alguna de las siguientes cosas: Se bloquea, se angustia,
se confunde, se estresa…
El resultado de su trabajo en una situación de presión no es bueno.

Semi Senior: Le pueden pasar alguna de las siguientes cosas: Se enoja, se


defiende, se distancia (se borra), se resigna…
El resultado de su trabajo en una situación de presión a pesar de todo, es bueno.

Senior: Le pueden pasar alguna de las siguientes cosas: Se entusiasma, se


compromete, se hace cargo, se inspira e inspira a otros…
El resultado de su trabajo en una situación de presión puede llegar a ser
asombroso.

o Relación interpersonal
(Gracias a Javier Scavino por mencionar este aspecto).

Más allá de los conocimientos y capacidades de una persona, la habilidad de


comunicarse con su entorno es fundamental para su desarrollo profesional.

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.

Semi Senior: Se hace entender pero no logra ganarse la simpatía ni despierta la


vocación de sus colaboradores para acompañarlo en sus sugerencias. Se permite
escuchar otros puntos de vista pero sigue intentando que sean sus ideas (buenas
y malas) las que prevalecen.

Senior: Es bueno comunicando, pero principalmente escuchando. Puede


participar en decisiones de alto nivel y colaborar si es necesario en actividades
más operativas privilegiando el resultado y la calidad de las relaciones por sobre
su autoría en las ideas.

7. Categorías de desarrollador de BD

Arquitecto de Base de Datos: es un DBA que hace el diseño de una aplicacion.


o Analista de Base de Datos: Es la persona que se encarga de recopilar la
información de una aplicación que se debe guardar en la base de datos(es
el que saca el requerimiento).

o Modelador de Base de Datos: Es la persona que se encarga de la


estructura de la base de datos, es decir los tipos de datos que van a haber
en la base y como estos estan relacionados entre si.

o DBA del Sistema: Es la persona que se encarga en la toma del control de


la base de datos

o Operador de la Base de Datos: En otras palabras es un DBA junior

o DBA de la aplicacion: Es aquella persona que esta centrado unicamente


en la funcionalidad de la aplicación

S-ar putea să vă placă și