Sistemas

Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica Análisis de Señales Analógicas Alumn

Views 137 Downloads 3 File size 908KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica

Análisis de Señales Analógicas Alumno: Meléndez Murillo Luis Daniel Grupo: 6CV2 Profesor: Téllez

ÍNDICE:

Pág. UNIDAD 3:                              

3.1 Introducción a los procesos. 3.1.1 Diferencia entre proceso y programa. 3.1.2 Modelo de un proceso 3.1.3 Estados de un proceso. 3.1.4 Bloque de control de procesos. 3.1.5 Niveles de planificación. 3.1.6 Políticas de planificación. 3.1.7 Información de un proceso: estado del procesador, imagen de memoria del proceso, tabla del sistema operativo. 3.2 Despacho de procesos. 3.2.1 Algoritmos de planificación de procesos. 3.2.2 Prioridades. 3.3 Concurrencia. 3.3.1 Multitareas. 3.3.2 Multiprocesos. Comunicación entre procesos. Subprocesos Modelo de subprocesos. Secciones críticas. Exclusión mutua con espera ocupada. Bloqueo y desbloqueo (Sleep y Wakeup) Semáforos. Binarios De Conteo Monitores. Transmisión de mensajes. Problemas de comunicación entre procesos. Los cinco filósofos comensales. Lectores y escritores. Servicios POSIX para la gestión de procesos. Servicos WIN32 para la gestión de procesos.

UNIDAD 4:  Dispositivos E/S.  Interrupción del CPU  Definición y manejo de interrupciones.

               

E/S programada E/S controlada por interrupciones. Clasificación. Manejador de interrupciones. Vector de interrupciones. Canales de entrada / salida. Tipos de canales. Interfaces. Controladores. Memorias transitorias (Buffers). Tipos de memoria transitorias. Manejo de memorias transitorias. Implementación Terminales de red Interfaces graficas de usuario. Servicios de E/S: genéricos, para POSIX y WIN32

UNIDAD 5:                   

Manejo de archivos y directorios. Aspectos básicos de los archivos. Directorios. Sistemas de archivos. Manejo del espacio en disco. Almacenamiento de archivos. Estructura de directorios. Archivos compartidos. Rendimiento del sistema de archivos. Seguridad. Fallas de seguridad. Principios de diseño para seguridad. Virus. Mecanismo de protección. Ejemplos de sistemas de archivos CP/M Ms-DOS Win 98 Unix V7

Unidad 3: Administración del procesador. 3.1 Introducción a los procesos. La definición de proceso es tan fácil como decir que es un programa en ejecución tenemos como algunas definiciones de proceso

  

Un programa en ejecución La clase de programa ejecutado en un computador Una actividad que se caracteriza por la ejecución de instrucciones, en un estado actual y un conjunto de recursos del sistema asociados. También conocemos como proceso como una entidad que consiste en los siguientes elementos: 1. Código del programa que se comparte con otros procesos que están ejecutando en el programa 2. Conjunto de datos asociados al dicho código

3.1.1 Diferencia entre proceso y programa. La diferencia principal de un proceso y un programa es que el programa es un conjunto de instrucciones que permite al CPU realizar una determinada tarea mientras que un proceso es un programa en ejecución 3.1.2 Modelo de un proceso Cada proceso contiene su propia CPU virtual para entender el modelo de un proceso es mas fácil que hay un conjunto de procesos que se ejecutan en paralelo

A B C D

Se muestran cuatro procesos, cada uno con su propio flujo de control (es decir, su propio contador lógico de programa) y ejecutándose de manera independiente. Cuatro contadores de programa

B

A

D

C

Se muestra que si se observa durante suficiente tiempo, todos los procesos han avanzado, pero en un instante dado sólo se ejecuta un proceso en realidad. P R O C E S O S

A

____

B

____

C D

____ ____

____ ____

____ ____

3.1.3 Estados de un proceso. El estado de un proceso define su actividad actual. Durante su existencia, un proceso pasa por una serie de estados discretos. Estos estados son se muestran en el siguiente diagrama:

A continuación se describe cada uno de estos procesos: Estado Nuevo Listo

Descripción Se dice que un proceso está en estado de nuevo cuando apenas se encuentra en proceso de crearse. Un proceso está en estado de listo, cuando podría usar una UCP, si hubiera una

disponible. Se dice que un proceso está estado de ejecución, si en ese momento tiene esta En ejecución ocupando la CPU. Se dice que un proceso está en estado de bloqueado, si espera que ocurra algo, como Bloqueado por ejemplo, la terminación de una E/S, para así poder ponerse en marcha. Terminado Cuando un proceso se ha completado su ejecución pasa a ser un proceso terminado.

3.1.4 Bloque de control de procesos. • Identificador. Un identificador único asociado a este proceso, para distinguirlo del resto de procesos. • Estado. Si el proceso está actualmente corriendo, está en el estado en ejecución. • Prioridad: Nivel de prioridad relativo al resto de procesos. • Contador de programa. La dirección de la siguiente instrucción del programa que se eje- cutará. • Punteros a memoria. Incluye los punteros al código de programa y los datos asociados a di- cho proceso, además de cualquier bloque de memoria compartido con otros procesos. • Datos de contexto. Estos son datos que están presenten en los registros del procesador cuando el proceso está corriendo. • Información de estado de E/S. Incluye las peticiones de E/S pendientes, dispositivos de E/S (por ejemplo, una unidad de cinta) asignados a dicho proceso, una lista de los ficheros en uso por el mismo, etc. • Información de auditoría. Puede incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como los límites de tiempo, registros contables, etc. La información de la lista anterior se almacena en una estructura de datos, que se suele llamar bloque de control de proceso

3.1.5 Niveles de planificación. Cuando un sistema informático tiene más de un único procesador, aparecen varios elementos nuevos en el diseño de la tarea de planificación. Se va a comenzar con una breve introducción a los

multiprocesadores y, después, se estudiarán   las distintas  consideraciones a tener en cuenta  para llevar a cabo la planificación  en el nivel de los procesos o en el nivel de los hilos. Los sistemas  multiprocesador pueden clasificarse de la siguiente manera:   

Agrupación o multiprocesador débilmente acoplado o distribuido: consiste en una colección de sistemas relativamente autónomos, cada procesador tiene su propia memoria principal y canales de E/S. Procesadores funcionalmente especializados: en este caso hay un procesador principal  de propósitos generales y procesadores especializados que son controlados  por el procesador principal y le proveen servicios a él. Un ejemplo es el procesador de E/S. Multiprocesamiento fuertemente acoplado: consiste  en un grupo de procesadores que comparten una memoria principal en común y están bajo el control integrado de un sistema operativo.

·         A largo plazo: ·         Decide qué procesos serán los siguientes en ser iniciados. Este tipo de planificación era el más frecuente en los sistemas de lotes (principalmente aquellos con spool) y multiprogramados en lotes; las decisiones eran tomadas principalmente considerando los requisitos pre-declarados de los procesos y los que el sistema tenía libres al terminar algún otro proceso. La planificación a largo plazo puede llevarse a cabo con periodicidad de una vez cada varios segundos, minutos e inclusive horas. ·         En los sistemas de uso interactivo, casi la totalidad de los que se usan hoy en día, este tipo de planificación no se efectúa, dado que es típicamente el usuario quien indica expresamente qué procesos iniciar. ·         A mediano plazo ·         Decide cuáles procesos es conveniente bloquear en determinado momento, sea por escacez/saturación de algún recurso (como la memoria primaria) o porque están realizando alguna solicitud que no puede satisfacerse momentaneamente; se encarga de tomar decisiones respecto a los procesos conforme entran y salen del estado de bloqueado (esto es, típicamente, están a la espera de algún evento externo o de la finalización de transferencia de datos con algún dispositivo). ·         A corto plazo ·         Decide cómo compartir momento a momento al equipo entre todos los procesos que requieren de sus recursos, especialmente el procesador. La planificación a corto plazo se lleva a cabo decenas de veces por segundo (razón por la cual debe ser código muy simple, eficiente y rápido); es el encargado de planificar los procesos que están listos para ejecución. ·         OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN

·         Los objetivos del planificador se resumen en: ·         a) Reparto equitativo del tiempo de procesador ·         b) Eficiencia en el uso del procesador ·         c) Menor tiempo de respuesta en uso interactivo ·         d) Cumplir plazos de ejecución de los sistemas de tiempo real   ·         a) La justicia: Intentamos que los procesos no salieran ni beneficiados ni perjudicados. ·         b) Máxima capacidad de ejecución: Intentamos disminuir los cambios de contexto. Cuanto antes termine un proceso y menos interrupciones haya, menos cambios de contexto habrá. ·         c) Máxima capacidad de usuarios interactivos: Intentamos dar servicio a todos los usuarios conectados. ·         d) Minimizar la sobrecarga: Intentamos que se gaste la menos cantidad de tiempo posible en la administración del sistema. ·         e) Equilibrio en el uso de recursos: (muy difícil de conseguir). Intentamos que la utilización de recursos sea equilibrada. ·         f) Garantizar el cumplimiento de las prioridades.   3.1.6 Políticas de planificación. Los algoritmos de planificación que se exponen en esta sección no se limitan a un plazo de planificación concreto. Aunque en general asumiremos planificación a corto plazo (entrada de procesos a la CPU), algunos algoritmos pueden implementarse también a largo plazo o distribuirse en más de un tipo de planificación (por ejemplo, a corto y medio plazo). Para describir una política de planificación hay que considerar los siguientes aspectos: 



Cómo se selecciona el proceso que entrará a ejecución. De entre los procesos que están en estado preparado, se elige uno de acuerdo a criterios como, por ejemplo, Sistemas Operativos II Planificación de procesos y procesadores 62 prioridades, tiempo que lleva en la cola de preparados, tasa de CPU que le ha correspondido. Cuándo se lleva a cabo la planificación. Este aspecto afecta fundamentalmente a la planificación a corto plazo. Hay dos alternativas básicas: si únicamente se planifica cuando un proceso abandona la CPU porque acaba o se bloquea (políticas no expulsoras), o si se puede forzar al proceso que está usando la CPU a abandonarla para planificar otro proceso (políticas expulsoras).





