Sistemas Operativos - Intro

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Sistemas Operativos - Intro"

Transcripción

1 Sistemas Operativos - Intro Técnicas Digitales III Ing. Gustavo Nudelman 2012 Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

2 Conceptos generales Un sistema operativo es simplemente un conjunto de programas de software de propósito general con el fin de: Administrar los recursos del sistema Gestionar la correcta ejecución de varios programas (aplicaciones) de uno o varios usuarios Proveer una visión unificada a los usuarios y programadores mediante una capa de abstracción del hardware Programas Servicios Sistema operativo Hardware Administradores Middleware Programadores Scripts Administradores de sistemas / Programadores de App Programador de sistema / Programador de drivers Diseño e implementación de hardware Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

3 Clasificación de los S.O. Sistemas Real-Time Se utilizan para sistemas de control industrial, centrales de conmutación, instrumentación científica, etc. La interface con el usuario suele ser pobre Su fortaleza consiste en administrar los recursos de la computadora para poder ejecutar una operación en particular en la misma cantidad de tiempo cada vez que ocurre en evento que la dispara. Es decir se busca evitar comportamientos aleatorios mediante: Máximo asegurado de duración de una interrupción Swapping reducido Tareas con bajo consumo de memoria La variación de velocidad y o respuesta un recurso no impacta en los resultados que entrega el sistema. Ejemplos de implementación QNX RT Linux

4 Clasificación de los S.O. Sistemas Monotarea - Monousuario No pueden ejecutar mas de una tarea en forma concurrente Transfieren todo el control del sistema a la aplicación que va a ejecutarse y esta tiene el control hasta que lo devuelve al sistema operativo. El sistema de este tipo mas difundido fue el DOS Las primeras Palms empleaban sistemas monotarea, monousuario

5 Clasificación de los S.O. Multitarea - Monousuario Utilizados hoy en día en las Pc s de escritorio Pueden trabajar con varios programas en memoria en forma estable dentro de un entorno de protección Solo poseen interfaz para un usuario aunque pueden trabajar con varias sesiones. Ejemplos: Windows XP en sus versiones Home Linux instalado como WorkStation

6 Clasificación de los S.O. Multiusuario Es la forma actual de los sistemas operativos, y en la que fueron pioneros los sistemas UNIX Puede ejecutar diferentes sesiones en forma simultanea con múltiples tareas por sesión. Ejemplos UNIX desde sus inicios Windows en sus versiones server Todos los derivados de UNIX incluyendo a LINUX

7 Funciones de un sistema operativo Gestión del procesador Asignación de slots de tiempo de CPU para cada tarea (scheduling de procesos) Gestión de memoria Gestión de memoria utilizando los recursos de protección y basado en el funcionamiento de la MMU de cada procesador. Gestión de memoria Virtual (Swapping) Gestión de memoria cache Gestión de los dispositivos de E/S Acceso al hardware de manera transparente para las aplicaciones Manejo de concurrencia para el acceso al hardware Gestión del storage Organización de la información en los dispositivos de almacenamiento

8 Funciones de un sistema operativo Interfaz para las aplicaciones (API) Conjunto de llamadas para ejecutarse desde las aplicaciones y acceder a servicios brindados por código del sistema operativo. Se las conoce como System Calls Interfaz para los usuarios Son una capa de abstracción mediante la cual el sistema operativo brinda sus funcionalidades al usuario. Pueden ser Interfaces de texto (consola de comando) Interfaces gráficas (GUI) Una combinación de ambas

9 Organización de un sistema Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

10 Linux - Introducción Sistema operativo Unix Like basado en posix (Portable operating system based on Unix) Kernel monolítico (único programa + módulos) Preemptive Kernel (a partir de la versión 2.6) Soporta SMP (Symetric multi processing) Soporta varios File systems. (EXT3, EXT4, FAT32, NTFS, etc) Es Libre! (licencia GNU) Posee un sistema de versionado indicado por 3 números

