Las llamadas al sistema son el mecanismo de comunicación entre los procesos y el núcleo del sistema operativo, mediante el cual un proceso solicita un servicio.
En general, un proceso no puede acceder al núcleo, el sistema operativo provee librerías que sirven como intermediarias para hacer estas llamadas.
Una vez invocada una llamada al sistema, se interrumpe el programa y se sede el control al sistema operativo que ejecuta las instrucciones requeridas, una vez finalizadas se retorna al proceso original.
- Manipulación de archivos
Incluyen operaciones con los archivos tales como: Crear, eliminar, abrir, cerrar, renombrar, leer, escribir, etc.
- Manipulación de dispositivos
Incluyen operaciones con los dispositivos tales como: Solicitar, liberar, leer, escribir, etc.
- Intercambio de información
Incluyen operaciones tales como: Conocer la fecha, conocer la hora, conocer atributos de ficheros, fijar atributos de ficheros, fijar la fecha, etc.
- Control de procesos
Incluyen operaciones con los procesos tales como: Crear, eliminar, finalizar, abortar, ejecutar, etc.
- fork()
crea un nuevo proceso (hijo) exactamente igual al proceso original (padre). una vez ejecutada esta llamada, ambos procesos se están ejecutando simultáneamente; habiendo retornado, si se ejecutó correctamente, el PID del proceso hijo para el proceso padre y 0 para el proceso hijo o -1 en caso de error. - waitpid(pid, &statloc, opts)
Espera a que un hijo determinado por el parámetro pid termine, devolviendo el PID del proceso que termina, y guardando su condición de salida en statloc. - execl(ruta, nombre, argv, envp)
Sustituye la imagen en memoria de un proceso por el archivo especificado. - exit(err)Termina con la ejecución de un proceso, liberar recursos y notificar al proceso padre retornando 0 si se terminó de manera exitosa, en caso contrario el código del error err.
- brk(adr)
Cambia el tamaño del segmento de datos de un proceso, donde adr es el nuevo tamaño. - getpid()
devuelve el identificador del proceso
- getppid()
devuelve el identificador del proceso padre - Control de señales...
Una señal es una notificación que el sistema operativo envía a un proceso con el fin de notificarle un evento. Si el proceso ha definido un procedimiento para tratar esa señal, dicho procedimiento es ejecutado, en caso contrario ejecuta la acción por defecto (terminación el programa) - signal(sig, &funcion)
Define el procedimiento con dirección funcion para tratar la señal sig. - sigreturn()
Cuando el procedimiento definido para tratar determinada señal es concluido, se ejecuta esta llamada que retorna al proceso original. - kill(pid, sig)
Envía la señal sig al proceso con identificador pid. - alarm(seg)
El proceso se envía a sí mismo una señal SIGALRM en el número de segundos determinado por seg. - pause()
Suspende el proceso hasta que se recibe una señal. - SIG_IGN
Función predefinida para ignorar las señales (excepto SIGKILL) - SIG_DFL
Función para ejecutar la acción por defecto de matar el proceso - Tipos de señales
1 SIGHUP El modem ha detectado línea telefónica colgada
2 SIGINT Interrupción de teclado, la tecla DEL ha sido pulsada
3 SIGQUIT Señal Quit (desde el teclado CTRL \)
4 SIGILL Instrucción ilegal
5 SIGTRAP Traza de los traps (excepciones)
6 SIGABRT Abortar un programa
7 SIGBUS Error en el Bus
8 SIGFPE Excepción por rebosamiento de coma flotante
9 SIGKILL Matar un proceso
10 SIGUSR1 El usuario define la señal # 1
11 SIGSEGV Violación de segmentación
12 SIGUSR2 El usuario define la señal # 2
13 SIGPIPE Escritura en pipe sin lectores
14 SIGALRM Alarma
15 SIGTERM Software genera una señal de terminación
16 SIGSTKFLT Fallo en el stack
17 SIGCHLD Cambia el estado del hijo, terminado o bloqueado
18 SIGCONT Si está bloqueado continuar
19 SIGSTOP Señal de paro
20 SIGTSTP Paro del teclado
21 SIGTTIN Proceso en segundo plano quiere leer, lectura terminal
22 SIGTTOU Proceso en segundo plano quiere escribir, escritura terminal
23 SIGURG Condición urgente
24 SIGXCPU Excedido el límite de la CPU
25 SIGXFSZ Excedido el limite del tamaño de un fichero
26 SIGVTALRM Alarma del reloj virtual
27 SIGPROF Historial del reloj
28 SIGWINCH Cambia el tamaño de la ventana
29 SIGIO Ahora es posible la entrada salida
30 SIGPWR Fallo en la alimentación
31 SIGSYS Llamada al sistema erronea
32 SIGRTMIN Primera señal en tiempo real
33 SIGRTMAX Última señal en tiempo real
No hay comentarios:
Publicar un comentario