3.1. Las llamadas al sistema
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
La interfaz que utiliza el programador
Las llamadas al sistema ofrecen acceso correcto y controlado a los recursos. Desde el punto de vista del programador, cada llamada tiene parámetros de entrada, resultados de salida y una semántica: qué hace y qué significan sus resultados.
El tema denomina API al repertorio de llamadas ofrecidas por el SO. El ejemplo de 337 llamadas en Linux 2.6.32 corresponde a esa versión histórica. Cada sistema decide su repertorio y su semántica; tener servicios parecidos no implica que las interfaces sean intercambiables.
Ejemplos de la fuente
ssize_t read(int fd, void *buf, size_t count);
pid_t fork(void);
En UNIX, read representa la lectura de un canal y fork la creación de un proceso. El documento los compara con ReadFile y CreateProcess de Win32. La firma de lectura de Win32 incluye el manejador, el búfer, la cantidad solicitada, el resultado de bytes leídos y un parámetro para operaciones solapadas:
BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer,
DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped);
La comparación de creación de procesos es aún más visible: fork(void) no recibe argumentos, mientras la firma de CreateProcess mostrada en el PDF recibe numerosos parámetros para la aplicación, línea de comandos, atributos, entorno y resultado. El objetivo aquí es reconocer diferencias de interfaz; los detalles de gestión de procesos se desarrollan en temas posteriores.
Debes poder explicar
- Qué información define una llamada: entrada, salida y semántica.
- Qué entiende este tema por API del SO.
- Por qué dos operaciones con una finalidad semejante pueden requerir código diferente en UNIX y Win32.