11 Kernel Gestión de memoria 1 GDT por procesador en el sistema y esta Se mantiene una TSS por cada procesador/gdt apuntada por un array No hace task switch utilizando la forma ofrecida llamado por el procesador (lo realiza mediante código) y por cpu_gdt_table eso no utiliza multiples TSS s Y para que mantiene una TSS? El procesador busca aquí el stack de PL=0 cuando sube el nivel de privilegio de una tarea Si un programa en modo Es driver user utiliza de Advanced una instrucción power I/O el sistema de protección management utiliza el IO puede map de invocar la TSS funciones de El descriptor de LDT es un BIOS descriptor por lo nulo. que se Linux necesitan no utiliza tener LDT segmentos definidos. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

12 Procesos - Introducción Un proceso es una instancia de un programa en ejecución para el cual el sistema operativo mantendrá un contexto que se puede gestionar y administrar. Poseen un espacio de direccionamiento determinado Normalmente trabajan en modo user Cuando requieren pasar a modo Kernel, lo hacen de manera controlada mediante algún servicio del sistema. El kernel logra que cada proceso vea una CPU dedicada Como parte del contexto de un proceso, el kernel mantiene varios atributos con los que es posible interactuar y administrar a dichos procesos: Process ID ( ) Priority Owner Open resources Status La información llevada en una estructura llamada Task_Struct

13 Procesos Task struct Se trata la estructura que lleva el contexto completo de un proceso en ejecución. Se encuentra en /usr/src/kernels/<kernel Version>/include/linux/sched.h Dada su complejidad muchos campos son punteros a otras estructuras y/o listas. Posee secciones de compilación condicional El scheduler se maneja con una lista doblemente enlazada de dichas estructuras llamado task_array

14 Tipos de procesos Batch No interactúan con el usuario La prioridad asignada puede variar bajo demanda para no provocar efectos perceptibles Ejemplos. (compiladores, renderizadores, etc) Interactivos Interactúan con el usuario Requieren un tiempo de respuesta aceptable de manera que el usuario no perciba bajo rendimiento. (Ej. Procesadores de texto, planillas de calculo, etc) Real Time No pueden ser detenidos ni demorados Deben tener un tiempo de CPU garantizado y mínimo (Ej. Reproductores de streaming) El kernel posee algoritmos de análisis de comportamiento de los procesos para realizar el manejo de los mismos de forma apropiada.

15 Conmutación de procesos Linux programa el timer tick para generar una interrupción cada 1ms Un proceso tiene asignado un tiempo de ejecución llamado quantum que es un múltiplo entero de un tick. El valor de del quantum asignado depende del tipo, y los valores de prioridad que asigna el administrador del sistema operativo (nice) El scheduler invoca el cambio de proceso mediante la función switch_to() El cambio de tarea se realiza completamente por software De esta manera se incluyen registros que en la arquitectura intel no forman parte del contexto. Si se tuviera una TSS por cada tarea en una determinada GDT, en un sistema SMP una tarea estaría ligada siempre a una CPU.

16 Estados de un proceso El estado de un proceso consta en el campo state de la estructura stack_struct y puede tomar los valores: TASK_RUNNING = 0 TASK_INTERRUPTIBLE = 1 TASK_UNINTERRUPTIBLE = 2 TASK_STOPPED = 4 TASK_TRACED = 8 EXIT_ZOMBIE = 16 EXIT_DEAD = 32 Para establecer el estado de un proceso el kernel utiliza las macros set_task_state() y set_current_state() Por razones de eficiencia, el kernel mantiene una lista separada de los procesos que están en el estado TASK_RUNNING La variable nr_running mantiene la cantidad de procesos en este estado

17 Procesos Consola y daemons Se denomina consola a la salida standard de un proceso otorgada por el sistema cuando este es instanciado Comunmente los procesos poseen los siguientes descriptores de archivo al ser instanciados con los que pueden realizar operaciones R/W. Std_Input 0 Std_Output 1 Std_Err 2 Las salidas de system calls como printf() están asociadas std_output, asi como las entradas de system calls como scanf están asociadas a std_input Un daemon es un proceso que no tiene consola asociada y será estudiado mas adelante en este curso. Tanto std_input y std_output pueden ser cambiadas mediante técnicas de redireccionamiento tanto por comandos externos como en el código del programa.

