Sistemas Operativos - Universidad Tecnológica Nacional

Anuncio
Sistemas Operativos - Intro
Técnicas Digitales III
Ing. Gustavo Nudelman
2012
Universidad Tecnológica Nacional - Facultad Regional Buenos Aires
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
Administradores Middleware – Programadores Scripts
Servicios
Administradores de sistemas / Programadores de App
Sistema operativo
Hardware
Programador de sistema / Programador de drivers
Diseño e implementación de hardware
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
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
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
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
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
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
Organización de un sistema
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Kernel – Gestión de memoria
•
•
•
•
1 GDT por procesador
en el sistema y esta
apuntada por un array
Se mantiene una TSS por cada procesador/GDT
llamado
No hace task switch utilizando la forma ofrecida
por el
cpu_gdt_table
procesador (lo realiza mediante código) y por
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
user utiliza
una instrucción
Es driver
de Advanced
power I/O
el sistema de protección
utiliza el IOpuede
map de
la TSSfunciones de
management
invocar
El descriptor de LDT es un BIOS
descriptor
Linux
no utiliza
por lonulo.
que se
necesitan
tener
LDT
segmentos definidos.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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 (0 – 32767)
• Priority
• Owner
• Open resources
• Status
•
La información llevada en una estructura llamada Task_Struct
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
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.
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.
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
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.
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]
Cambio de nivel de privilegio en linux
System call
handler
•
Process 3
Scheduler
Page fault
Exception
handler
Process 4
Device transfer data
Process 2
Timer Interrupt
Kernel
Mode
Process 1
System Services
User mode
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
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
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
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
VFS
User
mode
Process 2
Process 1
(reading
/home/stephy/report
(reading /etc/passwd)
Process 3
(reading /proc/cpuinfo)
VFS
Kernel
Mode
Ext3 fs
manager
Local ext3
Partition
NFS manager
Network
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Memory
Manager
Kernel
Memory
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
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
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
•
/boot kernel, Grub e Initrd
•
/usr Archivos de las aplicaciones instaladas
− /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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Linux – File system
---------Owner
File type
− - Ordinary file
− C char device
− b block device
− p pipe (FIFO)
− l link
− s socket
Group
Others
- - -
readable
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Writeable
Executable
Descargar