La existencia o no de más de una política de planificación, ajustadas a los diferentes tipos de procesos, y cómo se combinan. En los sistemas de propósito general coexisten procesos de tipos diferentes que pueden requerir políticas específicas, por lo que se suelen definir varias políticas particulares, cada una adecuada a un tipo de procesos, y una política global aplicable al conjunto de tipos de procesos (planificación multinivel). Además, en multiprocesadores, en qué procesador se ejecuta el proceso.

3.1.7 Información de un proceso: estado del procesador, imagen de memoria del proceso, tabla del sistema operativo. Los estados de un proceso obedecen a su participación y disponibilidad dentro del sistema operativo y surgen de la necesidad de controlar la ejecución de cada proceso. Los procesadores sólo pueden ejecutar un solo proceso a la vez, turnándolos para el uso de este. Existen procesos no apropiativos o cooperativos que básicamente ocupan todo el tiempo del procesador hasta que ellos deciden dejarlo. Los procesos apropiativos son aquellos que ocupan por un período de tiempo el procesador hasta que una interrupción o señal llega al procesador para hacer el cambio de proceso, a esto se le conoce como cambio de contexto. Los posibles estados que puede tener un proceso son ejecución, bloqueado y listo:   

Ejecución, es un proceso que está haciendo uso del procesador. Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo. Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.

3.2Despacho de procesos. La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.     

Equidad: Todos los procesos deben ser atendidos. Eficacia: El procesador debe estar ocupado el 100% del tiempo. Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible. Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados esperados por los usuarios por lotes. Rendimiento: Maximizar el número de tareas que se procesan por cada hora.

3.2.10Algoritmos de planificación de procesos. Primero en llegar primero en ser servido Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de hacerlo. Prioridad al más corto Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecución cambiará de estado voluntariamente, o sea, no tendrá un tiempo de ejecución determinado para el proceso. A cada proceso se le asigna el tiempo que usará cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS. Round Robin A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular. Planificación por prioridad En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad será el orden en que se atienda cada proceso. Planificación garantizada Para realizar esta planificación el sistema tiene en cuenta el número de usuarios que deben ser atendidos. Para un número "n" de usuarios se asignará a cada uno un tiempo de ejecución igual a 1/n. Planificación de Colas Múltiples

El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado de listos es dividida en un número determinado de colas más pequeñas. Los procesos son clasificados mediante un criterio para determinar en qué cola será colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a las demás. 3.2.2Prioridades. En este algoritmo a cada proceso se le asocia un numero entero de prioridad. Mientras menor sea este entero pues mayor prioridad tiene el proceso, por lo que la escencia del algoritmo es planificar la entrada de procesos a la CPU de acuerdo a la prioridad asociada de cada uno de ellos. Un caso particular del algoritmo por prioridad es el SJF, donde el valor del proximo ciclo de CPU representa la prioridad. El algoritmo por prioridad corrige algunas deficiencias del SJF, particularmente el retraso excesivo de procesos largos y el favoritismo por procesos cortos. Existe una disciplina de planificacion no apropiativa en la cual la prioridad de cada proceso no solo se calcula en funcion del tiempo de servicio (tiempo en la CPU) sino tambien del tiempo que ha esperado para ser atendido.

Con esta formula notamos que como el tiempo de servicio esta en el denominador los procesos cortos tendran preferencia, y como tambien el tiempo de espera aparece en el numerador los procesos largos que tambien han esperado, tendran una prioridad favorable. En el siguiente ejemplo se tienen 4 procesos (P1, P2,P3 y P4). La tabla muesta los tiempos de ejecucion de cada uno y su prioridad. PROCESO

PRIORIDA D

TIEMPO DE EJECUCION

P1 P2 P3 P4

3 1 3 2

(TE) 10 1 2 5

En el ejemplo se muestra la cola organizada para una mayor comprensión del algoritmo, pero en realidad dicha cola se encuentra desorganizada. De acuerdo a este criterio los procesos entraron a la CPU y no la cederan hasta no haber terminado, ya que es un algoritmo sin desalojo.

3.3 Concurrencia. La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, comparición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso distribuido Los procesos son concurrentes si existen simultáneamente. Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relación entre ellos La concurrencia puede presentarse en tres contextos diferentes: • Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas. • Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. • Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. 3.3.1Multitareas. Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea. Multicomputadora. Es una maquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores. En general, la concurrencia será aparente siempre que el número de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso por procesador. La concurrencia será real cuando haya un proceso por procesador. Aunque puede parecer que la intercalación y la superposición de la ejecución de procesos presentan formas de ejecución distintas, se verá que ambas pueden contemplase como ejemplos de procesos concurrentes.

3.3.2Multiprocesos. Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla. Elementos a gestionar y diseñar a causa de la concurrencia. Se pueden enumerar los siguientes: 1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PBC’s (Bloque de Control de Procesos) 2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen: • Tiempo de procesador: Es función de la planificación. • Memoria: La mayoría de los sistemas operativos emplean esquemas de memoria virtual. • Archivos: • Dispositivos de E/S: 3. El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.  4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecución con respecto a otros procesos concurrentes 3.4 Comunicación entre procesos Un sistema operativo multiprogramado es un caso particular de sistema concurrente donde los procesos compiten por el acceso a los recursos compartidos o cooperan dentro de una misma aplicación para comunicar información. Ambas situaciones son tratadas por el sistema operativo mediante mecanismos de sincronización que permiten el acceso exclusivo de forma coordinada a los recursos y a los elementos de comunicación compartidos. Según el modelo de sistema operativo descrito anteriormente, basado en colas de procesos y transiciones de estados, los procesos abandonan la CPU para pasar a estado bloqueado cuando requieren el acceso a algún dispositivo, generalmente en una operación de E/S, pasando a estado preparado cuando la operación ha concluido y eventualmente volver a ejecución. La gestión de estos cambios de estado, es decir, los cambios de contexto, es un ejemplo de sección crítica de código dentro del sistema operativo que debe ser ejecutada por éste en exclusión mutua. Otros

ejemplos de código que debe protegerse como sección crítica incluyen la programación de los dispositivos de E/S y el acceso a estructuras de datos y buffers compartidos. El concepto de comunicación es algo más general y supone la existencia de algún mecanismo de sincronización subyacente. Dentro del sistema operativo, el espacio de direcciones es único, por lo que la comunicación se puede resolver mediante el uso de variables en memoria compartida. Como contrapartida a la agilidad de este esquema, es necesario utilizar mecanismos de sincronización explícitos para garantizar acceso exclusivo a las variables compartidas y evitar condiciones de carrera. Puede producirse una condición de carrera sobre una variable cuando varios procesos acceden concurrentemente a la variable para actualizarla. El SO ofrece mecanismos básicos de comunicación, que permiten transferir cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten el significado de las cadenas transferidas para su labor coordinada. Los mecanismos de comunicación y sincronización son dinámicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningún mecanismo de comunicación, ya que ellos podrían producir efectos indeseados. Es decir, la comunicación es algo puntual. Los servicios básicos de comunicación son: a. crear: el proceso solicita la creación del mecanismo b. enviar o escribir: el proceso emisor envía información al proceso receptor c. recibir o leer: el proceso receptor recibe información d. destruir: el proceso solicita la destrucción del mecanismo de comunicación La comunicación puede ser sincrona y asíncrona: a. síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir. b. asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la solicite. 3.4.1 Subprocesos El concepto de proceso engloba dos conceptos separados y potencialmente independientes: uno relativo a la propiedad de recursos y otro que hace referencia a la ejecución. Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de tanto en tanto, se le puede asignar otros recursos como dispositivos de E/S o ficheros.

Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una traza) a través de uno o más programas. Esta ejecución se entremezcla con la de otros procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo, etc) y una prioridad de expedición u origen. La unidad planificada y expedida por el sistema operativo es el proceso. Dentro de un proceso puede haber uno o más hilos de control cada uno con: · Un estado de ejecución (en ejecución, listo, bloqueado). · Un contexto de procesador, que se salva cuando no esté ejecutándose. · Una pila de ejecución. · Algún almacenamiento estático para variables locales. · Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos. CARACTERISTICAS Se comparten recursos. La compartición de la memoria permite a las hebras pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO. La conmutación de contexto es más rápida gracias al extenso compartir de recursos No hay protección entre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso Estado de los procesos ligeros 3.4.2 El modelo de proceso descrito hasta ahora se basa en dos conceptos independientes: agrupamiento de recursos y ejecución. A veces es útil separarlos, y es aquí donde entran los subprocesos. Un proceso se puede considerar como una forma de agrupar recursos relacionados. El modelo de subprocesos Un proceso tiene un espacio de direcciones que contiene lo datos y el texto del programa, así como otros recursos, que podrían incluir archivos abiertos, procesos hijos, alarmas pendientes, etc. Al juntar todas estas cosas en forma de un proceso se les puede administrar con más facilidad. Éste tiene un contador de programa que indica cuál instrucción se ejecutará a continuación, tiene registros, que contienen sus variables de trabajoactuales, y tiene una pila, que contiene el historial de ejecución. Los procesos sirven para agrupar recursos; los subprocesos son las entidades que se calendarizan para ejecutarse en la CPU. los subprocesos comparten un espacio de direcciones, archivos abiertos y otros recursos El termino múltiples procesos se emplea para describir la situación en la que se permite varios subprocesos en el mismo proceso.  Ima Cuando un proceso con múltiples subprocesos se ejecuta en un sistema con una sola CPU, los subprocesos se turnan para ejecutarse Además de compartir el mismo espacio de direcciones, todos los subprocesos comparten el mismo conjunto de archivos abiertos, procesos hijos, alarmas, señales, etc.  Tabla