18 Redirecciones y pipes Los sistemas UNIX poseen un diseño modular con programas pequeños pero acoplables entre si Se puede redireccionar std_out de un programa [Command] [args] > [filename] Se puede conectar la stdout de un programa con stdin de otro. [Command] [args] [commmand]

19 System Services Timer Interrupt Page fault Device transfer data Cambio de nivel de privilegio en linux User mode Process 1 Process 2 Process 3 Process 4 Kernel Mode System call handler Scheduler Exception handler Device Driver En arquitecturas Intel solo se utilizan los anillos 0 y 3 para los niveles kernel y user respectivamente Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

20 System calls Se conoce como API, al formato de la función que representa una system call siendo esta el requerimiento explicito cursado al kernel. No todas las system calls poseen una API ya que muchos servicios se resuelven en modo usuario. Linux no utiliza call_gates para acceder a modo kernel Podemos visualizar las system calls de un archivo mediante el comando strace Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

21 Gestión del storage Un sistema de archivos (file system) es la manera en que nuestro s.o. organiza la información en una unidad de almacenamiento. Sistemas operativos como Windows asignan letras alfabéticas a cada partición o volumen lógico. Unix mantiene una estructura de directorio raiz fija e independiente de la cantidad de unidades lógicas de almacenamiento Esto puede lograrse debido a la capa de abstracción VFS (Virtual file system) y al concepto de montaje Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

22 Gestión del storage - VFS Permite manejar a nivel kernel una capa de abstracción que permite un sistema de archivos independiente del formato. Es quien recibe y procesa las funciones I/O de las system calls. Luego de recibir las operaciones I/O interactúa con el driver del file system especifico. Es quien permite mostrarnos una estructura de directorio fija incluyendo los dispositivos como si fueran archivos. (Concepto Everything is a file ) Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

23 VFS User mode Process 1 (reading /etc/passwd) Process 2 (reading /home/stephy/report Process 3 (reading /proc/cpuinfo) VFS Kernel Mode Ext3 fs manager NFS manager Memory Manager Local ext3 Partition Network Kernel Memory Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

24 Concepto de montaje Como vimos en la diapositiva previa, cada file system se asocia a un directorio del sistema. Esto se lo conoce como montaje Un file-system debe ser montado antes de realizar operaciones I/O y luego desmontarse. El file-system es asociado a un punto de montaje tratándose este de un directorio del sistema. En el inicio del sistema, Linux monta los file-systems indicados por el archivo de configuración /etc/fstab Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

25 Estructura del sistema de archivos Los sistema unix, desde su principio basaron toda la administración de sus recursos al sistema de archivos. (Concepto Everything is a file ) Esto supone un concepto mas amplio en las entradas del sistema de archivos, y estas adquieren el nombre de inodes El sistema de archivos mantiene una estructura de información asociada a cada inodo con datos como: Inode ID Type Owner Creation Date Access rights Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

26 Linux - Directorio raiz /bin Archivos ejecutables de uso común /dev Punto de entrada a los dispositivos y dispositivos especiales como /dev/zero /dev/null, etc /etc archivos de configuración, base de datos de usuario y archivo de claves /sbin archivos ejecutables para root /home directorios de los usuarios (generalmente es un filesystem independiente) /root directorio de archivos de root. /lib bibliotecas compartidas por los programas /proc Se trata de un filesystem virtual. Es realmente una sección de la memoria mostrada como un filesystem. /tmp Archivos temporales generados por los diferentes programas /var Directorio de tamaño variable. Es usado para archivos y directorios cuyo tamaño cambia frecuentemente. /boot kernel, Grub e Initrd /usr Archivos de las aplicaciones instaladas Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

27 Linux File system Owner Group Others File type - Ordinary file C char device b block device p pipe (FIFO) l link s socket readable Writeable Executable Universidad Tecnológica Nacional - Facultad Regional Buenos Aires