sistemas operativos - intro - utngnudelman/sistemas... · • /dev punto de entrada a los...

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

Upload: doankhuong

Post on 20-Mar-2018

227 views

Category:

Documents


8 download

TRANSCRIPT

Sistemas Operativos - Intro

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Técnicas Digitales III Ing. Gustavo Nudelman 2012

Conceptos generales

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Hardware

Sistema operativo

Servicios

Programas

Programador de sistema / Programador de drivers

Administradores de sistemas / Programadores de App

Administradores Middleware – Programadores Scripts

Diseño e implementación de hardware

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

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Organización de un sistema

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

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Kernel – Gestión de memoria

1 GDT por procesador en el sistema y esta apuntada por un array llamado cpu_gdt_table

• Se mantiene una TSS por cada procesador/GDT • No hace task switch utilizando la forma ofrecida por el

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 I/O

el sistema de protección utiliza el IO map de la TSS • El descriptor de LDT es un descriptor nulo. Linux no utiliza

LDT

• Es driver de Advanced power management puede invocar funciones de BIOS por lo que se necesitan tener segmentos definidos.

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]

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Cambio de nivel de privilegio en linux

User mode

Kernel Mode

Process 1 Process 2 Process 3 Process 4

System call handler

Scheduler

Syst

em

Se

rvic

es

Tim

er

Inte

rru

pt

Exception handler

Pag

e f

ault

Device Driver

Dev

ice

tra

nsf

er

dat

a

• 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

Gestión del storage

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Gestión del storage - VFS

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Kernel Mode

Ext3 fs manager

NFS manager Memory Manager

VFS

Process 1

(reading /etc/passwd)

Process 2

(reading /home/stephy/report

Process 3

(reading /proc/cpuinfo)

Local ext3 Partition

Network Kernel Memory

Concepto de montaje

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Estructura del sistema de archivos

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• 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

Linux - Directorio raiz

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

• /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.

Linux – File system

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

- - - - - - - - - - Owner Group Others

File type − - Ordinary file − C char device − b block device − p pipe (FIFO) − l link − s socket

- - -

readable Writeable Executable