Un subproceso puede estar en uno de varios estados: en ejecución, bloqueado, listo o terminado.  3.4.3 secciones criticas Región Crítica. Protocolo de sincronización. Los puntos de entrada de un recurso indican la cantidad de procesos que pueden utilizar simultáneamente al mismo. Si un recurso tiene sólo un punto de entrada, se lo denomina recurso crítico o recurso no compartible. Región crítica de un proceso es la fase o etapa en la vida de ese proceso concurrente en la cual accede a un recurso crítico para modificarlo o alterarlo. El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones críticas y hacer cumplir la exclusión mutua. Cualquier servicio o capacidad que dé soporte para la exclusión mutua debe cumplir con un protocolo de sincronización, que tiene los requisitos siguientes: 1. Debe cumplirse la exclusión mutua: sólo un proceso de entre todos los que poseen secciones críticas por el mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un instante dado. 2. Un proceso que se interrumpe en una sección no crítica debe hacerlo sin estorbar a los otros. Es decir que si se cuelga un proceso que está usando un recurso, los demás procesos que esperan deben poder acceder al recurso de todas formas (el S.O. mata al proceso que se colgó y así libera al recurso). 3. No se puede demorar indefinidamente la entrada de un proceso a un cierto recurso; no debe permitirse el interbloqueo y la inanición. Todos los procesos deben poder acceder al recurso que solicitan, sino se van a morir sin usarlo y no es justo. 4. Cuando ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilatación. Es decir, si nadie está usando un cierto recurso, entonces se le otorga al primer proceso que lo solicite. 5. No se pueden hacer suposiciones sobre la velocidad relativa de los procesos o su número (cantidad de procesadores). Nunca se puede saber a priori si a un proceso le falta mucho o poco para terminar. 6. Un proceso permanece en su sección crítica sólo por un tiempo finito. Esto sirve para evitar que un proceso se quede con un recurso por mucho tiempo y para que un recurso no se quede trabado sin sentido 3.4.4 Exclusión mutua con espera ocupada

Principio de exclusión mutua Se presentan a continuación varias proposiciones para lograr la exclusión mutua, de manera que mientras un proceso esté ocupado actualizando la memoria compartida en su región crítica, ningún otro proceso puede entrar a su región crítica y ocasionar problemas. Deshabilitando interrupciones En un sistema con un solo procesador, la solución más simple es hacer que cada proceso deshabilite todas las interrupciones justo después de entrar a su región crítica y las rehabilite justo después de salir. Con las interrupciones deshabilitadas, no pueden ocurrir interrupciones de reloj. Después de todo, la CPU sólo se conmuta de un proceso a otro como resultado de una interrupción del reloj o de otro tipo, y con las interrupciones desactivadas la CPU no se conmutará a otro proceso. Por ende, una vez que un proceso ha deshabilitado las interrupciones, puede examinar y actualizar la memoria compartida sin temor de que algún otro proceso intervenga. Por lo general este método es poco atractivo, ya que no es conveniente dar a los procesos de usuario el poder para desactivar las interrupciones. Suponga que uno de ellos lo hiciera y nunca las volviera a activar. Ése podría ser el fin del sistema; aún más: si el sistema es un multiprocesador (con dos o posiblemente más CPUs), al deshabilitar las interrupciones sólo se ve afectada la CPU que ejecutó la instrucción disable. Las demás continuarán ejecutándose y pueden acceder a la memoria compartida. Por otro lado, con frecuencia es conveniente para el mismo kernel deshabilitar las interrupciones por unas cuantas instrucciones mientras actualiza variables o listas. Por ejemplo, si ocurriera una interrupción mientras la lista de procesos se encuentra en un estado inconsistente, podrían producirse condiciones de carrera. La conclusión es que a menudo deshabilitar interrupciones es una técnica útil dentro del mismo sistema operativo, pero no es apropiada como mecanismo de exclusión mutua general para los procesos de usuario. La posibilidad de lograr la exclusión mutua al deshabilitar las interrupciones (incluso dentro del kernel) está disminuyendo día con día debido al creciente número de chips multinúcleo que se encuentran hasta en las PCs de bajo rendimiento. Ya es común que haya dos núcleos, las máquinas actuales de alto rendimiento tienen cuatro y dentro de poco habrá ocho o 16. En un multinúcleo (es decir, sistema con multiprocesadores) al deshabilitar las interrupciones de una CPU no se evita que las demás CPUs interfieran con las operaciones que la primera CPU está realizando. En consecuencia, se requieren esquemas más sofisticados. 3.4.5Sleep y wake up

Una de las más simples primitivas de comunicación entre procesos son sleep (dormir) y wakeup (despertar). Sleep es una llamada al sistema que hace que el proceso que llama se bloquee o desactive, es decir, que se suspenda hasta que otro proceso lo despierte. La llamada wakeup tiene un parámetro, el proceso que se va a despertar o activar. De manera alternativa, tanto sleep como wakeup tienen un parámetro, una dirección de memoria que se utiliza para asociar las llamadas a sleep con las llamadas a wakeup. 3.4.6 semáforos Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) Los semáforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones críticas) donde se manipulan variables o recursos que deben ser accedidos de forma especial. Según el valor con que son inicializados se permiten a más o menos procesos utilizar el recurso de forma simultánea. 3.4.6.1 semáforos binarios Un tipo simple de semáforo es el binario, que puede tomar solamente los valores 0 y 1. Se inicializan en 1 y son usados cuando sólo un proceso puede acceder a un recurso a la vez. Son esencialmente lo mismo que los mutex. Cuando el recurso está disponible, un proceso accede y decrementa el valor del semáforo con la operación P. El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementarlo tenga que esperar. Cuando el proceso que decrementó el semáforo realiza una operación V, algún proceso que estaba esperando comienza a utilizar el recurso. Para hacer que dos procesos se ejecuten en una secuencia predeterminada puede usarse un semáforo inicializado en 0. El proceso que debe ejecutar primero en la secuencia realiza la operación V sobre el semáforo antes del código que debe ser ejecutado después del otro proceso. Éste ejecuta la operación P. Si el segundo proceso en la secuencia es programado para ejecutar antes que el otro, al hacer P dormirá hasta que el primer proceso de la secuencia pase por su operación V. Este modo de uso se denomina señalación (signaling), y se usa para que un proceso o hilo de ejecución le haga saber a otro que algo ha sucedido. El otro uso de los semáforos es para la sincronización. Los semáforos vacíos y llenos se necesitan para garantizar que ciertas secuencias de eventos ocurran o no. En este caso, aseguran que el productor deje de ejecutarse cuando el búfer esté lleno y que el consumidor deje de ejecutarse cuando el búfer esté vacío. Este uso es distinto de la exclusión mutua. 3.4.6.2_____________ 3.4.7 Monitores Un monitor es un mecanismo de software para control de concurrencia que contiene los datos y los procedimientos necesarios para realizar la asignación de un determinado recurso o grupo de recursos compartidos reutilizables en serie.  Tipos De Monitores

Monitor tipo monitor Este monitor fue implementado en Pascal Concurrente, lenguaje desarrollado por Per Brinch Hansen. Es el monitor más simple de todos pues solo tiene tres estados y las funciones internas son muy sencillas. Una característica distintiva de este monitor es que el proceso que reinicia a otros debe salir del monitor, es decir abandona el estado activo. El diagrama de estados de este monitor esta dado en la siguiente figura.

Monitor tipo manager Este monitor es muy similar al monitor tipo monitor, la diferencia esencial es que un proceso que es reiniciado debe abandonar el monitor, es decir no se le permite que entre al estado activo. El diagrama de estados de este monitor se presenta en la figura.

 Monitor tipo mediador Este monitor fue propuesto por C.A.R. Hoare, tiene la característica de compensar las desventajas de los monitores tipo monitor y tipo managEer. Un proceso que reinicia a otros puede permanecer dentro del monitor y un proceso reiniciado también puede permanecer dentro del monitor, El diagrama de estados de este monitor se da en la figura.

Monitor tipo gladiador

Este monitor propuesto por Cavers y Brown tiene la característica fundamental de solo tener un punto de consistencia interno (un punto de consistencia interno ocurre cuando el proceso que está activo abandona este estado y sigue dentro del monitor). El diagrama de estados de este monitor se da en la figura.

3.4.8 Transmicion de mensajes Este método de comunicación entre procesos utiliza dos primitivas (send y receive) que, al igual que los semáforos y a diferencia de los monitores, son llamadas al sistema en vez de construcciones del lenguaje. Como tales, se pueden colocar con facilidad en procedimientos de biblioteca. La primera llamada envía un mensaje a un destino especificado y la segunda recibe un mensaje de un origen especificado (o de cualquiera, si al receptor no le importa). Si no hay un mensaje disponible, el receptor se puede bloquear hasta que llegue uno. De manera alternativa, puede regresar de inmediato con un código de error. Este método de comunicación entre procesos utiliza dos primitivas (send y receive) que, al igual que los semáforos y a diferencia de los monitores, son llamadas al sistema en vez de construcciones del lenguaje. 3.4.9. problema de la comunicación entre procesos Para cada uno de los siguientes tres problemas se requiere escribir un programa que atienda las necesidades que presenta cada uno de estos, aplicando la solución a la administración de procesos que presenta un sistema operativo. EL PROBLEMA DEL BARBERO DORMIL EL PROBLEMA DEL BARBERO DORMILÓN El problema consiste en programar a un barbero y a sus clientes sin entrar en competencia • La peluquería tiene un barbero, una silla de peluquero y n sillas para que se sienten los clientes en espera, si es que los hay

