El documento describe los mecanismos de comunicación entre procesos, incluyendo señales e interrupciones de software. Las señales permiten que un proceso notifique a otro sobre eventos y errores. Cuando un proceso recibe una señal, ejecuta una rutina de tratamiento de señales antes de continuar su ejecución. Las señales pueden enviarse entre procesos con el mismo identificador de usuario o por el sistema operativo para notificar errores.
Este documento explica los conceptos básicos de procesos e hilos desde una perspectiva de la vida cotidiana y en sistemas operativos como Linux. Define qué es un proceso, sus estados, jerarquía, y administración de memoria. También define qué es un hilo, las diferencias entre procesos y hilos, y los tipos de hilos.
Este documento introduce brevemente varios temas clave de la ingeniería de software, incluyendo una definición de ingeniería de software, los costos asociados, los tipos de productos de software, la especificación de productos, y la ética en la ingeniería de software. También presenta preguntas frecuentes sobre la disciplina y resume los principios fundamentales que se aplican a todo tipo de desarrollo de sistemas de software.
El documento explica que los hilos son una forma de ver la ejecución dentro de un proceso. Los hilos comparten los recursos del proceso como la memoria y variables globales, pero cada hilo tiene su propio contador de programa, registros y pila. Los hilos permiten que varias ejecuciones ocurran de forma concurrente dentro del mismo proceso.
Este documento presenta una introducción a la ingeniería de requisitos y describe varias técnicas clave que se implementan en el proceso. Explica que la ingeniería de requisitos ayuda a entender mejor el problema y reducir riesgos en el desarrollo del proyecto. Luego describe técnicas como entrevistas, casos de uso, prototipos y priorización de requisitos que se usan para la recolección y análisis de requisitos. También cubre la especificación, verificación y administración de requisitos como parte integral del
JSP es una tecnología para crear páginas web dinámicas con Java que permite incorporar código Java en páginas con formato HTML. El código Java se ejecuta en el servidor para generar contenido dinámico, mientras que el HTML se envía al usuario. JSP permite desarrollar aplicaciones web multiplataforma que se ejecutan en diversos servidores usando Java.
Este documento describe los diagramas de secuencia y sus elementos. Explica que los diagramas de secuencia muestran la interacción entre objetos a través del tiempo mediante líneas de vida y flechas que representan mensajes. Identifica los objetos, mensajes, línea de tiempo y barra de activación como elementos clave. El objetivo es investigar el uso y la importancia de los diagramas de secuencia para comprender su funcionamiento y esquema.
In this slide contain details of CRC Card (class responsibility collaboration) , and 6 examples of CRC card ,advantages and disadvantages, and how to make CRC card.
Ingeniería de requisitos e ingeniería de requerimientosCesar Prado
Este documento resume los conceptos clave de la ingeniería de requisitos. Explica que la ingeniería de requisitos es el proceso de desarrollar especificaciones de software mediante la recopilación, análisis y verificación de las necesidades del cliente. Describe las fases de la ingeniería de requisitos como la captura y análisis de requisitos, la especificación, la validación y la gestión de cambios. También explica técnicas comunes como entrevistas, talleres y casos de uso para descubrir requisitos del cliente.
Este documento explica los conceptos básicos de procesos e hilos desde una perspectiva de la vida cotidiana y en sistemas operativos como Linux. Define qué es un proceso, sus estados, jerarquía, y administración de memoria. También define qué es un hilo, las diferencias entre procesos y hilos, y los tipos de hilos.
Este documento introduce brevemente varios temas clave de la ingeniería de software, incluyendo una definición de ingeniería de software, los costos asociados, los tipos de productos de software, la especificación de productos, y la ética en la ingeniería de software. También presenta preguntas frecuentes sobre la disciplina y resume los principios fundamentales que se aplican a todo tipo de desarrollo de sistemas de software.
El documento explica que los hilos son una forma de ver la ejecución dentro de un proceso. Los hilos comparten los recursos del proceso como la memoria y variables globales, pero cada hilo tiene su propio contador de programa, registros y pila. Los hilos permiten que varias ejecuciones ocurran de forma concurrente dentro del mismo proceso.
Este documento presenta una introducción a la ingeniería de requisitos y describe varias técnicas clave que se implementan en el proceso. Explica que la ingeniería de requisitos ayuda a entender mejor el problema y reducir riesgos en el desarrollo del proyecto. Luego describe técnicas como entrevistas, casos de uso, prototipos y priorización de requisitos que se usan para la recolección y análisis de requisitos. También cubre la especificación, verificación y administración de requisitos como parte integral del
JSP es una tecnología para crear páginas web dinámicas con Java que permite incorporar código Java en páginas con formato HTML. El código Java se ejecuta en el servidor para generar contenido dinámico, mientras que el HTML se envía al usuario. JSP permite desarrollar aplicaciones web multiplataforma que se ejecutan en diversos servidores usando Java.
Este documento describe los diagramas de secuencia y sus elementos. Explica que los diagramas de secuencia muestran la interacción entre objetos a través del tiempo mediante líneas de vida y flechas que representan mensajes. Identifica los objetos, mensajes, línea de tiempo y barra de activación como elementos clave. El objetivo es investigar el uso y la importancia de los diagramas de secuencia para comprender su funcionamiento y esquema.
In this slide contain details of CRC Card (class responsibility collaboration) , and 6 examples of CRC card ,advantages and disadvantages, and how to make CRC card.
Ingeniería de requisitos e ingeniería de requerimientosCesar Prado
Este documento resume los conceptos clave de la ingeniería de requisitos. Explica que la ingeniería de requisitos es el proceso de desarrollar especificaciones de software mediante la recopilación, análisis y verificación de las necesidades del cliente. Describe las fases de la ingeniería de requisitos como la captura y análisis de requisitos, la especificación, la validación y la gestión de cambios. También explica técnicas comunes como entrevistas, talleres y casos de uso para descubrir requisitos del cliente.
Bug Tracking System is a web-based application that is designed to help quality assurance and programmers keep track of reported software bugs in their work. Bugs will be assigned to a person with a bug id, flag, description, project name.
Technology Used
Operating System : Windows XP or above
User Interface : HTML, CSS
Client-side Scripting : PHP
Back End : MySQL
Web Server : Apache Tomcat 7.0.22
IDE : NetBeans 7.1
El modelo incremental de desarrollo de software propone entregar el producto en partes pequeñas llamadas incrementos, con cada incremento construyéndose sobre el anterior. Fue propuesto por Mills en 1980 para reducir la repetición de trabajo y permitir retrasar decisiones sobre requisitos hasta adquirir experiencia con el sistema. Cada incremento produce una versión más completa del software con nuevas funciones.
Este documento presenta una introducción a los fundamentos y métodos de análisis de requerimientos. Explica que los requerimientos son cruciales para el éxito de los proyectos de software. Luego describe varios métodos y conceptos clave relacionados con el análisis y modelado de requerimientos, incluyendo el análisis estructurado, el desarrollo del sistema de Jackson, la programación orientada a objetos y el análisis y diseño orientado a objetos. Finalmente, concluye que la ingeniería de requisitos es
Este documento describe el perfil y funciones de un administrador de recursos informáticos. Explica que un administrador debe tener habilidades comunicativas, ser paciente y analítico para resolver problemas. Sus funciones incluyen supervisar el estado de la infraestructura tecnológica diariamente, responder a crisis tecnológicas y asegurarse de que los sistemas, servidores, firewalls, software y otros dispositivos funcionen correctamente. El administrador también debe mantenerse actualizado sobre nuevas tecnologías para mantener el departamento de TI
El documento trata sobre la gestión de procesos en sistemas operativos. Explica que un proceso es la unidad de trabajo del sistema y puede encontrarse en diferentes estados como nuevo, en ejecución, en espera o preparado. También habla sobre la planificación de procesos, que busca lograr un equilibrio en el uso de recursos y una rápida respuesta, a la vez que permite dar prioridad a procesos clave. Finalmente, menciona operaciones básicas como crear, destruir, cambiar la prioridad, bloquear y activ
Este documento presenta la metodología incremental para el desarrollo de software. Describe que cada incremento agrega nuevas funcionalidades sobre la versión anterior y que después de cada incremento se evalúa el sistema para planificar el siguiente. Además, menciona que esta metodología permite entregar valor a los usuarios con más frecuencia que otras metodologías y que tiene ventajas como un menor riesgo de fallos totales del proyecto.
What is professional software development and definition of software engineering. Who is a software engineer. Difference between Computer Science and Systems Engineering
El documento describe varios modelos de procesos de software, incluyendo tres modelos secuenciales (lineal secuencial, iterativo basado en prototipos, y de desarrollo rápido de aplicaciones), tres modelos evolutivos (espiral, de desarrollo concurrente e incremental) y tres modelos ágiles (Scrum, Crystal y Programación Extrema). Define cada modelo y resume brevemente sus características clave.
Objetivo: Caracterizar los mecanismos de sincronización y las necesidades que surgen en el interbloqueo, mediante la resolución de problemas de concurrencia, para llevar a cabo la instalación, configuración y mantenimiento de los sistemas operativos según requerimientos.
Los algoritmos de distribución de datos paralelos pueden minimizar el tiempo de ejecución y maximizar el uso de recursos para aplicaciones paralelas, pero implementar uno de manera efectiva es complejo y puede resultar en que no cumpla con sus especificaciones debido a su naturaleza paralela.
Se establece un recorrido por elementos fundamentales del diseño de software. Elementos como la funcionalidad, la facilidad de uso, la soportabilidad, entre otras.El refinamiento, la refabricación y las diversas clases de diseño pueden se encontradas en este documento.
Objetivo: Caracterizar las actividades involucradas en el descubrimiento, documentación y mantenimiento de los requerimientos de un producto determinado conociendo de forma precisa el problema que van a resolver para que la solución que se construya sea correcta y útil.
El documento describe los modelos de proceso evolutivo-prototipo. Explica que el modelo evolutivo consiste en expandir incrementos de un producto de software operacional guiado por la experiencia con el sistema. Describe que existen dos tipos de desarrollo evolutivo: exploratorio y de prototipos desechables. También cubre las etapas del modelo evolutivo y las características y ventajas de los modelos evolutivos e iterativos.
Este documento describe las características de las multicomputadoras, incluyendo su organización de hardware, esquemas de conmutación, software de comunicación de bajo nivel y cómo se comunican los procesos entre CPUs distintas a través del envío de mensajes. También discute soluciones para problemas como la copia excesiva de paquetes y la asignación de recursos de red entre procesos.
El documento describe los conceptos fundamentales de los procesos y las interrupciones en los sistemas operativos. Explica que los procesos pueden estar en estados como listo, bloqueado o en ejecución, y que las interrupciones pueden ser generadas por hardware o software. También describe el bloque de control de proceso, que contiene información sobre cada proceso, y las funciones básicas del núcleo del sistema operativo relacionadas con la administración de procesos y el procesamiento de interrupciones.
Este documento describe el modelado basado en escenarios y cómo se pueden usar escenarios, casos de uso, diagramas de actividad y diagramas de carril para modelar sistemas desde la perspectiva del usuario. Un escenario describe parcialmente el comportamiento de un sistema en una situación particular. El modelado basado en escenarios comienza con la creación de escenarios usando casos de uso, diagramas de actividad y diagramas de carril para una interacción más efectiva entre el sistema y el usuario.
Fundamentos y metodos de analisis de requerimientoslexiherrera
El documento describe varios métodos y conceptos clave para el análisis de requerimientos de software, incluyendo el análisis orientado a objetos, métodos de análisis centrados en el flujo de datos y la estructura de datos, y la programación orientada a objetos. El objetivo principal del análisis de requerimientos es comprender todos los componentes necesarios para definir un software a través del uso de una serie de técnicas y procedimientos.
Las clases principales identificadas son: Cliente, Tarjeta de Crédito, Cajero Automático, Consorcio de Bancos, Banco, Cuenta Bancaria, Transacción, Dinero en Efectivo, y Recibo. Otras clases incluyen Ordenador Central, Sistema, y Línea de Comunicaciones. Se eliminaron clases redundantes o irrelevantes como Usuario y Coste de Desarrollo.
Communication And Synchronization In Distributed Systemsguest61205606
This document discusses various topics related to communication and synchronization in distributed systems. It covers concepts like communication protocols, remote procedure calls, client-server and peer-to-peer models, blocking vs non-blocking communication, reliability, group communication, message ordering, and synchronization techniques including clock synchronization algorithms, mutual exclusion algorithms, and atomic transactions.
La herencia permite definir nuevas clases a partir de clases existentes, compartiendo sus atributos y métodos. Para determinar la herencia correcta entre clases, se debe aplicar el principio de que una subclase es un tipo específico de la superclase. Por ejemplo, un "Furgoneta" es un tipo de "Vehículo", por lo que la clase Furgoneta debe heredar de la clase Vehículo. Esto garantiza un diseño de clases coherente y reutilizable.
El documento trata sobre la gestión de memoria en sistemas operativos. Explica que la gestión de memoria asigna espacio en memoria principal a procesos mientras maximiza el uso de recursos. Inicialmente, los sistemas operativos usaban particiones de memoria fijas, pero esto podía fragmentar la memoria. Los sistemas modernos usan técnicas como direccionamiento relativo para cargar procesos dinámicamente en cualquier parte de memoria.
Bug Tracking System is a web-based application that is designed to help quality assurance and programmers keep track of reported software bugs in their work. Bugs will be assigned to a person with a bug id, flag, description, project name.
Technology Used
Operating System : Windows XP or above
User Interface : HTML, CSS
Client-side Scripting : PHP
Back End : MySQL
Web Server : Apache Tomcat 7.0.22
IDE : NetBeans 7.1
El modelo incremental de desarrollo de software propone entregar el producto en partes pequeñas llamadas incrementos, con cada incremento construyéndose sobre el anterior. Fue propuesto por Mills en 1980 para reducir la repetición de trabajo y permitir retrasar decisiones sobre requisitos hasta adquirir experiencia con el sistema. Cada incremento produce una versión más completa del software con nuevas funciones.
Este documento presenta una introducción a los fundamentos y métodos de análisis de requerimientos. Explica que los requerimientos son cruciales para el éxito de los proyectos de software. Luego describe varios métodos y conceptos clave relacionados con el análisis y modelado de requerimientos, incluyendo el análisis estructurado, el desarrollo del sistema de Jackson, la programación orientada a objetos y el análisis y diseño orientado a objetos. Finalmente, concluye que la ingeniería de requisitos es
Este documento describe el perfil y funciones de un administrador de recursos informáticos. Explica que un administrador debe tener habilidades comunicativas, ser paciente y analítico para resolver problemas. Sus funciones incluyen supervisar el estado de la infraestructura tecnológica diariamente, responder a crisis tecnológicas y asegurarse de que los sistemas, servidores, firewalls, software y otros dispositivos funcionen correctamente. El administrador también debe mantenerse actualizado sobre nuevas tecnologías para mantener el departamento de TI
El documento trata sobre la gestión de procesos en sistemas operativos. Explica que un proceso es la unidad de trabajo del sistema y puede encontrarse en diferentes estados como nuevo, en ejecución, en espera o preparado. También habla sobre la planificación de procesos, que busca lograr un equilibrio en el uso de recursos y una rápida respuesta, a la vez que permite dar prioridad a procesos clave. Finalmente, menciona operaciones básicas como crear, destruir, cambiar la prioridad, bloquear y activ
Este documento presenta la metodología incremental para el desarrollo de software. Describe que cada incremento agrega nuevas funcionalidades sobre la versión anterior y que después de cada incremento se evalúa el sistema para planificar el siguiente. Además, menciona que esta metodología permite entregar valor a los usuarios con más frecuencia que otras metodologías y que tiene ventajas como un menor riesgo de fallos totales del proyecto.
What is professional software development and definition of software engineering. Who is a software engineer. Difference between Computer Science and Systems Engineering
El documento describe varios modelos de procesos de software, incluyendo tres modelos secuenciales (lineal secuencial, iterativo basado en prototipos, y de desarrollo rápido de aplicaciones), tres modelos evolutivos (espiral, de desarrollo concurrente e incremental) y tres modelos ágiles (Scrum, Crystal y Programación Extrema). Define cada modelo y resume brevemente sus características clave.
Objetivo: Caracterizar los mecanismos de sincronización y las necesidades que surgen en el interbloqueo, mediante la resolución de problemas de concurrencia, para llevar a cabo la instalación, configuración y mantenimiento de los sistemas operativos según requerimientos.
Los algoritmos de distribución de datos paralelos pueden minimizar el tiempo de ejecución y maximizar el uso de recursos para aplicaciones paralelas, pero implementar uno de manera efectiva es complejo y puede resultar en que no cumpla con sus especificaciones debido a su naturaleza paralela.
Se establece un recorrido por elementos fundamentales del diseño de software. Elementos como la funcionalidad, la facilidad de uso, la soportabilidad, entre otras.El refinamiento, la refabricación y las diversas clases de diseño pueden se encontradas en este documento.
Objetivo: Caracterizar las actividades involucradas en el descubrimiento, documentación y mantenimiento de los requerimientos de un producto determinado conociendo de forma precisa el problema que van a resolver para que la solución que se construya sea correcta y útil.
El documento describe los modelos de proceso evolutivo-prototipo. Explica que el modelo evolutivo consiste en expandir incrementos de un producto de software operacional guiado por la experiencia con el sistema. Describe que existen dos tipos de desarrollo evolutivo: exploratorio y de prototipos desechables. También cubre las etapas del modelo evolutivo y las características y ventajas de los modelos evolutivos e iterativos.
Este documento describe las características de las multicomputadoras, incluyendo su organización de hardware, esquemas de conmutación, software de comunicación de bajo nivel y cómo se comunican los procesos entre CPUs distintas a través del envío de mensajes. También discute soluciones para problemas como la copia excesiva de paquetes y la asignación de recursos de red entre procesos.
El documento describe los conceptos fundamentales de los procesos y las interrupciones en los sistemas operativos. Explica que los procesos pueden estar en estados como listo, bloqueado o en ejecución, y que las interrupciones pueden ser generadas por hardware o software. También describe el bloque de control de proceso, que contiene información sobre cada proceso, y las funciones básicas del núcleo del sistema operativo relacionadas con la administración de procesos y el procesamiento de interrupciones.
Este documento describe el modelado basado en escenarios y cómo se pueden usar escenarios, casos de uso, diagramas de actividad y diagramas de carril para modelar sistemas desde la perspectiva del usuario. Un escenario describe parcialmente el comportamiento de un sistema en una situación particular. El modelado basado en escenarios comienza con la creación de escenarios usando casos de uso, diagramas de actividad y diagramas de carril para una interacción más efectiva entre el sistema y el usuario.
Fundamentos y metodos de analisis de requerimientoslexiherrera
El documento describe varios métodos y conceptos clave para el análisis de requerimientos de software, incluyendo el análisis orientado a objetos, métodos de análisis centrados en el flujo de datos y la estructura de datos, y la programación orientada a objetos. El objetivo principal del análisis de requerimientos es comprender todos los componentes necesarios para definir un software a través del uso de una serie de técnicas y procedimientos.
Las clases principales identificadas son: Cliente, Tarjeta de Crédito, Cajero Automático, Consorcio de Bancos, Banco, Cuenta Bancaria, Transacción, Dinero en Efectivo, y Recibo. Otras clases incluyen Ordenador Central, Sistema, y Línea de Comunicaciones. Se eliminaron clases redundantes o irrelevantes como Usuario y Coste de Desarrollo.
Communication And Synchronization In Distributed Systemsguest61205606
This document discusses various topics related to communication and synchronization in distributed systems. It covers concepts like communication protocols, remote procedure calls, client-server and peer-to-peer models, blocking vs non-blocking communication, reliability, group communication, message ordering, and synchronization techniques including clock synchronization algorithms, mutual exclusion algorithms, and atomic transactions.
La herencia permite definir nuevas clases a partir de clases existentes, compartiendo sus atributos y métodos. Para determinar la herencia correcta entre clases, se debe aplicar el principio de que una subclase es un tipo específico de la superclase. Por ejemplo, un "Furgoneta" es un tipo de "Vehículo", por lo que la clase Furgoneta debe heredar de la clase Vehículo. Esto garantiza un diseño de clases coherente y reutilizable.
El documento trata sobre la gestión de memoria en sistemas operativos. Explica que la gestión de memoria asigna espacio en memoria principal a procesos mientras maximiza el uso de recursos. Inicialmente, los sistemas operativos usaban particiones de memoria fijas, pero esto podía fragmentar la memoria. Los sistemas modernos usan técnicas como direccionamiento relativo para cargar procesos dinámicamente en cualquier parte de memoria.
Los sistemas operativos han evolucionado para mejorar el rendimiento y proporcionar un ambiente adecuado para los usuarios y programas. Los primeros sistemas por lotes permitieron la ejecución automática de trabajos mediante un sistema operativo residente. Posteriormente, la multiprogramación mejoró el rendimiento al permitir que varios trabajos permanecieran en memoria para incrementar la ocupación de la CPU. Finalmente, los sistemas de tiempo compartido posibilitaron el uso simultáneo de una computadora por varios usuarios de forma interactiva.
La memoria dinámica permite asignar memoria de forma variable durante la ejecución del programa. Se reserva en la zona libre de memoria principal llamada heap. Su principal ventaja es que el tamaño puede variar, solucionando problemas cuando no se conoce el número de datos por adelantado. El programador es responsable de liberar la memoria dinámica cuando ya no se necesite más mediante funciones como free(), malloc(), calloc() y realloc().
El documento describe los conceptos básicos de las bases de datos, incluyendo su definición, estructura, ventajas de usar un sistema gestor de bases de datos (SGBD), y los actores involucrados como el administrador de la base de datos. También cubre los modelos de bases de datos como el modelo entidad-relación y el modelado de objetos, así como las fases del diseño de una base de datos que incluyen el análisis de requisitos y el diseño conceptual.
Las funciones son bloques de construcción básicos en C que dividen un problema en subtareas más simples. Las funciones facilitan el diseño del programa, permiten reutilizar código y ocultar detalles de implementación. Pueden transferir información por valor o por referencia y devolver un valor. Los prototipos especifican el tipo y número de parámetros de una función.
Este documento describe cómo crear y usar macros en Excel para automatizar tareas repetitivas. Explica que las macros permiten fusionar varias acciones en una sola tarea mediante un botón. A continuación, detalla los pasos para grabar una macro, incluyendo seleccionar un nombre, método abreviado y ubicación de almacenamiento, y grabar las acciones deseadas. También cubre cómo establecer los niveles de seguridad para macros y ejemplos prácticos de su uso.
El documento describe los diferentes tipos de software y lenguajes de programación. Explica que el software se divide en software del sistema y de aplicaciones. El software del sistema incluye el sistema operativo y programas de utilidad que controlan la computadora, mientras que los programas de aplicación realizan tareas específicas. También describe los lenguajes de programación de alto y bajo nivel, y los traductores como compiladores e intérpretes que convierten entre estos lenguajes.
Variables, constantes y tipos de datos en CRonny Parra
Inroducción a las varibales, constantes y tipos de datos en C. Contiene las definiciones de cada una de éstas, además de los tipos de datos soportados por C con su rango, la lista de los operadodres lógicos, aritméticos y relacionales, y las secuencias de escape de uso mas común con printf y scanf
Este documento describe funciones recursivas y cómo resolver problemas de forma recursiva. Explica conceptos como caso base, paso recursivo, variables de recursión y dominio de variables. Incluye ejemplos de funciones recursivas como factorial, Fibonacci, conversión de decimal a binario y potenciación. También compara recursividad e iteración y analiza ventajas y desventajas de la recursividad.
El documento describe las estructuras en C. Una estructura permite agrupar múltiples variables de diferentes tipos bajo un nombre. Las estructuras se definen usando la palabra clave struct y contienen campos que almacenan los datos. Las estructuras permiten manipular conjuntos de datos relacionados como un solo objeto.
Este documento introduce el concepto de memoria dinámica en C y C++. Explica que a veces no es posible conocer la cantidad de variables necesarias por adelantado, por lo que se requiere asignar memoria dinámicamente en tiempo de ejecución usando funciones como malloc(), realloc() y free(). También describe cómo la memoria dinámica se almacena en el montículo o heap, a diferencia de las variables globales y locales que se almacenan en posiciones fijas. Finalmente, da un ejemplo de cómo la asignación din
El documento describe las estructuras en C, incluyendo su definición, características y uso. Una estructura agrupa múltiples variables de tipos diferentes bajo un nombre común. Las estructuras se definen usando la palabra clave struct y pueden contener cualquier número de miembros de diferentes tipos de datos. Las estructuras permiten manipular conjuntos relacionados de datos como una sola unidad.
Este documento introduce los punteros en C. Explica que un puntero es una variable que almacena la dirección de memoria de otra variable y puede usarse para acceder y modificar el valor al que apunta. Describe los operadores & y * y cómo se usan para obtener la dirección de memoria de una variable y acceder al valor almacenado en esa dirección, respectivamente. Resalta que los punteros permiten manipular variables de forma indirecta a través de sus direcciones de memoria.
Este documento introduce los punteros en C. Explica que un puntero es una variable que contiene la dirección de memoria de otra variable y puede usarla para acceder y modificar su valor. Describe los operadores & y * y cómo se usan para obtener la dirección de memoria de una variable y acceder al valor apuntado, respectivamente. Advierte que los punteros requieren cuidado en su uso para evitar errores como punteros no inicializados o tipos incompatibles.
Este documento proporciona información sobre un curso de programación en C/C++. Explica conceptos básicos como la estructura de un programa en C, variables, tipos de datos, funciones, y sentencias de control. También cubre temas como arrays, strings, punteros, memoria dinámica, y operadores de bits. El curso parece incluir lecciones sobre la historia de los lenguajes de programación, programación estructurada vs. orientada a objetos, y el uso de librerías estándar.
El documento describe varios tipos de datos fundamentales en lenguajes de programación, incluyendo enteros, coma flotante, caracteres, lógicos y palabras reservadas. Define cada tipo de dato, especificando el espacio de almacenamiento utilizado y las operaciones posibles para cada uno. También explica que los programadores pueden definir nuevos tipos de datos combinando otros tipos existentes.
Este documento resume los 7 hábitos de la gente altamente efectiva de Stephen Covey. El primer hábito es ser proactivo, lo que significa asumir la responsabilidad personal por nuestras acciones en lugar de culpar a factores externos. El segundo hábito es empezar con un fin en mente, lo que significa tener claros objetivos y una visión para guiar nuestras decisiones. El documento también discute los diferentes centros en los que las personas a menudo se enfocan como la familia, el dinero o el trabajo, y cómo esto puede afectar negativamente su
El documento habla sobre datos, variables y constantes. Define datos como cualquier valor que sirva como entrada o salida en un proceso de transformación de información. Explica los tipos de datos simples y compuestos, y cómo se clasifican los datos numéricos, de caracteres y lógicos. También define variables e identificadores para almacenar datos, y constantes para valores que no cambian.
Este documento describe el funcionamiento de las llamadas a procedimientos remotos (RPC). Explica que RPC permite que un procedimiento se ejecute en una máquina remota de forma transparente para el programador. Describe los roles del cliente y servidor, el empaquetado y desempaquetado de parámetros, y cómo se manejan los errores para que RPC funcione de forma fiable.
Este documento explica varios temas relacionados con los sistemas operativos, incluyendo monitores, paso de mensajes, direccionamiento y concurrencia. Los monitores son módulos de software que permiten la exclusión mutua al asegurar que solo un proceso acceda a los datos compartidos a la vez. El paso de mensajes involucra el envío y recepción de mensajes entre procesos para permitir la comunicación y sincronización. El direccionamiento determina qué procesos están involucrados en la transacción de comunicación, ya sea de forma directa
El documento describe los conceptos fundamentales de administración por procesos y gestión de procesos de negocio. Explica que un proceso de negocio es una serie de actividades relacionadas que transforman entradas en resultados y que la administración por procesos busca mejorar el desempeño de una organización mediante la gestión y optimización continua de los procesos de negocio.
El documento describe los componentes y operación de un sistema computacional. Un sistema computacional consiste en hardware, programas de aplicación y sistema operativo. El hardware proporciona recursos de computación básicos, los programas de aplicación definen cómo se usan estos recursos, y el sistema operativo proporciona una interfaz entre hardware y software.
El documento describe los conceptos fundamentales de los procesos, incluyendo su estructura, estados, transiciones entre estados, y mecanismos de sincronización como semáforos y monitores. Los procesos son programas en ejecución que pasan por varios estados como nuevo, listo, en ejecución, bloqueado y terminado. Los semáforos y monitores son herramientas que permiten la comunicación y sincronización entre procesos al acceder recursos compartidos.
El documento describe los diferentes estados por los que pasa un proceso a lo largo de su ejecución: nuevo, listo, en ejecución, bloqueado, zombie y terminado. También explica conceptos como tick, quantum, tiempo de respuesta, tiempo en espera y métricas para medir el comportamiento del sistema bajo diferentes planificadores.
1) El documento describe los conceptos básicos de procesos, hilos, concurrencia, exclusión mutua y soluciones para prevenir el interbloqueo en sistemas operativos. 2) Explica los diferentes estados de los procesos y métodos como semaforos, monitores y paso de mensajes para lograr la sincronización y exclusión mutua. 3) También cubre temas como deadlock, las condiciones necesarias para que ocurra y métodos de prevención, predicción y detección.
Este documento contiene información sobre procesos, programas y procesadores. Define estos términos y describe sus diferencias y semejanzas. También explica el diagrama de estados de un proceso, las transiciones entre estados, el concepto de semaforo, y los objetivos y niveles de planificación del procesador.
El documento describe los procesos en sistemas operativos. Un proceso es un programa en ejecución que se representa mediante un Bloque de Control de Proceso (PCB) que contiene información sobre el estado, recursos asignados y planificación del proceso. Los sistemas modernos ejecutan múltiples procesos de forma concurrente a través de la planificación y conmutación entre procesos listos para ejecutarse.
Este documento presenta los modelos de estados y transiciones para representar el comportamiento de los procesos en un sistema operativo. Explica que un proceso pasa por diferentes estados como ejecución, listo, bloqueado y nuevo, y que las transiciones entre estados ocurren cuando el proceso cambia de una actividad a otra. También describe cómo se pueden representar gráficamente los estados y transiciones de los procesos usando diagramas de estados y transiciones.
Este documento describe varios conceptos clave relacionados con la administración de procesos en sistemas operativos. Explica que un proceso es una instancia de ejecución de un programa que está caracterizado por su estado, memoria reservada y contenidos. También describe los diferentes estados que puede tener un proceso como ejecución, listo, espera, nuevo y terminado. Además, explica conceptos como la concurrencia, exclusión mutua, sincronización, semáforos y monitores que son fundamentales para la gestión de procesos concurrentes en un
Este documento describe los conceptos fundamentales de los procesos y su gestión por parte de un sistema operativo. Explica que un proceso es una unidad de trabajo del sistema y que el sistema operativo se encarga de realizar un seguimiento de todas las actividades en relación con los procesos. También describe los diferentes estados por los que puede pasar un proceso, incluyendo ejecución, listo, bloqueado y terminado, así como las transiciones entre estados. Finalmente, menciona que el sistema operativo utiliza una estructura de datos llamada bloque de control de pro
El documento describe los conceptos de procesos, estados de procesos y planificación de procesos en sistemas operativos. Explica que los procesos pueden estar en estados como ejecución, listo, bloqueado, nuevo o terminado. También describe cómo los sistemas operativos usan herramientas como colas y planificadores para asignar recursos a los procesos y decidir qué proceso ejecutar a continuación.
El documento describe los conceptos de procesos, estados de procesos y planificación de procesos en sistemas operativos. Explica que los procesos pueden estar en estados como ejecución, listo, bloqueado, nuevo o terminado. También describe cómo los sistemas operativos usan herramientas como colas y planificadores para asignar recursos a los procesos y decidir qué proceso ejecutar a continuación.
El documento describe conceptos básicos sobre procesos y su administración en sistemas operativos. Define proceso como una instancia de ejecución de un programa, caracterizado por su estado actual. Los procesos pasan por estados discretos como en ejecución, listo o bloqueado. El sistema operativo usa bloques de control de proceso para almacenar información sobre cada proceso y gestionar la asignación de recursos.
El documento describe las características de los sistemas distribuidos y cómo estos difieren de los sistemas centralizados al permitir errores parciales. También explica que los sistemas distribuidos deben construirse para recuperarse automáticamente de fallos sin afectar el rendimiento y continúan operando de forma aceptable durante las reparaciones.
Este documento describe los procesos ligeros (hilos), incluyendo su definición, modelos existentes, diseño como threads, inserción en procesos, e implementación de señales, temporizadores y excepciones. Los hilos comparten memoria y permiten la ejecución paralela de funciones. Existen tres modelos comunes: jefe/trabajador, equipo de trabajo y línea de ensamblado. Los hilos permiten una mayor eficiencia que los procesos al compartir memoria y requerir menos recursos.
El documento describe los conceptos básicos de procesos y planificación de procesos. Explica que un proceso es un programa en ejecución que requiere recursos como CPU, memoria y E/S. Los procesos pueden estar en estados de ejecución, bloqueado o listo. También describe los hilos o subprocesos, algoritmos de planificación como round robin y por prioridades, y técnicas como planificación de dos niveles para gestionar procesos en memoria y disco.
Este documento describe los conceptos de hilos y su implementación en sistemas operativos. Explica que un hilo es una unidad básica de ejecución que comparte memoria y recursos con otros hilos dentro de un proceso. Describe tres modelos de hilos (jefe/trabajador, equipo de trabajo y línea de ensamblado) y cómo se implementan señales, temporizadores y excepciones para la comunicación entre hilos. Concluye explicando los beneficios del uso de hilos para lograr mayor paralelismo y rendimiento en aplicaciones
Este documento describe los conceptos de hilos y su implementación en sistemas operativos. Explica que un hilo es una unidad básica de ejecución que comparte memoria y recursos con otros hilos dentro de un proceso. Describe tres modelos de hilos (jefe/trabajador, equipo de trabajo y línea de ensamblado) y los principales aspectos de diseño como hilos. También explica cómo los hilos se insertan en un proceso y cómo se implementan señales, temporizadores y excepciones.
Python es un lenguaje de programación potente y fácil de aprender. Es un lenguaje interpretado, de alto nivel y orientado a objetos que se puede utilizar para muchos tipos de desarrollo de software en múltiples plataformas. Python es un proyecto de código abierto mantenido por la comunidad de programadores.
El documento describe diferentes funciones lógicas y de formato condicional en Excel. Explica la función SI y cómo permite evaluar una condición y dar resultados diferentes dependiendo del resultado. También describe cómo anidar funciones SI para crear fórmulas más complejas y cómo usar las funciones Y y O para evaluar múltiples condiciones. Además, explica cómo usar el formato condicional para resaltar celdas que cumplen ciertas reglas y cómo validar datos ingresados en celdas.
This document appears to contain grades and scores for multiple students on various assignments, labs, tests, and projects for a course. It lists each student's name followed by their individual scores on talleres, labs, functions, individual work, practices, and theories. The final column contains each student's final calculated grade out of a possible 20 points. Several students' grades range from the high teens to low 12s, while a few students scored in the single digits or 1 point.
1) Los punteros permiten almacenar direcciones de memoria y apuntar a otras variables u objetos. 2) Los arreglos almacenan conjuntos de datos del mismo tipo de forma ordenada y contigua en memoria, y se pueden indexar mediante un índice. 3) Las cadenas de caracteres (strings) son arreglos unidimensionales de caracteres que terminan en un carácter nulo, y se pueden manipular con funciones de la biblioteca string.h.
Este documento describe conceptos básicos de programación en C y C++. Explica que el software se divide en software del sistema y de aplicaciones. Menciona que el sistema operativo controla las operaciones de la computadora y permite ejecutar programas. También describe lenguajes de programación, compiladores, estructura básica de un programa en C, y tipos de variables.
Este documento describe conceptos básicos de programación en C y C++. Explica que el software se divide en software del sistema y de aplicaciones. Menciona que el sistema operativo controla las operaciones de la computadora y permite ejecutar programas. También describe lenguajes de programación, compiladores, estructura básica de un programa en C, y tipos de variables.
El documento habla sobre punteros en el lenguaje C. Explica que un puntero es una variable que contiene la dirección de memoria de otra variable y permite acceder y modificar su valor. También define los operadores & y * para obtener la dirección de memoria de una variable y acceder al valor apuntado por un puntero, respectivamente. Finalmente, resalta la importancia de entender punteros para dominar el lenguaje C.
El documento presenta información sobre algoritmos y programación. Explica que un algoritmo es una secuencia de pasos para resolver un problema y proporciona ejemplos de algoritmos para tareas cotidianas. También introduce conceptos clave como datos, instrucciones, estructuras de control y herramientas algorítmicas como diagramas de flujo y pseudocódigo.
Este documento presenta una guía para el desarrollo de una práctica de laboratorio sobre el manejo de archivos en C++. El objetivo es desarrollar un programa que permita crear y escribir archivos de texto para poderlos leer con cualquier editor. Se instruye a los estudiantes a formar grupos y desarrollar un programa con un menú que permita crear un archivo, leerlo, añadir datos y salir, donde se van pidiendo nombre y edad de usuarios para guardarlos en el archivo con un formato específico. Se incluyen secciones
El documento presenta el plan de estudios semanal para la asignatura de Programación I. Cubre temas como arreglos, punteros, funciones, estructuras, recursividad, manejo de archivos y memoria dinámica a lo largo de 15 semanas. Incluye 3 evaluaciones parciales y 3 prácticas de laboratorio por unidad didáctica con un total de 96 horas entre teoría y prácticas.
Este documento presenta el sílabo de la asignatura Programación I. La asignatura se impartirá de forma presencial en el departamento de Ciencias de la Computación. Cubrirá temas como técnicas avanzadas de programación modular, recursividad, manejo de estructuras, archivos y memoria dinámica. La asignatura contribuirá al desarrollo de habilidades para analizar, desarrollar y probar aplicaciones basadas en programación avanzada. Se evaluará a los estudiantes a través de proyectos, portafolios, p
Este documento trata sobre archivos de datos en lenguaje C. Explica que el almacenamiento en variables y arreglos es temporal, por lo que se necesitan dispositivos de almacenamiento secundario como archivos para guardar datos de manera permanente. Luego describe cómo crear, leer, escribir y actualizar archivos secuenciales y binarios en C, incluyendo las funciones para apertura, cierre, lectura y escritura de archivos. El objetivo es desarrollar programas para el procesamiento de transacciones de archivos de datos.
El documento define los términos "requerimiento" y "requisito" para el desarrollo de software. Define un requerimiento como una necesidad, solicitud o descripción de una condición o capacidad que debe cumplir un sistema para tener valor para el usuario. Define un requisito como el conjunto de condiciones indispensables para el desarrollo de software que sirven como guía para su desarrollo.
El documento propone implementar un eficiente servicio de alimentos para toda la comunidad de la Escuela Politécnica del Ejército a través de la administración centralizada de bares y restaurantes. Actualmente, el servicio es deficiente, con atención descentralizada y falta de infraestructura adecuada. El proyecto busca ofrecer productos de calidad a precios accesibles, mejorando así la calidad de vida y rendimiento de la comunidad politécnica.
La casa tiene señales de peligro en el baño y advertencias de no tocar objetos como la licuadora o la televisión. El documento también menciona los nombres de miembros de la familia como María, su hija Consuelo, César y su hijo.
Este documento proporciona instrucciones básicas para usar el software MS Project 2010, incluyendo cómo crear proyectos, agregar tareas, establecer relaciones entre tareas, asignar recursos y costos, y monitorear el progreso del proyecto.
1. SEÑALES: INTERRUPCIONES SOFTWARE
Generalidades.
Durante una sesión cualquiera, el número de procesos depende del trabajo
que los usuarios realicen. Se sabe que los procesos tienen su propio
contexto, pero esto no quiere decir que estén incomunicados entre sí.
Existe un conjunto de métodos mantenidos por el kernel que permiten
entablar diálogos entre ellos. Estos métodos se llaman mecanismos IPC
(Interprocess Comunication). Dentro del conjunto de IPC’s se tienen a los
semáforos, la memoria compartida, colas de mensajes, etc. Estas no son
las únicas formas de intercomunicación de que dispone el sistema
operativo Los procesos también pueden enviarse interrupciones software,
señales. El conjunto de señales lo maneja el gestor de señales. El número
y tipo de señales viene impuesto por el sistema operativo y cada una de
ellas será empleada en un caso concreto siendo su número la única
información que realmente se transmite entre los procesos cuyo significado
dependerá de la interpretación del programador.
2. SEÑALES Y EXEPCIONES
Cuando un S.O desea notificar a un proceso la ocurrencia de un determinado evento o error, recurre a 2 tipos de
mecanismos: SEÑALES y EXEPCIONES, la primera se utiliza en POSIX y la segunda en WINDOWS NT .
SEÑALES
Las señales tienen frente al proceso el mismo comportamiento que las interrupciones tienen frente al procesador, por
lo que se puede decir que una señal es una interrupción del proceso.
El proceso que recibe una señal se comporta de la siguiente forma:
• El proceso detiene su ejecución en la instrucción de máquina que está ejecutando
• Bifurca a ejecutar una rutina de tratamiento de la señal, cuyo código ha de formar parte del propio proceso
• Una vez ejecutada la rutina de tratamiento, sigue la ejecución del proceso en la instrucción en el que fue
interrumpido.
El origen de una señal puede ser un proceso o el sistema operativo
3. SEÑAL PROCESO-PROCESO
Un proceso puede enviar una señal a otro proceso que tenga el mismo identificador de usuario (uid) pero no a los
que lo tengan distinto . Un proceso también puede mandar una señal a un grupo de procesos, que han de tener su
mismo uid
PROGRAMA 03-02
Programa que imprime la información de identificación de un proceso.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
void main(void)
{
printf("Identificador de usuario: %dn", getuid());
printf("Identificador de usuario efectivo: %dn", geteuid());
printf("Identificador de grupo: %dn", getgid());
printf("Identificador de grupo efetivo: %dn", getegid());
}
4. SEÑAL SISTEMA OPERATIVO-PROCESO
El sistema operativo también toma la decisión de enviar señales a los procesos cuando ocurren
determinados condiciones; Por ej. Las excepciones de ejecución programa( el desbordamiento en las
operaciones aritméticas , la división por cero, el intento de ejecutar una instrucción con código de
operación incorrecto o de direccionar una porción de memoria prohibida), las convierte el S.O en
señales al proceso que ha causado la excepción.
Debido a que existen gran variedad de señales que para indicarle al proceso muchas cosas pj, podemos
categorizar a las señales como:
Excepciones de hardware
Comunicación
E/S asíncrona
EFECTO DE LA SEÑAL Y ARMADA DE LA MISMA
El efecto de la señal es ejecutar una rutina de tratamiento, para que esto sea asi, el proceso debe tener
armada ese tipo de señal, es decir ha de estar preparado para recibir ese tipo de señal.
Armar una señal significa indicar al S.O el nombre de la rutina del proceso que ha de tratar ese tipo de
señal.
5. COMPORTAMIENTO
Cuando un proceso recibe una señal, puede tratarla de tres formas diferentes:
1.- Ignorar la señal, con lo cual no tiene efecto.
2.- Invocar a la rutina de tratamiento correspondiente al número de señal. Esta rutina no la codifica el
programador, sino que la aporta el kernel y normalmente tiene como fin el terminar el proceso que recibe la
señal. En algunos casos, antes de eliminar al proceso, el kernel se encarga de generar en el directorio de
trabajo actual del proceso un fichero llamado core que contiene un volcado de memoria del contexto del
proceso. Analizando dicho fichero se podrá saber en qué punto terminó el proceso y por qué motivo se le
envió la señal.
3.- Invocar a una rutina que se encarga de tratar la señal y que ha sido creada por el programador. Esta rutina
establecerá un mecanismo de comunicación entre procesos o modificará el curso normal del programa. En
estos casos, el proceso no va a terminar a menos que la rutina de tratamiento indique lo contrario.
Señal La primera señal que recibe no provoca que
Señal Señal el proceso cambie el curso de su
ejecución, esto es debido a que la acción que
está activa es que el proceso ignore la señal.
El proceso prosigue su ejecución y recibe una
Inicio Fin segunda señal que le fuerza a entrar en una
rutina de tratamiento. Esta rutina, después de
tratar la señal, puede optar por tres acciones:
Fin restaurar la ejecución del proceso al punto
Tratamiento donde se produjo la interrupción, finalizar el
por defecto proceso o restaurar alguno de los estados
Tratamiento pasados del proceso y continuar la ejecución
Volcado de desde ese punto.
memoria Fin El proceso puede también recibir una señal
Fin que le fuerce a entrar en la rutina de
tratamiento por defecto.
6. SERVIDORES Y DEMONIOS
Los servidores y los demonios son dos tipos de procesos
muy frecuentes cuyas características son:
Un servidor es un proceso que está pendiente de recibir
ordenes de trabajo que provienen de otros procesos
llamados clientes , una vez recibida la orden, la ejecutan
y la responden al peticionario con el resultado.
El proceso servidor tiene la siguiente estructura de
bucle infinito:
1. Lectura de orden. El proceso está bloqueado
esperando a que llegue una orden.
2. Recibida la orden, el servidor lo ejecuta.
3. Finaliza la ejecución, el servidor responde con el
resultado al proceso cliente y vuelve al punto No 1
El proceso servidor tiene abierto un puerto del que lee las
peticiones, en la solicitud el cliente envía el identificador
del puerto en el que el servidor debe contestar.
Un servidor será secuencial cuando no admite una solicitud
de trabajo hasta que no termine la solicitud de trabajo
actual.
Se puede necesitar que el servidor sea paralelo es decir que
admita varias peticiones y los atienda simultáneamente, y
para conseguir esto se puede actuar de la siguiente forma:
1. Lectura del Orden (proceso bloqueado esperando que llegue una orden)
2. Asignación de un nuevo puerto para el nuevo cliente
3. Generación de un proceso hijo que realiza el trabajo solicitado por el cliente
4. Vuelta al punto 1
7. PROCESO CLIENTE SERVIDOR EN MAQUINAS DISTINTAS
Un proceso demonio es un proceso que tiene las siguientes características:
• Se arranca al iniciar el sistema, puesto que siempre debe estar activo
• No muere, en caso de que un demonio muera por algún imprevisto, es muy recomendable que exista un
mecanismo que detecte la muerte y lo re arranque
• Los procesos servidores suelen tener el carácter de demonios
8. SERVICIOS POSIX PARA LA GESTION DE PROCESOS
IDENTIFICACION DE PROCESOS
POSIX identifica cada proceso por medio de un entero único denominado identificador de proceso de tipo pid_t,
y estos servicios son los siguientes:
Pid_t getpid(void)
Identificador del proceso padre pid_t getppid(void)
Programa que imprime el identificador del proceso y el identificador de su proceso padre.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
void main(void)
{
pid_t id_proceso;
pid_t id_padre;
id_proceso = getpid();
id_padre = getppid();
printf("Identificador de proceso: %dn", id_proceso);
printf("Identificador del proceso padre: %dn", id_padre);
}
9. SERVICIOS POSIX PARA LA GESTION DE PROCESOS
Cada proceso además lleva asociado un usuario que se denomina propietario, Cada usuario en el sistema tienen un identificador único
denominado identificador de usuario de tipo uid_t. El proceso también tiene un identificador de usuario efectivo, que determina los
privilegios que un proceso tienen cuando se encuentra ejecutando.
El sistema también incluye grupos de usuarios, cada usuario debe ser miembro de al menos un grupo . Al igual que los usuarios cada
proceso lleva asociado el identificador de grupo al que pertenece y el identificador de grupo efectivo, y los servicios que nos permite tener
esta información son:
Obtener el identificador de usuario real
Uid_t getuid(void);
Obtener el identificador de usuario efectivo
uid_t geteuid(void);
Obtener el identificador del grupo real
Gid_t getgid(void);
Obtener el identificador del grupo efectivo
Gid_t getegid(void);
Programa que imprime la información de identificación de un proceso.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
void main(void)
{
printf("Identificador de usuario: %dn", getuid());
printf("Identificador de usuario efectivo: %dn", geteuid());
printf("Identificador de grupo: %dn", getgid());
printf("Identificador de grupo efetivo: %dn", getegid());
}
10. SERVICIOS POSIX PARA LA GESTION DE PROCESOS
ENTORNO DE UN PROCESO
El entorno de un proceso viene definido por una lista de variables que se pasan al mismo en el momento de comenzar su ejecución, estas
variables se llaman variables de entorno y son accesibls a un proceso a través de la variable externa environ, declarada de la siguiente forma:
1 extern char ** environ;
Esta variable apunta a una lista de variables de entorno. Esta lista no es mas que un vector de punteros a cadenas de caracteres de la forma
nombre=valor, donde nombre hace referencia al nombre de una variable de entorno y el valor al contenido de la misma.
Programa que imprime el entorno del proceso.
#include <stdio.h>
#include <stdlib.h> Cada aplicación interpreta la lista de variables de entorno de forma
específica POSIX establece el significado de determinadas variables de
extern char **environ; entorno. Las mas comunes son:
• HOME direct. Trabajo inicial del usuario
void main(int argc, char **argv) • LOGNAME: nombre del usuario asociado a un proceso
{ • PATH: prefijo de directorios para encontrar ejecutables
int i; • TERM: tipo de terminal
• TZ: información de la zona horaria
printf("Lista de variables de entorno de %sn",argv[0]);
Programa que imprime el valor de la variable HOME.
for (i=0 ; environ[i] != NULL ; i++)
printf("environ[%d] = %sn", i, environ[i]); #include <stdio.h>
} #include <stdlib.h>
OBTENER EL VALOR DE UNA VARIABLE DE void main(void)
ENTORNO {
El servicio getenv permite buscar una variable de entorno char *home = NULL;
su sintaxis es: char *getenv(const char *name);
Esta función devuelve un puntero al valor asociado a la variable de home = getenv("HOME");
entorno de nombre name. if (home == NULL)
Si la variable de entorno no se encuentra definida, la función printf("$HOME no se encuentra definidan");
devuelve NULL else
printf("El valor de $HOME es %sn", home);
}
11. CREACIÓN DE UN PROCESO
En una interfaz POSIX la forma de crear un proceso es invocando el servicio fork. El S.O trata este servicio realizando
una clonación del proceso que lo solicite, constituyendo la relación con el nuevo proceso padre-hijo.
Su prototipo es: pid_t fork();
La creación del proceso se realiza copiando la imagen de memoria y el BCP, definiendo que el proceso hijo es una
copia del proceso padre en el instante en que este solicita el servicio fork(). Significa que los datos y la pila del
proceso hijo son los que tiene el proceso padre en ese instante de ejecución. Es mas dado que al entrar el S.O a tratar
el servicio, lo primero que hace es salvar los registros del BCP padre, al copiarse el BCP se copian los valores salvados
de los registros , por lo que el hijo tiene los mismos valores que el padre.
12. TALLERES PARA GRUPOS DE TRABAJO
1. SINCRONIZACION DE PROCESOS
1. PROBLEMA DE LA SECCION CRITICA: SEMAFOROS GRUPO No 3
2. PROBLEMAS CLASICOS DE SINCRONIZACION
1. BUFFER LIMITADO GRUPO No 2
2. LECTORES Y ESCRITORES
3. FILOSOFOS COMENSALES
3. REGIONES CRITICAS
1. MONITORES GRUPO No 1
4. BLOQUEOS MUTUOS: MODELO DEL SISTEMA
1. ESTRATEGIAS COMBINADAS PARA LOS BLOQUEOS MUTUOS GRUPO No 4
13. CREACIÓN DE UN PROCESO
Todo esto significa que el contador de programa de los 2 procesos tienen el mismo valor, por lo que van a ejecutar la
misma instrucción de máquina, No conceptualizar que el proceso hijo empieza la ejecución del código en su punto de
inicio, repetimos que el hijo empieza a ejecutar al igual que el padre en la sentencia que está después del fork()
El proceso hijo no es totalmente idéntico al padre, algunos valores de su BCP han de ser distintos y estos son:
1. El Ph tiene su propio identificador de proceso
2. El Ph tiene una nueva descripción de memoria, aunque tenga los mismos segmentos con el mismo contenido, no
tienen porque estar en la misma zona de memoria (especialmente en sistemas con memoria virtual)
3. El tiempo de ejecución del proceso hijo es igual a 0
4. El valor que retorna el S.O como resultado del fork es distinto en el hijo y el padre (hijo recibo 0 y el padre recibe
el identificador del proceso hijo)
5. Todas las alarmas pendientes se desactivan en el proceso hijo.
14. CREACIÓN DE UN PROCESO
Programa que crea un proceso.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
void main(void)
{
pid_t pid;
pid = fork();
switch(pid)
{
case -1: /* error del fork() */
perror("fork");
break;
case 0: /* proceso hijo */
printf("Proceso %d; padre = %d n", getpid(), getppid());
break;
default: /* padre */
printf("Proceso %d; padre = %d n", getpid(), getppid());
}
}
15. CREACIÓN DE UN PROCESO
Programa que crea la cadena de procesos
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
1
void main(void)
{ 2
pid_t pid;
int i;
int n = 10;
for (i = 0; i < n; i++) 3
{
pid = fork();
if (pid != 0)
break;
}
printf("El padre del proceso %d es %dn", getpid(), getppid()); N
}
Encada ejecución del bucle se crea un proceso. El proceso padre obtiene el identificador del proceso hijo, que será
distinto de 0 y saldrá del bucle utilizando break. El proceso hijo continuará la ejecución, repitiéndose este proceso
hasta que llegue al final del bucle.
16. CREACIÓN DE UN PROCESO
PROGRAMA 03-07
Programa que crea la estructura de procesos. 1
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void main(void) 2 3 N
{
pid_t pid;
int i;
int n = 10;
for (i = 0; i < n; i++)
{
pid = fork();
if (pid == 0)
break;
}
printf("El padre del proceso %d es %dn", getpid(), getppid());
}
En este programa, es el proceso hijo el que finaliza la ejecución del bucle ejecutando la sentencia break, siendo
el padre encargado de crear todos los procesos
17. SERVICIOS POSIX EXEC
Este servicio tiene como objetivo cambiar el programa que está ejecutando un proceso. Y se puede decir que tiene 2
fases:
En la primera se vacía el proceso de casi todo su contenido,
En la segunda se carga en nuevo programa
En la fase de vaciado se conservan
algunas informaciones como:
• Entorno del proceso Que el S.O
incluye en la nueva pila del
proceso.
• Algunas informaciones del BCP
como Identificador del
proceso, del proceso padre, del
usuario y descriptores de archivos
abiertos
En la fase de carga hay que realizar
las siguientes operaciones:
• Asignar el proceso un nuevo
espacio de memoria.
• Cargar el texto y datos iniciales en
los segmentos correspondientes
• Crear la pila inicial del proceso con
el entorno y los parámetros que
Recuerde que el servicio fork crea un nuevo proceso que ejecuta el mismo se pasan
programa que el proceso padre y el servicio exec no crea un nuevo proceso sino • Rellenar el BCP con los valores
iniciales de los registros y la
que permite que un proceso pase a ejecutar un programa distinto descripción de los nuevos
segmentos de memoria
18. SERVICIOS POSIX EXEC
La familia de funciones exec remplaza la imagen del
proceso actual por una nueva imagen. Esta nueva
imagen se construye a partir de un archivo ejecutable. Si
la llamada se ejecuta con éxito, ésta no devolverá
ningún valor puesto que la imagen del proceso habrá
sido remplazada, caso contrario devuelve –1.
La función main() del nuevo programa tendrá la forma:
int main(int argc, char **argv)
// Ejemplo: Programa que ejecuta el comando ls –l
#include <sys/types.h>
#include <sys/wait.h> // Ejemplo: Programa que ejecuta el comando ls –l mediante execvp
#include <stdio.h> #include <sys/types.h>
#include <unistd.h> #include <stdio.h>
int main() #include <unistd.h>
{ int main(int argc, char **argv)
pid_t pid; {
int status; pid_t pid;
pid = fork(); char *argumentos[3];
switch(pid) argumentos[0] = "ls";
{ argumentos[1] = "-l";
case -1: /* error del fork() */ argumentos[2] = NULL;
exit(-1); pid = fork();
case 0: /* proceso hijo */ switch(pid)
execlp("ls","ls","-l",NULL); {
perror("exec"); case -1: /* error del fork() */
break; exit(-1);
default: /* padre */ case 0: /* proceso hijo */
printf("Proceso padren"); execvp(argumentos[0], argumentos);
while(pid != wait(&status)); perror("exec");
} break;
} default: /* padre */
printf("Proceso padren");
}
}