Operating Systems User Interfaces M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009 Outline • CLI (Command Line Interface) – DOS Basic Commands – Windows NT Basic Commands – *X Systems • Graphical User Interfaces – Basic Operation of Wndows Systems at Windows, *X and MAC-OS • New Trends in User Interface of Operating Systems Objective • The student will know and apply basic commands in diferent OS. • The student will know the Basic Concepts about Graphical User Interfaces and the trends in user interfaces. DOS • DOS (Disk Operating System, Sistema Operativo de Disco) fue el primer sistema operativo para las IBM-PC. • Desarrollado por la compañía Microsoft en 1981 se vendía junto con la computadora personal de IBM, recibiendo IBM las regalías. • Es un sistema operativo compacto con muchas limitaciones actualmente, pero funcional. DOS • Es un sistema operativo monotarea, multiusuario capaz de ejecutarse a través de un disco flexible (recordar que las primeras PCs no tenían disco duro) • Es un sistema operativo basado en línea de comandos, por lo que el usuario para poder trabajar con la máquina ocupa saber comandos. DOS • El sistema operativo cuenta con comandos que son reconocidos como válidos los cuales se pueden encontrar en el proceso principal o en utilerías. • Cualquier programa tiene que acceder al sistema operativo para el manejo de los recursos, pero DOS es muy tolerante en el acceso al hardware DOS • La administración de procesos es simple, dado que sólo existe una tarea activa. • El sistema puede manejar interrupciones y ejecutar otra tarea. • Los procesos pueden ser .com o .exe, donde los primeros sólo ocupan un segmento. DOS • La memoria está administrada a través de un esquema de segmentación. Cada segmento tiene un tamaño de 64 KB. El sistema operativo sólo puede acceder a 640 KB. • El microprocesador 8086 puede direccionar hata un MB de memoria RAM por lo que queda una zona de memoria alta entre 640 KB y 1 MB llamada memoria alta. DOS • El sistema no puede acceder a más de 1 MB de RAM, por lo que se encuentra limitado en el número de programas que se mantiene en memoria. • A la memoria entre un 640 KB y 1 MB se le llama memoria expandida, después del 1 MB y superior se le llama memoria extendida. Esta limitante motivo el surgimiento de Windows. DOS • La administración de Entrada/Salida (Periféricos) es sencilla ya que no hay compartición de los mismos. Cada programa necesita instalar el controlador del dispositivo para que pueda trabajar de forma eficiente. • La administración de archivos se basa en un esquema jerárquico tipo árbol, en donde la raíz corresponda cada letra de una unidad de almacenamiento. DOS • Los archivos deben tener un nombre máximo de 8 caracteres seguidos de una extensión de máximo tres caracteres. • Las nuevas versiones de DOS permiten nombres de archivos más grande. • Los directorios permiten administrar de forma eficiente los archivos. Los directorios son contenedores de archivos. DOS • Al encender la computadora, el DOS carga dos archivos fundamentales: autoexec.bat y config.sys • Autoexec.bat es un archivo por lotes que contiene algunos comandos para inicializar el sistema. Config.sys es un archivo que permite cargar dispositivos al sistema y otras configuraciones. • Los archivos con extensión .sys esenciales para el sistema operativo. son DOS • El sistema de archivos que se maneja es FAT • El sistema operativo es muy pequeño, ya casi no se utiliza y su uso ha estado limitado por el crecimiento de Windows, pero la esencia básica no ha muerto. • La computación ha cambiado radicalmente en los últimos años que DOS ya no es funcional para las necesidades actuales de los usuarios. Comandos internos • Son aquellos que se cargan en memoria por lo que no se necesita el disco para poder ejecutarlo. • Se encuentran en el programa command. Com o en nuevas versiones de Windows en cmd.exe • Los comandos internos están presentes en cualquier versión de DOS aunque pueden tener diferencias como en PC-DOS, DRDOS, FreeDOS, etc. Comandos internos • Los comandos internos proveen funcionalidad básica del sistema. la • Los comandos externos son aquellos que se encuentran fuera del proceso command.com, necesitan del programa especificado para poder funcionar. En muchas ocasiones se les considera como utilerías. Comandos internos • Ejemplos de comandos internos son: • DATE: cambia la fecha del sistema operativo, muy útil en sistemas antiguos que no tenían un reloj físico. • El comando HELP muestra la ayuda del sistema, en general permite ver la sintaxis detallada y ejemplo de uso del sistema. Comandos internos • Si se escribe mal el nombre de un comando, el sistema operativo marca error indicando que no existe el archivo o comando especificado. • Otra forma de obtener ayuda de los coamndos del sistema es a través del parámetro /? • Los parámetros de los comandos se Comandos internos • TYPE: permite visualizar un archivo en pantalla. • CHDIR: Muestra la ruta del directorio actual de trabajo. • CLS: limpia pantalla. • Time: permite cambiar la hora del sistema Comandos internos • VOL: muestra información sobre una unidad de almacenamiento del sistema. • Los archivos .bat son archivos de texto que contienen instrucciones ejecutables (comandos del sistema) que pueden ejecutarse de manera no interactiva. Permiten realizar muchas actividades tediosas del sistema. Comandos internos • Otros ejemplos de comandos internos: copy, atrib, prompt, set, echo • Ejemplos de comandos externos son: append, asign, backup, chkdsk, comp, diskcomp, discopy, fdisk, find. Diferencia entre archivos y directorios • La diferencia fundanmental entre un archivo y un directorio es en cuestión semántica. Los directorios no pueden ser procesados para almacenamiento de datos de programa sólo contienen archivos. • En la estructura jerárquica del sistema de archivos, los directorios son todos aquellos que no se encuentran hasta el final. Diferencia entre archivos y directorios • El comando tree permite visualizar en forma jerárquica los directorios y los archivos que contiene cierta ruta. • Aunque básicamente se realizan las mismas operaciones, los comandos son distintos para archivos como directorios. Presentación de contenido de directorio • Para visualizar el contenido de un directorio se utiliza el comando DIR • DIR permite visualizar el contenido de diversas formas, por ejemplo el parámetro /p hace una pausa al visualizar el archivo. La opción /w los muestra en columnas. La opción /a muestra todos los archivos Presentación de contenidos de un directorio • En general los directorios aunque estén vacíos presentan dos archivos: el “.”, y el “..”, los cuales hacen referencia al directorio actual y al padre respectivamente. • Se puede distinguir un directorio de un archivo por que los directorios tienen la palabra <dir> y los archivos muestran su tamaño en bytes al desplegar su contenido. Cambio de directorio • Para cambiar de directorio se ocupa el comando CD. El cual si es un nombre válido podemos visualizar su contenido. • Mientras se este en un directorio, dicho directorio no puede borrase se necesita retroceder una posición actual, esto puede hacerse a través del comando cd .. Creación de directorio • El comando MD o MKDIR permite crear nuevos directorios. • Al crear un directorio sencillamente se crea un contenedor de archivos, muchos programas utilizan directorios para organizar eficiente la información. • Hasta que se crea un directorio, se pueden subir archivos a él. Eliminación de directorio • Para borrar un directorio se utiliza la instrucción RMDIR o RD. • El directorio debe estar vacío de lo contrario no se podrá borrar (se pueden utilizar la opción /s para borrar todo el árbol). • Con la combinación de teclas F3 y arriba/abajo se pueden obtener los comandos anteriores o con F1 se obtienen letra por letra Cambio de unidades • Las unidades son el punto raíz del sistema de archivo. Una unidad representa generalmente un dispositivo de almacenamiento como una unidad flexible (A: B:), disco duro (C:, D: y otras letras si existen particione su otros discos duros), discos ópticomos como CD, DVD (D:, E:) y otras unidades como Discos ZIP, memorias USB, etc. • Para cambiar de directorio simplemente se pone la unidad seguido de dos puntos. Manejo de rutas para archivos • El manejo de rutas es muy importante ya que determinan la ubicación de todos los recursos de la máquina. • Las rutas pueden ser relativas en base a donde se encuentra actualmente el usuario, o absolutas la cual indica la forma de acceder a X recurso desde cualquier parte. • Las rutas absolutas se escriben completas, por ejemplo: c:\datos\archivo.txt Uso de extensiones • Las extensiones permiten indicarle a las aplicaciones de que archivos se trata, en la mayoría de los casos son más útiles al usuario que a el sistema operativo • Los comandos se pueden abortar con la combinación de teclas Ctrl+C. La máquina se puede reiniciar con Ctrl+Alt+Supr Uso de comodines • Los comodines sirven para simplificar el proceso de manejo de archivos y rutas de directorio en el sistema. • Los comodines son expresiones regulares que permiten acotar cadenas de texto • El comodín * puede ser utilizado para sustituir de 0 a n caracteres en el nombre de un archivo. Uso de comodines • El comodín ? Sustituye un carácter. • Por ejemplo: • DIR f*.doc, muestra todos los archivos cuyo nombre comience con f seguido de cualquier carácter. Creación de archivos • Los archivos se crean a través de cualquier aplicación. Por ejemplo, se pueden crear archivos de texto plano con la utilería edit del sistema, crear un programa en C con un compilador como Turbo C, un dibujo en CorelDraw, etc. • Como el manejo de archivos puede ser díficil a través de comandos existen interfaces más agradables como el dosshell o el Peter Norton commander. Comando format • Es un comando externo que nos permite darle formato a una unidad o volumen. • Dar formato consiste en preparar un disco para que acepte el sistema de archivos del sistema operativo. • Si no se le da formato a un disco simplemente no se puede guardar la información. Comando format • Una vez que un disco tiene formato ya no se tiene que volverle a dar formato. • Se pueden asignar diferentes capacidades de formatos así como si se quiere tener un disco de arranque del sistema con el comando sys a: • Se puede utilizar el ratón en sistemas modo texto ocupando un controlador especial. Copia de archivos • La copia de archivos se hace a través de copy, se tiene que indicar el archivo o ruta origen y la ruta destino. Se pueden utilizar comodines para simplificar el proceso. • Existen utilerías que simplifican el proceso de copiado como diskcopy, que copia información de un disco a otro. Windows • Windows es un sistema operativo con interfaz gráfica de usuario. Se basa en una metáfora con los escritorios de la oficina. • Las primeras versiones eran realmente una interfaz gráfica para D.O.S. • Trae muchas mejoras en relación con su antecesor. Características • Las primeras versiones fueron de 16 bits, actualmente es un sistema operativo de 32 bits llegando a las nuevas versiones de 64 bits. • Es un sistema fácil de usar y aprender, multitarea, sin límites tan marcados de memoria (rompe la barrera de los 640 KB), multiusuario. Características • Se ha portado a infinidad de dispositivos como los móviles y empotrados (Windows Mobile y Windows CE) • Es un sistema operativo modular que tiene un microkernel (kernel.exe, kernel.dll). Posee una capa de abstracción con el hardware (HAL). Tiene otros servicios como la interfaz de usuario (user.exe, user.dll), el manejo de gráficos (gdi.exe), implementa el manejo de archivos (Explorer.exe) entre otros. Historia • Microsoft anuncia "Windows“ (1983), una interface gráfica para la IBM PC, aunque fue lanzada hasta 1985. Tiene ventanas que puede superponerse y cambiar de tamaño Historia • En agosto Microsoft lanza finalmente la primera versión de Windows, aunque en esta versión las ventanas no se pueden traslapar, y las ventanas no pueden superponerse encima de la barra de menús superior. Historia 1987 Microsoft lanza la segunda versión de Windows (2.03) en 1987, la cual ya se pueden cambiar de tamaño las ventanas, sobreponer ventanas y se agregaron algunos controles nuevos sobre las ventanas. Windows 3.0 1990 Microsoft lanza en mayo de 1990 Windows 3.0 al cual se le agregó un manejador de programas. Windows NT 1993 Microsoft lanza en mayo de 1994 la primera versión de Windows NT, su sistema operativo de 32 bits. Este sistema fué nombrado como Windows 3.51 y estaba disponible para arquitecturas Intel, Power PC, Alpha y MIPS. Windows 95 1995 Microsoft saca Windows 95 el 24 de agosto de 1995. Windows NT 4.0 1996 Microsoft saca en 1996 Windows NT 4.0 con la misma interface que Windows 95. Windows 98 1998 El 25 de junio de 1998 Microsoft saca al mercado Windows 98, el cual incluye el Internet Explorer. Windows 2000 2000 El 17 de febrero de 2000, Microsoft lanza Windows 2000. Windows XP 2001 El 25 de octubre de 1991 Microsoft saca al mercado Windows XP. Windows Server 2003 2003 El 24 de abril de 2003, Microsoft libera Windows Server 2003. Windows Vista • Aparece el 30 noviembre de 2006. Es un sistema con seguridad mejorada, soporte nativo a otras arquitecturas, elementos gráficos sorprendentes. Windows Server 2008 Futuro • Windows Seven. • Windows CE 6.0 (Windows Mobile Photon) • No hay nada seguro de las futuras versiones de Windows aunque probablemente saquen jugo a los procesadores de múltiples núcleo, las memorias FlashROM, la virtualización, entre otras interesantes tecnologías. El escritorio • Es la parte fundamental de la interfaz, sirve de punto de encuentro entre la computadora y el usuario. • Todas las actividades de Windows se desarrollan sobre el escritorio. En él se encuentran las aplicaciones, archivos y demás recursos de las computadoras. A nivel de implementación es una carpeta que contiene diversos elementos (C:\Documents Escritorio Típico El concepto de escritorio (desktop) viene de la analogía con un escritorio. Por default viene vacío, pero poco a poco se le van colocando objetos, y se pueden agregar miles de objetos y con miles de configuraciones. Algunos escritorios tienen un vidrio transparentes, en el cual se pueden colocar imágenes de fondo. Un escritorio típico tiene: Teléfono, reloj, papel, lápiz, bandeja de entrada y salida de documentos. Herramientas Posteriormente se le pueden agregar marcadores, hojas para recados, papel para graficar, formatos, etc. Documentos Con estas herramientas se puede empezar a trabajar en varios documentos a la vez Accesorios En este escritorio se pueden poner revistas y mapas disponibles para que el usuario pueda consultarlos. Suscripciones y Personalización Si tiene suscripción a algún medio de información, como el periódico, será parte del escritorio. También se pueden agregar objetos decorativos, como un peluche, que personalizan mi área de trabajo. Juegos El escritorio también puede servir como base para poder jugar en él, como por ejemplo un juego de cartas (Solitario). Almacenamiento Temporalmente, el escritorio puede servir como un medio de almacenamiento. Copias Si se agregan accesorios, se pueden hacer copias de documentos. Almacenar y Ordenar Se agrega otro accesorio (cajón) para almacenar y ordenar información que no necesitamos en el escritorio. Bote de Basura Por último se agrega un bote de basura donde tiramos las cosas que no nos sirven, con la opción de que mientras no pase el carro de la basura, podemos extraer lo que tiramos al bote de la basura. Escritorio • Todos los elementos anteriores nos dan como resultado la interface gráfica basada en el escritorio que conocemos hoy en día. 2005 Las ventanas • Es el elemento principal de la interfaz de usuario. Son componentes en la mayoría de los casos rectangulares en los cuales se generan todas las actividades del sistema. • Las ventanas sirven de interfaz de E/S entre los usuarios y las aplicaciones. Las ventanas comparten las mismas características. Los servicios del sistema no poseen ventanas asociadas a ellos. Las ventanas Los iconos y sus tipos • Son elementos visuales que representan una acción para el usuario. • Suelen encontrarse por toda la interfaz del sistema operativo, desde e Escritorio hasta las ventanas de aplicaciones. • Generalmente se tiene dos tipos de íconos: los de acceso directo (asocian un ícono a una aplicación o archivo de manera rápida) y los íconos de acción. Barra de tareas • Aparecida con Windows 95, la barra de menús se ha convertido en todo un estándar en el diseño de interfaces gráficas de usuario, a tla punto que sistemas como Linux, Unix y hasta Mac OS la han imitado. • Se encuentra generalmente en la parte inferior de la pantalla, aunque se puede encontrar en otras partes (izquierda, derecha, arriba) Barra de tareas • Dicha barra contiene las aplicaciones que se están ejecutando en ese momento por lo que la conmutación de tareas es muy rápida. • Tambien contiene del lado izquierdo el botón inicio y del lado derecho cuenta con algunos íconos de acceso a recursos de hardware que se están monitorizando. Barra de tareas Botón de inicio Botones de aplicaciones Opciones de Teclado Tray Reloj Menú inicio • El menú inicio permite centralizar las aplicaciones para encontrarlas de manera más fácil e intuitiva. • Este menú se compone de accesos rápidos a las principales aplicaciones y a las aplicaciones utilizadas recientemente. • Permite simplificar la mayoría de las tareas de manera rápida y sencilla. Manejo de ventanas 6.3.1 Áreas de una ventana 6.3.2 Como mover una ventana 6.3.3 Como cambiar el tamaño de una ventana 6.3.4 Maximizar, Minimizar y restaurar Áreas de una ventana • Los componentes de un ventana son: • El área de contenido, la cual es la más grande y es en donde se realizan las diversas acciones. • El área de título, donde se tiene el título de la aplicación, los botones de maximizar, minimizar y restaurar. Áreas de una ventana • El área de menús donde se tienen las opciones del sistema. • El área de barra de herramientas con opciones rápidas. • El área de la barra de estado, en donde se muestra información relevante al área de estudio. Áreas de una ventana • Existen dos tipos de ventanas aquellas que pueden tener anidadas dentro de ellas otras ventanas (MDI, Multiple Document Interface) y aquellas que sólo pueden tener una ventana anidada. • Cuando se tienen varias ventanas, cada una de ellas puede manejar cierta funcionalidad y se pueden manipular de manera individual, aunque si se cierra la ventana padre, las hijas también se cierran. Áreas de una ventana Botón minimizar: Envía la ventana a la barra de tareas en forma de botón liberando así espacio en el escritorio Botón cerrar: Botón maximizar: Aumenta de tamaño la ventana activa hasta ocupar la totalidad del escritorio Cierra la ventana, como en Windows cada programa es una ventana, al cerrar ésta, también se cierra la aplicación Como mover una ventana • Para mover una ventana, esta no debe de estar maximizada, si se utiliza el ratón, se debe posicionar el puntero en la barra del título y hacer drag & drop (arrastrar y soltar, se explica más adelante). • Al mover las ventanas se redibujan. Las ventanas pueden traslaparse (modo cascada) o bien pueden organizarse de tal forma de que se puedan ver todas las ventanas en pantalla (modo mosaico). Como cambiar el tamaño de una ventana • La ventana no debe de estar maximizada para poderle cambiar el tamaño. Se posiciona el puntero del ratón sobre los bordes de la ventana (esquinas de la ventana). La forma del puntero debe cambiar a flechas dobles de tal forma que se pueda mover hacia los lados y aumentar o disminuir su tamaño. Maximizar, Minimizar y restaurar • Maximizar consiste en poner una ventana en tamaño completo, que generalmente ocupa toda el área visible de trabajo. • Minimizar consiste en poner la ventana en modo no visible, es decir, pasa a formar parte de la barra de tareas. Al minimizar una ventana la ventana anterior pasa a formar parte del área de trabajo. Maximizar, Minimizar y restaurar • Restaurar consiste en regresar una ventana a su tamaño anterior o tamaño original. En ocasiones es una versión intermedia entre una ventana maximizada y una ventana minimizada. • Las ventanas pueden clasificarse en activas y pasivas. Sólo existe una ventana activa y es aquella que la barra de títulos está marcada en color activo. Las ventanas activas tienen el foco de la aplicación y tienen prioridad de Manejo del mouse • Windows es un sistema operativo manejado por eventos. • Un eventos es cualquier acción que ocurre en el sistema como presionar una tecla, hacer clic con el ratón, la instalación de una aplicación, etc. • Estos eventos son manejados por el sistema de manera transparente tanto para usuarios Manejo del mouse • Las interfaces gráficas de usuario requieren de mecanismos para señalizar los recursos. • El ratón posee muchos eventos como: • Clic, doble clic, onmove, drag and drop, entre otros. • Las Tablet PC y algunos PDA utilizan un stylus pero mantiene el sistema los mismos Manejo del mouse • El evento OnMove, posiciona el apuntador en cierta ubicación en el escritorio. • El evento clic se puede dar para seleccionar un elemento, ocurre cuando se presiona el boton izquierdo del mouse. • El evento doble clic consiste en dar dos clic seguidos, se utiliza para ejecutar alguna acción Manejo del mouse • El evento Drag (arrastrar) consiste en seleccionar un elemento con un clic, dejar presionado el boton y mover el elemento alrededor de la pantalla. La variante de Drag con Drop (soltar) consiste en soltar el botón izquierdo del mouse una vez arrastrado algún elemento. Es útil en muchas actividades en Windows. • El botón derecho del mouse generalmente se Manejo del mouse • Algunos ratones no cuentan con clic derecho pero pueden emularse con ctrl + clic izquierdo. • Otro elemento importante consiste en el botón de scroll o botones inteligentes, que mueve la pantalla de arriba abajo. • Todas las acciones del mouse se puedeen realizar a través del teclado. Uso del teclado • El teclado es de vital importancia en el manejo de Windows. • Se puede manejar Windows sin ningún dispositivo señalizador sólo con el uso exclusivo de un teclado. • Los teclados pueden diferir en el número de teclas pero generalmente se maneja una combinación de 101 teclas. Uso del teclado • El tecleado puede diferir en su conjunto de caracteres, por lo que un mismo teclado puede tener asociado varios idiomas y presentar distintos caracteres. • Las teclas principales para el manejo de Windows son el tabulador, la teclas shift, ctrl, alt en sus diferentes combinaciones. • Con la tecla Alt se acceden a los menús. Uso del teclado • Con la tecla shift se permiten realizar acciones sin confirmación del usuario (shift+supr) para borrar definitivamente las opciones. Tambien se utiliza para seleccionar múltiples elementos adyacentes. • La tecla Tab permite desplazarnos de elemento gráfico por elemento. Una vez ubicado en una zona con las teclas de desplazamiento tanto izquierdas como Uso del teclado • La tecla ctrl permite seleccionar un rango no adyacente de elementos. Tambien se puede utilizar para algunos atajos de Windows • Ctrl+Alt+Supr permite reiniciar la máquina en casi todos los sistemas operativos, en Windows permite abrir el administrador de tarea para administrar recursos como los procesos y la memoria. Uso del teclado • La tecla del logotipo de Windows presente en algunos teclados permite mostrar el menú inició de manera rápida (se puede utilizar ctrl+esc), adicionalmente se cuenta con un botón lista que abre el menú contextual. • Alt+Esc Conmuta de tareas sin necesidad de pasar por el comnutador, Alt + Barra espaciadora abre el menú control de la ventana donde se puede maximizar, minimizar, restaurar, mover, cambiar de Uso del teclado • Las teclas de función ya tienen asociado cierto significado, por ejemplo F1 para la ayuda, F3 para buscar, F5 para actualizar. Esta configuración cambiará dependiendo de los programas. • La combinación Alt+F4 cierra una ventana. Alt + Guión permite ver el menu contextual de cada ventana padre. Como elegir comandos del menú • Para elegir comandos del menú se puede utilizar el teclado o el dispositivo señalizador. Simple se selecciona una opción y si el menú tiene una opción ejecutable se realiza. • Algunos menús se sustituyen por las barras de herramientas y en algunas ocasiones por botones de acción. Como elegir comandos del menú Uso del menú control • El menú control es aquel que se encuentra situado en la parte superior izquierda. • Este menú contiene opciones para manipular la ventana, pero también puede contener opciones personalizables, por ejemplo si se abre una terminal de DOS se puede tener acceso a la configuración de la ventana y a aspectos como copiar y pegar datos entre esas ventanas. Menús contextuales • Los menús contextuales dependen de lo que se esté utilizando. Generalmente se obtienen al hacer clic derecho. • El menú contextual puede tener opciones de edición de un archivo, de enlaces rápidos como enviar a… y una gran variedad de aplicaciones. Menús contextuales Explorador de Windows • Es el sistema que permite visualizar los archivos y recursos de la computadora se llama Explorador de Windows. • Interactúa con el administrador de archivos para realizar todas las opciones de manipulación de recursos en Windows. Estas opciones generalmente se hacían a través de los comandos de DOS. Explorador de Windows Ver el contenido de unidades de disco • Para ver el contenido de una unidad de disco se tiene que seleccionar esa unidad y abrirla. • Se muestran generalmente todos los archivos, recordar que en Windows se manejan el concepto de unidades las cuales están siempre presente una vez conectada la unidad física. Esa unida de disco es independiente de las demás. Se manejan letras como A:, C: para hacer referencia a las Copiar, mover archivos y carpetas • Las operaciones más comunes sobre el sistema de archivos se pueden hacer de manera visual. • Copiar es tan sencillo como seleccionar la opción correspondiente y pegar en la nueva ubicación. Si se selecciona un archivo y este se arrastra a otra carpeta generalmente se copia si están en unidades distintas, y se mueve si están en la misma unidad (para Copiar, mover archivos y carpetas • Tanto los archivos como las carpetas se manejan de la misma forma, por lo que se tiene la misma semántica y no es necesario aprenderse comandos distintos. • Para renombrar archivos se presiona la tecla F2 u opción renombrar. Generalmente las extensiones de archivos están ocultas pero pueden habilitarse a través de las opciones de carpeta del explorador. Se puede cambiar Copiar, mover archivos y carpetas Inicio de aplicaciones • Para ejecutar aplicaciones se debe de encontrar el ícono adecuado. • Las aplicaciones que se requieran ejecutar al iniciar Windows van el menú inicio en la carpeta inicio. • Las aplicaciones pueden ser DOS, Win16, Win32 y recientemente Win64 para micros x64. Uso de mi PC • Mi PC o Equipo en Windows Vista se utiliza como punto de encuentro de los demás procesos del sistema. • En Mi PC se ubican generalmente las unidades y acceso directos a las principales funciones del sistema como el Panel de control, carpetas remotas, etc. • El uso de PC facilita la utilización de Uso de la papelera de reciclaje • La papelera de reciclaje es un directorio temporal donde se guardan elementos que han sido borrados. • Cuando se borra un archivo a través de la papelera de reciclaje, se puede recuperar este archivo, si se borró un archivo y no está en la papelera de reciclaje es muy difícil recuperarlo. Panel de control • El panel de control es la herramienta del sistema que permite configurar las opciones del sistema, contiene elementos como manejo de impresorar, instalar nuevo hardware, instalar programas, administración de periféricos y algunas opciones de software. • El panel de control necesita tener derechos de administrador para poder funcionar. Tipos de aplicaciones • Los tipos de aplicaciones dependen de las acciones a realizar, generalmente existen aplicaciones de gestión (ofimática, nómina, contabilidad, etc.), software de ingeniería, software de sistemas, software empotrado, software de tiempo real, software para Web y software de sistemas (utilerías) entre otros. • Las aplicaciones las debe de conocer el usuario para poderlas ejecutar. Tipos de aplicaciones • Las aplicaciones tienen privilegios y opciones de comportamiento, esas opciones son personalizables en las últimas versiones de Windows. • Existen generalmente aplicaciones para ejecutarse sólo por el administrador o por un usuario en específico. • Windows maneja un esquema de seguridad basado en listas de control de acceso (ACL). Tipos de aplicaciones • Las ACL permiten determinar por cada usuario que derechos se tiene sobre un recurso en particular, dichos recursos pueden ser archivos, aplicaciones, periféricos. Las versiones de servidor de Windows tienen un control más robusto sobre estas cuestiones. • En general se tiene una lista de atributos con los derechos de acceso por usuario por cada recurso. Se tiene una configuración básica de seguridad. Conmutación entre aplicaciones • Para conmutar entre aplicaciones se puede utilizar la barra de herramientas, generalmente agrupa tareas similares en una sola entrada. Simplemente se presiona sobre la tarea que se desea tener activa. En el caso de servicios de sistemas, estos siempre se ejecutan y no es necesario conmutar entre ellos. • Se pueden utilizar los atajos del teclado para Compartir datos entre aplicaciones • Para compartir datos se utiliza el portapapeles (Clipboard) que es un área de memoria temporal de tamaño variable que sólo puede contener un dato a la vez. • También se pueden utilizar las Librerías de Enlace Dinámico (DLL), el registro (regedit), las variables de retorno y del sistema, entre otras muchas técnicas para compartir datos. Compartir datos entre aplicaciones • Generalmente se puede ver el contenido del portapapeles a través del visor de portapapeles. Algunos programas como office gestionan mejor el portapapeles, por lo que se pueden utilizar diversas versiones del portapapeles. • Otra forma básica de compartir información es a través de archivos como tuberías o Accesorios • Los accesorios son todas aquellas aplicaciones con las que cuenta Windows de manera predetermina y que sirven para realizar funciones básicas. • Los accesorios tienen que ver con la metáfora del escritorio descrita al inicio de esta presentación. • Se tiene una aplicación para escribir texto sencillo (bloc de notas), una calculadora, un Accesorios • Otras aplicaciones son los juegos de mesa, un editor de texto con formato, en versiones más recientes un cliente de correo electrónico, etc. • Se encuentran ubicadas en la carpeta accesorios del menú de inicio. Otras aplicaciones importantes son la línea de comandos, el explorador de archivos, etc. Accesorios Herramientas del sistema • Estas herramientas requieren de mayor conocimiento por parte de los usuarios debido a que su uso ocupa de un conocimiento más avanzado sobre el sistema operativo. • En algunas ocasiones cuando no se sabe algún símbolo del teclado se puede consultar el mapa de caracteres. • Otra aplicación interesante es hyperterminal Herramientas del sistema • Se cuenta con herramientas para la copias de seguridad de archivos, liberar el espacio en disco duro, restaurar sistemas, defragmentador de disco, etc. • Existen herramientas más avanzadas como la monitorización de procesos, memoria, uso de la red, entre otros. Windows • Las versiones de Windows cuentan con clientes y en algunos casos servicios de red. • Se pueden manejar de modo gráfico y en modo consola. • Algunos comandos útiles son: • Ver (muestra la versión del SO) Windows • El comnado winver permite ver la versión del SO en formato gráfico. • Systeminfo permite ver información sobre el sistema. • El comando help muestra ayuda sobre los comandos básicos de la consola. Se puede utilizar el parámetro /? Para conocer el funcionamiento de un comando en específico Windows • Driverquery permite ver todos los controladores cargados en el sistema • Hostname visualiza el nombre de la maquina, también permite cambiarlo siempre y cuando se sea Administrador del Sistema. • Openfiles permite ver archivos locales que son accedidos por clientes remotos Windows • sc query (sc es un comando que permite manipular servicios del sistema, la opción query se utiliza para mostrar los servicios activos en el sistema) • schtask muestra información de procesos que se encuentran calendarizados en el sistema. Windows • tasklist muestra ejecución. todos los procesos en • Taskkill permite eliminar procesos por PID o por nombre con la opción /IM • La variable de entorno %username% tiene el nombre del usuario activo. Se puede utilizar el comando echo para imprimirlo. Windows • net accounts da información sobre la máquina actual • Net config server (muestra información sobre el módulo del servidor del SO) • Net config workstation (muestra información sobre el módulo del cliente) Windows • Msconfig permite administrar las opciones básicas del sistema operativo • Mmc abre una consola administrativa para gestionar recursos • La consola se ejecuta con el proceso cmd.exe, el comando start puede abrir diversas aplicaciones en distintas consolas. Windows • Net file (sin argumentos permite observar los archivos compartidos abiertos) • Net localgroup, muestra los grupos de usuarios de la máquina analizada. • Net print muestra la cola de impresión de la impresora compartida Windows • Net session muestra las sesiones remotas activas en el sistema. • Net share muestra los recursos compartidos por el host actual. El carácter $ indica que el recurso esta oculto. Los nombres de las máquinas en Windows sigue el formato UNC: \\nombremaquina\ruta\de\acceso. Windows • Net start, stop, pause y continue se utilizan para inicializar, parar, pausar y reanudar la ejecución de un servicio de red. • Net statistics [server|workstation] muestra información estadísticas del proceso servidor y estación de trabajo. • Net use sin argumentos muestra las conexiones activas, con argumentos se conecta a un recurso compartido. Windows • Net view muestra una lista de los equipos conectados a la red o puede visualizar los recursos compartidos de un host remoto. • Ipconfig permite modificar y ver los parámetros actuales de los adaptadores de red. • Para algunos comandos se necesita ser controlador del dominio. UNIX History • First developed in 1969 by Ken Thompson and Dennis Ritchie of the Research Group at Bell Laboratories; incorporated features of other operating systems, especially MULTICS • The third version was written in C, which was developed at Bell Labs specifically to support UNIX • The most influential of the non-Bell Labs and non-AT&T UNIX development groups — University of California at Berkeley (Berkeley Software Distributions - BSD) – 4BSD UNIX resulted from DARPA funding to develop a standard UNIX system for government use – Developed for the VAX, 4.3BSD is one of the most influential versions, and has been ported to many other platforms • Several standardization projects seek to consolidate the variant flavors of UNIX leading to one programming interface to UNIX History of UNIX Versions Early Advantages of UNIX • Written in a high-level language • Distributed in source form • Provided powerful operatingsystem primitives on an inexpensive platform • Small size, modular, clean design UNIX Design Principles • Designed to be a time-sharing system • Has a simple standard user interface (shell) that can be replaced • File system with multilevel treestructured directories • Files are supported by the kernel as unstructured sequences of bytes • Supports multiple processes; a process can easily create new Programmer Interface Like most systems, UNIX consists of two separable parts: • Kernel: everything below the system-call interface and above the physical hardware – Provides file system, CPU scheduling, memory management, and other OS functions through system calls • Systems programs: use the kernelsupported system calls to provide useful functions, such as compilation and file manipulation 4.4BSD Layer Structure System Calls • System calls define the programmer interface to UNIX • The set of systems programs commonly available defines the user interface • The programmer and user interface define the context that the kernel must support • Roughly three categories of system calls in UNIX – File manipulation (same system calls File Manipulation • A file is a sequence of bytes; the kernel does not impose a structure on files • Files are organized in tree-structured directories • Directories are files that contain information on how to find other files • Path name: identifies a file by specifying a path through the directory structure to the file – Absolute path names start at root of file system – Relative path names start at the current directory • System calls for basic file manipulation: create, open, read, write, close, unlink, trunc Typical UNIX Directory Structure Process Control • A process is a program in execution • Processes are identified by their process identifier, an integer • Process control system calls – fork creates a new process – execve is used after a fork to replace on of the two processes’s virtual memory space with a new program – exit terminates a process – A parent may wait for a child process to terminate; wait provides the process id of a terminated child so that the parent can tell which child terminated – wait3 allows the parent to collect performance statistics about the child • A zombie process results when the parent of a defunct child process exits before the terminated child Illustration of Process Control Calls Process Control (Cont.) • Processes communicate via pipes; queues of bytes between two processes that are accessed by a file descriptor • All user processes are descendants of one original process, init • init forks a getty process: initializes terminal line parameters and passes the user’s login name to login – login sets the numeric user identifier of the process to that of the user Process Control (Cont.) • setuid bit sets the effective user identifier of the process to the user identifier of the owner of the file, and leaves the real user identifier as it was • setuid scheme allows certain processes to have more than ordinary privileges while still being executable by ordinary users Signals • Facility for handling exceptional conditions similar to software interrupts • The interrupt signal, SIGINT, is used to stop a command before that command completes (usually produced by ^C) • Signal use has expanded beyond dealing with exceptional events – Start and stop subprocesses on demand – SIGWINCH informs a process that the window in which output is being displayed has changed size Process Groups • Set of related processes that cooperate to accomplish a common task • Only one process group may use a terminal device for I/O at any time – The foreground job has the attention of the user on the terminal – Background jobs – nonattached jobs that perform their function without user interaction • Access to the terminal is controlled by Process Groups (Cont.) • Each job inherits a controlling terminal from its parent – If the process group of the controlling terminal matches the group of a process, that process is in the foreground – SIGTTIN or SIGTTOU freezes a background process that attempts to perform I/O; if the user foregrounds that process, SIGCONT indicates that the process can now perform I/O – SIGSTOP freezes a foreground process Information Manipulation • System calls to set and return an interval timer: getitmer/setitmer • Calls to set and return the current time: gettimeofday/settimeofday • Processes can ask for – their process identifier: getpid – their group identifier: getgid – the name of the machine on which they are executing: Library Routines • The system-call interface to UNIX is supported and augmented by a large collection of library routines • Header files provide the definition of complex data structures used in system calls • Additional library support is provided for mathematical functions, network access, data conversion, etc User Interface • Programmers and users mainly deal with already existing systems programs: the needed system calls are embedded within the program and do not need to be obvious to the user • The most common systems programs are file or directory oriented – Directory: mkdir, rmdir, cd, pwd – File: ls, cp, mv, rm • Other programs relate to editors (e.g., emacs, vi) text formatters (e.g., Shells and Commands • Shell – the user process which executes programs (also called command interpreter) • Called a shell, because it surrounds the kernel • The shell indicates its readiness to accept another command by typing a prompt, and the user types a command on a single line • A typical command is an executable binary object file Shells and Commands (Cont.) • Typical search path on a BSD system: ./home/prof/avi/bin /usr/local/bin /usr/ucb/bin /usr/bin • The shell usually suspends its own execution until the command completes Standard I/O • Most processes expect three file descriptors to be open when they start: – standard input – program can read what the user types – standard output – program can send output to user’s screen – standard error – error output • Most programs can also accept a file (rather than a terminal) for standard input and standard output • The common shells have a simple Standard I/O Redirection Pipelines, Filters, and Shell Scripts • Can coalesce individual commands via a vertical bar that tells the shell to pass the previous command’s output as input to the following command % ls | pr | lpr • Filter – a command such as pr that passes its standard input to its standard output, performing some processing on it • Writing a new shell with a different syntax and semantics would change the user view, but not change the kernel or programmer interface • X Window System is a widely accepted iconic interface for UNIX Process Management • Representation of processes is a major design problem for operating system • UNIX is distinct from other systems in that multiple processes can be created and manipulated with ease • These processes are represented in UNIX by various control blocks – Control blocks associated with a process are stored in the kernel – Information in these control blocks is used by the kernel for process control and CPU Process Control Blocks • The most basic data structure associated with processes is the process structure – unique process identifier – scheduling information (e.g., priority) – pointers to other control blocks • The virtual address space of a user process is divided into text (program code), data, and stack segments • Every process with sharable text has a pointer form its process structure to a text structure – always resident in main memory – records how many processes are using the text segment – records were the page table for the text segment can be found on disk when it is swapped System Data Segment • Most ordinary work is done in user mode; system calls are performed in system mode • The system and user phases of a process never execute simultaneously • a kernel stack (rather than the user stack) is used for a process executing in system mode • The kernel stack and the user structure together compose the Finding parts of a process using process structure Allocating a New Process Structure • fork allocates a new process structure for the child process, and copies the user structure – new page table is constructed – new main memory is allocated for the data and stack segments of the child process – copying the user structure preserves open file descriptors, user and group identifiers, signal handling, etc Allocating a New Process Structure (Cont.) • vfork does not copy the data and stack to t he new process; the new process simply shares the page table of the old one – new user structure and a new process structure are still created – commonly used by a shell to execute a command and to wait for its completion • A parent process uses vfork to produce a child process; the child uses execve to change its virtual address space, so there is no need for a copy of the parent • Using vfork with a large parent process saves CPU time, but can be dangerous since any memory change occurs in both processes until execve occurs • execve creates no new process or user structure; rather the text and data of the process are replaced CPU Scheduling • Every process has a scheduling priority associated with it; larger numbers indicate lower priority • Negative feedback in CPU scheduling makes it difficult for a single process to take all the CPU time • Process aging is employed to prevent starvation • When a process chooses to relinquish the CPU, it goes to sleep on an event • When that event occurs, the system process that knows about it calls Memory Management • The initial memory management schemes were constrained in size by the relatively small memory resources of the PDP machines on which UNIX was developed • Pre 3BSD system use swapping exclusively to handle memory contention among processes: If there is too much contention, processes are swapped out until enough memory is available Memory Management (Cont.) • Sharable text segments do not need to be swapped; results in less swap traffic and reduces the amount of main memory required for multiple processes using the same text segment • The scheduler process (or swapper) decides which processes to swap in or out, considering such factors as time idle, time in or out of main memory, size, etc Paging • Berkeley UNIX systems depend primarily on paging for memorycontention management, and depend only secondarily on swapping • Demand paging – When a process needs a page and the page is not there, a page fault tot he kernel occurs, a frame of main memory is allocated, and the proper disk page is read into the frame • A pagedaemon process uses a File System • The UNIX file system supports two main objects: files and directories • Directories are just files with a special format, so the representation of a file is the basic UNIX concept Blocks and Fragments • Most of the file system is taken up by data blocks • 4.2BSD uses two block sized for files which have no indirect blocks: – All the blocks of a file are of a large block size (such as 8K), except the last – The last block is an appropriate multiple of a smaller fragment size (i.e., 1024) to fill out the file – Thus, a file of size 18,000 bytes would have two 8K blocks and one 2K fragment (which would not be filled completely) Blocks and Fragments (Cont.) • The block and fragment sizes are set during file-system creation according to the intended use of the file system: – If many small files are expected, the fragment size should be small – If repeated transfers of large files are expected, the basic block size should be large • The maximum block-to-fragment ratio is 8 : 1; the minimum block size is 4K Inodes • A file is represented by an inode — a record that stores information about a specific file on the disk • The inode also contains 15 pointer to the disk blocks containing the file’s data contents – First 12 point to direct blocks – Next three point to indirect blocks • First indirect block pointer is the address of a single indirect block — an index block containing the addresses of blocks that do contain data • Second is a double-indirect-block pointer, the address of a block that contains the addresses of blocks that contain pointer to the actual data blocks. • A triple indirect pointer is not needed; files with as many as 232 bytes will use only double indirection Directories • The inode type field distinguishes between plain files and directories • Directory entries are of variable length; each entry contains first the length of the entry, then the file name and the inode number • The user refers to a file by a path name,whereas the file system uses the inode as its definition of a file – The kernel has to map the supplied user path name to an inode Directories (Cont.) • First determine the starting directory: – If the first character is “/”, the starting directory is the root directory – For any other starting character, the starting directory is the current directory • The search process continues until the end of the path name is reached and the desired inode is returned • Once the inode is found, a file structure is allocated to point to the inode • 4.3BSD improved file system Mapping of a File Descriptor to an Inode • System calls that refer to open files indicate the file is passing a file descriptor as an argument • The file descriptor is used by the kernel to index a table of open files for the current process • Each entry of the table contains a pointer to a file structure • This file structure in turn points to the inode File-System Control Blocks Disk Structures • The one file system that a user ordinarily sees may actually consist of several physical file systems, each on a different device • Partitioning a physical device into multiple file systems has several benefits – Different file systems can support different uses – Reliability is improved – Can improve efficiency by varying file-system parameters – Prevents one program form using all available space for a large file – Speeds up searches on backup tapes and restoring partitions from tape Disk Structures (Cont.) • The root file system is always available on a drive • Other file systems may be mounted — i.e., integrated into the directory hierarchy of the root file system • The following figure illustrates how a directory structure is partitioned into file systems, which are mapped onto logical devices, which are partitions of physical devices Mapping File System to Physical Devices Implementations • The user interface to the file system is simple and well defined, allowing the implementation of the file system itself to be changed without significant effect on the user • For Version 7, the size of inodes doubled, the maximum file and file system sized increased, and the details of free-list handling and superblock information changed • In 4.0BSD, the size of blocks used in the file system was increased form 512 bytes to 1024 bytes — increased internal fragmentation, but doubled throughput • 4.2BSD added the Berkeley Fast File System, which increased speed, and included new features – New directory system calls – truncate calls – Fast File System found in most implementations of UNIX Layout and Allocation Policy • The kernel uses a <logical device number, inode number> pair to identify a file – The logical device number defines the file system involved – The inodes in the file system are numbered in sequence • 4.3BSD introduced the cylinder group — allows localization of the blocks in a file – Each cylinder group occupies one or more consecutive cylinders of the disk, so that disk accesses within the cylinder group require minimal disk head movement – Every cylinder group has a superblock, a cylinder block, an array of inodes, and some data blocks 4.3BSD Cylinder Group I/O System • The I/O system hides the peculiarities of I/O devices from the bulk of the kernel • Consists of a buffer caching system, general device driver code, and drivers for specific hardware devices • Only the device driver knows the peculiarities of a specific device 4.3 BSD Kernel I/O Structure Block Buffer Cache • Consist of buffer headers, each of which can point to a piece of physical memory, as well as to a device number and a block number on the device • The buffer headers for blocks not currently in use are kept in several linked lists: – Buffers recently used, linked in LRU order (LRU list) – Buffers not recently used, or without valid contents (AGE list) – EMPTY buffers with no associated physical memory • When a block is wanted from a device, the cache is searched • If the block is found it is used, and no I/O transfer is necessary • If it is not found, a buffer is chosen from the AGE list, or the LRU list if AGE is empty Block Buffer Cache (Cont.) • Buffer cache size effects system performance; if it is large enough, the percentage of cache hits can be high and the number of actual I/O transfers low • Data written to a disk file are buffered in the cache, and the disk driver sorts its output queue according to disk address — these actions allow the disk driver to minimize disk head seeks and to write data at times Raw Device Interfaces • Almost every block device has a character interface, or raw device interface — unlike the block interface, it bypasses the block buffer cache • Each disk driver maintains a queue of pending transfers • Each record in the queue specifies: – whether it is a read or a write – a main memory address for the transfer – a device address for the transfer – a transfer size • It is simple to map the information from a block buffer to what is required for this queue C-Lists • Terminal drivers use a character buffering system which involves keeping small blocks of characters in linked lists • A write system call to a terminal enqueues characters on a list for the device. An initial transfer is started, and interrupts cause dequeueing of characters and further transfers • Input is similarly interrupt driven • It is also possible to have the device driver bypass the canonical queue and Interprocess Communication • The pipe is the IPC mechanism most characteristic of UNIX – Permits a reliable unidirectional byte stream between two processes – A benefit of pipes small size is that pipe data are seldom written to disk; they usually are kept in memory by the normal block buffer cache • In 4.3BSD, pipes are implemented as a special case of the socket mechanism which provides a general interface not only to facilities such as pipes, which are local to one machine, but also to networking facilities • The socket mechanism can be used by unrelated processes Sockets • A socket is an endpont of communication • An in-use socket it usually bound with an address; the nature of the address depends on the communication domain of the socket • A characteristic property of a domain is that processes communication in the same domain use the same address format • A single socket can communicate in only one domain — the three domains currently implemented in 4.3BSD are: – the UNIX domain (AF_UNIX) – the Internet domain (AF_INET) – the XEROX Network Service (NS) domain (AF_NS) Socket Types • Stream sockets provide reliable, duplex, sequenced data streams. Supported in Internet domain by the TCP protocol. In UNIX domain, pipes are implemented as a pair of communicating stream sockets • Sequenced packet sockets provide similar data streams, except that record boundaries are provided – Used in XEROX AF_NS protocol • Datagram sockets transfer messages of variable size in either direction. Supported in Internet domain by UDP protocol • Reliably delivered message sockets transfer messages that are guaranteed to arrive (Currently unsupported) • Raw sockets allow direct access by processes to the protocols that support the other socket types; e.g., in the Internet domain, it is possible to reach TCP, IP beneath that, or a deeper Ethernet protocol – Useful for developing new protocols Socket System Calls • The socket call creates a socket; takes as arguments specifications of the communication domain, socket type, and protocol to be used and returns a small integer called a socket descriptor • A name is bound to a socket by the bind system call • The connect system call is used to initiate a connection • A server process uses socket to create a socket and bind to bind the well-known address of its service to that socket – Uses listen to tell the kernel that it is ready to accept connections from clients – Uses accept to accept individual connections – Uses fork to produce a new process after the accept to service the client while the original server process continues to listen for more connections Socket System Calls (Cont.) • The simplest way to terminate a connection and to destroy the associated socket is to use the close system call on its socket descriptor • The select system call can be used to multiplex data transfers on several file descriptors and /or socket descriptors Network Support • Networking support is one of the most important features in 4.3BSD • The socket concept provides the programming mechanism to access other processes, even across a network • Sockets provide an interface to several sets of protocols • Almost all current UNIX systems support UUCP • 4.3BSD supports the DARPA Internet protocols UDP, TCP, IP, and ICMP on a wide range of Ethernet, token-ring, and ARPANET interfaces • The 4.3BSD networking implementation, and to a certain extent the socket facility, is more oriented toward the ARPANET Reference Model (ARM) Network Reference models and Layering The History of Linux • The real history of Linux starts in 1969, when Ken Thompson developed the first version of UNIX at Bell Labs – After Dennis Ritchie, designer of the C programming language, joined the project it debuted to the research community in an academic paper in 1974 – Bell Labs released the first commercial version in 1976 as UNIX Version 6 (V6) • UNIX spread throughout universities and in 1978 Bell Labs released UNIX Time-Sharing System, a version with portability in mind Linux History Continued • Because Bell Labs distributed UNIX with source code, the early 1980’s saw three major branches grow on the UNIX tree: – UNIX System III from Bell Lab’s UNIX Support Group (USG) – UNIX Berkeley Source Distribution (BSD) from the University of California at Berkeley – Microsoft’s XENIX • The UNIX market fragmented further in the 1980’s, despite the IEEE’s POSIX standard and the X/Open Group’s Portability Guide Linus and Linux • In 1991 Linus Torvalds took a college computer science course that used the Minix operating system – Minix is a “toy” UNIX-like OS written by Andrew Tanenbaum as a learning workbench – Linus wanted to make MINIX more usable, but Tanenbaum wanted to keep it ultra-simple • Linus went in his own direction and began working on Linux – In October 1991 he announced Linux v0.02 – In March 1994 he released Linux v1.0 The History of Windows (NT) • The history of Windows really begins in the mid-1970s, when Dick Hustvedt, Peter Lipman and David Cutler designed the VMS operating system for Digital’s 32-bit VAX processor – Digital shipped VMS v1.0 in 1978 • Cutler moved to Seattle to open DECWest and worked on the Digital Mica OS for a new CPU codenamed Prism – 12 engineers went with him and the facility grew to 200 – In 1988 Digital cancelled the project The History of Windows Continued • Bill Gates wanted a UNIX rival – He hired Cutler and 20 Digital engineers in 1989 – The new project was called NT OS/2 because it focused on OS/2 backward compatibility • With the success of Windows 3.0’s 1990 release Gates refocused the project on Windows compatibility – The project renamed to Windows NT – Microsoft released Windows NT 3.1 in August 1993 Windows and Linux • Both Linux and Windows are based on foundations developed in the mid-1970s 1970 1980 1990 2000 1970 1980 1990 2000 [Linux@panorama]# • Linus Torvalds, estudiante de la Universidad de Helsinki, creó Linux por hobby. Él estaba interesado en Minix, un sistema UNIX pequeño, y decidió desarrollar un sistema operativo que excediera los estándares de Minix. Comenzó su trabajo en 1991 con la versión 0.02 y continuó hasta que en 1994 liberó el kernel de Linux, versión 1.0 [Linux@panorama]# • Los desarrollos continúan a cargo de numerosas organizaciones y programadores independientes, porque Torvalds registro a Linux bajo Licencia Pública General (GNU). cualquier persona puede usar, modificar y distribuir Linux, pero no restringir su posterior distribución. El desarrollador está obligado a poner a disposición de los demás el código fuente. [LINUX@panorama]# • Linux introdujo los conceptos de velocidad, eficiencia y flexibilidad de UNIX, a las microcomputadoras. • Primera versión comercial distribuida en marzo de 1994 (kernel 1.0) • Linux no es un UNIX. • Linux mejoró notablemente las “curses” de Unix. [UNIX@panorama]# • Deriva de un SO llamado MULTICS (Multiplexed Information & Computing System). • Desarrollado en los laboratorios Bell, por Kernigham en 1973. • Un SO de programadores para programadores. • La columna vertebral del Internet. [Características@panorama]# • • • • • • Multitarea real Conectividad TCP/IP Manejo de memoria virtual usando paginación Librerías compartidas Multiusuario Manejo uniforme de recursos de E/S [Características@panorama]# • • • • • • • • • Tiempo Real Multiplataforma Protección de memoria entre procesos Se realizan volcados de estado Todo el código fuente está disponible. Consolas virtuales múltiples Soporte para varios sistemas de archivos Sistema de cuotas para los recursos Construcción de sistemas ciegos [Características@panorama]# • Se basa en las especificaciones de POSIX del IEEE: – Uniformidad – Aplicaciones pueden pasar de System V y al BSD. – Soporte de funciones de UNIX. Linux a [Características@panorama]# • Linux fue creado en base a la filosofía muchos usuarios, una computadora. • Windows fue creado bajo el paradigma un usuario, una computadora en cada escritorio y hogar. • Windows integra la GUI en el Kernel. Linux no, por eso es más estable. [Hardware@panorama]# • • • • • • • • ARM Intel X86 NeXT Amiga Motorola 68x00 MIPS Alpha Silicon Graphics, etc. [Embedded@panorama]# [uso@panorama]# [¿Gratis?@panorama]# Gratis != Libre Algunas excepciones: • • • • Caldera DR-DOS Oracle para Linux Red Hat, Mandrake Informix-SE para Linux [Desventajas@panorama]# • No existen todos los controladores para algunos periféricos como el escáner en paralelo, o el reproductor de DVD. • Los controladores no soportan bien cualquier dispositivo. • Se necesita mayor capacitación [Desventajas@panorama]# • No hay versiones estandarizadas. • Comandos demasiado breves. Comando MS-DOS UNIX VMS Listar archivos Dir ls DIRECTORY Cambiar de directorio CD o CHDIR cd SET DEFAULT Copiar archivo COPY cp COPY Renombrar un archivo RENAME mv RENAME [FUD@panorama] • Fear, Uncertainty, Doubt; es una técnica de mercadeo cuando un competidor lanza un producto nuevo que es mucho mejor y que reduce costos. • • • • Linux es inseguro No existe personal capacitado No es compatible con Windows Es muy difícil • • • • • • • • • • • [Preocupaciones por usar Windows@panorama]# 80% Calidad del software o vulnerabilidad 64% Costo de propiedad muy alto 55% Monopolio de Microsoft 31% Manejo de problemas cuando surgen 31% Mejores herramientas de administración 28% Escalabilidad 17% Falta de un completo e integrado ambiente de cómputo 17% Falta de un mapa claro de desarrollo del producto 16% Aspectos de licenciamiento 5% Otros 9% Ninguno [Razones para usar Linux@panorama]# • 90% Costo de licenciamiento gratuito o muy bajo • 88% Confiabilidad • 81% Desempeño • 70% Necesita alternativa a Windows • 48% Herramientas de desarrollo disponibles en Internet • • • • • • • • • • [Razones para no utilizar Linux@panorama]# 61% Aplicaciones Clave del negocio no corren en Linux 49% Personal de TI no está entrenado en Linux 42% Proveedores independientes de Software no lo respaldan 41% Prefieren otro sistema operativo 34% Preocupación por desempeño 31% No quiere manejar múltiples sistemas operativos 30% No confía en software open-source 22% Preocupación por escalabilidad 18% Proveedores de equipos no lo respaldan 16% Otras razones • • • • • • • • • • • [Razones para usar Windows@panorama]# 70% Adecuada integración con otros productos de Microsoft 68% Amplia disponibilidad de software aplicativo 27% Buen desempeño y disponibilidad 24% Buenas herramientas administrativas 23% Buen servicio y soporte 20% Expectativa en innovación futura 19% Confianza en el modelo económico de Microsoft 18% Bajo costo 17% Buena integración con plataformas no Microsoft 10% Ambiente seguro 14% Otros • • • • • • • • • • [Razones de empresas para seleccionar Linux@panorama]# 60% Bajo costo 50% Buen desempeño y disponibilidad 41% Ambiente seguro 40% Expectativa por innovación futura 39% Confianza en el modelo open source 21% Buenas herramientas de administración 12% Buena integración con otro software de servidor 12% Alta disponibidlidad de software aplicativo 11% Soporte y servicio 4% Otra • • • • • • • • • • [Temores para usar Linux@panorama]# 40% Falta de un ambiente completo e integrado de cómputo 37% Falta de responsable si salen problemas 35% Falta de un mapa claro de desarrollo de producto 27% Posibles problemas de propiedad intelectual 27% Mejores herramientas administrativas 23% Calidad del software y vulnerabilidades 7% Escalabilidad 2% Alto costo de propiedad 4% Otro 27% No tiene preocupaciones • • • • • • • • • • • • [Usos comunes para Linux@panorama]# 80% Servidores Web o Intranet 60% Administración Bases de Datos 58% Correo Electrónico o mensajería 57% Desarrollo de Aplicaciones 54% PC's de Escritorio 50% Servidor de Archivos e impresoras 40% Administración de sistemas 32% Aplicaciones Corporativas 21% Servidores comercio electrónico 10% Servidores delgados y “cuchichas” 6% Clusters de supercomputadores 24% Otros usos [Requisitos@panorama]# ESTACIÓN SERVIDOR DE TRABAJO PROCESADOR Desde 386 Pentium a 133 MEMORIA DISCO DURO Desde 8 MB 32 MB (como mínimo) Desde 300 Desde 600 MB MB [Mapa@panorama]# [Sabores@panorama]# • ¿Qué refresco de cola es mejor? • • • • • Coca Pepsi Gallito Bigcola … [Sabores@panorama]# • Caldera Open-Linux, Debian GNU/Linux, DLX Linux, DOS Linux, hal91, LinuxPPC, Linux Pro, Linux Ware, MkLinux, RedHat Linux, Slackware Linux, StempedeLinux, S.u.S.E, Linux, TurboLinux, Yggdrasil Linux, Dexil DLD Linux, Eagle Linux, Eurielec Linux, Kheops Linux, MNIS Linux. [Variantes@panorama]# • • • • • • • IRIX AIX FreeBSD Unix System V HPUX Solaris Ultrix • • • • Unix BSD FreeBSD OpenBSD NetBSD [Gartner 2007@panorama]# 1. Código abierto 2. Virtualización 3. Registro de servicios y repositorios 4. Suites para la gestión de procesos de negocios 5. Enterprise Information Management 6. Cómputo ubicuo 7. Acceso a la información 8. Web 2.0 – AJAX Rich Clients 9. Web 2.0 - Mashup Composite Model 10. Inteligencia colectiva y comunidades [IDC 2007@panorama]# 1. 2. 3. 4. 5. 6. 7. 8. 9. Virtualización Grid Computing Arquitectura orientada a servicios (SOA) Enterprise Information Management (EIM) Código abierto Acceso a la información Ajax Mashup Composite Model Computación Distribuida en el Ambiente Computing) 10. Recolección inteligente de datos (Pervasive [GPL@panorama]# • GNU Public License, se puede vender el software pero con código libre. Otras licencias: Copyleft y Creative Commons. • Desde la versión 2.2.0 la contibución de Linus es menos del 5% del total • “El dinero no está en el producto, sino en los servicios que están con él” IBM [Catedral y el bazar@panorama]# • • • • Eric Random Fecthmail Cathedral Comercial Bazar Linux • “Dado un número suficiente de ojos, todos los errores son irrelevantes”. [Bazar@panorama]# • • • Todo buen trabajo de software comienza rasguñando una inquietud personal del desarrollador. Los buenos programadores saben que escribir. Los grandes saben que re-escribir (y reusar). Cuando se pierde interés en un programa, el último deber es ponerlo en manos de un sucesor competente. [Bazar@panorama]# • Tratar a tus usuarios como colaboradores es el camino menos complicado para mejorar con rapidez, y depurar eficazmente un programa. • Libera pronto. Libera escucha a tus usuarios. frecuentemente. Y [Bazar@panorama]# • Dada una base lo suficientemente grande de probadores y colaboradores, casi cualquier problema se identificará con rapidez y el arreglo será obvio para alguien. • Estructuras de datos inteligentes asociadas a un código torpe funcionan mucho mejor que la alternativa opuesta. [Bazar@panorama]# • “Enséñame tu código y mantén ocultas tus estructuras de datos, y me seguirás engañando. Muéstrame tus estructuras de datos y normalmente no necesitaré que me enseñes tu código: resultará evidente”. • Si se tratan a la gente que te ayuda a depurar como si fueran el recurso más valioso, responderán convirtiéndose en eso precisamente. [Bazar@panorama]# • Algo mejor que tener buenas ideas es reconocer las buenas ideas de los usuarios. Y en ocasiones esta última es la mejor en términos absolutos. • Con frecuencia, las soluciones más impactantes e innovadoras vienen de darse cuenta que el concepto del problema está equivocado. [Bazar@panorama]# • Antoine de Saint-Exupory dijo: “La perfección (en diseño) no se obtiene cuando no hay nada mas que agregar, sino cuando no hay nada mas que desechar..” • Epílogo de Netscape: es extraño sentir que realizas algo para hacer historia. [Instalación@Unidad I]$ • Realizar respaldo configuraciones. de archivos y • Si se desea tener un sistema de arranque múltiple instalar primero los sistemas operativos y hasta el final Linux. • Realizar particionado de preferencia manual antes de la instalación [Instalación@Unidad I]$ • Se deberá elegir el tipo de instalación: modo gráfico, modo texto o modo experto. • Se deberá tener conocimiento hardware del equipo. sobre el • Se deberá saber que uso se le dará a la máquina para así seleccionar el tipo de instalación y conocer los paquetes a instalar. [Instalación@Unidad I]$ • La mayoría de las distribuciones de Linux cuentan con instaladores para: – Clientes – Estaciones de Trabajo – Servidores • Se recomienda en servidor no instalar interfaz gráfica y paquetes que no se usan • El problema no es instalar Linux sino configurarlo [Cliente/Servidor@Unidad I]$ Respuesta Servidor Cliente Petición [Computadoras@Unidad I]$ • El término cliente/servidor se refiere a procesos pero se asocia con máquinas • • • • Supercomputadoras Mainframes (macrocomputadoras) Estaciones de trabajos (minicomputadoras) Computadoras personales (microcomputadoras). [Cliente/Servidor@Unidad I]$ • Servidor: a computadoras de gran tamaño, brindan servicios a otras máquinas. • Cliente: computadoras de menor tamaño, limitadas en recursos, reciben servicios de los servidores. Terminales tontas. • Estaciones de trabajo: computadoras de mayores prestaciones que los clientes pero menores que los servidores. [Actualización@Unidad I]$ • La actualización es más lenta. Es mejor realizar un respaldo y luego instalar. • Particiones: /, /usr, /var, /home, /tmp, /boot y Swap. • Disk druid es un asistente para particionado. • NTFS es más estricto a la hora de realizar modificaciones en las particiones. [Instalación de paquetes@Unidad I]$ • tar –xzvf paquete.tar.gz • cd paquete • ./configure • make • make install [Instalación de sw@Unidad I]$ • rpm –i paquete • rpm –U actualiza paquete • rpm –qa • rpm -qi • rpm –qf • rpm –e desinstala paquete [Configuración SW@Unidad I]$ • Linux no cuenta con un registro pero si con archivos de configuración. Las primeras versiones de Windows no tenían Registro (archivos .INI) • La configuración depende de cada servicio. • La localización de los archivos de configuración puede variar en cada distribución [apt@Unidad I]$ • Advanced Packaging Tool. • • • • • • /etc/apt/sources.list apt-get install paquete apt-get remove paquete apt-get –reinstall install paquete apt-cdrom ruta add apt-get -u install lilo [GUI@Unidad I]$ • XFree86 • • • • Enlightenment WindowMaker Blackbox FluxBox • GNOME • KDE [GUI@Unidad I]$ • Startx • .xinitrc • #!/bin/sh • gnome-sesion [KDE@Unidad I]$ • KDE (K Desktop Environment) es un entorno de escritorio gráfico e infraestructura de desarrollo para sistemas Unix y, en particular, Linux. • KDE imitó a CDE (Common Desktop Environment) en sus inicios. CDE es un entorno de escritorio utilizado por varios Unix. • De acuerdo con su página Web, "KDE es un entorno gráfico contemporáneo para estaciones de trabajo Unix. KDE llena la necesidad de un escritorio amigable para estaciones de trabajo Unix, similar a los escritorios de MacOS o Windows". [GNOME@Unidad I]$ • GNOME o Gnome es un entorno de escritorio para sistemas operativos de tipo Unix bajo tecnología X Window, se encuentra disponible actualmente en más de 35 idiomas. Forma parte oficial del proyecto GNU. • Creado por el mexicano Miguel de Icaza. [Ofimática@Unidad I]$ • Ofimática: Suite con Procesador de texto, hojas electrónicas, presentaciónes, gráficas y bases de datos. • StarOffice 6.0, Sun Microsystems Inc. (Windows, Linux, Solaris) • OpenOffice.org (Windows, Linux, Solaris) • Koffice [Navegadores@Unidad I]$ • Netscape (www.netscape.com) • Mozilla (www.mozilla.org) • FireFox (www.firefox.com) • Opera (www.opera.com) • Konqueror (KDE) (www.kde.org) • Lynx [Antivirus@Unidad I]$ • OpenAntiVirus Project www.openantivirus.org • CLAM Antivirus http://clamav.elektrapro.com • AMaViS – A Mail Virus Scanner www.amavis.org • Sophos – www.sophos.com [mtools@Unidad I]$ • Comandos de MS-DOS • mcopy • /etc/mtools.conf. • drive a: file="/dev/fd0" exclusive drive b: file="/dev/fd1" exclusive # 1er disco Duro drive c: file="/dev/hda1" # 2nd disco Duro drive d: file="/dev/sda1" mtools_lower_case=1 [Emuladores@Unidad I]$ • DOSemu para MS-DOS • Wine para Windows • Virtualización: – VMware – Zen – Bosch [Otras apliacaciones@Unidad I]$ • Existen muchas aplicaciones de software libre y propietario para Linux que abarcan prácticamente todas las áreas del quehacer humano. • La ventaja del software libre es que muchas de las versiones de programas para Linux existen también para otros SOs. [Lenguajes@]$ • C Compilador gcc • C++ Compilador g++ • GNU Fortran 77 • Tcl – Button .b –text “Hola mundo!” –comand exit – Pack .b [Lenguajes@Unidad I]$ • Perl • Python • Ruby • AWK [Servidor Stream]@Unidad I]$ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/wait.h> #include <signal.h> #define MYPORT 3490 // Puerto al que conectarán los usuarios #define BACKLOG 10 // Cuántas conexiones pendientes se mantienen en cola void sigchld_handler(int s) { while(wait(NULL) > 0); } int main(void) { int sockfd, new_fd; // Escuchar sobre sock_fd, nuevas conexiones sobre new_fd struct sockaddr_in my_addr; // información sobre mi dirección struct sockaddr_in their_addr; // información sobre la dirección del cliente int sin_size; struct sigaction sa; int yes=1; [Servidor Stream]@Unidad I]$ if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) { perror("setsockopt"); exit(1); } my_addr.sin_family = AF_INET; // Ordenación de bytes de la máquina my_addr.sin_port = htons(MYPORT); // short, Ordenación de bytes de la red my_addr.sin_addr.s_addr = INADDR_ANY; // Rellenar con mi dirección IP memset(&(my_addr.sin_zero), '\0', 8); // Poner a cero el resto de la estructura } [Servidor Stream]@Unidad I]$ if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { perror("bind"); exit(1); } if (listen(sockfd, BACKLOG) == -1) { perror("listen"); exit(1); } sa.sa_handler = sigchld_handler; // Eliminar procesos muertos sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; if (sigaction(SIGCHLD, &sa, NULL) == -1) { perror("sigaction"); exit(1); } return 0; [Servidor Stream]@Unidad I]$ while(1) { // main accept() loop sin_size = sizeof(struct sockaddr_in); if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) { perror("accept"); continue; } printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr)); if (!fork()) { // Este es el proceso hijo close(sockfd); // El hijo no necesita este descriptor if (send(new_fd, "Hello, world!\n", 14, 0) == -1) perror("send"); close(new_fd); exit(0); } close(new_fd); // El proceso padre no lo necesita } [Cliente Stream@Unidad I]$ • #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define PORT 3490 // puerto al que vamos a conectar #define MAXDATASIZE 100 // máximo número de bytes que se pueden leer de una vez int main(int argc, char *argv[]) { int sockfd, numbytes; char buf[MAXDATASIZE]; struct hostent *he; struct sockaddr_in their_addr; // información de la dirección de destino memset(&(their_addr.sin_zero), 8); // poner a cero el resto de la estructura [Cliente Stream@Unidad I]$ if (argc != 2) { fprintf(stderr,"usage: client hostname\n"); exit(1); } if ((he=gethostbyname(argv[1])) == NULL) { // obtener información de máquina perror("gethostbyname"); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } their_addr.sin_family = AF_INET; // Ordenación de bytes de la máquina their_addr.sin_port = htons(PORT); // short, Ordenación de bytes de la red their_addr.sin_addr = *((struct in_addr *)he->h_addr); [Cliente Stream@Unidad I]$ if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) { perror("connect"); exit(1); } if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { perror("recv"); exit(1); } buf[numbytes] = '\0'; printf("Received: %s",buf); close(sockfd); return 0; } [Servidor Datagrama@Unidad I]$ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MYPORT 4950 // puerto al que conectarán los clientes #define MAXBUFLEN 100 int main(void) { int sockfd; struct sockaddr_in my_addr; // información sobre mi dirección struct sockaddr_in their_addr; // información sobre la dirección del cliente int addr_len, numbytes; char buf[MAXBUFLEN]; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); exit(1); } [Servidor Datagrama@Unidad I]$ my_addr.sin_family = AF_INET; // Ordenación de bytes de máquina my_addr.sin_port = htons(MYPORT); // short, Ordenación de bytes de la red my_addr.sin_addr.s_addr = INADDR_ANY; // rellenar con mi dirección IP memset(&(my_addr.sin_zero), '\0', 8); // poner a cero el resto de la estructura if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { perror("bind"); exit(1); } addr_len = sizeof(struct sockaddr); if ((numbytes=recvfrom(sockfd,buf, MAXBUFLEN-1, 0, (struct sockaddr *)&their_addr, &addr_len)) == -1) { perror("recvfrom"); exit(1); } printf("got packet from %s\n",inet_ntoa(their_addr.sin_addr)); printf("packet is %d bytes long\n",numbytes); buf[numbytes] = '\0'; printf("packet contains \"%s\"\n",buf); close(sockfd); return 0; } [Cliente Datagrama@Unidad I]$ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define MYPORT 4950 // puerto donde vamos a conectarnos int main(int argc, char *argv[]) { int sockfd; struct sockaddr_in their_addr; // información sobre la dirección del servidor struct hostent *he; int numbytes; if (argc != 3) { fprintf(stderr,"usage: talker hostname message\n"); exit(1); } if ((he=gethostbyname(argv[1])) == NULL) { // obtener información de máquina perror("gethostbyname"); exit(1); } [Cliente Datagrama@Unidad I]$ if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); exit(1); } their_addr.sin_family = AF_INET; // Ordenación de bytes de máquina their_addr.sin_port = htons(MYPORT); // short, Ordenación de bytes de la red their_addr.sin_addr = *((struct in_addr *)he->h_addr); memset(&(their_addr.sin_zero), '\0', 8); // poner a cero el resto de la estructura if ((numbytes=sendto(sockfd, argv[2], strlen(argv[2]), 0, (struct sockaddr *)&their_addr, sizeof(struct sockaddr))) == -1) { perror("sendto"); exit(1); } printf("sent %d bytes to %s\n", numbytes, inet_ntoa(their_addr.sin_addr)); close(sockfd); return 0; } [Servidor Stream@Unidad I]$ import java.net.*; import java.io.*; public class SocketServidor { public static void main (String [] args) { new SocketServidor(); } public SocketServidor() { try { ServerSocket socket = new ServerSocket (35557); System.out.println ("Esperando cliente"); Socket cliente = socket.accept(); System.out.println ("Conectado con cliente de " + cliente.getInetAddress()); cliente.setSoLinger (true, 10); DataOutputStream buffer = new DataOutputStream (cliente.getOutputStream()); [Servidor Stream@Unidad I]$ buffer.writeInt (22); System.out.println ("Enviado 22"); buffer.writeUTF ("Hola"); System.out.println ("Enviado Hola"); DatoSocket dato = new DatoSocket(); ObjectOutputStream bufferObjetos = new ObjectOutputStream (cliente.getOutputStream()); bufferObjetos.writeObject(dato); System.out.println ("Enviado " + dato.toString()); cliente.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } } [Cliente Stream@Unidad I]$ import java.net.*; import java.io.*; public class SocketCliente { public static void main (String [] args) { new SocketCliente(); } public SocketCliente() { try { Socket socket = new Socket ("localhost", 35557); System.out.println ("conectado"); [Cliente Stream@Unidad I]$ DataInputStream buffer = new DataInputStream (socket.getInputStream()); System.out.println("Recibido " + buffer.readInt()); System.out.println ("Recibido " + buffer.readUTF()); ObjectInputStream bufferObjetos = new ObjectInputStream (socket.getInputStream()); DatoSocket dato = (DatoSocket)bufferObjetos.readObject(); System.out.println ("Recibido " + dato.toString()); } catch (Exception e) { e.printStackTrace(); } } } [Procesos@Unidad I]$ #include <sys/types.h> #include <signal.h> #include <unistd.h> void trataSenhal (int); main() { pid_t idProceso; idProceso = fork(); if (idProceso == -1) { perror ("No se puede lanzar proceso"); exit (-1); } [Procesos@Unidad I]$ if (idProceso == 0) { signal (SIGUSR1, trataSenhal); while (1) pause (); } if (idProceso > 0) { while (1) { sleep (1); kill (idProceso, SIGUSR1); } } } void trataSenhal (int numeroSenhal) { printf ("Recibida señal del padre\n"); } [Semáforos@Unidad I]$ #include <iostream.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> #include <stdlib.h> #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) #else union semun { int val; struct semid_ds *buf; unsigned short int *array; struct seminfo *__buf; }; #endif [Semáforos@Unidad I]$ main() { key_t Clave; int Id_Semaforo; struct sembuf Operacion; union semun arg; int i=0; Clave = ftok ("/bin/ls", 33); if (Clave == (key_t)-1) { cout << "No puedo conseguir clave de semáforo" << endl; exit(0); } Id_Semaforo = semget (Clave, 10, 0600 | IPC_CREAT); [Semáforos@Unidad I]$ if (Id_Semaforo == -1) { cout << "No puedo crear semáforo" << endl; exit (0); } arg.val = 0; semctl (Id_Semaforo, 0, SETVAL, &arg); Operacion.sem_num = 0; Operacion.sem_op = -1; Operacion.sem_flg = 0; while (1) { cout << i << " Esperando Semáforo" << endl; semop (Id_Semaforo, &Operacion, 1); cout << i << " Salgo de Semáforo " << endl; cout << endl; i++; } } [RPC@Unidad I]$ • rpcgen -a fichero.x program NOMBRE_PROGRAMA { version VERSION_PROGRAMA { int incrementa (int) = 1; } = 1; } = 0x20000001; • [RPC@Unidad I]$ • int suma (int sumando1, int sumando2); • struct sumandos { int sumando1; int sumando2; }; • program PROGRAMA_SUMA { version VERSION_SUMA { int suma (sumandos) = 1; } = 1; } = 0x20000001; [RPC@Unidad I]$ int * suma_1_svc(sumandos *argp, struct svc_req *rqstp) { static int result; /* * insert server code here */ result = argp->sumando1 + argp->sumando2; /* Esta línea debe hacerla el programador */ return &result; } [RMIi@Unidad I]$ import java.rmi.*; public interface HolaMundoRmiI extends Remote { String objRemotoHola( String cliente ) throws RemoteException; } [RMIc@Unidad I]$ import java.rmi.*; public class HolaMundoRmiC { public static void main( String[] args ) { // Direccion de la maquina remota, en este caso la maquina local, // si se va a ejecutar en una maquina diferente, se debera cambiar // a algo semejante a: "rmi://www.servidor.com" String direccion = "rmi://10.27.34.47/"; try { HolaMundoRmiI hm = (HolaMundoRmiI)Naming.lookup( direccion+"ObjetoHola" ); System.out.println( hm.objRemotoHola( "Mundo" ) ); } catch( Exception e ) { e.printStackTrace(); } System.exit( 0 ); } } [RMIs@Unidad I]$ import java.rmi.*; import java.rmi.server.*; public class HolaMundoRmiS { public static void main( String args[] ) { try { // Se instala el controlador de seguridad if( System.getSecurityManager() == null ) { System.setSecurityManager( new RMISecurityManager() ); } HolaMundoRmiO objRemoto = new HolaMundoRmiO(); Naming.rebind( "ObjetoHola",objRemoto ); System.out.println( "Objeto remoto preparado" ); } catch( Exception e ) { e.printStackTrace(); } } [RMIo@Unidad I]$ import java.rmi.*; import java.rmi.server.*; public class HolaMundoRmiO extends UnicastRemoteObject implements HolaMundoRmiI { // Constructor del objeto remoto public HolaMundoRmiO() throws RemoteException { super(); } public String objRemotoHola( String cliente ) throws RemoteException { return( "Hola "+cliente ); } } [Perl@Unidad I]$ • • • • • • • • • • • #!/usr/bin/perl -w # 531-byte qrpff-fast, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu> # MPEG 2 PS VOB file on stdin -> descrambled output on stdout # arguments: title key bytes in least to most-significant order $_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^ =$c^=( $m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_ %16 2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h =5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$ d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^ $d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^ (($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval [Usuarios@Unidad II]$ • La representación de alguien (persona o proceso) que pueden trabajar en el sistema. P.ej. : root, postgresql, jcolivar, fmorales. • Cada usuario posee: – – – – tiene un login directorio base $HOME:/home/dsc/jcolivar. grupo, por ejemplo: users, root. perfil, bash_profile [Usuarios@Unidad II]$ • • • • useradd agrega usuario adduser useradd interactivo userdel borra usuarios usermod modifica usuarios • groupadd agrega grupos • groupdel borra grupos • groupmode modifica grupos [Usuarios@Unidad II]$ • passwd cambiar contraseña • login entrar al sistema • who lista los usuarios del sistema • w versión especial del listado de usuarios • whoami indica el usuario actual [Usuarios@Unidad II]$ • Linux no soporta Listas de Control de Acceso ACL • Contraseñas seguras son aquellas que no pertenecen a ningún idioma, contienen números y signo de puntuación. • Las contraseñas están cifradas. [/etc/passwd@Unidad II]$ • gandalf::501:100:Eric Dumas:/home/gandalf:/bin/bash sgandalf::0:0:Super Eric Dumas:/:/bin/sh • • • • • • • Nombre del usuario: 8 caracteres máximo* Contraseña codificada Número de identificación único del usuario (uid). Nota: 0 = root Numero del grupo (gid) Nombre "oficial" del usuario (llamado GECOS) Directorio raíz del usuario Intérprete de órdenes utilizado [useradd@Unidad II]$ • • • • • • • • • • -c comment -d homedir -e expire-date -f inactive-time tiempo de expiración de cuenta -g initial_roup -G group -m directorio home -M no crear directorio home -s shell -u uid [/etc/group@Unidad II]$ root:x:0:root bin:x:1:root,bin,daemon tty:x:5: disk:x:6:root lp:x:7:daemon,lp mail:x:12:mail news:x:13:news uucp:x:14:uucp nobody:x:99: users:x:100 [Quotas@Unidad II]$ • Kernel: options QUOTA • archivo /etc/sysconfig (quotas=yes|no) • check_quotas=YES • /etc/fstab • userquota • /dev/sd1s2g /home ufs rw, userquota 1 2 [Quotas@Unidad II]$ • /dev/sd1s2g/homeufs groupquota 1 2 rw, • quota.user y quota.group • quotacheck, quotaon, o quotaoff • quota -v • edquota -u test userquota, [Shell@Unidad II]$ • /etc/shells • .archivo archivo oculto • Cambio de contraseña con * a4dd89k*motivo de la cancelación • /etc/inetd.conf [Shell@Unidad II]$ • • • • export exporta variable de ambiente env ambiente set configura variable de ambiente history historial • • • • shutdown apagar la máquina poweroff apagar la máquina halt apagar la máquina reboot reiniciar la máquina [Shell@Unidad II]$ • • • • • • unset variable ls -l; cat /etc/passwd -l -a -1 -r • /usr/bin/loadkeys • /usr/lib/kdb/keytables/es.map [Shell@Unidad II]$ • • • • kill mata procesos ps estado de los procesos nice aumentar prioridad de procesos nohup no dejar colgado un proceso • sleep dormir proceso • wake despertar proceso • awake [Shell@Unidad II]$ • ps • -a todos los procesos con el terminal controlado, excepto el proceso de usuario actual. • -r ejecución • -x procesos sin terminal controlado • -l formato largo [Shell@Unidad II]$ • top visor de procesos • uname -a -r • /etc/rc.d/init.d/ • /etc/init.d • Anaconda • Kudzu [Shell@Unidad II]$ • chmod cambiar permisos de archivos • chown cambiar dueños de archivos • chgrp cambiar grupo de los archivos • mkfs formatear sistema de archivo • printenv ver variables de entorno • sync vaciar búfer de sistemas de archivo [Shell@Unidad II]$ • • • • • • • • • pwd directorio actual cp copiar archivos rm borrar archivos mv mover archivos * todos los caracteres ? Un solo caracter > redireccionar la salida cat < redireccionar la entrada [Shell@Unidad II]$ • mv, cp • -f forzar -i interactivo • mknod /tmp/mi_pipe p • which ls • setup • linuxconf • netconf [Shell@Unidad II]$ • | tuberías • & proceso en segundo plano • touch actualiza archivo • du espacio ocupado por directorio • df muestra el espacio ocupado por cada sistema de archivo • uptime fecha y tiempo activo [Shell@Unidad II]$ • more ver archivos largos • less ver archivos largos interactivo • head muestra las primeras 10 líneas de un archivo • tail muestra las últimas 10 líneas de un archivo • file identifica tipo de archivo • grep búsqueda de patrones [Shell@Unidad II]$ • wc cuenta el número de palabras, líneas, caracteres de un archivo • spell, ispell ortografía • cmp compara dos archivos • diff muestra las diferencias de dos archivos • gzip comprimir archivo • gunzip descomprimir archivo [Shell@Unidad II]$ • tr traductor cambia palabras de un archivo por otro • mail envío de correo • finger información sobre usuarios • find busca archivos • test realiza comparaciones • dd duplicador de datos [Shell@Unidad II]$ • • • • • fg trae a primer plano un proceso jobs muestra los trabajos en el sistema bg manda un proceso a segundo plano Ctrl+c interrupción Ctrl+z suspender • clear borra pantalla • date fecha • man manuales [Shell@Unidad II]$ • mc shell visual • cal calendario • • • • vi editor de texto pico editor de texto y correo ed editor de texto en una línea joe editor de texto [Shell@Unidad II]$ • su cambia de usuario • sudo ejecutar un comando en nombre a tu usuario • ln (ln -s links lynx) enlaces • rmdir borra un directorio • mkdir crea un directorio [Shell@Unidad II]$ • • • • cut quita tablas de un archivo read var captura el valor de una variable sort ordena las líneas de un archivo uniq borra líneas duplicadas sucesivas • sed y awk programas de procesamiento de patrones [Shell@Unidad II]$ • sum verifica la suma de comprobación • md5sum suma de comprobación • fsck hace una revisa al sistema de archivo • cpio copiado de archivos a bajo nivel • write escribe un mensaje a un usuario • talk plática [Shell@Unidad II]$ • mount monta sistema de archivos • umount desmonta dispositivo • mount -a monta todos los sistemas de archivos de /etc/fstab • -t ext2, FAT, VFAT, FAT32 [Shell@Unidad II]$ • Opciones de mount • • • • • • ro read only rw read write exec noauto no monta de manera automática e2fsck lost + found [Shell@Unidad II]$ $1 - $9 parámetros $0 nombre del comando actual $# número de parámetros $? status del último comando ejecutado dado como un string decimal. $$ el número de proceso de este shell $! el pid del último comando ejecutado en background. $- las opciones actuales suministradas para esta invocación del shell. $* $@@ un string que contiene todos los argumentos del shell comenzando por el $1. [Shell@Unidad II]$ • sh -x script argument • Cambiar permisos al script de ejecución y firmarlo • • • • ‘’ Literal simple `` Sustituir valor de la variable “” Sustituir por lo que haya en las comillas Shift avanzar parametros • test [] • echo • && || [Shell@Unidad II]$ • test • • • • • • • • • -d directorio -e archivo sin importar el tipo -f archivo normal -r leer archivo -s tamaño mayor que 0 -w escribir archivo -x archivo ejecutable -eq iguales -ne no son iguales [Shell@Unidad II]$ • • • • • • • • • • • • -gt mayor -ge mayor o igual -lt menor -le menor o igual = cadenas idénticas != cadenas no son idénticas < menor > mayor -n longitud de la cadena de texto es distinta de cero ! Negación -a and -o or [Shell@Unidad II]$ /etc/crontab # hacer una copia de seguridad todos los lunes a las 2 de la mañana 0 2 * * 1 /home/gandalf/backup # Reiniciar la máquina todos los 1 y 15 de cada mes a la 4:15 15 4 1,15 * * /sbin/shutdown -r +3 • Las 5 primeras columnas son : – – – – – Minutos (0 a 59) ; Hora (0 a 23) ; Día del mes (1 a 31) ; Mes (1 a 12) ; Día de la semana (0 a 6 : 0 = Domingo, 1 = Lunes). [Shell@Unidad II]$ • Banner muestra un mensaje • _nombre_funcion_ () { _lista_de_ordenes_ } • whereis • awk '{print $1}' fichero • sed s/tomate/pera/g a.txt > b.txt [Shell@Unidad II]$ • • • • • • if ....; then .... elif ....; then .... else .... fi • [ -f "/etc/shadow" ] && echo "Este ordenador usa shadow passwors" [Shell@Unidad II]$ case ... in ...) hacer algo aquí;; esac while ...; do .... done for var in ....; do .... done [Shell@Unidad II]$ #!/bin/sh test -x /home/www/bin/httpd || exit 0 case "$1" in #cuál fue el parámetro de invocación start) echo -n "Iniciando servidor http" start-stop-daemon --start --quiet --pidfile /var/run/httpd.pid \ --exec /home/www/bin/httpd echo "." ;; stop) echo -n "Deteniendo servidor httpd" start-stop-daemon --stop --quiet --pidfile /var/run/httpd.pid echo "." ;; [Shell@Unidad II]$ restart) /etc/init.d/httpd stop sleep 2 /etc/init.d/httpd start echo "." ;; *) echo "Uso: /etc/init.d/httpd {start|stop|restart}" exit 1 esac exit 0 [Shell@Unidad II]$ #!/bin/sh if [ "$SHELL" = "/bin/bash” ]; then echo "tu shell es el bash (bourne again shell)“ else echo "tu shell no es bash sino $SHELL" fi [Shell@Unidad II]$ # /etc/profile # System wide environment and startup programs # Functions and aliases go in /etc/bashrc if ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; then PATH="$PATH:/usr/X11R6/bin" fi USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HOSTNAME=`/bin/hostname` HISTSIZE=1000 [Shell@Unidad II]$ do echo $i i=$(($i+1)) done # lee de stdin hasta que se introduzca 'quit' read linea while [ "$linea" != "quit" ]; [Shell@Unidad II]$ #!/bin/sh #Pograma que borra todos los archivos (correos) que contienen la palabra 'To: jazarate' if [ -d cd /var/mail ] then grep -l "To:" * | xargs rm echo "Se borraron los archivos solicitados" else echo "Imposible borrar, no existe el directorio de correo" fi [Shell@Unidad II]$ #!/bin/sh #Programa que calcula cuantos usuarios hay en el sistema echo "Numero de usuarios en el sistema: `who | awk '{print $1}' | sort -u | wc -l`" [Shell@Unidad II]$ #!/bin/sh #Script en shell de linux que calcula el usuario que tiene mas correos en el sistema if [ -d /var/mail ] then cd /var/mail a=`grep -r -c "Message-ID" * | awk 'BEGIN{FS=":"}{ print $2}' | sort -g -r | awk '{getline X ;print $1}'` clear echo "El usuario con mas correo es: `grep -r -c "Message-ID" * | grep $a | awk 'BEGIN{FS=":"}{ print $1}'`" else # No hay spool de correo en el sistema, salir echo "Lo sentimos pero no existe servidor de correo o no se encontro" fi [Shell@Unidad II]$ #!/bin/sh #Shell que crea un usuario pasando el nombre como parámetro asi como su directorio public html if [ $# -eq 1 ] then #creamos el nuevo usuario useradd $1 mkdir /home/$1 cd /home/$1 mkdir public_html else echo "!Sintaxis incorrecta!. Uso correcto: $0 nombre_usuario" fi [Arranque@Unidad II]$ • El hardware lee el sector de arranque • Se carga LILO/GRUB • Se carga el Kernel • Se monta el sistema de archivos raíz • Se inicia init, el abuelo de todos los procesos • Se lee /etc/inittab [Arranque@Unidad II]$ • Ejecuta todos los scripts de nivel 1 • El final del nivel 1 indica que se vaya a 3 • Ejecuta todos los scripts de nivel 3 • El sistema está listo para usarse (se deberá autenticar para acceder al sistema) [LILO@Unidad II]$ • LInux LOader, es el cargador del Kernel más común para Linux • Uso casi exclusivo para arranques desde disco duro • Configuración en /etc/lilo.conf • Cargador en sector de arranque y en /boot/map [Configuración LILO@Unidad II] Default = linux Boot =/dev/hda Prompt Timeout = 50 Image=/boot/vmlinuz-2.2.5-15 Label = linux Root = /dev/hda2 Read-only Other =/dev/hda1 label = DOS table = /dev/hda [grub@Unidad II]$ • GRand Unified Bootloader, es el cargador del Proyecto GNU • Muy versátil y configurable, permite arrancar casi cualquier sistema operativo • Entiende internamente FAT, ext2, Reiser, JFS. .. • Configuración en /boot/grub/menu.lst. [Configuración GRUB@Unidad II]$ title Debian GNU/Linux root (hd0,1) kernel /boot/vmlinuz root=/dev/hda1 ro title Debian GNU/Linux, kernel 2.6.10 root (hd0,1) kernel /boot/vmlinuz-2.6.10 root=/dev/hda1 ro [Otros cargadores@Unidad II]$ • SYSLINUX/ISOLINUX desde floppy y cd. orientado a arranques • Arrancar en red (DHCP y TFTP). PXELINUX, ETHERBOOT, COMBOOT. [init@ Unidad II]$ • • • • Primer proceso del sistema. PID=1 (siempre). “Padre de todos los procesos”. Adopta y recoge a todos los huérfanos. • No se puede morir. • Archivo de configuración: /etc/inittab • Niveles de ejecución: “runlevels”. procesos [/etc/inittab@Unidad II]$ • 0 Sistema • 1 Monousuario • 2 Multiusuario sin NFS • 3 Operación Normal • 4 Sin uso • 5 Mismo que 3 pero con X Windows • 6 Rearranque del sistema [Scripts rc@Unidad II]$ • • • • /etc/rc.d/rc3.d /etc/rc.d/initd S arranca servicio K parar • lrwxrwxrwx lrwxrwxrwx 1 root root 9 Oct 20 20:05 K24random -> ../init.d/random 1 root root 8 Oct 20 18:23 S01fbset -> ../init.d/fbset • service servicio start | stop | restart | satus [/etc/rc.d/rc.local@Unidad II]$ #! /bin/sh #Limpia de archivos temporales echo “Eliminando archivos temporales..." find /tmp -type f -mtime +1 | xargs -r rm find /tmp -type d -mtime +1 | xargs -r rmdir [Autenticación@Unidad I]$ • La aplicación pide una contraseña al usuario • Se comprueba /etc/nsswitch.conf para ver donde está la contraseña • Se lee /etc/passwd /etc/shadow • Se comprueba esa entrada • La aplicación compara las cadenas y si son iguales se tiene acceso [Login@Unidad II]$ • Login: usuario • Pasword: ****** • [roge@antares /home/roge]$ • [root@antares /root]# • [root@antares /root]# logout • [root@antares /root]# shutdown now [Parada@Unidad I]$ • Se invoca al comando shutdown o reboot • Se llama init para cambiar el nivel de ejecución a6 • Se ejecutan los scripts del nivel 6 con stop • Los búferes de salida se escriben en disco (sync) • Los sistemas de archivos se desmontan • El sistema se para [Sistema de archivos@Unidad II]$ • • • • • • • • • • Nativo linux ext2 Intercambio de memoria swap CD-ROM iso9660 Monitorización del sistema proc Sistema de archivos de red (NFS) nfs FAT básico msdos VFAT (Windows 95) vfat Minix minix System V sysv BSD Fast File System bsd [Árbol de directorios@Unidad II]$ • • • • • • • /bin binarios /sbin binarios de root /dev dispositivos /etc archivos de configuración /home archivos de usuarios /proc archivos del kernel /tmp archivos temporales [Árbol de directorios@Unidad • • • • • • /boot Imágenes del kernel /mnt montaje de directorios (/floppy, /cdrom) /lib Bibliotecas y módulos /root información sobre el administrador /usr programas /var bitácoras del sistema [/proc@Unidad II]$ • • • • • • • /proc/cpuinfo tipo de CPU /proc/interrupts tabla IRQ /proc/meminfo información sobre la memoria /proc/modules igual que lsmod /proc/pci periféricos con soporte PCI /proc/net/arp tabla ARP /proc/net/dev dispositivos de red [Dispositivos de bloque@Unidad II]$ • Brw-rw----- 1 root disk 3, 0 May 5 1998 /dev/hda • 3 major number • 0 minor number • 3 controlador de dispositivo pero diferente puerto [Dispositivo de caracter@Unidad II]$ • Crw--------- 1 root tty 4, 64 May 5 1998 /dev/ttyS0 • P pipe • R Lectura 4 • W Escritura 2 • X Ejecución 1 [Kernel@Unidad II]$ • Búsqueda e inicialización de hardware. • Inicialización de la pila TCP/IP. • Monta sistema de ficheros raíz (“root filesystem”). • Prepara la consola, terminales virtuales, etc. • Ejecuta el primer proceso del sistema, “/sbin/init”. [Mensajes del kernel]@Unidad II • Todos los mensajes que genera el kernel se pueden ver con la orden “dmesg”. • dmesg | grep quotas VFS: Diskquotas version dquot_5.6.0 initialized [Kernel@Unidad II]$ • Impar inestable 2.1, 2.3 • Par estable 2.0, 2.2 • Última versión estable 2.6.19.2 (13/01/2006) • /etc/src/linux • Desempacar el kernel. • make xconfig gráfico [Configuración Kernel@Unidad II]$ • Al Kernel se le pueden pasar una serie de parámetros para: – Configurar dispositivos (discos duros, tarjetas de red, puertos serie, memoria (mem=XXX). . . ) – Indicar sistema de archivos raíz (root=/dev/XXX) – Condiciones especiales: monousuario, distinto init (init=XXX). . . – Cada cargador tiene su manera de pasarle parámetros al Kernel – Dentro del Kernel, los parámetros con los que se ha arrancado se pueden ver en /proc/cmdline [Configuración Kernel@Unidad II]$ • LILO linux single modo usuario • LILO mem=128 • GRUB kernel (hd0,0)/vmlinuz root=/dev/hda1 single • modconf asistente para módulos • lsmod, rmmod, insmod, depmod, modprobe [Instalación del Kernel@Unidad II] • make config • make xconfig • Escoger los módulos y opciones a instalar • make dep; make clean; make zImage; make modules; make modules_install [Instalación@Unidad II]$ • make bzImage • Kernel compilado: /usr/src/linux/arch/i386/boot/zImage, • Mapas: /usr/src/linux/System.map • /boot/vmlinuz-x.x.x • System.map mensajes [Cargador de arranque@Unidad II]$ Default=/boot/vmlinuz-x.x.x Image=/boot/vmlinuz-x.x.x Label= Linux compilado Root=/dev/hda1 • Parcheado del kernel • Patch –p0 < parche-2.2.11 [Seguridad@Unidad II]$ • La seguridad viene inmersa dentro de cada aplicación o en su defecto. • Verificar siempre los logs del sistema • Tener actualizado siempre los sistemas con las últimas alertas de seguridad. • No existen sistemas completamente seguros [Seguridad@Unidad II]$ • Configurar adecuadamente los permisos de archivos para todos los usuarios • Configurar contraseñas cambiantes • No utilizar la cuenta de root como usuario • Utilizar enlaces simbólicos y espacio de cuotas para los usuarios • No activar servicios que no se utilicen • Cerrar todos los puertos [Seguridad@Unidad II]$ • No instalar GUIs a menos que sea extremadamente necesario. • Instale un Firewall vía SW o HW • Utilizar protocolos cifrados: HTTPS, SFTP, SSH, etc. • Hacer respaldo de la información constanteente Comparing the Architectures • Both Linux and Windows are monolithic – All core operating system services run in a shared address space in kernel-mode – All core operating system services are part of a single module • Linux: vmlinuz • Windows: ntoskrnl.exe • Windowing is handled differently: – Windows has a kernel-mode Windowing subsystem – Linux has a user-mode X-Windowing system Kernel Architectures Application Windows User Mode Kernel Mode Win32 Windowing Device Drivers System Services Process Management, Memory Management, I/O Management, etc. Application Hardware Dependent Code Linux X-Windows User Mode Kernel Mode System Services Process Management, Memory Management, I/O Management, etc. Hardware Dependent Code Device Drivers Linux Kernel • Linux is a monolithic but modular system – All kernel subsystems form a single piece of code with no protection between them • Modularity is supported in two ways: – Compile-time options – Most kernel components can be built as a dynamically loadable kernel module (DLKM) • DLKMs – Built separately from the main kernel – Loaded into the kernel at runtime and on demand (infrequently used components take up kernel memory only when needed) – Kernel modules can be upgraded incrementally – Support for minimal kernels that automatically adapt to the machine and load only those kernel components that are used Windows Kernel • Windows is a monolithic but modular system – No protection among pieces of kernel code and drivers • Support for Modularity is somewhat weak: – Windows Drivers allow for dynamic extension of kernel functionality – Windows XP Embedded has special tools / packaging rules that allow coarse-grained configuration of the OS • Windows Drivers are dynamically loadable kernel modules – Significant amount of code run as drivers (including network stacks such as TCP/IP and many services) – Built independently from the kernel – Can be loaded on-demand – Dependencies among drivers can be specified Comparing Portability • Both Linux and Windows kernels are portable – Mainly written in C – Have been ported to a range of processor architectures • Windows – i486, MIPS, PowerPC, Alpha, IA-64, x86-64 – Only x86-64 and IA-64 currently supported – > 64MB memory required • Linux – Alpha, ARM, ARM26, CRIS, H8300, i386, IA-64, M68000, MIPS, PARISC, PowerPC, S/390, SuperH, SPARC, VAX, v850, x86-64 – DLKMs allow for minimal kernels for microcontrollers – > 4MB memory required Comparing Layering, APIs, Complexity • Windows – Kernel exports about 250 system calls (accessed via ntdll.dll) – Layered Windows/POSIX subsystems – Rich Windows API (17 500 functions on top of native APIs) • Linux – Kernel supports about 200 different system calls – Layered BSD, Unix Sys V, POSIX shared system libraries – Compact APIs (1742 functions in Single Unix Specification Version 3; not including X Window APIs) Comparing Architectures • • • • • • Processes and scheduling SMP support Memory management I/O File Caching Security Process Management Windows • Process Linux – Address space, handle table, statistics and at least one thread – No inherent parent/child relationship Basic Address space, handle table, statistics Parent/child relationship Basic scheduling unit • Threads – Basic scheduling unit – Fibers - cooperative mode threads Process is called a Task Threads user- No threads per-se Tasks can act like Windows threads by sharing handle table, PID and address space PThreads – cooperative user-mode threads Scheduling Priorities Windows • Two scheduling classes – “Real time” (fixed) - priority 16-31 – Dynamic - priority 1-15 • Higher favored priorities 31 Fixed are – Priorities of dynamic threads get boosted on wakeups – Thread priorities are never lowered 16 15 Dynamic I/O 0 Windows Scheduling Priorities Windows • Two scheduling classes – “Real time” (fixed) - priority 16-31 – Dynamic - priority 1-15 • Higher favored priorities are – Priorities of dynamic threads get boosted on wakeups – Thread priorities are never lowered Linux Has 3 scheduling classes: Normal – priority 100-139 Fixed Round Robin – priority 0-99 Fixed FIFO – priority 0-99 Lower priorities are favored Priorities of normal threads go up (decay) as they use CPU Priorities of interactive threads go down (boost) Scheduling Priorities (cont) 31 0 Fixed Fixed FIFO Fixed Round-Robin 16 15 Dynamic I/O 99 100 I/O Normal CPU 0 Windows 140 Linux Linux Scheduling Details • Most threads use a dynamic priority policy – Normal class - similar to the classic UNIX scheduler – A newly created thread starts with a base priority – Threads that block frequently (I/O bound) will have their priority gradually increased – Threads that always exhaust their time slice (CPU bound) will have their priority gradually decreased • “Nice value” sets a thread’s base priority – Larger values = less priority, lower values = higher priority – Valid nice values are in the range of -20 to +20 – Nonprivileged users can only specify positive nice value • Dynamic priority policy threads have static priority zero – Execute only when there are no runnable real-time threads Real-Time Scheduling on Linux • Linux supports two static priority scheduling policies: – Round-robin and FIFO (first in, first out) • Selected with the sched-setscheduler( ) system call • Use static priority values in the range of 1 to 99 • Executed strictly in order of decreasing static priority – FIFO policy lets a thread run to completion • Thread needs to indicate completion by calling the sched-yield( ) – Round-robin lets threads run for up to one time slice • Then switches to the next thread with the same static priority – RT threads can easily starve lower-prio threads from executing • Root privileges or the CAP-SYS-NICE capability are required for the selection of a real-time scheduling policy • Long running system calls can cause priority-inversion • Same as in Windows; but cmp. rtLinux Windows Scheduling Details • Most threads run in variable priority levels – Priorities 1-15; – A newly created thread starts with a base priority – Threads that complete I/O operations experience priority boosts (but never higher than 15) – A thread’s priority will never be below base priority • The Windows API function SetThreadPriority() sets the priority value for a specified thread – This value, together with the priority class of the thread's process, determines the thread's base priority level – Windows will dynamically adjust priorities for non-realtime threads Real-Time Scheduling on Windows • Windows supports static round-robin scheduling policy for threads with priorities in real-time range (16-31) – Threads run for up to one quantum – Quantum is reset to full turn on preemption – Priorities never get boosted • RT threads can starve important system services – Such as CSRSS.EXE – SeIncreaseBasePriorityPrivilege required to elevate a thread’s priority into real-time range (this privilege is assigned to members of Administrators group) • System calls and DPC/APC handling can cause priority inversion Scheduling Timeslices Linux Windows • The thread timeslice (quantum) is 10ms-120ms The thread quantum is 10ms-200ms – When quanta can vary, has one of 2 values • Reentrant preemptible Default is 100ms Varies across entire range based on priority, which is based on interactivity level and Reentrant and preemptible Fixed: 120ms 20ms Background Foreground: 60ms 200ms 10ms 100ms Multiprocessor Support Windows • Supports (SMP) – – – • multiprocessing Ready Thread Up to 32 processors on 32-bit Windows Up to 64 processors on 64-bit Windows All CPUs can take interrupts Supports Non-Uniform Memory Access systems – – • symmetric Scheduler favors the node a thread prefers to run on Memory manager tries to allocate memory on the node a thread prefers to run on 0 1 3 4 Supports Hyperthreading – – Scheduler favors idle physical processors when it has a choice Doesn’t count logical CPUs against licensing limits Physical CPU 0 Physical CPU 1 Multiprocessor Support Linux Windows • Supports (SMP) – – – • multiprocessing Up to 32 processors on 32-bit Windows Up to 64 processors on 64-bit Windows All CPUs can take interrupts Supports Non-Uniform Memory Access systems – – • symmetric Scheduler favors the node a thread prefers to run on Memory manager tries to allocate memory on the node a thread prefers to run on Supports Hyperthreading – – Scheduler favors idle physical processors when it has a choice Doesn’t count logical CPUs against licensing limits Supports SMP No upper CPU limit: set as kernel build constant All CPUs can take interrupts Supports Non-Uniform Memory Access systems Scheduler favors the node a thread last ran on Memory manager tries to allocate memory on the node a thread is running on Supports Hyperthreading Scheduler favors idle physical processors when it has a choice Virtual Memory Management Windows • 32-bit versions split usermode/kernel-mode from 2GB/2GB to 3GB/1GB • Demand-paged virtual memory – – – – 32 or 64-bits Copy-on-write Shared memory Memory mapped files 0 Linux Splits user-mode/kernel-mode from 1GB/3GB to 3GB/1GB 2.6 has “4/4 split” option where kernel has its own address space Demand-paged virtual memory 32-bits and/or 64-bits Copy-on-write Shared memory Memory mapped files User 0 2GB User System 4GB 3GB System 4GB Physical Memory Management Windows • Per-process working sets – Working set tuner adjust sets according to memory needs using the “clock” algorithm • No “swapper” Linux Global working set management uses “clock” algorithm No “swapper” (the working set trimmer code is called the swap daemon, however) LRU Process Reused Page LRU LRU Other Process Reused Page I/O Management Windows • • • • • • Centered around the file object Layered driver architecture throughout driver types Most I/O supports asynchronous operation Internal interrupt request level (IRQL) controls interruptability Interrupts are split between an Interrupt Service Routine (ISR) and a Deferred Procedure Call (DPC) Supports plug-and-play IRQL Masked Linux Centered around the vnode No layered I/O model Most I/O is synchronous Only sockets and direct disk I/O support asynchronous I/O Internal interrupt request level (IRQL) controls interruptability Interrupts are split between an ISR and soft IRQ or tasklet Supports plug-and-play File Caching Linux Windows • Single global common cache Single global common cache • Virtual file cache Virtual file cache • – Caching is at file vs. disk block level Caching is at file vs. disk block level – Files are memory mapped into kernel memory Files are memory mapped into kernel memory Cache allows for zero-copy file serving Cache allows for zero-copy file serving File Cache File Cache File System Driver File System Driver Disk Driver Disk Driver Security Linux Windows • • Very flexible security model based on Access Control Lists Users are defined with – – • • Files, processes, objects, … Supports auditing Standard UNIX model Access Control Lists (SELinux) Privileges Member groups Users are defined with: Security can be applied to any Object Manager object – Two models: synchronization Capabilities (privileges) Member groups Security is implemented on an object-by-object basis Has no built-in auditing support Version 2.6 includes Linux Security Module framework for add-on security models Monitoring - Linux procfs • Linux supports a number of special filesystems – Like special files, they are of a more dynamic nature and tend to have side effects when accessed • Prime example is procfs (mounted at /proc) – provides access to and control over various aspects of Linux (I.e.; scheduling and memory management) • /proc/meminfo contains detailed statistics on the current memory usage of Linux • Content changes as memory usage changes over time • Services for Unix implements procfs on Windows Windows’ Evolution Towards Linux • Services for Unix 3.5 - really targeted at POSIX, not Linux – POSIX threads, full POSIX subsystem (Interix) – X Window clients+server (X-Win32 LX) – nfs, NIS, pam – proc-file system for Windows • Configurability / Module Management – Windows XP Embedded POSIX compatibility in Windows actually predates Linux and was one of the original design goals – Target Designer/Component Component Management Database • Editions targeting new Application Domains – Windows Compute Cluster Server 2003 Designer/ Linux’s Evolution Towards Windows • I/O processing • Kernel reentrancy • Kernel preemptibility • Per-processor memory allocation • O(1) scheduler and per-CPU ready queues • Zero-Copy SendFile • Wake-One socket semantics • Asynchronous I/O • Light-weight synchronization I/O Processing • Linux 2.2 had the notion of bottom halves (BH) for lowpriority interrupt processing – Fixed number of BHs – Only one BH of a given type could be active on a SMP • Linux 2.4 introduced tasklets, which are non-preemptible procedures called with interrupts enabled • Tasklets are the equivalent of Windows Deferred Procedure Calls (DPCs) Kernel Reentrancy • Mark Russinovich’s April 1999 Windows NT Magazine article, “Linux and the Enterprise”, pointed out that much of the Linux 2.2 was not reentrant cpu 1 Non-reentrant Reentrant cpu 2 cpu 1 cpu 2 • Ingo Molnar stated in rebuttal: Time Saved – “his example is a clear red herring.” • A month later he made all major paths reentrant Kernel Preemptibility • A preemptible kernel is more responsive to high-priority tasks • Through the base release of v2.4 Linux was only cooperatively preemptible – There are well-defined safe places where a thread running in the kernel can be preempted • The kernel is preemptible in v2.4 patches and v2.6 • Windows NT has always been preemptible Per-CPU Memory Allocation • Keeping accesses to memory localized to a CPU minimizes CPU cache thrashing – Hurts performance on enterprise SMP workloads • Linux 2.4 introduced per-CPU kernel memory buffers • Windows introduced per-CPU buffers in an NT 4 Service Pack in 1997 Buffer Cache 0 CPUs 0 Buffer Cache 1 1 Scheduling • The Linux 2.4 scheduler is O(n) – If there are 10 active tasks, it scans 10 of them in a list in order to decide which should execute next – This means long scans and long durations under the scheduler lock Ready List 103 112 Highest Priority Task 112 101 Scheduling • Linux 2.6 has a revamped scheduler that’s O(1) from Ingo Molnar that: – Calculates a task’s priority at the time it makes scheduling decision – Has per-CPU ready queues where the tasks are pre-sorted by priority Highest-priority Non-empty Queue 101 103 112 112 Scheduling • Windows NT has always had an O(1) scheduler based on presorted thread priority queues • Server 2003 introduced per-CPU ready queues – Linux load balances queues – Windows does not • Not seen as an issue in performance testing by Microsoft • Applications where it might be an issue are expected to use affinity Zero-Copy Sendfile • Linux 2.2 introduced Sendfile to efficiently send file data over a socket – I pointed out that the initial implementation incurred a copy operation, even if the file data was cached • Linux 2.4 introduced zero-copy Sendfile • Windows NT pioneered zero-copy file sending with TransmitFile, the Sendfile equivalent, in Windows NT 4 File Data Buffer 1-Copy Network Network Adapter Driver Buffer File Data Buffer Network 0-Copy Network Network Driver Wake-one Socket Semantics • Linux 2.2 kernel had overscheduling problem the thundering herd or – In a network server application there are typically several threads waiting for a new connection – In v2.2 when a new connection came in all the waiters would race to get it • Ingo Molnar’s response: – 5/2/99: “here he again forgets to _prove_ that overscheduling happens in Linux.” – 5/7/99: “as of 2.3.1 my wake-one implementation and waitqueues rewrite went in” • In Linux 2.4 only one thread wakes up to claim the new connection • Windows NT has always had wake-1 semantics Asynchronous I/O • Linux 2.2 only supported asynchronous I/O on socket connect operations and tty’s • Linux 2.6 adds asynchronous I/O for direct-disk access – AIO model includes efficient management of asynchronous I/O • Also added alternate epoll model – Useful for database servers managing their database on a dedicated raw partition – Database servers that manage a file-based database suffer from synchronous I/O • Windows I/O is inherently asynchronous • Windows has had completion ports since NT 3.5 – More advanced form of AIO Light-Weight Synchronization • Linux 2.6 introduces Futexes – There’s only a transition to kernel-mode when there’s contention • Windows has always had CriticalSections – Same behavior • Futexes go further: – Allow for prioritization of waits – Works interprocess as well A Look at the Future • The kernel architectures are fundamentally similar – There are differences in the details – Linux implementation is adopting more of the good ideas used in Windows • For the next 2-4 years Windows has and will maintain an edge – Linux is still behind on the cutting edge of performance tricks – Large performance team and lab at Microsoft has direct ties into the kernel developers • As time goes on the technological gap will narrow – Open Source Development Labs (OSDL) will feed performance test results to the kernel team – IBM and other vendors have Linux technology centers – Squeezing performance out of the OS gets much harder as the OS gets more tuned Linux Technology Unknowns • Linux kernel forking – RedHat has already done it: Red Hat Enterprise Server v3.0 is Linux 2.4 with some Linux 2.6 features • Backward compatibility philosophy – Linus Torvalds makes decisions on kernel APIs and architecture based on technical reasons, not business reasons ¿Qué es Mac OS X? • Mac OS X es el actual sistema operativo de la familia de ordenadores Macintosh. • Es un sistema operativo basado en UNIX. • Contiene un núcleo de bajo nivel que se llama Darwin y esta basado en la licencia APSL (Apple Public Source License). • Incorpora 3 tecnologías: – Quartz Extreme – OpenGL – QuickTime Capas del Sistema Mac OS X Núcleo del Sistema Operativo • El núcleo se refiere a la base fundamental de Mac OS X. • Es conocido como Darwin. • Esta capa es responsable para el manejo de todas las operaciones de E/S (entrada y salida) • También maneja la memoria y el uso del procesador. Servicios del Núcleo • Implementan los servicios del sistema operativo, los cuales son usados por las aplicaciones. • Entre algunos de estos servicios tenemos: – QuickTime (Reproducir Videos) – Quartz (Dibujos en 2D) – Core Audio, Video (Efectos especiales) Framework para Desarrolladores • Permite la ejecución de varias aplicaciones en Mac OS X. • Un Framework es una estructura de soporte definida, puede incluir soporte de programas, librerías y un lenguaje común para ayudar a desarrollar y unir los diferentes componentes de un proyecto. Interfáz del Usuario y Aplicaciones • Las aplicaciones son los programas que tú ejecutas. • La capa de aplicación es donde el usuario interactúa con su Macintosh. • Además de las aplicaciones diseñadas para Apple, Mac OS X incluye soporte para ejecutar aplicaciones basadas en: Java, UNIX y aplicaciones clásicas del sistema Mac OS 9. Evolución del Sistema Mac OS X • Las diferentes versiones de Mac OS X van apodadas con los nombres de grandes felinos en inglés: – – – – – Mac OS X Cheeta v10.0 - Marzo 2001 Mac OS X Puma v10.1 - Septiembre 2001 Mac OS X Jaguar v10.2 - Agosto 2002 Mac OS X Panther v10.3 - Octubre 2003 Mac OS X Tiger v10.4 - Abril 2005 • Próximamente se lanzará oficialmente el nuevo Mac OS X Leopard en su versión 10.5 Requerimientos Mínimos para instalar Mac OS X Tiger • Ordenador Macintosh con procesador PowerPC G3, G4, G5 o procesador Intel. • FireWire incorporado • Lector de DVD • 256 MB de RAM • Tarjeta de video integrada compatible con Apple. y • 3 GB de espacio disponible en disco (4 GB si deseas instalar las herramientas de desarrollo) Preparandose para la instalación • Es muy importante tomar las precauciones necesarias antes de instalar Mac OS X. – Respaldar información importante – Leer el documento “Leame antes de Instalar” – Recolectar información de tu computador – Actualizar el Firmware. – Si se requiere utilizar las aplicaciones clásicas de Mac OS 9, es necesario primeramente actualizar a la versión 9.2.2 y luego instalar el sistema base Mac OS X. Eligiendo un Método de Partición • El particionamiento divide un disco en secciones o volúmenes. • Es necesario borrar toda la información en el disco para realizar el particionamiento. • Existen 2 tipos de configuraciones en las que se puede instalar Mac OS X: Eligiendo el tipo de Instalación • Además del tipo de instalación por defecto existe otros tipos de instalación: – Actualización – Archivar e Instalar – Borrar e Instalar Completando la Instalación • Cuando la instalación se ha completado, el instalador reinicia el equipo y se inicia el Asistente de Instalación, el cuál recolecta información necesaria para registrar Mac OS X y crear una nueva cuenta de usuario. • La cuenta inicial que se crea al instalar Mac OS X, es una cuenta de administrador, la cual permite cambiar las configuraciones del sistema e instalar aplicaciones y utilidades. Solucionando problemas de instalación • Existen 3 fases críticas en las que pueden considerar posibles puntos de fallo: – Leer paquetes de DVD de instalación de Mac OS X – Problemas al procesar los paquetes desde la memoria RAM – Problemas escribiendo los paquetes en el Volumen de destino. Tips para la Solución de problemas • Asegúrate que el equipo cumple con los requerimientos mínimos para la instalación, incluyendo la versión del Firmware. • Revisar los Logs de instalación (Archivo > Mostrar Logs) • Reiniciar el equipo en caso de que se esté efectuando alguna actualización. • Desconectar cualquier dispositivo que pueda afectar el proceso de instalación, únicamente se necesita un teclado, mouse y un monitor. • Remover memoria RAM que no sea Apple. Cuentas de Usuario • 3 tipos de usuarios: – Estándar – Administrador – Administrador del Sistema (Super Usuario, root) • Pueden existir muchas cuentas de usuario Estándar y Administrador, pero en Mac OS X existe 1 usuario Administrador del Sistema. • Un usuario contiene los siguientes atributos: • Nombre Completo • Nombre corto (username) • UID (User ID) • Carpeta Personal (Home Folder) Creando y Editando Cuentas de Usuario Preferencias del Sistema Utilizando el Cambio rápido de usuarios Asegurando tu Mac • Mac OS X posee características de seguridad robustas, gracias a su sistema basado en UNIX. • Existen varios tipos de contraseñas (passwords) que utiliza Mac OS X. – – – – Login Password. (Usuarios) Open Firmware Password (Asegurar el proceso de inicio). Master Password. (File Vault, Recuperar datos encriptados) Resource Passwords (Mail, carpetas comprimidas, encriptación, Sitios Web). – Keychain Password (Base de datos de Claves). Asegurando tu cuenta con FileVault • FileVault habilita al usuario para encriptar su carpeta personal. • Toda la carpeta personal se transfiere a una imagen de disco encriptada ajustable. • Cuando el usuario inicia la sesión, la imagen se monta y se desencripta. • En casos de olvidar la contraseña se de debe crear una “Contraseña Maestra” Otras opciones de Seguridad • Solicitar una contraseña cuando la computadora está en reposo. • Deshabilitar el inicio de sesión automático. • Preguntar siempre por una contraseña en las preferencias del sistema. • Cerrar la sesión después de un determinado tiempo. Revisión Questions?