Si no hay clientes el barbero se sienta en la silla de peluquero y se duerme. Cuando llega un cliente debe despertar al barbero. • Si llegan más clientes mientras el barbero corta el cabello a un cliente, ellos se sientan (si hay sillas desocupadas). • Un cliente que entra a la peluquería debe contar el número de clientes que esperan. Si es menor que el número de sillas, él se queda; en caso contrario se va. Una solución • Cuando el barbero abre su negocio se debe ejecutar un semáforo denominado barber que checa el número de barberos en espera de clientes (0 o 1), lo que establece un bloqueo en otro semáforo: customer, que cuenta el número de clientes en espera, después se va a dormir. • Cuando llega el primer cliente, éste ejecuta customer, que inicia procurando que un tercer semáforo llamado mutex entre en una región crítica. Mutex se va a utilizar para la exclusión mutua. • Si otro cliente llega, no podrá hacer nada hasta que el primero haya liberado a mutex • El cliente verifica entonces si el número de clientes que esperan es menor que el número de sillas. Si esto no ocurre, libera a mutex y sale sin su corte de pelo. • Si existe una silla disponible, el cliente incrementa la variable entera waiting, que es una replica de customer. Después realiza un “levantamiento” en customer, con lo que despierta al barbero. • Cuando el cliente libera a mutex, el barbero lo retiene, ordena algunas cosas e inicia el corte de pelo. • Al terminar el corte, el cliente sale del procedimiento y deja la peluquería. • Nótese que no existe un ciclo para el cliente, puesto que el corte de pelo es una actividad que el cliente recibe automáticamente, más no ejecuta tal actividad. 3.5.1 los cinco filósofos comensales EL PROBLEMA DE LA CENA DE LOS EL PROBLEMA DE LA CENA DE LOS FILÓSÓFOS • Este problema es útil para modelar procesos que están en competencia por el acceso exclusivo a un número limitado de recursos Este problema se puede enunciar de la siguiente manera: Cinco filósofos se sientan a la mesa. Cada uno tiene un plato de espagueti. El espagueti es tan escurridizo, que un filósofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor.

La vida de un filósofo consta de dos periodos alternados de comer y pensar. (Esto es una abstracción, incluso para los filósofos, pero las demás actividades son irrelevantes en este caso). • Cuando un filósofo tiene hambre, intenta obtener un tenedor para su mano izquierda y otro para su mano derecha, alcanzando uno a la vez y en cualquier orden. • Si logra obtener los dos tenedores, come un rato y después deja los tenedores y continúa pensando. • Una solución es esperar hasta que el tenedor especificado este disponible y tomarlo. Esta solución es incorrecta si se hace la suposición de que los cinco filósofos toman sus tenedores izquierdos en forma simultánea. Ninguno de ellos podría tomar su tenedor derecho, con lo que ocurriría un bloqueo. • Al volver a colocar los tenedores en la mesa, ninguno estaría comiendo por lo que intentarían volver a tomarlos y esta situación se repetiría indefinidamente y es lo que se denomina como inanición. • Otra solución es esperar un cierto tiempo arbitrario, en lugar del mismo tiempo, después de que no pudiesen tomar el tenedor derecho y así reducir a un mínimo la probabilidad de inanición pero hay ciertas aplicaciones críticas que requieren funcionalidad total que esta solución no proporciona. • Una mejora de las soluciones anteriores es utilizar un semáforo para indicar que recurso se tiene en uso. Esto solo permite tener a un filósofo con dos tenedores. • Si un filósofo requiere comer debe verificar si a los lados no se están utilizando los dos tenedores, obteniendo así la solución más viable para este problema. 3.5.2 lectores y escritores EL PROBLEMA DE LOS LECTORES Y LOS EL PROBLEMA DE LOS LECTORES Y LOS ESCRITORES ESCRITORES Se utiliza para modelar el acceso a una base de datos. • Cuando se tiene una enorme base de datos, como por ejemplo un sistema de reservaciones de una aerolínea, con muchos procesos en disputa por la escritura o lectura a dicha base. ¿Cómo se deben programar los lectores y los escritores?. • Una solución es dar en primera instancia prioridad primaria a los lectores y secundaria a los escritores, es decir, si existen lectores el escritor debe esperar hasta que ya no haya lectores. • En segunda instancia, cuando el escritor tome prioridad primaria los lectores deben esperar a que el escritor termine su función. 3.6 ´proceso posix para la gestion de procesos SERVICIOS POSIX PARA LA GESTIÓN DE PROCESOS

SERVICIOS POSIX: SERVICIOS POSIX Los servicios que ofrece POSIX se han agrupado según las siguientes categorías: Identificación de procesos. El entorno de un proceso. Creación de procesos. Terminación de procesos. IDENTIFICACION DE PROCESOS Identifica cada proceso por medio de un entero único denominado identificador de procesos de tipo pid_ti . Los servicios relativos a la identificación de los procesos son los siguientes: a) OBTENER EL IDENTIFICADOR DE PROCESOS. Este servicio devuelve el identificador del proceso que realiza la llamada. Su prototipo en lenguaje C es el siguiente: p id_t getpid (void); b) OBTENER EL IDENTIFICADOR DEL PROCESO PADRE: Devuelve el identificador del proceso padre. Su prototipo es el que se muestra a continuación. p id ti getppid (void); c) OBTENER EL IDENTIFICADOR DE USUARIO EFECTIVO: Devuelve el identificador de usuario efectivo. Su prototipo es: u id_t getuid (void); d) OBTENER EL IDENTIFICADOR DE USUARIO REAL.: Este servicio devuelve el identificador de usuario real del proceso que realiza la llamada. Su prototipo es: u id _t getuid ( void ); e) OBTENER EL IDENTIFACADOR DE GRUPO REAL: Este servicio permite obtener el identificador de grupo real. El prototipo que se utiliza para invocar este servicio es el siguiente: g id_t getgid (void); f) OBTENER EL IDENTIFICADOR DE GRUPO EFECTIVO Su prototipo es : g id_t getegid (void );

UNIDAD 4: DISPOSITIVOS DE ENTRADA / SALIDA TEMA 4.1 DISPOSITIVOS E / S

Los computadores y sus dispositivos únicamente para E/S en estos mismos se pueden clasificar en tres partes: Legibles para el usuario: Se encarga de la comunicación del usuario con el computador, se puede tomar cómo ejemplo: impresoras, teclado, y el mouse. Legibles para la maquina: Estos únicamente utilizados para la comunicación con el equipo electrónico cómo: Unidades de disco duro y cintas, sensores, los controladores y los activadores. Comunicación: únicamente utilizados para la comunicación con los dispositivos remotos cómo: línea digital y los módems. Estos dispositivos cómo en todo tienen sus pros y sus contras cómo:       

La velocidad de transferencia de datos Aplicación (El uso al que está destinado un dispositivo) Complejidad de control Unidad de transferencia Representación de datos Condiciones de error E/S programada

El modulo de E/S tiene su propia unidad de memoria y es un computador por derecho propio, gracias a esto se puede controlar un conjunto de dispositivos de E/S, con una intervención pequeña del procesador.

TEMA 4.1.1: INTERRUMPCIÓN DEL CPU El problema con las E/S programadas es que la CPU tiene que esperar un tiempo considerable antes de que el módulo de E/S en cuestión esté listo para recibir o enviar los datos. La CPU debe verificar continuamente el estado del módulo de E/S. El rendimiento del sistema disminuye. Una alternativa es que la CPU continúa haciendo un trabajo útil después de enviar un comando de E/S. El módulo de E/S interrumpe la CPU para solicitar su servicio cuando está listo para intercambiar datos. La CPU realiza la transferencia de datos y luego continúa el preprocesamiento. Hay dos tipos: E/S síncrona y E/S asíncrona. E/S síncrona: cuando finaliza la operación de E/S, el control vuelve al proceso que lo generó. La espera de E/S se realiza mediante una instrucción de espera que pone la CPU en suspensión hasta que se produce otra interrupción. Las máquinas que no tienen esta instrucción usan un bucle. Este bucle continúa hasta que se produce una interrupción durante la cual el control se transfiere a otra parte del sistema operativo. Solo se procesa una solicitud de E/S a la vez. El sistema operativo sabe exactamente qué dispositivo está interrumpiendo. Esta alternativa impide el procesamiento simultáneo de E/S. E/S asíncrona: vuelve al programa de usuario sin esperar a que se complete la operación de E/S. Se requiere una llamada al sistema para que el usuario pueda esperar a que se complete la E/S (si es necesario). También es necesario realizar un seguimiento de los diversos requisitos de E / S. Para este fin, el sistema operativo utiliza una tabla que contiene una entrada para cada dispositivo de E/S (tabla de estado del dispositivo).

La ventaja de este tipo de E/S es la mayor eficiencia del sistema. Durante las E/S, la CPU se puede usar para procesar o programar otras E/S. Debido a que la E/S puede ser muy lenta en comparación con la velocidad de la CPU, el sistema hace un mejor uso de las funciones.

TEMA 41.2 DEFINICIÓN Y MANEJO DE INTERRUPCIONES La E/S le indica a la CPU cuando está preparada para transferir datos (genera una interrupción a la CPU), activando una línea especial conectada a la CPU (línea de interrupción).

CPU

Mod E/S

Mem

Según FUENTE que produce la interrupción:      

Interrupciones HARDWARE INTERNAS (producidas por la CPU) EXTERNAS (producidas por los dispositivos de E/S) Vectorizadas No vectorizadas Interrupciones SOFTWARE (producidas por la ejecución de instrucciones de la CPU).

Según MODO DE CONOCER el VECTOR DE INTERRUPCIÓN (la dirección donde se encuentra la rutina de servicio de la interrupción): 

Interrupciones AUTOVECTORIZADAS: el vector de interrupción es FIJO.



Interrupciones VECTORIZADAS: el vector de interrupción lo suministra el propio periférico

TEMA 4.1.3 E/S POGRAMADA El procesador envía una “orden” de E/S, a petición de un proceso, a un módulo de E/S, a este proceso realiza una espera hasta que se complete la operación antes de seguir. La CPU se dedica por completo a realizar la operación de E/S:

     

Realiza la inicialización, la comprobación de estado y la transferencia. La CPU tiene el control absoluto de la operación de E/S. Ventaja: Hardware mínimo. Inconvenientes: Malgasta tiempo de proceso (interroga continuamente al periférico). Dificultad para atender varios periféricos.

Los datos se intercambian entre la CPU y el módulo de E/S. La CPU ejecuta un programa que controla directamente el proceso de E/S, lo que incluye verificar el estado del dispositivo, enviar el comando de lectura o escribir y transferir datos. Cuando la CPU envía el comando, debe esperar el final de la E/S. Si la CPU es más rápida, está inactiva. La CPU es responsable de verificar periódicamente el estado del módulo de E/S hasta que determina que el proceso se ha completado. El dispositivo de E/S no tiene acceso directo a la memoria. La transferencia de un dispositivo de E/S a la memoria obliga a la CPU a ejecutar múltiples instrucciones, incluida una instrucción de entrada

