CAPITULO Nº1 INTRODUCCIÓN 1.1 ¿QUÉ ES UN SISTEMA OPERATIVO? • El modelo más básico de una computadora es de dos niveles: El Hardware (HW) y el software (SF). • Hardware: Corresponde al nivel de lógica digital. Está constituido por compuertas lógicas, memorias, buses, temporizadores, fuentes de poder, cables, etc. • Software : • • Programas de Aplicación: Compiladores, editores de texto, planillas de cálculo, etc. Programas de Sistema: Controlan la operación de una computadora. • Firmware: SF incorporado al HW en su construcción. • El sistema operativo (SO): • • • • • • Programa de sistema fundamental. Administra los recursos de una computadora (Procesadores, memoria, dispositivos de E/S). Proporciona al programador instrucciones de alto nivel para manejar el HW. Porción de SF que se ejecuta en modo kernel o supervisor: Está protegido por HW de la manipulación del usuario. Ejecución en modo usuario: Compiladores, Editores. Ejecución en modo supervisor: Manejador de interrupciones de disco. • El SO en el contexto de una máquina multinivel. • • El SO se puede observar como un nivel de jerarquía dentro de una jerarquía de niveles que modelan una computadora. El SO es una máquina virtual que posee un set o conjunto de instrucciones cercanas a las personas (de alto nivel) que alejan al programador de la programación del HW. • Nivel de sistema operativo en máquinas multinivel reales • Breve descripción de los niveles de máquinas actuales. • Nivel 0: Nivel de lógica digital. Corresponde al HW de la máquina. Está conformado por memorias RAM, memorias ROM, registros, unidades aritmético lógicas, unidad de control, buses de datos, buses de direcciones, bus de control, compuertas lógicas, fuentes de poder, etc. Bajo este nivel existe un nivel denominado nivel de dispositivo, conformado por los elementos básicos con los cuales están construidos las compuertas lógicas, a saber, los transistores. El funcionamiento de los transistores, o de los semiconductores en general cae en el campo de la física de estado sólido. • Nivel 1: Nivel de microprogramación. El nivel de microprogramación está conformado por una máquina virtual denominada microprograma. El microprograma es un programa interprete de las instrucciones de salida del nivel de máquina convencional, que generalmente se implementa en firmware. La función del microprograma es generar los valores lógicos (0 y 1) de las líneas de control del HW de la máquina, que junto con un secuenciamiento adecuado ejecutan sobre el HW las instrucciones del nivel anterior. • Nivel 2: Nivel de máquina convencional. Este nivel se denomina también nivel de arquitectura del set de instrucciones. En este nivel se definen cuestiones como el set de instrucciones de lenguaje de máquina, el formato de las instrucciones, las formas de direccionamiento, el largo y funcionalidad de los registros (de propósito general y específico), etc. Los manuales de referencia de lenguaje de máquina de los fabricantes de una computadora, tratan de la máquina virtual de nivel 2. El set de instrucciones de lenguaje de máquina describe las instrucciones que el microprograma lleva a cabo sobre el HW. • Nivel 3: Nivel de sistema operativo. El nivel de sistema operativo está conformado por un programa denominado sistema operativo. El nivel de sistema operativo es un nivel híbrido. La mayoría de las instrucciones de este nivel están presente en el nivel 2, por lo que son ejecutadas directamente por el microprograma. Además existen otras instrucciones que tiene que ver con cuestiones como la creación, ejecución y comunicación de procesos (programa en ejecución). Las funciones del sistema operativo son básicamente 4: ! ! ! ! • Administración de procesos Sistema de archivos Administración de memoria Administración de los dispositivos de E/S. Nivel 4: Nivel de lenguaje ensamblador. Este nivel está conformado por un programa traductor denominado ensamblador. El lenguaje ensamblador es una forma simbólica de los lenguajes subyacentes. En general corresponde a una forma simbólica del lenguaje de máquina convencional o lenguaje de máquina que es un lenguaje binario. Los símbolos del lenguaje ensamblador son típicamente ADD, SUB, MUL, DIV, que representan operaciones como sumar, restar, multiplicar y dividir. La tarea del ensamblador en una primera instancia es traducir el lenguaje simbólico a lenguaje de máquina. El programa ensamblador como traductor toma el programa fuente (programa con instrucciones en símbolos) y lo convierte a un programa objeto, que es el programa que realmente se ejecuta. Cuando se ejecuta el programa objeto hay tres niveles presentes: El nivel de microprogramación, el nivel de máquina convencional y el nivel de sistema operativo. En tiempo de ejecución hay 3 programas presentes en memoria: El programa objeto del usuario, el sistema operativo y el microprograma. • Nivel 5: Nivel de lenguajes orientados a problemas. Este nivel está constituido por programas traductores denominados compiladores. Los lenguajes de nivel 5 son denominados de alto nivel dado que son muy cercanos a las personas. Ejemplos de estos lenguajes son el Pascal, el Fortran, C, Cobol, entre otros. • Nivel 6 y superiores: Aplicaciones. Este nivel provee de máquinas virtuales orientadas a aplicaciones específicas. Entre las máquinas virtuales presentes en este nivel están las planillas de cálculo, procesadores de texto, etc. • Funciones del sistema operativo: El SO tiene 2 funciones que no están relacionadas entre sí. • Visión descendente: Sistema operativo como máquina extendida. • Programación directa del HW (Controlador de disco flexible). " " " • Presenta al programador una máquina extendida o máquina virtual, con un conjunto de instrucciones de alto nivel, con lo cual se configura una abstracción sencilla de los elementos de una computadora. " " " • Posee 16 comandos, cada uno de los cuales se especifica cargando entre 1 y 9 bytes en un registro del dispositivo. Comandos de lectura de datos, escritura de datos, movimiento del brazo, formateo de pistas. Inicialización, detección, reestablecimiento, recalibración del controlador y las unidades de disco. Comandos básicos son READ y WRITE: requieren 13 parametros empacados en 9 bytes. Los parámetros especifican: Dirección del bloque de disco, número de sectores por pista, modo de grabación empleado, etc. Disco como conjunto de archivos. Cada archivo posee un nombre que lo identifica. Los archivos pueden abrirse, leerse, escribirse o ambos, y finalmente cerrarse. Visión ascendente: SO como administrador de recursos. • • • Los recursos de una computadora son: Procesadores, memoria, dispositivos de E/S. El SO asegura el correcto uso de los recursos de la computadora entre programas que piden el acceso a estos recursos que son compartidos. Ejemplo: Un SO de red, ordena el uso de un recurso compartido como una impresora por los diferentes usuarios. 1.2 CRONOLOGÍA DE LOS SISTEMAS OPERATIVOS Y LA ARQUITECTURA DE COMPUTADORAS. 1.2.1 • Generación 0 (1642-1945): Computadoras mecánicas. Máquina calculadora mecánica de Pascal: Blaise Pascal(1623-1662), científico francés construye en 1642 una máquina calculadora mecánica hecha de engranajes y accionado por una manivela. Sólo podía hacer sumas y restas. • Máquina calculadora de Leibnitz: El matemático alemán, barón Gottfried Wilhelm von Leibnitz(1646-1716), construye una calculadora mecánica que suma, resta, divide y multiplica. • Máquina diferencial de Babbage: Profesor de matemáticas en la Universidad de Cambridge, el inglés Charles Babbage construye una máquina que suma y resta para ejecutar el algoritmo de diferencias finitas usando polinomios. Utiliza un medio de salida perforando los resultados en un plato de cobre. • Máquina analítica de Babbage: Máquina mecánica que posee una estructura 4 componentes: El almacén (memoria), el taller (unidad de cálculo), la sección de entrada (lectora de tarjetas perforadas) y la sección de salida (salidas impresas y perforadas). El almacén consiste de 1000 palabras de 50 dígitos decimales, usadas para contener variables y resultados. El taller podía aceptar operandos del almacén, realizar las 4 operaciones, y regresar el resultado al almacén. Primera máquina de propósito general (programable), leía las instrucciones del almacén y las ejecutaba. Algunas instrucciones le indicaban a la máquina extraer dos números del almacén, llevarlos al taller, hacer cálculos (sumar), y regresar el resultado al almacén. Otras instrucciones podían comprobar si un número era positivo o negativo y tomar diferentes acciones dependiendo de dicha condición. La máquina era programable en un lenguaje ensamblador sencillo. Ada lovelace hija del famoso poeta británico Lord Byron fue contratada por Babagge para programar su máquina. • Konrad Zuse: Estudiante de ingeniería alemán a mediados de la década de 1930 construye máquinas calculadoras con relays. • John Atanasoff: En la universidad de Iowa (E.E.U.U.) construye una calculadora sorprendentemente avanzada. Utilizaba aritmética binaria y tenía una memoria de condensadores. Su máquina nunca operó perfectamente. • Horward Aiken y Mark I: Construyó la máquina analítica de Babagge con la tecnología de relays. Mark I fue terminada en la Universidad de Hardvard en 1944. Tenía 72 palabras de 23 dígitos decimales cada uno, y un tiempo de ejecución de instrucción de 6 segundos. • Visión de la generación del punto de vista del SO: • • En esta generación de computadoras no existe el concepto de sistema operativo. Existe el concepto de programa. La programación se hace interviniendo el HW. 1.2.2 Primera generación (1945-1955): Tubos al vacío y procesamiento en serie. • • Comienza la era de la electrónica. • Computadora Colossus: Alan Turing, matemático Inglés, cooperó con el gobierno Inglés para construir una computadora que permitiera descifrar los mensajes codificados de los submarinos alemanes. Su línea de investigación cayó en un punto muerto pues fue considerado secreto militar. • ENIAC: John Muchley y Prespert Eckert, construyeron una computadora electrónica para calcular tablas de tiro para apuntar la artillería pesada del ejercito de E.E.U.U. Las características del ENIAC son: 18000 tubos y 1500 relays, pesaba 30 toneladas y consumía 140 Kwatts. Respecto de la arquitectura contenía 20 registros, cada uno capaz de almacenar un número de 10 dígitos decimales, se programaba conectando 6000 interruptores más cables y enchufes. • Otras: • EDASC (1949): Universidad de Cambridge, Inglaterra por Maurice Wilkes. • JOHNIAC: Construida por Rand Corporation. • ILLIAC: Universidad de Illinois. • WEIZAC: Instituto Weizman en Israel. Máquina de von Neumman (IAS): John von Neumman experto en ciencias físico matemáticas, pensó que el programa puede almacenarse en forma digital en memoria al igual que los datos, y abandonar la estrategia de programar con interruptores y cables. También pensó en utilizar la aritmética binaria en vez de decimal, en que cada dígito era representado por diez bulbos, uno encendido y nueve apagados. La máquina de von Neumman la constituyen cinco partes básicas: La memoria, la unidad aritmética lógica, la unidad de control del programa, la entrada/salida. Memoria con 4096 palabras de 40bits (La palabra podía contener 2 instrucciones de 20 bits o un número entero de 39 bits y su signo). Dentro de la CPU había un registro llamado acumulador usado para instrucciones aritméticas. • Visión de la generación desde el punto de vista del SO: • No existe concepto de sistema operativo. • El procesamiento es en serie. La CPU atiende a un solo proceso. Se debe terminar un proceso para comenzar otro. • En caso de que el proceso espere una operación de E/S, la CPU esta ociosa. • Se programaba en el lenguaje de la máquina: Alambrando tableros de conmutación para controlar las funciones de la máquina. No existen lenguajes de programación. 1.2.3 Segunda generación sistemas operativos por lote (1955-1965): Transistores y • El invento del transistor en 1948 en los laboratorios Bell por John Barden, Walter Brattain, William Shockley (por el cual obtuvieron el premio nobel de física en 1956) dejó obsoletas las computadoras a tubos. • TX-0: Primera máquina transistorizada, construida en el laboratorio Lincoln del MIT (Massachuset Institute of Tecnology) • PDP-1: Construida por DEC (1961). Desde el punto de vista de la arquitectura contenía 4kpalabras de 18 bits, y un tiempo de ejecución de instrucción de 5 microsegundos. Introduce un dispositivo visual (CRT) con la habilidad de trazar puntos sobre la pantalla. • PDP-8: Construida por DEC. Máquina de 12 bits. Incorpora un bus simple denominado ómnibus Un bus es un conjunto de cables en paralelo para conectar dispositivos. Arquitectura se aparta de la máquina IAS centrado en la memoria. • IBM 7094: Memoria de 36k palabras de 36 bits. Tiempo de ejecución de instrucción 2 microsegundos. • CDC 6600: (CDC, Control Data Corporation) Velocidad de un orden de magnitud de la 7094. Dentro de la CPU tenía una máquina paralela. Poseía unidades para hacer sumas, para multiplicar y dividir, pudiendo ejecutar 10 instrucciones al mismo tiempo. Poseía además unidades que permitía realizar la E/S. • Burroughs B5000: Los diseñadores de la línea PDP, 7094 y 6600 competía por hacer más eficiente el HW (más barato y más rápido). La B5000 fue construida para ser programada en ALGOL 60 incluyendo características HW para facilitar la tarea del compilador. • Visión de la generación desde el punto de vista del SO: • Las computadoras transistorizadas ocupaban cuartos enteros provisto de aire acondicionado. • Para ejecutar un programa o una serie de programas se seguían los siguientes pasos: • • • • • Escritura del programa en Fortran o en ensamblador. Perforación de tarjetas del programa. Introducción del compilador Fortran en el lector de tarjetas e introducción del programa perforado. Impresión de resultados en la impresora. Perforardor de tarjetas, lector de tarjetas e impresora correspondían a equipos distintos, usualmente en distintas habitaciones. Pérdida de tiempo en traslado de cuarto en cuarto. • Sistema de trabajo por lotes: • • • • • Perforar los programas. Lectura tarjetas perforadas y grabación de ellas en cinta magnética. Lectura de cinta magnética de programas, ejecución del programa y grabación de resultados en cinta magnética. Impresión de resultados. Para la realización de los cálculos se cargaba un programa que puede considerarse como antecesor de un sistema operativo, que leía la cinta con todos los programa, los ejecutaba en orden e imprimía de la misma forma los resultados en una cinta de salida. 1.2.4 Tercera generación (1965-1980): Circuitos integrados (LSI) y multiprogramación. • La invención del circuito integrado permitió poner docenas en una sola pastilla. La consecuencia lógica fue hacer computadoras más pequeñas, más rápidas y más baratas. • Serie 360 de IBM: • La 7094 y la 1401 eran máquinas exitosas pero incompatibles y con distinta funcionalidad. La 7094 máquina de alta velocidad y orientada al cálculo. La 1401 procesador de E/S (ambas se usaban extensamente en sistemas de procesamiento por lotes). • Características de la familia 360: • • • • Familia de computadoras escalables con modelos compatibles en lo que se refiere al SF. Primeras computadoras en emular otras computadoras modelos (7094 y 1401). Espacio de memoria direccionable 224 bytes (16 megabytes). Futuras series (370, 4300, 3080, 3090) conservan la misma arquitectura. Se debió abandonar la compatibilidad para pasar a espacios de direccionamiento de 232 bytes. Modelo Propiedades Desempeño relativo Tiempo de ciclo (nseg) Memoria max (K) Bytes accesados por ciclo • 30 1 1000 64 1 40 3.5 625 256 2 50 10 500 256 4 PDP-11 de DEC: Registros orientados a palabras y memoria orientada al byte. 65 21 250 512 16 • Visión de la generación desde el punto de vista del SO: • • OS/360: Sistema operativo de la familia 360. Dado los enormes requerimientos de la familia 360, el sistema operativo resultó ser igual de enorme con una gran cantidad de líneas escritas en ensamblador llenas de errores. • Multiprogramación: • • • • En el modelo 7094, cuando el trabajo en ejecución hacía una pausa para una operación de E/S, la CPU permanecía ociosa. La solución fue dividir la memoria en varias secciones, con un trabajo distinto en cada partición de manera que si un trabajo espera una E/S, otro trabajo pueda usar la CPU en operaciones de cálculo. Tener varios trabajos en memoria necesita de HW adecuado para proteger la operación de un trabajo de la invasión de otro. Spooling: • • • Existen varios trabajos en memoria. Cada vez que uno de los trabajos terminaba de ejecutarse se leía uno nuevo de la cinta magnética y se lleva a la partición que queda vacía. Tiempo compartido: • • • Variante de la multiprogramación. Cada usuario tiene un terminal en línea. La CPU puede asignarse por turno a los trabajos que requieren computo y que no están ociosos. 1.2.5 Cuarta generación (1980 en adelante): Computadoras personales y VLSI. • El nivel de integración VLSI (very large scale of integration) permitieron integrar en una sola pastilla millones de transistores. Las computadoras son más rápidas, más pequeñas y mucho más baratas. • La disminución tan drástica en el precio de las computadoras condujo al aparecimiento de la computadora personal. Ya no solo los departamentos de cómputo de las empresas y las universidades pueden adquirir computadoras, sino que el precio las hace accesible a las personas. TIPO MIPS MEM MB EJEMPLO Computadora personal Mini (Server) SuperMini (Workstation) Macro (Mainframe) Supercomputadora 1 2 10 1 4 32 30 125 128 1024 • IBM PS/2 PDP 11/84 SUN 4 PRECIO ($) 1K 10K 100K APLICACIÓN Proc. de texto Control Tiempo Real Servidor de Red IBM 3090/300 Cray -2 1M 10M Operación bancaria Predicción Tiempo Visión de la generación desde el punto de vista del SO: • Sistemas operativos de red: • • • • • Los usuarios conocen la existencia de múltiples máquinas. Los usuarios pueden acceder a máquinas remotas y copiar archivos de una máquina a otra. Cada máquina ejecuta su propio SO local y tiene uno o varios usuarios. Para el funcionamiento del un SO de red, cada máquina debe tener el HW adecuado para la conexión (tarjeta de red), y tener el SF de bajo nivel adecuado para la utilización de dicho HW (manejador de tarjeta). Sistemas operativos distribuidos: • • • • • • Concepto subyacente: Los diversos procesos son ejecutados por CPU distintas. Presenta el mismo aspecto de un sistema monoprocesador (centralizado). Se compone de múltiples procesadores. Los usuarios no saben dónde se están ejecutando sus programas o donde se almacenan sus archivos. Los sistemas distribuidos permiten a las aplicaciones ejecutarse en varios procesadores (partes de la aplicaciones). Los retardos en la red implica que debe haber una correcta sincronización entre los procesos distantes, lo que significa que los procesos deben ejecutarse en forma incompleta para esperar los resultados de otros procesos. 1.3 Conceptos de Sistemas Operativos • En esta sección se introducirán algunos conceptos generales que son transversales los sistemas operativos modernos: • • • • 1.3.1 1.3.2 1.3.3 1.3.4 Procesos. Llamadas a sistema. Archivos. El interprete de comandos. 1.3.1 Procesos. Conceptos generales: • Se entiende como proceso a un programa en ejecución. • Debido a la multiprogramación y para volver a ejecutar los procesos, es necesario guardar información para su nueva ejecución. • Por cada proceso el sistema operativo mantiene estructuras de información • Estructuras que para identificación de características del proceso. • Estructuras para identificar recursos asignados: Archivos, memoria, puertos de comunicaciones, etc... • Bloque de control de proceso BCP: • Contiene la información básica del proceso • Información de Identificación: pid, ppid, uid, gid. • Estado del procesador • Información de control del proceso: Estado, prioridad, etc... • El sistema operativo mantiene una Tabla de Procesos con todos los BCP de cada uno de ellos. Información asociada al proceso: • La información a guardar de un proceso se divide en 3 tipos (fig6cap1): • Estado del procesador. • Imagen de memoria (core image). • Tablas del sistema operativo. • Estado del procesador: • Está conformado por los valores de los registros del procesador. • Ejemplos: Registros de propósito general, PC(contador de programa), SP (stack pointer), Registro de Estado. • Varía a medida que se ejecutan las instrucciones. • Cuando se detiene la ejecución del proceso para ejecutar otro el estado del procesador se guarda en el BCP. • Imagen de memoria del proceso • Corresponde a los espacios de memoria o conjunto de direcciones de memoria que el proceso está autorizado a utilizar. • En el espacio de memoria se almacenan: El código, los datos y la pila. • Para almacenar esta información es posible encontrar distintos modelos de imagen de memoria. • Unico segmento de tamaño fijo. • Unico segmento de tamaño variable. • Número fijo de segmentos de tamaño variable • Numero variable de segmentos de tamaño variable. • Tablas • • • • del sistema operativo Tabla de procesos: Compuesta por todos los BCPs Tabla de memoria. Tabla de entrada salida. Tabla de archivos. Jerarquía de procesos • Los procesos tienen la capacidad de crear nuevos procesos llamados procesos hijos (existencia de procesos padres y procesos hijos), y estos últimos crear sus procesos hijos. • Lo anterior lleva a la existencia de una estructura de árbol de procesos (fig7cap1). • Llamada al sistema fork • Crea un nuevo proceso casi igual al padre (clona al padre) (fig8cap1) • Copia Imagen de memoria y BCP • Elementos diferenciadores • Identificador de proceso • Nueva descripción de memoria (en otra zona) • Tiempo de ejecución igual a 0 Comunicación y sincronización • Los procesos pueden colaborar entre si para resolver una tarea compleja. • La colaboración entre procesos requiere la comunicación (datos) y sincronización (su ejecución). • El servicio de comunicación y sincronización debe ser provisto por el sistema operativo. • Comunicación local o remota (fig9cap1). • Local: Procesos en la misma máquina • Remota: Procesos en distinta máquina. • Comunicación sincrona o asincrona: • Sincrona (fig10cap1): • Proceso A envía un dato a B. Proceso A espera que B reciba para continuar su ejecución • Proceso B solicita dato a A. proceso B espera el envió del dato por parte de A. • Asincrona: • El emisor no espera hasta que el receptor reciba el dato (sigue su ejecución). • Implica almacenamiento intermedio de los datos hasta que el emisor reciba los datos. 1.3.2 Llamadas al sistema. Generalidades • El sistema operativo es un nivel dentro de la organización de niveles de la computadora. • Dicho nivel ofrece al programador una serie de instrucciones de alto nivel que tienen como objeto aislar al programador del HW (Establecimiento de una máquina virtual). • Las instrucciones u operaciones extendidas que proporciona el SO se denominan llamadas al sistema. Servicios prestados por el sistema operativo • El sitema operativo presta sus servicios mediante las llamadas al sistema. • Servicios de gestión de procesos: • Tienen que ver con las fases de la vida de un proceso: Creación, ejecución y muerte. • Crear proceso, ejecutar proceso, terminar proceso, cambiar el programa de un proceso. • Servicios de comunicación entre procesos: • Tiene que ver con las fases de la vida de un mecanismo de comunicación: Creación, utilización destrucción. • Crear mecanismo, enviar o escribir datos, recibir o leer datos, destruir mecanismos • Servicios de sincronización de procesos: Crear mecanismo, bloquear proceso, despertar proceso, destruir mecanismo. • Servicios de gestión de memoria: Solicitar memoria, liberar memoria, compartir memoria. • Servicios de gestión de archivos y directorios: • Archivos: Crear, abrir, ecribir, leer, cerrar, borrar. • Directorios:Crear, borrar, abrir, leer, cerrar. • Servicios de seguridad y protección: Tienen que ver con la capacidad de asignación de atributos de seguridad a los recursos y a los usuarios. • Servicios de entrada salida: • Son independientes de los dispositivos de entrada salida. • Orientados al bloque o al caracter. • Se refieren a lectura y lectura de dispositivos. • Servicios de detección y tratamiento de errores: El sistema operativo se encarga de tratar las condiciones de error que detecte el Hardware. Interfaces del programador • Posix: • Estandar de Interfacez de Sistemas Operativos Portables de IEEE basado en el sistema operativo Unix. • Familia de estándares en evolución (fig11cap1). • Posix es una especificación del estandar, no define una implementación. • Se encuentra disponible en todas las versiones de Unix. • Win 32 • Define los servicios ofrecidos por los sistemas Windows 95/98, Windowd NT y Windows 2000. • No son genéricos. Son establecidos por una casa comercial determinada. 1.3.3 Archivos y directorios Generalidades de archivos y directorios • El Sistema Operativo presenta una abstracción de los discos y de los dispositivos de entrada salida. Esta abstracción se denomina sistema de archivos. • Un archivo es una abstración de un conjunto de bloques de disco que tienen alguna relación. • Los directorios son archivos cuya estructura es una tabla. Las tabla contiene entradas que representan directorios o archivos. • Los directorios permiten agrupar archivos y establecer una jerarquía de árbol para los archivos (fig13cap1). Nombre de los archivos • Un conjunto de bloques de disco puede ser referenciado mediante un nombre, el nombre del archivo. • Tipos de referencia • Absoluta: Desde el tope de la jerarquía de archivos (Directorio raiz). • Relativa: Desde el directorio de trabajo. En general un proceso tiene un directorio de trabajo, en donde se buscan los archivos cuya ruta no comienza con “/”. Protección de archivos y directorios • En los SS.OO. basados en el estandar POSIX para UNIX poseen un código de protección consistente en 3 grupos de 3 bits. Los tres primeros para el propietario, los tres segundos para los miembros del grupo (el administrador divide a los usuarios en grupos) y los tres últimos para el resto. • Los tres bits se conocen como bits rwx. • r: Especifica el acceso para lectura del archivo • w: Especifica el acceso para escritura del archivo. • x: Especifíca el acceso para ejecución. • El código rwxr-x--x indica para: • Dueño del archivo: Permiso de lectura, escritura y ejecución. • Miembros del grupo: Permiso para lectura y ejecución. • Resto: Sólo permiso de ejecución. Montaje de sistemas de archivos • Es posible conectar y acceder a sistemas de archivos el sistema de directorios principal (discos flexbles, CDRoms) mediante la llamada mount (fig14cap1). • Esta llamada permite conectar el sistema de archivos externo a cualquier directorio del sistema de archivos principal. Los directorios receptores de sistemas de archivos deben estar vacíos. Archivos especiales • Los archivos especiales se utilizan para simular dispositivos de E/S. De esta forma estos dispositivos pueden ser manejados como archivos. • Con la abstracción anterior los dispositivos de E/S pueden leerse y escribirse usando las mismas llamadas al sistema que para los archivos tradicionales. • Existen archivos especiales por bloques y archivos especiales por caractéres. • Archivos especiales por bloques: Se usan para modelar dispositivos que contienen a un conjunto de bloques directamente direccionables. • Archivos especiales por caracteres: Se usan para modelar dispositivos que aceptan o producen flujos de caracteres (módems, impresoras, etc). Conductos o Pipes • Los conductos son seudoarchivos que sirven para comunicar dos procesos (fig15cap1). • Si un proceso A desea enviar datos a un proceso B, el proceso A escribe en el conducto como si fuera un archivo de salida. El proceso B puede leer los datos como si fuera un archivo de entrada. 1.3.4 El interprete de comandos • El interprete de comandos o shell es un proceso que se ejecuta sobre el nivel de SO por lo que no pertenece al SO mismo. • El shell es una interface entre el usuario y su terminal con el SO. • Cuando se inicia una sesión el sistema inicia un shell. • El proceso interprete de comandos tiene como entrada y salida estandar el terminal. • El shell exhibe la indicación (prompt) que indica al usuario que está listo para recibir comandos. • Si el usuario teclea una orden o comando, el shell crea un proceso hijo que ejecuta el programa del comando. Cuando el proceso hijo se termina, el shell exhibe nuevamente el prompt para indicar que espera nuevos comandos. • Redireccionamientos • Se utilizan para cambiar el archivo de entrada o salida estándar de un proceso. • Ejemplos: ls -la > archivo, sort <archivo1 >archivo2 • Pipes • • Ejecución de programas en segundo plano(background) • Cuando se ejecuta un programa en segundo plano el Sistema Operativo no espera que termine sino que devuelve el control al interprete de comandos que exhibe de inmediato el prompt. • Cat archiv1 archiv2 archiv 3 | sort > /dev/lp & Cat archiv1 archiv2 archiv 3 | sort > /dev/lp