HISTORIA DEL UNIX UNIX es un sistema operativo, esto es, un programa que está presente en la memoria del computador para simplificar la interacción del programa que queremos ejecutar y el equipo sea este equipo terminales, impresoras, medios magnéticos o algún mecanismo de conectividad como lo son Ias redes locales, la Internet o un simple módem. Transcurría el año de 1968 y Ken Thompson junto a algunos compañeros trabajaban en el Computer Research Group en los laboratorios Bell (parte de AT&T) en un proyecto llamado Multics. Este era un sistema operativo muy ambicioso que no satisfacía a nadie por lo lento que era. Ken Thornpson y Dennis Ritchie en esa época querían tener la cornodidad que ofrecía Multics pero estaban más interesados en lo que se llamaba en la época el Timesharing de Multics que estaba más orientado a procesos batch. Solicitaron un equipo para desarrollar un Multics más orientado a Timesharing pero les fue denegado. Usaron entonces un PDP-7 (de Digital Equipment Corporation) prestado y desarrollaron los rudimentos de lo que es hoy UNIX. Sólo que lo llamaron UNICS a manera de chiste. El nombre se derivo a UNlX y pegó. El PDP-7 podía servir a dos usuarios simultáneamente. Aunque interesante no era suficiente por lo que Thompson solicito una vez más un equipo pero esta vez algo más modesto en precio, un PDP-1 1/20. El objetivo era crear un sistema de procesamiento de textos. El primer usuario oficial de este sistema UNIX fue la oficina de patentes de Ios Laboratorios Bell. MULTICS había sido desarrollado en un lenguaje de alto nivel llamado PL/1 y esto día la idea a Thompson y Ritchie de buscar un lenguaje en el cual reescribir UNIX. Luego de varios intentos Ritchie creo C, y en 1973 UNIX es desarrollado por primera vez en un lenguaje que permitiría transportarlo a otros computadores diferentes al PDP-1I. En ese momento habían 25 sistemas UNIX en los Laboratorios Bell. Algunas universidades mostraron interés en UNIX. La primera universidad en usar UNIX fue Columbia University en Nueva York. El PDP-11 era una maquina muy popular en la época, en especial, en las universidades. Si bien Digital ofrecía su propio sistema operativo con el PDP-11 UNIX fue desplazándolo. UNIX no tenia un servicio de apoyo al usuario pero tenia dos características muy atractivas. Era muy simple y sé tenia acceso al programa fuente. Esto es muy parecido a lo que ofrece LINUX hoy en día. DEFINICION UNIX es un sistema de tiempo compartido. Se caracteriza por ser un sistema multiusuario porque permite que dos o más personas utilizan la computadora al mismo tiempo. Al igual que otros sistemas operativos, El sistema operativo UNIX son un conjunto de programas de utilidad y un conjunto de instrumentos que permiten al usuario conectar y utilizar estas utilidades para construir sistemas y aplicaciones. El conjunto de programas que componen UNlX y que se encargan de proporcionar los recursos del sistema y de coordinar todos los detalles internos de la computadora se les llama en conjunto SISTEMA OPERATIVO o KERNEL. ESTRUCTURA DE UN SISTEMA UNIX UNIX al igual que otro sistemas están conformado por hardware y software. Dentro del hardware se encuentran los siguientes componentes. 1 ) La Unidad de Procesamiento; Dentro de esta unidad se encuentran: - Unidad Central de Procesamiento(CPU) - Memoria de Acceso Aleatorio (RAM) - Dispositivo de E/S; - En cuanto al software: 2 ) El Kernel; este es el componente principal del sistema operativo. Se encarga de asignar tareas y manejar eI almacenamiento de datos. El Kernel (núcleo), coordina y controla las actividades de la computadora. Cuando se arranca el sistema este se carga en memoria y permanece allí hasta que se apague Ia computadora. Actúa como capa de protección del hardware. Sirve de intermediario entre los programas y el hardware a través de las llamadas al sistema indicándole al Kernel que lleve a cabo la tarea adecuada. 3) El Shell; esta es la utilidad que procesa las peticiones de los usuarios, es decir, proporciona la interfaz entre el usuario y el Kernel; el usuario emite comandos, los cuales son traducidos por el Shell en Llamadas al sistema para el Kernel, la información devuelta por este ultimo es presentada en la pantalla por el Shell de manera comprensible por el usuario. El Shell puede soportar múltiples usuarios, múltiples tareas, y Múltiples interfaces para sí mismo. Debido a que los usuarios diferentes pueden usar diferentes Shell al mismo tiempo, entonces el sistema puede aparecer diferente para usuarios diferentes. IMAGE 1 CARACTERISTICAS DE UN UNIX CAPACIDAD DE MULTITAREA UNIX puede ejecutar varias tareas a la vez para cada usuario; esta capacidad es conocida también como multiprogramación. La computadora parece (o simula) destinar todo su tiempo a cada tarea, aunque en realidad solo pasa algunas fracciones de segundos atendiendo cualquiera de sus tareas, y mientras que esta realiza cualquier otra operación (como las de E/S) traslada su atención a otra. VARIAS FORMAS DE MULTITAREAS ESTAN DISPONIBLES: ·CAPACIDAD DE VENTANA: permite dividir el área de pantalla para presentar una actividad distinta en cada espacio. ·PROCESAMIENTO EN SEGUNDO PLANO: recibe su parte de la atención de la computadora, tales como dar formato a un disco y ordenar un archivo de datos liberando el teclado para llevar a cabo otras tareas. INTERCAMBIO DE TAREAS: empleada una variación de UNIX, como LINUX, en su PC, usted iniciar varias tareas y luego presionar una combinación de teclas para moverse entre ellas. CAPACIDAD DE MULTIUSUARIO: Dependiendo del equipo disponible, UNIX puede soportar desde uno hasta más de 100 usuaríos, ejecutando cada uno de ellos un conjunto diferente de programas. los sistemas multíusuarios como UNIX ofrecen varías ventajas: l. Bajo costo por usuario: Solo requiere el uso de una terminal sencilla conectada a una computadora o puede emplearse un computador personal puesto que UNIX también esta disponible para PC. 2. Administración central: si UNIX se emplea en un sistema de red se puede destinar a un solo usuario para que se encargue de controlar el sistema (tareas de rutinas como respaldo y mantenimiento) 3. Recursos compartidos: los usuarios pueden interactuar entre ellos intercambiando mensajes de correo electrónico y datos así como compartir recursos: impresoras, unidades de disco, modems, fax. CAPACIDAD DE MULTIPROCESO: UNIX puede trabajar con múltiples procesadores a la vez, pero debe tomar en cuenta varios factores al momento de extender él numero de procesadores tales como la arquitectura del hardware, el software de aplicación y el sistema operativo mismo. INDEPENDENCIA DE DISPOSITIVOS: Los dispositivos proporcionan un mecanismo de entrada/salida o almacenamiento conectado a la primera computadora. UNIX trata a los dispositivos como tipos especiales de archivos y les da nombres, por lo tanto se pueden utilizar un nombre de dispositivo en cualquier lugar en donde puede usarse un nombre de archivo. HERRAMIENTAS: para dar soluciones a diversos problemas UNIX emplea un enfoque de herramientas que mejora la situación que cada programa intenta llevar a cabo todas sus tareas; entre estas herramientas se encuentra la canalización (PIPF) la cual permite el flujo de datos de unos programas a otro. ADMINISTRACION DE RECURSOS ADMINISTRACION DE PROCESOS Los procesos son entidades activas, cada uno de estos tiene un contador de programa, el cual mantiene un registro de la siguiente instrucción por ejecutar. Como UNIX es un sistema de multiprogramación, cada usuario puede tener varios procesos activos a la vez, pero si el sistema posee un solo usuario, de igual manera se ejecutan docenas de procesos en segundo plano o asíncrona (llamados demonios) aun cuando eI usuario este ausente. Estos se inician de forma automática cuando arranca el sistema. Un demonio cron despierta una vez cada minuto para verificar si existe trabajo para él. Si existe hace el trabajo después se duerme hasta que es tiempo de la siguiente verificación. IMAGE 2 COMPONENTES DE LA PLANIFICACION DE LA CPU El espacio de direcciones virtuales de un proceso de usuario está dividido en segmenta de texto, datos y pila. Los datos y las segmentos de pilas siempre se encuentran en el mismo espacio de direcciones, pero pueden crecer independientemente. El segmento de texto se encuentra en un espacio de direcciones distintas del de datos y la pila y usualmente es de solo lectura. Todos los procesos con textos compartidos tal que su estructura de proceso con una estructura de texto, la cual contiene un número de procesos que están utilizando el segmento de texto, además un apuntador a una lista de sus estructuras de procesos y donde pueden encontrarse, en le disco, la tabla de paginas para el segmento de texto cuando se intercambie. Reside en memoria principal. La información sobre el proceso que únicamente se necesita mientras el proceso reside en memoria se conserva en la estructura de usuario y no en la de proceso. Cada proceso tiene una clase de usuario y una de sistema. La mayor parte del trabajo que realiza el proceso de usuario, pero cuando se emite una llamada al sistema es el proceso de sistema que la efectúa. Nunca se ejecutan al mismo tiempo las fases de usuario y de sistema de un proceso. El proceso del sistema cuenta con una pila distinta de la que utiliza el proceso de usuario. La pila del núcleo correspondiente al proceso se encuentra inmediatamente después de la estructura de usuario. Juntos la pila del núcleo y la estructura de usuario integran el segmento de datos del sistema para el proceso. PLANIFICACION DE LA CPU · Está diseñada para beneficiar a los procesos interactivos. A cada proceso se le asigna una pequeña fracción de tiempo de la CPU, utilizando el algoritmo por prioridades que se reduce a una planificación circular en el caso de trabajas limitados por la CPU. · A cada proceso se le asocia una prioridad de planificación; los números más grandes indican una prioridad menor. Los procesos que realizar E/S de disco u otras tareas importantes tienen prioridades negativas y no pueden ser canceladas por señales. Los procesos ordinarios de los usuarios tienen prioridades positivas, y por tanto, poseen menor probabilidad de ejecución que cualquier proceso de sistema, aunque es posible especificar una precedencia. · Cuanto más tiempo de la CPU acumula un proceso, más baja (positiva) se vuelve su prioridad y viceversa, por lo que se presenta realimentación negativa en la planificación de la CPU y es difícil que un solo proceso ocupe todo el tiempo de la CPU. Para evitar las postergaciones indefinidas se emplea el envejecimiento de procesos. · La experiencia índica que el planificador de UNIX se comporta mejor en presencia de trabajo limitados por E/S, lo que puede observarse cuando se ejecutan varios trabajos de este tipo, como formadores de texto intérpretes de lenguajes. IMAGE 3 Los sistemas UNIX utilizaban los intercambios para manejar la competencia entre procesos por la memoria. El intercambio se basaba primeramente en intercambiar los procesos para que haya memoria disponible suficientemente, para aquellos procesos que necesiten ese espacio de memoria, por eso si existen más procesos de los que se podían mantener dentro de la memoria algunos de ellos se intercambian al disco, de tal manera que un proceso se encontraban dentro de la memoria o dentro del disco. Este movimiento entre la memoria y le disco se administraban por medio del INTERCAMBIADOR, el cual toma las decisiones respecto a los procesos que entran o salen en los intercambios. Estas decisiones se refieren con frecuencia a que se necesitaban eliminar otro proceso para disponer de espacio para el primero, por lo que el intercambiador tenia como función decidir que es mejor eliminar un proceso que no se puede ejecutar en vez de uno que sí se pueda. Cada pocos segundos, el intercambíador examinaba la lista de procesos intercarnbiados para ver si alguno de ellos estaba listo para su ejecución. En caso de existiera alguno, se seleccionaba aquel que hubiese permanecido en el disco durante mucho tiempo. Luego, el intercambiador verifica si el iniercanbio seria fácil o difícil. Por lo que un intercambio fácil, era aquel en el que existiera la suficiente memoria libre, y por lo tanto no había necesidad de Eliminar un proceso para liberar espacio en memoria para el nuevo proceso, y si por el contrario determinaba que el intercambio difícil necesitaba la eliminación de uno o más procesos y después traer a la memoria el proceso deseado. Muchos sistemas UNIX aun emplean el esquema de intercambios, para administración de contiendas. ADMINISTRACIÓN DE E/S: La E/S en UNIX se implanta mediante una colección de manejadores de dispositivos, por lo general hay un manejador para cada dispositivo. Estos manejadores se enlazan con el sistema operativo cuando se genera el núcleo y no se puede añadir o eliminar después de esto. El sistema de E/S se divide en dos componentes principales: a) manejo de los dispositivos especiales de bloque y el manejo de los archivos especiales de carácter. El objetivo de la parte del sistema que realiza la E/S en los archivos especiales de bloque (es decir, los discos) es minimizar el número de transferencias reales por realizar. Por esto, los sistemas UNIX cuentan con un buffer caché entre los manejadores del disco y el sistema de archivos. El buffer caché es una tabla en el núcleo, la cual contiene docenas o tal vez centenas de los bloques de uso recientes. Cuando se necesita un bloque de disco con cierto propósito (nodo-i, directorio o disco), primero se verifica si se encuentra en el buffer caché, en tal caso, se toma de ahí y se evita un acceso al disco. Si el bloque no está en el buffer caché, se lee del disco al buffer y se le copia de ahí cuando sea necesario. Puesto que es buffer caché tiene espacio sólo para un número fijo de bloques, se necesita cierto algoritmo para manejarla. El buffer caché funciona para la escritura y la lectura. Cuando un programa escribe un bloque, se dirige hacia él caché, no hacia el disco. Puesto que los archivos especiales de carácter trabajan con flujos de caracteres y no desplazan bloques de información entre la memoria y el disco, estos no utilizan el buffer caché. En vez de esto utilizan estructuras de datos llamadas listas-C. Cada lista-C de un bloque de hasta 64 caracteres, más un contador y un apuntador al siguiente bloque. Al llegar los caracteres de las terminales y otros dispositivos de carácter, estos se almacenan en una cadena de dichos bloques. SEGURIDAD EN LOS SISTEMAS UNIX El sistema operativo UNIX está diseñado para ser accesible. Y fomentar la interacción de personas a través del sistema de cómputo. , Lo cual hace más difícil mantener la seguridad del sistema. El archivo de contraseña del UNIX se almacena en forma cifrada Para poder tener acceso al sistema, El administrador (persona responsable) debe proporcionar a cada usuario un identificador (login) de entrada y una palabra para accesar el sistema (password) que serán el indicativo de su número de cuenta. 1 ) Los usuarios a menudo especifican contraseñas fáciles de adivinar. 2) Muchas veces el sistema impide al usuario volver a la contraseña antigua durante una semana de modo que el usuario no pueda fortalecer una contraseña débil, 3) Los usuarios si pueden conmutar entre solo dos contraseñas cada semana. GUSANOS Y VIRUS: La mayoría de los sistemas operativos ofrecen un medio para que los procesos generen otros. Un gusano es un proceso que utiliza este mecanismo para hostigar el rendimiento del sistema. Los gusanos son especialmente potentes en las redes de computadoras. Un virus es similar a un gusano, pero la principal diferencia es que un virus no es un programa completo, sino un pedazo de código unido a otro programa que se activa con un evento específico (por ejemplo la ejecución de un programa en una fecha determinada tanto los gusanos como los virus pueden ser malévolos; es frecuente; que eliminen archivos o borren discos. LAS REDES EN UNIX La necesidad de compartir recursos e información en las grandes empresas obligó a los investigadores de sistemas a desarrollar conceptos de transferencia de datos. Hoy podemos casi captar casi sin pestañear que una computadora se comunica con otra a cualquier parte del mundo, e incluso fuera de él. Para lograr esta comunicación es necesario que los puntos a enlazar tengan un determinador, lenguajes y medios afines. Es en este momento cuando se habla de topología y protocolos. Topología es el medio físico por donde se encuentran los datos y que incluyen máquinas, tarjetas, cables, etc. Un protocolo es una serie de reglas cumplidas por dos entidades que tratan de lograr algo en común. En una red de protocolos se encuentran unidos una arriba de otro de tal manera que al trasmitir o recibir un mensaje, estos pasan de arriba hacia abajo hasta llegar al protocolo o convención más sencillo. El destinatario del mensaje, al tener por su parte una correspondencia con algunas de esos protocolos toma el mensaje y lo canaliza hacia arriba de la pila, hacia llegar a la aplicación y por ende al usuario. Actualmente sólo es posible la comunicación a través de los niveles de protocolo más bajos el gran reto es lograr que la comunicación entre en protocolos sea en los niveles altos. Un ejemplo de E/S lo constituye las redes, iniciadas por UNIX de Berkeley y cuyo diseño Central fue el enchufe. La posición de los enchufes es: Cada enchufe soporta un tipo particular de red, el cual se determina a(crear el enchufe. Los tipos más comunes son: 1) Orientada a conexiones por flujo confiable de bytes. 2) Orientada a conexiones por Flujo confiable de paquetes. 3) Transmisión no confiables de paquetes.