Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
CPU Von Neumann ALU Registros Unidad de control Memoria Entradas y salidas Contador del programa El procesador lee la dirección indicada por el contador de programa en la memoria. Se copia la instrucción al registro de instrucción. Si es necesario se leen mas direcciones de memoria para completar la instrucción. Se copian los operandos a otros registros. Se realizan los micro pasos para completar la instrucción. Se lee la siguiente posición de memoria. Ventajas ◦ Si bien existen otras arquitecturas, el uso de la arquitectura Von Neumann / Harvard es tan extenso que sería mucho trabajo rediseñar toda la computación sin un incremento de performance significativo. Desventajas: ◦ No se pueden ejecutar varias tareas simultáneamente. ◦ El acceso al hardware esta codificado dentro del programa. Si se modifica el hardware hay que modificar el programa. ◦ La interfaz con el usuario también depende del programa. Cada programa es distinto y el usuario debe aprender sus particularidades Es un programa que gestiona los recursos de hardware y provee de servicios a los programas de aplicación. Los programas pueden compartir el hardware sin quedar bloqueados. Los programadores pueden diseñar programas para hardware variado. Algunos sistemas operativos MS-DOS Windows Linux BSD Mac OS X Android iOs Windows phone Diferencias entre windows y linux Diferencia Windows Linux Estructura de directorios Estructura con unidades y directorios especiales Estructura unificada con montaje de particiones Registro Registro de windows (regedit) Configuración en archivos Instalación de programas Lo mas común es bajarlo desde el fabricante Lo mas común es usar el gestor de paquetes Interfaz grafica Es parte del sistema operativo, no se puede desactivar Es un programa mas, se puede intercambiar Interfaz mas usada Interfaz grafica, siempre es la misma Línea de comandos, siempre es la misma Drivers Siempre actualizados, es el sistema operativo por defecto Algunos drivers no funcionan bien. Código fuente No liberado Libre Una distribución de un sistema operativo, es el núcleo mínimo del SO, mas otros paquetes de software para satisfacer las necesidades de un determinado conjunto de usuarios. En general se aplica a Linux debido a la gran variedad de componentes de software libre que dan lugar a innumerables combinaciones. Sin embargo hay distribuciones de windows, como Windows UE. Una distribución «Live» es una distribución que puede ejecutarse desde un medio extraíble sin necesidad de ser instalada. Richard Stallman crea GNU en 1983. ◦ Es un sistema operativo completamente libre. ◦ «Volver al espíritu de cooperación que prevaleció en los tiempos iniciales de la comunidad de usuarios de computadoras» Se hizo compatible con UNIX porque es una arquitectura que resulto muy estable ◦ Hecho de pequeñas piezas individuales que realizan tareas simples Licencias GPL Algunos de los conceptos fundamentales de todos los sistemas operativos son: ◦ Procesos ◦ Manejo de bloqueos ◦ Administración de memoria ◦ Administración de dispositivos E/S ◦ Archivos ◦ Seguridad ◦ Shell ◦ Llamadas al sistema El scheduler divide el tiempo de uso del procesador en pequeñas porciones. Se asigna un periodo de tiempo a cada slice de tiempo. Cuando se cambia de proceso se almacena el estado del procesador en una estructura de datos llamada TSS (registro de estado de tarea) Estados de un proceso de linux Ver comandos ps, pstree, top Funcion fork() y wait() #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { int pid; int i; int estado; pid = fork(); if (!pid) { i = 2; printf("Soy el hijo - %d\n",i); } else { i = 3; printf("Soy el padre - %d\n",i); wait(&estado); printf("Mi proceso hijo ya ha terminado.\n"); } return 0; } Threads #include<stdio.h> #include<string.h> #include<pthread.h> #include<stdlib.h> #include<unistd.h> pthread_t tid[2]; unsigned char buffer [255]="Test"; void* escribir(void *arg) { while (1) scanf("%s",buffer); return NULL; } int main(void) { int i = 0; int err; err = pthread_create(&(tid[i]), NULL, &escribir, NULL); if (err != 0) printf("\nno se puede crear el thread", strerror(err)); while(1) { sleep (1); puts(buffer); } return 0; } Los sistemas operativos proveen distintas herramientas para comunicar procesos Señales ◦ Permiten la activación de una determinada función del programa cuando este recibe la señal. ◦ Es la comunicación que usa el entorno grafico para cerrar ventanas. Pipe’s y Fifo’s ◦ Permiten enviar información entre procesos como si se tratara de un archivo. ◦ Son unidireccionales. Un proceso escribe y el otro lee. ◦ En el caso de las Fifo’s incluso se puede redirigir los datos con la línea de comandos. File Locking ◦ Permite bloquear un archivo mientras lo esta utilizando un proceso Colas de mensajes ◦ Igual que las Pipe’s y Fifo’s pero permite clasificar los mensajes Semáforos ◦ Permite bloquear la ejecución de un proceso desde otro proceso. Memoria compartida ◦ Permite compartir un buffer entre dos procesos Archivos mapeados en memoria ◦ Se puede acceder a un archivo como si fuera un buffer Unix Sockets ◦ Igual que las Pipe’s y Fifo’s pero bidireccionales Estructura de directorios ◦ En UNIX no hay unidades C, D, etc. Todo está ordenado en un solo árbol de directorios que comienza con /. ◦ Esta configuración se detalla en el FHS (Filesystem Hierarchy Standard) /bin /sbin y /usr/bin tienen programas ejectutables /etc/ tiene la configuración del sistema /home: tiene los directorios de cada usuario /lib /usr/lib: Librerías de funciones para los programas /usr /opt: Datos y configuración de los programas /dev: directorio con los archivos que representan cada dispositivo /boot: Archivos de inicio (kernel) /media /mnt: Donde se montan los dispositivos externos u otras particiones del disco /proc: Directorio donde cada archivo representa un proceso /sys y /run: Información sobre el sistema /var: Archivos variables de los programas. Por ejemplo, logs Estructura de directorios ◦ En UNIX no hay unidades C, D, etc. Todo está ordenado en un solo árbol de directorios que comienza con /. ◦ Esta configuración se detalla en el FHS (Filesystem Hierarchy Standard) /bin /sbin y /usr/bin tienen programas ejectutables /etc/ tiene la configuración del sistema /home: tiene los directorios de cada usuario /lib /usr/lib: Librerías de funciones para los programas /usr /opt: Datos y configuración de los programas /dev: directorio con los archivos que representan cada dispositivo /boot: Archivos de inicio (kernel) /media /mnt: Donde se montan los dispositivos externos u otras particiones del disco /proc: Directorio donde cada archivo representa un proceso /sys y /run: Información sobre el sistema /var: Archivos variables de los programas. Por ejemplo, logs Los permisos para acceder están determinados por: ◦ El usuario y el grupo de quien lo accede ◦ El usuario y el grupo de lo que se va a acceder ◦ La mascara de permisos de lo que se va a acceder Mascara de permisos Los grupos del sistema se encuentran definidos en /etc/grupo y se modifican con el comando groupadd, groupmod y groupdel. Los usuarios del sistema se encuentran definidos en /etc/passwd y se modifican con el comando useradd,usermod y userdel. La mascara de permisos y pertenencia de un archivo se modifican con chown y chmod Las llamadas al sistema que provee el kernel son de muy bajo nivel y hacen que programar aplicaciones complejas sea difícil. Hay librerías que toman tareas comunes y las agrupan permitiendo que: ◦ Los programadores no reinventen las funciones una y otra vez ◦ El tamaño de los programas sea menor. El archivo que implementa la función de varios programas es único. ◦ Actualizar la librería corrige bugs en varios programas Otras librerías proveen funciones que no están disponibles en el sistema utilizando las funciones del kernel.
Compartir