TEMA 4.1.4 E/S CONTROLADA POR INTERRUPCIONES La E/S interrumpida es más eficiente que la E/S programada, pero también requiere la intervención de la CPU para transferir datos entre la memoria y el módulo de E/S. Toma el siguiente ejemplo. Cuando un terminal debe leer una línea, el primer carácter ingresado se envía a la computadora. Cuando el controlador recibe el carácter, la CPU lo interrumpe. La CPU sirve la interrupción y luego continúa el proceso ejecutado. Esto es posible si el dispositivo es muy lento en comparación con la CPU. La CPU trata mucho entre un personaje y otro. Pero, ¿qué sucede cuando trabajamos con dispositivos de E/S más rápidos? Seríamos interrumpidos muy a menudo y perdería mucho tiempo. DMA se utiliza para dispositivos de E / S de alta velocidad. El controlador del dispositivo transfiere un bloque de datos desde o para sus memorias intermedias directamente a la memoria sin la intervención de la CPU. Solo se produce una interrupción por bloque en lugar de tener una interrupción por cada byte (o palabra). Por ejemplo, un programa solicita la transmisión de datos. El sistema operativo busca un búfer disponible. Los registros de datos del controlador DMA se actualizan con las direcciones de origen y destino y la duración de la transferencia.

Esta actualización generalmente la lleva a cabo el administrador de dispositivos (rutina). El controlador DMA se señaliza mediante bits de control en un registro de control para iniciar la operación de E/S. Mientras tanto, la CPU puede realizar otras operaciones. El controlador DMA interrumpe el procesador cuando se completa la transferencia. La CPU solo interviene al inicio y al final de la transferencia. 2) La transferencia de datos programada con baja E / S se lleva a cabo entre la CPU y un dispositivo, que transfiere datos a través del canal de memoria dentro y fuera de la unidad de memoria. Los ciclos de memoria de solicitud de DMA otorgan la solicitud, DMA transfiere datos directamente a la memoria. El procesador retrasa su proceso de acceso a la memoria solo para la transferencia directa.

TEMA 4.1.5 CLASIFICACIÓN

TEMA 4.1.6 MANEJADOR DE INTERRUPCIONES. TEMA 4.1.7 VECTOR DE INTERRUPCIONES. TEMA 4.2 CANALES DE ENTRADA / SALIDA. TEMA 4.2.1 TIPOS DE CANALES. TEMA 4.2.2 INTERFACES. TEMA 4.2.3 CONTROLADORES. TEMA 4.3 MEMORIAS TRANSITORIAS (BUFFERS). Los datos tienen que leerse en una zona de datos del espacio de direcciones del proceso de usuario que corresponde con las direcciones mandadas en el espacio de direcciones del proceso de usuario que corresponde con las direcciones virtuales desde la 1000 hasta 1511. La forma más sencilla de enviar una “orden” de E/S a la unidad de cinta y, a continuación, esperar a que los datos sean enviados. El uso de estos es una técnica que amortigua la demanda de E/S, sin en cambio, aunque muchos buffers se utilicen, esto no permitirán a un dispositivo E/S, mantener el ritmo de un proceso indefinido cuándo la demanda media del proceso sea mayor que la que puede servir el dispositivo de E/S. Incluso con múltiples buffers, todos los buffers acabarán llenándose y el proceso tendrá que esperar después de procesar cada fragmento de datos.

TEMA 4.3.1 TIPOS DE MEMORIA TRANSITORIAS. TEMA 4.3.2 MANEJO DE MEMORIAS TRANSITORIAS. TEMA 4.3.3 IMPLEMENTACIÓN TEMA 4.3.4 TERMINALES DE RED TEMA 4.3.5 INTERFACES GRAFICAS DE USUARIO. TEMA 4.4

SERVICIOS DE E/S: GENÉRICOS, PARA POSIX Y WIN32

5.1Manejo de archivos y directorios. El sistema de archivos o ficheros es el componente del sistema operativo encargado de administrar y facilitar el uso de las memorias periféricas, ya sean secundarias o terciarias. Sus principales funciones son la asignación de espacio a los archivos, la administración del espacio libre y del acceso a los datos resguardados.

Estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.

El sistema de archivos se basa en la administración de clústers, la unidad de disco más chica que el sistema operativo puede administrar. Un clúster consiste en uno o más sectores. Por esta razón, cuanto más grande sea el tamaño del clúster, menores utilidades tendrá que administrar el sistema operativo. Por el otro lado, ya que un sistema operativo sólo sabe administrar unidades enteras de asignación (es decir que un archivo ocupa un número entero de clústers), cuantos más sectores haya por clúster, más espacio desperdiciado habrá. Por esta razón, la elección de un sistema de archivos es importante. La estructura de directorios suele ser jerárquica, ramificada o “en árbol”, aunque en algún caso podría ser plana.

En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y números de versión. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.

5.1.1Aspectos básicos de los archivos. Concepto de archivo: Es una colección de información que se graba en almacenamiento secundario. Su concepto es extremadamente general puesto que es definido por el creador y usuario. Tipo abstracto de datos. Nombre Información en un formato visible. •Identificador Es un numero con el que el sistema identifica el archivo. Tipo Es necesario para saber si el sistema lo soporta. Ubicación: Es un puntero a un dispositivo y a la ubicación de archivo. Tamaño Es el tamaño actual del archivo.

•Protección Control de acceso; quien puede leer, escribir entre otras cosas del archivo. •Fecha, hora e identificación del usuario Sirve para la monitorización del uso de dicho archivo.

5.1.2Directorios. Directorio: Objeto que relaciona de forma unívoca un nombre de usuario de fichero con su descriptor interno. • Organizan y proporcionan información sobre la estructuración de los sistemas de ficheros. • Un directorio Bene entrada por cada fichero que alberga. • Información de la entrada: – Descriptor interno del fichero. – Posiblemente, algunos atributos del fichero.

• Esquema jerárquico. • Cuando se abre un fichero el SO busca el nombre en la estructura de directorios. • Operaciones sobre un directorio: – Crear (insertar) y borrar (eliminar) directorios. – Abrir y cerrar directorios. – Renombrar directorios. – Leer entradas de un directorio. • La organización jerárquica de un directorio – Simplifica el nombrado de ficheros (nombres únicos) – Proporciona una gesBón de la distribución => agrupar ficheros de forma lógica (mismo usuario, misma aplicación)

5.2Sistemas de archivos. Un sistema de archivos (FS) es un componente del sistema operativo que proporciona la organización de la creación, el almacenamiento y el acceso a conjuntos de datos con nombre: archivos. El sistema de archivos incluye:  La colección de todos los archivos en el disco. 

Conjuntos de estructuras de datos utilizadas para administrar archivos (directorios de archivos, descriptores de archivos, tablas de asignación de espacio libre y ocupado en disco).

Un complejo de software de sistema que implementa varias operaciones en archivos: creación, destrucción, lectura, escritura, nomenclatura, búsqueda. Las tareas resueltas por el FS dependen del método de organización del proceso informático en su conjunto. El tipo más simple es FS en sistemas operativos de usuario único y de programa único. Las funciones principales en un FSde este tipo están destinadas a resolver los siguientes problemas:  Nombramiento de archivos. 

  

La interfaz del programa para aplicaciones. Mapeo del modelo lógico del FS a la organización física del almacén de datos.

Estabilidad FS ante fallas de energía, errores de hardware y software. Las tareas de FS son complicadas en los sistemas operativos multitarea que están diseñados para funcionar como un solo usuario, pero proporcionan la capacidad de ejecutar múltiples procesos simultáneamente. Se agrega una nueva encomienda a las tareas enumeradas anteriormente: compartir un archivo de varios procesos. El archivo en este caso es un recurso compartido, lo que significa que el FS debe resolver todo el complejo de problemas asociados con dichos recursos. En particular: se deben proporcionar medios para bloquear el archivo y sus partes, hacer coincidir copias, evitar carreras, eliminar puntos muertos. En los sistemas multiusuario, surge otra tarea: proteger los archivos del acceso no autorizado de otro usuario. Las funciones FS, que trabajan como parte de un sistema operativo de red, se vuelven aún más complejas; necesita organizar la protección de los archivos de un usuario contra el acceso no autorizado de otro. El objetivo principal del sistema de archivos y su correspondiente sistema de administración de archivos es organizar una conveniente gestión organizada de estos: en lugar de un acceso de bajo nivel a los datos que indican direcciones físicas específicas del registro que necesitamos, el acceso lógico se utiliza con el nombre y el registro del archivo.

