UNIVERSIDAD MAYOR DE SAN SIMÓN
FACULTAD DE CIENCIAS Y TECNOLOGÍA
TALLER DE SISTEMA OPERATIVOS
TAREA: Practica Procesos SO
Docente:
JORGE WALTER ORELLANA ARAOZ
Alumno:
Nuñez Sevilla Marcelo Alejandro
Grupo:
2
Semestre II-2024
DESARROLLÓ DE LA PRÁCTICA
Para el desarrolló de esta practica no se tuvieron mayores
inconvenientes.
Tal vez la problemática principal fue la familiarización con el entorno de
Unix/Linux, ya que a nivel personal solo se uso distribuciones de Linux
para servidores y VOip, con ayuda de tutoriales de su funcionamiento y
su instalación.
Una vez me familiarice con el entorno el desarrollo de la practica fue
sencillo no llevándome mucho tiempo a nivel de elaboración de la
práctica, de manera contraria el desarrolló del cuestionario si me tomo
más tiempo, ya que se tuvo que buscar y verificar la información para
las respuestas, esto no concluye que las respuestas sean correctas en su
totalidad, solo que fue la parte en la que más tiempo del desarrollo del
informe se dedicó.
CUESTIONARIO
¿El proceso hijo empieza la ejecución del código en su punto de
inicio, oen la sentencia que está después del fork() ?
En sistemas POSIX (como Linux), cuando se ejecuta la función fork(), el
proceso hijo no empieza desde el punto de inicio del programa. En
su lugar, el proceso hijo comienza justo después de la llamada a fork().
Esto significa que tanto el proceso padre como el hijo continúan
ejecutando el código desde el punto en que se invocó fork(), pero ambos
tienen su propio espacio de memoria independiente.
En el código que has compartido, después de que se llama a fork(), el
proceso se bifurca en dos: el padre y el hijo. Ambos procesos ejecutan el
bloque switch(pid) pero toman caminos diferentes dependiendo del valor
de pid:
El proceso hijo ejecuta el bloque de código correspondiente al caso
case 0:, que imprime su propio ID de proceso y el ID de su proceso
padre.
El proceso padre ejecuta el bloque de código correspondiente al
default:, que también imprime su propio ID y el ID del padre (que
será el mismo proceso padre).
Por lo tanto, el proceso hijo empieza su ejecución justo después del
fork(), no desde el inicio del programa.
Observar, que el hijo no es totalmente idéntico al padre, algunos
de los valores del BCP han de ser distintos. Responder: ¿cuáles
deberían ser las diferencias más importantes?
Observar que las modificaciones que realice el proceso padre
sobre sus registros e imagen de memoria después del fork() no
afectan al hijo y, viceversa, las del hijo no afectan al padre. Sin
embargo, el proceso hijo tiene su propia copia de los
descriptores del proceso padre.
Este hace que el hijo tenga acceso a los archivos abiertos por el
proceso padre. El padre y el hijo comparten el puntero de
posición de los archivos abiertos en el padre.
Responder si esto podría afectar y de que manera a lo que acaba
de observar.
Cuando se ejecuta la llamada a fork(), el proceso hijo hereda una copia
de los descriptores de archivo que el proceso padre tenía abiertos en
ese momento. Esto significa que tanto el proceso padre como el proceso
hijo pueden acceder a los mismos archivos, ya que comparten el
puntero de posición de dichos archivos.
Esto puede generar ciertos problemas, sobre todo en situaciones donde
ambos procesos (padre e hijo) intenten acceder al archivo
simultáneamente. El hecho de que compartan el puntero de posición
implica que si uno de los procesos modifica la posición del puntero (por
ejemplo, después de una operación de lectura o escritura), el otro
proceso también se verá afectado. Esto podría causar que uno de los
procesos lea o escriba en una posición diferente a la que esperaba, lo
que puede llevar a comportamientos inesperados, como lectura de datos
incorrectos o escritura de datos en lugares no deseados.
CAPTURAS DE PANTALLA