5.2.1Manejo del espacio en disco. La diferencia de la Memoria Principal de la Memoria Secundaria , auxiliar, masiva, externa no es tan veloz pero tiene gran capacidad para almacenar información en dispositivos tales como discos, cintas magnéticas, discos ópticos. Frecuentemente los datos y programas se graban en la Memoria Secundaria, de esta forma, cuando se ejecuta varias veces un programa o se utilicen repetidamente unos datos, no es necesario darlos de nuevo a través del dispositivo de entrada. •En la Memoria Secundaria un archivo consta de un conjunto de bloques (correspondiente a la cantidad de información que se transfiere físicamente en cada operación de acceso (lectura o escritura). •El Sistema Operativo o Sistema de Gestión de Archivos es el encargado de la asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar, debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar, es necesario guardar constancia del espacio disponible para asignar. El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco.  El manejo del espacio libre en disco se lleva a cabo de la siguiente manera:  •Vector de bits. El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada block es representado por un bit y si el bloc es libre el bit es cero de lo contrario está asignado. •Lista ligada. Una lista ligada de todos los blocks libres. Otra implantación se consigue guardando la dirección del primer block libre y el número de los blocks libres contiguos que le siguen. Cada entrada de la lista de espacio libre consiste de una dirección de disco y un contador (por conteo). •Por agrupación. Se almacena la dirección en n blocks libres en el primer block libre y el último contiene la dirección de otro block que contiene la dirección de otros blocks libres. 

Para manejar los espacios en disco existen los siguientes métodos:  •Contiguos. Esta asignación requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco, su asignación es definida por la dirección del primer bloc y la longitud del archivo.

• Asignación ligada o encadenada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al último. •Asignación Indexada. Cada archivo tiene su propio bloc de índice el cual es un arreglo de direcciones de bloc.

5.2.2Almacenamiento de archivos.

El almacenamiento de archivos, también denominado almacenamiento a nivel de archivo o basado en archivos, es exactamente lo que cree que podría ser: los datos se almacenan como una sola pieza de información dentro de una carpeta, tal como organiza hojas de papel dentro de un sobre de manila. Cuando necesita acceder a ese dato, su computadora debe conocer la ruta para encontrarlo. Pero cuidado, ya que puede ser una ruta larga y sinuosa. Los datos almacenados en archivos se organizan y se recuperan utilizando una cantidad limitada de metadatos que le indican a la computadora exactamente dónde se guarda el archivo. Es como un catálogo de tarjetas de biblioteca para archivos de datos. Piense en un armario lleno de archivadores. Cada documento se organiza con base en algún tipo de jerarquía lógica: por archivador, por cajón, por carpeta y, luego, por papel. De aquí proviene el término almacenamiento jerárquico, y este es el almacenamiento de archivos. Es el sistema de almacenamiento de datos más antiguo y más utilizado para sistemas de almacenamiento conectado a la red y sistemas directos, y es el que probablemente ha estado utilizando

durante décadas. Cada vez que accede a documentos guardados en archivos en su computadora personal, utiliza el almacenamiento de archivos. El almacenamiento de archivos tiene amplias capacidades y puede almacenar prácticamente cualquier cosa. Es genial para almacenar una gran variedad de archivos complejos y ofrece una navegación bastante rápida a los usuarios. El problema es que, al igual que con su archivador, el cajón virtual solo puede abrirse hasta un punto. Los sistemas de almacenamiento basado en archivos deben ampliarse agregando más sistemas, en lugar de ampliarse agregando más capacidad. 5.2.3Estructura de directorios. La información en un disco ha de estar ordenada. Y ese órden no es el mismo en todos los sistemas operativos. Comunmente se habla de estructura de directorios, o árbol de carpetas, etc, para definir el ordenamiento de las carpetas bajo un determinado sistema. Veremos en esta sección algunos ejemplos, y cómo podemos sacar ventaja de esto.

Ordenando el disco Todos los discos (internos o extraíbles) tienen que tener un formato en el cual guardar los datos. Pero aunque un disco esté listo para guardar información, necesitamos organizarlo. Una manera apropiada de hacerlo es creando carpetas. Las carpetas nos permiten organizar la información según algún criterio: nombre del propietario, tipos de documentos, etc.  Cuando instalamos un sistema operativo en nuestra computadora, éste crea un conjunto determinado de carpetas para que su funcionamiento también sea adecuado. De esa manera, habrá un mejor control en el momento de trabajar con programas y archivos.

Definición de carpetas. Una carpeta es una división lógica en un medio de almacenamiento. Anteriormente se usaba el término DIRECTORIO para referirnos a estas divisiones, pero con la aparición de sistemas operativos con interfaz gráfica, el término fue modificándose, al comenzar a trabajar con objetos.  Una carpeta no ocupa espacio en el disco por sí misma, son los archivos que contenga lo que dictará su tamaño. Aun así, para la creación de cada carpeta, el sistema operativo tiene que registrar sus datos, por lo que en un sentido más real, algo de espacio (casi imperceptible) se emplea para el registro de las carpetas. Una carpeta puede presentar tres posibilidades: 1- Contener archivos, 2- Contener más carpetas o, 3- Estar vacía.

Estructura de carpetas (Árbol de directorios) Como dijimos, todos los sistemas operativos organizan documentos y programas (y sus dependencias) en carpetas. Pero cada uno de ellos lo hace de manera diferente. Podemos analizar la estructura de las carpetas como si de un árbol se tratara. Observando detenidamente, veremos que la representación de las carpetas en el disco duro, se parece a la de un árbol genealógico. En Windows se usa el símbolo \ para representar carpetas o directorios. Cuando en una ventana vemos una dirección que dice: G:\fotos indica que estamos en la carpeta fotos del disco G La estructura de carpetas básica de Windows es la que se muestra en la siguiente imágen, donde el Escritorio es la raíz del sistema. ¿Identificas los 4 elementos principales o ramas que se desprenden del escritorio?

En cierta forma, las ramas principales en un sistema de archivos Windows es fácil de visualizar y abarcar. Otros sistemas son un poco más complejos. A modo de ejemplo, la siguiente imágen muestra las ramas principales de un sistema Linux:

Además de ser más extendido, en este caso la raíz no es el escritorio, ya que este no es parte esencial del sistema. El escritorio se encuentra (de haberlo) en una carpeta dentro del directorio Home, en la carpeta de cada usuario.

Cuando usamos ventanas al navegar por las carpetas, podemos usar los botones de navegación para desplazarnos hacia atrás y  adelante dentro del árbol de directorio, o también subir de nivel. De hecho, cuando navegamos por el sistema, estamos navegando por el árbol de directorios. El nivel más alto que podemos alcanzar cuando usamos el botón marcado en verde en la siguiente ilustración, es el escritorio. No podemos encontrar un nivel superior en sistemas Windows.

5.2.4Archivos compartidos.

Cuando hay varios usuarios trabajando en conjunto en un proyecto, a menudo necesitan compartir archivos. Como resultado, con frecuencia es conveniente que aparezca un archivo compartido en forma simultánea en distintos directorios que pertenezcan a distintos usuarios. La siguiente gráfica muestra el sistema de archivos de la gráfica de Directorios Jerárquicos de nuevo, sólo que con uno de los archivos de C ahora presentes en uno de los directorios de B también. La conexión entre el directorio de B y el archivo compartido se conoce como un vínculo (liga). El sistema de archivos en sí es ahora un Gráfico acíclico dirigido (Directed Acyclic Graph, DAG) en vez de un árbol. Compartir archivos es conveniente, pero también introduce ciertos problemas. Para empezar, si los directorios en realidad contienen direcciones de disco, entonces habrá que realizar una copia de las direcciones de disco en el directorio de B cuando se ligue el archivo. Si B o C agregan posteriormente al archivo, los nuevos bloques se listarán sólo en el directorio del usuario que agregó los datos. Los cambios no estarán visibles para el otro usuario, con lo cual fracasa el propósito de la compartición.

Sistem a de Archivos con Archivo compartido

Este problema se puede resolver de dos formas. En la primera solución, los bloques de disco no se listan en los directorios, sino en una pequeña estructura de datos asociada con el archivo en sí. Entonces, los directorios apuntarían sólo a la pequeña estructura de datos. Éste es el esquema que se utiliza en UNIX (donde la pequeña estructura de datos es el nodo-i). REPORT THIS AD REPORT THIS AD

En la segunda solución, B se vincula a uno de los archivos de C haciendo que el sistema cree un archivo, de tipo LINK e introduciendo ese archivo en el directorio de B. El nuevo archivo contiene sólo el nombre de la ruta del archivo al cual está vinculado. Cuando B lee del archivo vinculado, el sistema operativo ve que el archivo del que se están leyendo datos es de tipo LINK, busca el nombre del archivo y lee el archivo. A este esquema se le conoce como vínculo simbólico (liga simbólica), para contrastarlo con el tradicional vínculo (duro).

5.2.5Rendimiento del sistema de archivos. Deben distinguirse los términos "sistema de archivos" y "sistema de gestión de archivos": el primero tiene que ver con los principios de acceso a los datos organizados como archivos. Y el segundo está relacionado con la implementación específica del sistema de archivos, es decir este es un conjunto de módulos de software que proporcionan trabajo con archivos en un sistema operativo específico.

TIPOS DE ARCHIVO Archivos regulares: contienen información arbitraria que el usuario ingresa en ellos o que se forma como resultado del trabajo del sistema y los programas del usuario. El contenido de un archivo normal está determinado por la aplicación que trabaja con él. Los archivos normales pueden ser de dos tipos: 1.

Software (ejecutable): son programas escritos en el lenguaje de comandos del sistema operativo y realizan algunas funciones del sistema (tienen extensiones .exe, .com, .bat). 2. Archivos de datos: todos los demás tipos de archivos: textos y documentos gráficos, hojas de cálculo, bases de datos, etc.

Los directorios son, por un lado, un grupo de archivos combinados por el usuario por algunas razones (por ejemplo, archivos que contienen programas de juegos o archivos que componen un paquete de software) y, por otro lado, este es un tipo especial de archivo que contiene información de ayuda del sistema sobre un conjunto de archivos agrupados por usuarios de acuerdo con algún atributo informal (tipo de archivo, su ubicación en el disco, derechos de acceso, fecha de creación y modificación). Los archivos especiales son archivos ficticios asociados con dispositivos de entrada / salida que se utilizan para unificar el mecanismo de acceso a archivos y dispositivos externos. Los archivos especiales permiten al usuario realizar E / S a través de los comandos habituales de escritura o lectura desde archivos. Estos comandos son procesados primero por los programas FS y luego, en alguna etapa de la ejecución de la consulta, el sistema operativo se convierte en comandos para controlar el dispositivo correspondiente (PRN, LPT1 para el puerto de impresora - los nombres simbólicos para el sistema operativo son archivos, - USB para el teclado). La gestión de archivos se da en la organización, almacenamiento y el acceso al conjuntos de estos, de modo que al cumplir con sus funciones garanticen el cuidado y protección de la información que manejen. Por ello es importante conocer y aplicar este tipo de operaciones. _

5.3Seguridad. Para comprender los diferentes peligros existentes a nivel de seguridad, es necesario comenzar por la definición de los requisitos de seguridad. La seguridad de los sistemas informáticos y de la red va dirigida a cuatro requisitos básicos: • Confidencialidad. Requiere que la información de un sistema informático sólo se encuentre accesible para lectura para aquellas partes que estén autorizadas a este tipo de acceso. Este tipo de acceso incluye impresión, mostrado de datos y otras formas de observación, incluyen- do la simple revelación de la existencia de un elemento. • Integridad. Requiere que los contenidos de un sistema informático sólo podrán modificarse por las partes que se encuentran autorizadas. Las modificaciones incluyen escritura, cambio, modificación del estado, borrado y creación. • Disponibilidad. Requiere que los componentes de un sistema informático estén disponibles para todas aquellas partes autorizadas. • Autenticación. Requiere que el sistema informático sea capaz de verificar la identidad de los usuarios.

5.3.1Fallas de seguridad. Los tipos de ataques contra la seguridad del sistema o de la red se clasifican mejor considerando las funciones de un sistema informático como si se tratase de un proveedor de información. En general, existe un flujo de información desde una fuente, pudiéndose tratar de un fichero o una región de memoria, a un destino, que puede ser otro fichero o puede ser el mismo usuario. Ese flujo virtual se muestra en la Figura 16.2a. El resto de elementos de la figura muestran las siguientes cuatro categorías generales de ataques: • Interrupción. Se destruye un componente del sistema o se encuentra no disponible o utilizable. Es un ataque centrado en la disponibilidad. Ejemplos de este tipo incluyen la destrucción de una pieza del hardware, como un disco duro, la interrupción del canal de comunicación o la eliminación del sistema gestor ficheros. • Intercepción. Una parte no autorizada consiga acceso a un componente. Esto es un ataque dirigido hacia la confidencialidad. La parte no autorizada puede ser una persona, un programa o

Sistema informático 4 Datos

1

Sistema informático

Los ficheros sensibles se deben asegurar (seguridad de ficheros)

Se debe controlar el acceso a los datos

Datos

2 Los datos se deben transmitir de forma segura por la red (seguridad de red)

(protección)

Procesos que representan usuarios

Procesos que representan usuarios

Vigilancia

Vigilancia

2 Se debe controlar el acceso a las instalaciones informáticas (autenticación de usuarios) Usuarios que hacen peticiones

Figura 16.1. Ámbito de la seguridad informática [MAEK87].

Fuente de la la información

Destino de

información (a) Flujo normal

(b) Interrupción

(c) Intercepción

(d) Modificación

(e) Fabricación

Figura 16.2. Peligros de seguridad.

un ordenador. Ejemplos de este estilo son la escucha en un canal de comunicación para captu- rar datos y la copia ilícita de ficheros o programas. • Modificación. Un elemento no autorizado no sólo tiene acceso a un componente sino que tam- bién es capaz de modificarlo. Éste es un ataque que va dirigido hacia la integridad. Los ejem- plos incluyen cambiar valores de un fichero de datos, alterar un programa para que exhiba un comportamiento diferente, y modificar el contenido de los mensajes que se transmiten por la red. • Fabricación. Un elemento no autorizado inserta objetos extraños en el sistema. Estos son ata- ques contra la autenticación. Ejemplos de este tipo son la inserción de mensajes externos en una red o la inclusión de un registró en un fichero

5.3.2Principios de diseño para seguridad. Es necesario el diseñarlos para que admitan mecanismos de seguridad desde un principio, Saitzer y Schroeder extrajeron los criterios de diseño siguientes para dotar a un Sistema Operativo de mecanismos de seguridad:

·

Diseño abierto (Para disuadir a posibles curiosos)

·

Exigir permisos (Política de acceso restrictiva)

·

Privilegios mínimos (Asignar únicamente prioridades necesarias)

·

Mecanismos económicos (Sencillos, regulares y pequeños)

·

Intermediación completa (Comprobación de acceso al sistema)

·

Compartición mínima

·

Fáciles de usar y aceptables (Aceptado por usuarios y fácil de usar)

· Separación de privilegios (Más de un mecanismo de protección, criptografía)

Técnicas de diseño de sistemas seguros:

·

Separación de recursos (Física, temporal, criptográfica y lógica)

· Uso de entornos virtuales (Espacios múltiples de memoria virtual, máquinas virtuales) que proporcionan un entorno virtual completo para cada usuario. · Diseño por capas: Varios niveles, donde los niveles interiores son los de más confianza

Controles de seguridad externos al sistema operativo:

· Equipos de penetración y limitación de acceso: Para tratar de detectar el mayor número de fallos posible es habitual usar equipos de penetración, en donde su misión es llevar a cabo todos los ataques de seguridad sobre un sistema. El conjunto de pruebas de seguridad debe ser complejo y riguroso, sobre todo si se trata de sistemas que están conectados en red por la posibilidad de difusión de virus e intento de adquisición de palabras de acceso al sistema mediante programas que descifran dichos códigos. La complejidad de las comprobaciones y el registro de acceso aumentan en los sistemas conectados a una red; en tal caso la seguridad se enfrenta a múltiples puntos de ejecución y canales de comunicación expuestos, por tal motivo se debe utilizar algún mecanismo de protección como el firewall, que consiste en limitar el acceso a la red interna y solo poder realizarlo a través de una máquina determinada denominada cortafuegos. · Controles de programación: El diseño y código del sistema deben ser revisados por un grupo de los diseñadores y programadores, se puede aplicar a los programas encapsulando datos y métodos de un objeto de forma que sólo se puedan acceder por métodos verificados e interfaz definida, pruebas independientes, cualquier cambio o instalación de software en un sistema debe ser aprobado por el administrador. · Uso de estándares para seguridad: Existen estándares que describen un sistema fiable, algunos controles serían el software viable, sospechar de procesos, registrar accesos, búsquedas periódicas de agujeros de seguridad, etc.

5.3.3Virus. Virus. Un virus es un programa que puede infectar otros programas modificándolos; las modificacio- nes incluyen la copia del programa virus, que puede a continuación infectar otros programas.

Los virus biológicos son pequeños fragmentos de código genético —ADN o ARN — que pueden tomar la maquinaria de una célula viva y modificarla para realizar miles de réplicas del virus original. Como su análogo biológico, un virus informático contiene un código de instrucciones que se encarga de realizar copias de sí mismo. Infectado un ordenador, un virus típico toma control del disco del sis- tema operativo del ordenador. Posteriormente, en el momento en que el ordenador infectado se pone en contacto con otro software éste quedará infectado, una nueva copia del virus pasa a este programa. De esta forma, la infección se puede expandir de ordenador en ordenador sin que los usuarios se per- caten, bien por medio del intercambio de discos o enviándose programas de uno a otro a través de la red. En un entorno de red, la posibilidad de acceder a aplicaciones y servicios de sistema de otro or- denador proporciona una infraestructura perfecta para la dispersión de los virus. Un virus puede realizar lo mismo que cualquier otro programa. La única diferencia es que se inserta él mismo dentro de otro programa y se ejecuta secretamente cuando el programa anfitrión se va a eje- cutar. Una vez que el virus está en ejecución, puede realizar cualquier función que esté permitida con los privilegios del usuario en cuestión, tal como borrar ficheros y programas. Durante su tiempo de vida, un virus típico pasa por las siguientes cuatro etapas:

• Fase latente. El virus está dormido. El virus se activará finalmente cuando se dé un evento, por ejemplo una fecha, la presencia de otro programa o ficheros, o que la capacidad del disco exceda de un determinado límite. No todos los virus pasan por esta etapa. • Fase de propagación. El virus inserta copias idénticas de sí mismo en otros programas o en ciertas áreas de disco. Cada programa infectado contendrá ahora una copia del virus, que a su vez entrará en la fase de propagación. • Fase de activación. El virus se activa para realizar la función para la cual fue concebido. Con el caso de la fase latente, la fase de activación se puede

lanzar por una amplia gama de eventos del sistema, incluyendo un contador del número de veces que esta copia del virus se ha copia- do a sí mismo. • Fase de ejecución. La función en cuestión se realiza. La función puede variar desde un men- saje inofensivo en la pantalla, hasta la dañina destrucción de programas y ficheros de datos.

La mayoría de los virus llevan a cabo su trabajo de una manera específica de un sistema operati- vo en particular, y en algunos casos, específica también para la plataforma hardware. Por tanto, están diseñados para aprovecharse de los detalles y debilidades de determinados sistemas en concreto.

TIPOS DE VIRUS Ha habido una continua carrera entre los diseñadores de virus y los diseñadores de software antivirus desde que los virus aparecieron por primera vez. A medida que se iban desarrollando medidas contra los tipos de virus existentes, se iban desarrollando nuevos virus. [STEP93] sugiere las siguientes cate- gorías entre las más significativas de los tipos de virus:

• Virus parásito. Forma tradicional y asimismo la más habitual de un virus. Un virus parásito se inserta él mismo dentro de ficheros ejecutables y se replica, cuando el programa infectado se encuentra en ejecución, buscando otros ficheros ejecutables que infectar. • Virus residente en memoria. Infecta la memoria principal como parte del programa del siste- ma residente. Desde ese punto, el virus infectar todo programa que se ejecuta. • Virus en el sector de arranque. Infecta el sector de arranque maestro (master boot record) y se dispersan cuando el sistema arranca desde el disco que contiene el virus. • Virus oculto. Una forma de virus diseñada expresamente para esconderse del software de de- tección de los antivirus. • Virus polimórfico. Un virus que muta con cada infección, haciendo que la detección por me- dio de la «firma» del virus sea imposible.

5.3.4Mecanismo de protección. La función principal de un Sistema Operativo (SO) es la de tomar todos los recursos físicos de un sistema de computo y brindarlos de manera virtual, esto es logrado por medio de una abstracción del hardware (HW). En la actualidad no es suficiente con permitir el manejo y uso del HW si no se maneja seguridad y protección .   Es importante en definir claramente las diferencias entre estos dos conceptos 

La seguridad : es la ausencia de un riesgo. Aplicando esta definición a al tema correspondiente, se hace referencia al riesgo de accesos no autorizados, de manipulación de información, manipulación de las configuraciones, entre otros



La protección : son los diferentes mecanismo utilizados por el SO para cuidar la información, los procesos, los usuarios, etc

Después de tener claro que quiere decir cada tema surgen numerosas ideas en nuestras mentes, ya que la seguridad es algo que manejamos en todos los aspectos de nuestras vidas, y por experiencia se sabe que no depende de un solo actor ( persona, computador , … ) si no que esta fuertemente ligada con todo lo que lo rodea, por esto la seguridad no solo es manejada por el sistema operativo si no que es necesario un refuerzo como otro software que comúnmente denominamos “antivirus”. Un SO como administrador de los recursos cumple funciones muy importantes en la instrumentación de la seguridad pero no engloba todos los aspectos de esta, la cual se fortalece según las necesidades y los usos ( es decir que según la necesidades y enfoques que dan los usuarios a los equipos estos cuentan con diferentes tipos de seguridad ). En la actualidad los conceptos e ideas tenidos sobre la seguridad han ido cambiando mucho, esto por que se entro a un era donde es posible los accesos remotos a los equipos, donde se busca que todo proceso sea mas fácil de realizar ( y sabemos que la seguridad es inversamente proporcional a la facilidad de uso ).

Un sistema de seguridad debe cumplir con unos requisitos: 

Confidencialidad: Acceso solo a usuarios autorizados



Integridad: Modificación solo por usuarios autorizados



Disponibilidad:  Recursos solamente disponibles para usuario autorizado

 La seguridad se clasifica en: 

Externa:  protección contra desastres y contra intrusos



Operacional: básicamente nos determina que acceso se permite a quien

 Una de las obligaciones de un sistema seguro es permanecer en constante vigilancia, verificando y validando las posibles amenazas, esto lo hacen con uso de contraseñas, controles de acceso  Se plantea que es mas fácil haces un sistema seguro si esto se ha incorporado desde los inicios del diseño, por que no se puede hablar de un SO seguro si su núcleo no lo es; de igual manera es posible hacer seguridad por hardware donde se obtiene como ventaja la velocidad de operación permitiendo controles mas frecuentes y mejora el performance  Con respecto a los SO mas seguros es difícil listarlos ya que todos tienen sus seguidores y contractares los cuales por instinto suelen defender lo que usan, pero es sin duda alguna lo que responden las encuestas hay una delas distribuciones de Linux denominada openBSD que es conocido como el SO mas seguro a parte de que no deja de ser software libre, de igual manera es situado a a los SO de Windows encima del Mac OSX donde apenas la ultima versión empieza a aplicar completamente  algoritmos de seguridad que desde antes eran utilizados por la competencia pero sin duda alguna los sistemas libres ganan la batalla con respecto a la seguridad Para poder garantizar la seguridad es fundamental proteger nuestro sistema, por eso básicamente los mecanismo articulados para la protección son los que nos llevan a un sistema seguro; existen diferentes formas de realizar la protección tal vez la mas común y mas básica sea definir cuales son los archivos u objetos a proteger para que posteriormente se delimite que usuarios pueden acceder a que información  Como objetivos de la protección esta: 

Controlar el acceso a los recursos



Utilizabiliad por diferentes usuarios

 Generalmente surgen dudas sobre que es lo que debemos proteger o que debo cuidar mas y la respuesta es siempre variable según el tipo de necesidades de cada usuario, pero generalmente los mas afectados son la CPU, la memoria, terminales, procesos, ficheros y las bases de datos Un sistema de protección deberá tener la flexibilidad suficiente para poder imponer una diversidad de políticas y mecanismos.  La protección se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computación. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos.  Pero contra que nos debemos proteger: 

Adware



Backdoor



Badware alcalinos



Bomba fork



Bots



Bug



Toryano



Cookies



Crackers



Cryptovirus

5.4Ejemplos de sistemas de archivos 5.4.1CP/M 5.4.2Ms-DOS 5.4.3Win 98 5.4.4Unix V7

El sistema de archivos de UNIX y LINUX 

EXT2

EXT / EXT2 / EXT3: Es el protocolo de Linux para el almacenamiento de datos, se trata de un sistema de ficheros de alto rendimiento usado para discos duros, así como para sistemas de almacenamientoextraíbles (disqueteras y memorias USB). Tiene la ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni tener que formatear el disco. Tiene un menor consumo de CPU y esta considerado mas seguro que otros sistemas de ficheros en Linux dada su relativa sencillez y su mayor tiempo de prueba. Los sistemas operativos Linux e UNIX son capaces de detectar casi cualquier sistema de archivos (EXT, FAT, FAT32, NTFS, CDFS, UDF, etc.).

El sistema de archivos de Ms-DOS,  Windows 3.11 y Windows 95 de

Microsoft® 

FAT:  proviene de (“File Allocation Table“), que significa tabla de localización de archivos. Estatabla se mantiene en el disco duro de nuestro ordenador, y contiene un mapa de toda la unidad de forma que “sabe” donde está cada uno de los datos almacenados.

Cuando se escribe un nuevo fichero al disco duro, este es guardado en uno o más clusters, dependiendo del tamaño del fichero (archivo). Los tamaños típicos del cluster son 2.048 Bytes, 4.096 Bytes o 8.192 Bytes. El sistema operativo crea una entrada de FAT por cada nuevo fichero, graba y  almacena la posición del cluster (o clusters) donde se ha guardado. Cuando queremos leer un fichero, el sistema operativo busca en la FAT la posición del mismo para su ejecución. El sistema de archivos de Windows 98 y Windows Millenium de Microsoft® 

FAT32: proviene de (“File Allocation Table 32“), que significa tabla de localización de archivos a 32 bits. Es el sistema de archivos que se empezó a usar a partir de la versión OSR2 de Microsoft® Windows 95, la cuál tiene una mejor manera de almacenar los datos con respecto a la FAT 16 ya que puede manejar discos duros de hasta 2 Terabytes. Se utiliza básicamente con Microsoft® Windows 98 y Microsoft® Windows ME. Los sistemas operativos Windows 98 y ME de Microsoft® reconocen el sistema de archivos FAT, FAT32, el CDFS utilizado en CD-ROM y el UDF utilizado en DVD-ROM.

REPORT THIS AD REPORT THIS AD El sistema de archivos de Windows XP, Windows Vista y Windows 7 de Microsoft®



NTFS: proviene de (“New Tecnology File System“), que significa sistema

 de archivos de nueva tecnología, utilizado en la plataforma Windows NT®. Permite accesos a archivos y carpetas por medio de permisos, no es compatible con Linux (solo lee, y difícilmente escribe), ni con Ms-DOS®, ni Windows 95, ni Windows 98 y tampoco puede accederla, tiene formato de compresión nativa, permite encriptación, soporta 2 TB, no se recomienda en sistemas con menos de 400 MB. Se utiliza para Microsoft® Windows XP y Microsoft® Windows Vista y Windows 7. Los sistemas operativos Windows XP, Vista y 7 de Microsoft® reconocen el sistema de archivos FAT, FAT32, NTFS, el CDFS utilizado en CD-ROM, el UDF utilizado en DVD-ROM y el LFS para discos sin registro de arranque maestro.



exFAT: proviene de (“EXtended File Allocation Table“), que significa tabla de localización de archivos extendida, el cuál se diseño para su uso en dispositivos dealmacenamiento electrónico basados en el uso de tecnología de memoria NAND, tales como memorias USB y unidades SSD, para ser utilizado con versiones de Microsoft® Windows CE, es importante mencionar que Windows  Vista y 7 tienen soporte para el formateo con este

sistema de archivos, al igual que MacOS® y Linux. Una característica importante es que Permite almacenar hasta 1000 archivos en una carpeta. Nuevos sistema de archivos de Microsoft® 

WinFS: proviene de 2 significados diferentes: (“Windows Future Storage“) y (“Windows File System“), significando almacenamiento de “Windows” del futuro y sistema de archivos de “Windows“. Este sistema fue desarrollado por Microsoft® para facilitar la clasificación y las búsquedas de archivos, utilizando un modo distinto a lo que actualmente conocemos como sistemas de directorios y archivos, basado en funciones de búsqueda utilizadas en las bases de datos como SQL; por lo que no se definió de manera clara si WinFS se trataba de un sistema de archivos al 100% ó como un agregado al sistema NTFS. Este sistema de archivos se vislumbró como propuesta para su uso con Microsoft® Windows 7, pero no se concretó el proyecto y se conserva NTFS en tal sistema operativo.

El sistema de archivos de MacOS de Apple® 

HFS/HFS+: significa (“Hierarquical File System”) ó sistema de archivos por

jerarquía, s ustituyo al MFS (“Macintosh File System”) y el símbolo + indica extendido, es decir, la última versión de HFS. Fué desarrollado por Apple®, admite el uso de direcciones de espacio en disco de 64 bits y permite utilizar bloques de asignación de archivos de 32 bits con el fin de potenciar la eficiencia del disco al reducir la utilización de espacio en volúmenes de gran tamaño o con un número elevado de archivos. Admite nombres de archivo más descriptivos, con una longitud máxima de 255 caracteres y codificación de texto Unicode para los nombres de archivo internacionales o con sistemas de escritura mixtos, también ofrece un formato opcional de sistema de archivos con distinción de mayúsculas y minúsculas para HFS+ que permite al administrador alojar sinproblemas archivos utilizados por aplicaciones UNIX que requieren esta función. Los sistemas operativos modernos MacOS de Apple® reconocen el

sistema de archivos HFS, HFS+, FAT, FAT32, el CDFS utilizado en CDROM y el UDF utilizado en DVD-ROM. REPORT THIS AD REPORT THIS AD

HFS Sistema de archivos de Sun® Solaris 

ZFS: significa (“Zettabyte File System”) ó sistema de archivos

ZettaByte,  desarrollado por Sun Microsystems para el sistema operativo Solaris. Es un robusto sistema de

ficheros de 128 bits, creado para superar las expectativas de cualquier sistema real, cuenta un sistema ligero de ficheros, nueva estructura de almacenamiento en disco y administración simple de espacio y un sistema de ahhutor reparación denominado “Self-healing” entre muchas otras características que permiten su implementación en grandes servidores.

Bibliografia https://reynaldo-entrada-salida.es.tl/Entrada-y-salida-Programada.htm http://icaro.eii.us.es/descargas/Entrada-Salida(AC06-07).pdf