SlideShare una empresa de Scribd logo
1 de 39
kernel II - System Calls y M´odulos
Explicaci´on de pr´actica 3
Sistemas Operativos
Facultad de Inform´atica
Universidad Nacional de La Plata
2015
Agenda
1 Kernel
2 System Calls
3 M´odulos
Agenda
1 Kernel
2 System Calls
3 M´odulos
Kernel de GNU Linux
ˆ 2,4 millones de lineas de c´odigo(y contando...)
ˆ El 70 % del c´odigo son drivers
ˆ Windows: mas del doble de lineas!
ˆ Tasa de errores en drivers con respecto al Kernel: 7 veces mas
ˆ Fuente:http://pdos.csail.mit.edu/6.097/readings/osbugs.pdf
ˆ Comparaci´on con la aerona´utica:
ˆ Aislamiento de fallas
ˆ Un problema en el toilet no afecta al sistema de navegaci´on!
Kernel Monol´ıtico - Mismo proceso
ˆ Todos los componentes del kernel linkeados en un mismo
binario en memoria.
ˆ Memoria Compartida(sincronizaci´on!)
ˆ Scheduler, Drivers, Memory Manager,etc en un mismo proceso
Kernel Monol´ıtico - Operating System Crash
ˆ ¿Que sucede si hay un error en un driver?
ˆ Windows: BSD(blue screen of death).
ˆ Unix: Kernel Panic.
ˆ Un ´unico gran componente linkeado en un mismo espacio de
direcciones implica un m´odulo muy grande y complejo.
ˆ La raz´on de tener un ´unico gran componente linkeado en un
mismo espacio de direcciones se debe a cuestiones de
performance por limitaciones de hardware tomadas hace
mucho tiempo.
ˆ ¿Hoy en dia la decisi´on seria la misma?
Microkernel - Procesos de usuario
ˆ Componentes del kernel en distintos procesos de USUARIO
ˆ Kernel minimalista(comunicaci´on con el hard e IPC)
ˆ IPC (Computaci´on distribuida!)
ˆ Scheduler, Drivers, Memory Manager en distintos procesos de
Usuario
ˆ IPC es parte del Kernel(muchos cambios de modo)
Microkernel
ˆ Pros
ˆ Facilidad para desarrollar servicios del SO.
ˆ Los bugs existen y existir´an siempre, entonces deben ser
aislados.
ˆ Kernel muy peque˜no, entonces mas f´acil de entender,
actualizar y optimizar.
ˆ Contras
ˆ Baja performance
ˆ La computaci´on distribuida es inheremente mas compleja que
la computaci´on por memoria compartida
ˆ No fue adoptado masivamente por la industria(ej. Minix)
Tanembaum – Torvalds debate
vs
http://en.wikipedia.org/wiki/Tanenbaum
Agenda
1 Kernel
2 System Calls
3 M´odulos
API del Sistema Operativo
ˆ Los SOs proveen un conjunto de interfaces mediante las
cuales un proceso que corre en espacio de usuario accede a un
conjunto de funciones comunes
ˆ En UNIX el API principal que provee estos servicios es libc:
ˆ Es el API principal del SO
ˆ Provee las librer´ıas estandar de C
ˆ Es una Interface entre aplicaciones de usuario y las System
Calls(System Call Wrappers).
POSIX APIs
ˆ La funcionalidad anterior est´a definida por el estandar POSIX
ˆ Su pr´oposito es proveer una interfaz com´un para lograr
portabilidad
ˆ En el caso de las System Calls, el desarrollador generalmente
interact´ua con el API y NO directamente con el Kernel
ˆ En UNIX por lo general cada funci´on del API se corresponde
con una System Call
System Calls - Repaso
ˆ Son llamados al kernel para ejecutar una funci´on espec´ıfica
que controla un dispositivo o ejecuta una instrucci´on
privilegiada
ˆ Su pr´oposito es proveer una interfaz com´un para lograr
portabilidad
ˆ Su funcionalidad la ejecuta el Kernel
ˆ Recordar
ˆ Cambio de Modo
ˆ ¿Como se pasa de modo usuario a modo Kernel?
Invocando System Calls
ˆ Utilizando los wrappers de glibc
ˆ int rc = chmod( /etc/passwd", 0444);
ˆ Invocaci´on expl´ıcita utilizando la System Call syscall provista
por glibc
ˆ Definida en la libreria unistd.h
ˆ long int syscall (long int sysno, ...)
ˆ Ejemplo utilizando syscall:
ˆ rc = syscall(SYS chmod, /etc/passwd", 0444);
Ejemplo
#include <stdlib.h>
#include <sys/syscall.h>
#include <sys/time.h>
#include <unistd.h>
#define SYS_gettimeofday 78
void main(void){
struct timeval tv;
/* usando el wrapper de glibc */
gettimeofday(&tv, NULL);
/* Invocaci´on expl´ıcita del system call */
syscall(SYS_gettimeofday, &tv, NULL);
}
Interrupciones y System Calls
ˆ La manera en que una system call es llevada a cabo
depender´a del procesador.
ˆ Los procesadores x86 se basan en el
mecanismo de interrupciones.
ˆ Interrupci´on enmascarable int 0x80 en Linux.
ˆ Se usa el vector 0x80 para transferir el
control al kernel. Este vector de
interrupci´on esta inicializado durante el
startup del sistema.
ˆ Una librer´ıa de espacio de usuario(libc) carga el ´ındice de la
system call y sus argumentos, la interrupci´on enmascarable
por software 0x80 es invocada, la cual resulta en el cambio de
modo.
ˆ La estructura sys call table y el registro eax como ´ındice se
determina que funci´on invocar.
System Calls e Interrupciones
Consideremos el siguiente caso:
#include <syscall.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#define sys_getpid 20
int main(void) {
long ID = syscall(SYS_getpid);
printf ("El pId del proceso es:n", ID);
}
System Calls e Interrupciones(cont.)
El compilador generar´a:
_setuid:
subl $4, %exp
pushl %ebx
movzwl 12( %esp), %eax
movl %eax,4( %esp)
movl $20, %eax
movl 4( %esp), %ebx
int $0x80
movl %eax, %edx
testl %edx, %edx
jge L2
negl %edx
movl %edx,_errno
movl $-1, %eax
popl %ebx
addl $4, %esp
System Calls en GNU Linux
ˆ Debemos declarar nuestra syscall por un n´umero ´unico(syscall
number).
ˆ Aggregamos una entrada a la syscall table.
ˆ Debemos considerar el sys call number.
ˆ Ver que el c´odigo fuente organizado por arquitectura.
ˆ Respetar las convenciones del Kernel(ej. prefijo sys ).
/usr/src/linux-3.8/arch/x86/syscalls/syscall 32.tbl
343 i386 clock adjtime sys clock adjtime
347 i386 process vm readv sys process vm readv
348 i386 process vm writev sys process vm writev
349 i386 kcmp sys kcmp
350 i386 finit module sys finit module
351 i386 newcall sys newcall
System Calls en GNU Linux(Cont.)
ˆ Debemos definir el prototipo de nuestra system call
ˆ Los par´ametros a system calls deben ser realizados por medio
del stack
ˆ Informamos de esto al compilador mediante la macro
asmlinkage
ˆ asmlinkage instruye al compilador a pasar par´ametros por stack
y no por ejemplo en registros
/usr/src/linux-3.8/include/linux/syscalls.h
asmlinkage long sys newcall(int i);
System Calls en GNU Linux(Cont..)
ˆ Debemos nuestra syscall en alg´un punto del ´arbol de fuentes.
ˆ Podemos utilizar alg´un archivo existente.
ˆ Podemos incluir un nuevo archivo y su correspondiente
Makefile.
ˆ Ver apuntes adjuntos
En alg´un archivo ya incluido en los fuentes del Kernel...
asmlinkage int sys newcall(int a)
printk(¸calling newcall... ”);
return a+1;
ˆ ¿printk?, ¿porque no printf?
System Calls en GNU Linux(Cont...)
ˆ Recompilar el Kernel!
ˆ Idem Pr´actica 2
Invocando expl´ıcitamente nuestra System Call
#include <linux/unistd.h>
#include <stdio.h>
#define sys_newcall 351
int main(void) {
int i = syscall(sys_newcall,1);
printf ("El resultado es:n", i);
}
Strace
ˆ Reporta las system calls que realiza cualquier programa
ˆ man strace
ˆ Opci´on ´util -f (tiene en cuenta procesos hijos)
strace a.out (hola mundo)
execve(”./a.out”, [”./a.out”], [/* 62 vars */]) = 0
brk(0) = 0x1295000
access(/etc/ld.so.nohwcap”, F OK) = -1 ENOENT (No such file
or directory)
mmap(NULL, 8192, PROT READ—PROT WRITE,
MAP PRIVATE—MAP ANONYMOUS, -1, 0) = 0x7f3b70b43000
access(/etc/ld.so.preload”, R OK) = -1 ENOENT (No such file or
directory)
Agenda
1 Kernel
2 System Calls
3 M´odulos
¿Que son los M´odulos del Kernel?
ˆ “Pedazos de c´odigo” que pueden ser cargados y descargados
bajo demanda
ˆ Extienden la funcionalidad del kernel
ˆ Sin ellos el kernel ser´ıa 100
ˆ Monol´ıtico ”hibrido”
ˆ No recompilar ni rebootear
Comandos relacionados
ˆ lsmod
ˆ Lista los m´odulos cargados (es equivalente a cat
/proc/modules)
ˆ rmmod
ˆ Descarga uno o m´as m´odulos
ˆ modinfo
ˆ Muestra informaci´on sobre el m´odulo
ˆ insmod
ˆ Trata de cargar el m´odulo especificado
ˆ depmod
ˆ Permite calcular las dependencias de un m´odulo
ˆ depmod -a escribe las dependencias en el archivo
/lib/modules/version/modules.emp
ˆ modprobe
ˆ Emplea la informaci´on generada por depmod e informaci´on de
/etc/modules.conf para cargar el m´odulo especificado.
¿Como creamos un m´odulo?
ˆ Debemos proveer dos funciones:
ˆ Inicializaci´on: Ejecutada cuando ejecutamos insmod.
ˆ Descarga: Ejecutada cuando ejecutamos rmmod.
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void){
printk(KERN_INFO "Hello world 1.n");
return 0;
}
void cleanup_module(void){
printk(KERN_INFO "Goodbye world 1.n");
}
¿Como creamos un m´odulo?(cont.)
ˆ Tambi´en podemos indicarle otras funciones.
ˆ module init
ˆ module exit
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int hello_2_init(void){
printk(KERN_INFO "Hello, world 2n");
return 0;}
static void hello_2_exit(void){
printk(KERN_INFO "Goodbye, world 2n");}
module_init(hello_2_init);
module_exit(hello_2_exit);
¿Como compilamos un m´odulo?
ˆ Construimos el Makefile
obj−m += h e l l o . o
a l l :
make −C / l i b / modules /$ ( s h e l l uname −r ) / b u i l d M=$ (pwd)
modules
clean :
make −C / l i b / modules /$ ( s h e l l uname −r ) / b u i l d M=$ (pwd)
clean
ˆ Compilamos make
make −C <KERNEL CODE> M=$ (pwd) modules
¿Que son los Dispositivos?
ˆ Entendemos por dispositivo a cualquier dispositivo de hard:
discos, memoria, mouse, etc
ˆ Cada operaci´on sobre un dispositivo es llevada por c´odigo
espec´ıfico para el dispositivo
ˆ Este c´odigo se denomina “driver” y se implementa como un
m´odulo
ˆ Cada dispositivo de hardware es un archivo (abstracci´on)
ˆ Ejemplo: /dev/hda
ˆ En realidad no es un archivo.
ˆ Si leemos/escribimos desde ´el lo hacemos sobre datos “crudos”
del disco (bulk data).
ˆ Accedemos a estos archivos mediante operaciones b´asicas
(espacio del kernel).
ˆ read, write: escribir y recuperar bulk data
ˆ ioctl: configurar el dispositivo
¿Que son los Dispositivos?(Cont)
ˆ Podemos clasificar el hard en varios tipos.
ˆ Dispositivos de acceso aleatorio(ej. discos).
ˆ Dispositivos seriales(ej. Mouse, sonido,etc).
ˆ Acorde a esto los drivers se clasifican en:
ˆ Drivers de bloques: son un grupo de bloques de datos
persistentes. Leemos y escribimos de a bloques, generalmente
de 1024 bytes.
ˆ Drivers de car´acter: Se accede de a 1 byte a la vez y 1 byte
s´olo puede ser le´ıdo por ´unica vez.
ˆ Drivers de red: tarjetas ethernet, WIFI, etc.
Dispositivos en UNIX
ˆ Major y Minor device number.
ˆ Los dispositivos se dividen en n´umeros llamados major device
number. Ej: los discos SCSI tienen el major number 8.
ˆ Cada dispositivo tiene su minor device number. Ejemplo:
/dev/sda major number 8 y minor number 0
ˆ Con el major y el minor number el kernel identifica un
dispositivo.
ˆ kernel code/linux/Documentation/devices.txt
# l s −l /dev/hda [1 −3]
brw−rw−−−− 1 root d i s k 3 , 1 Abr 9 15:24 /dev/hda1
brw−rw−−−− 1 root d i s k 3 , 2 Abr 9 15:24 /dev/hda2
brw−rw−−−− 1 root d i s k 3 , 3 Abr 9 15:24 /dev/hda3
Archivos de dispositivos en UNIX
ˆ Representaci´on de los dispositivos(device files)
ˆ Por convenci´on est´an en el /dev
ˆ Se crean mediante el comando mknod.
mknod[− m<mode >] f i l e [ b | c ] major minor
ˆ b o c: seg´un se trate de dispositivos de caracter o de bloque.
ˆ El minor y el major number lo obtenemos de
kernel code/linux/Documentation/devices.txt
Dispositivos en UNIX
ˆ Necesitamos decirle al kernel:
ˆ Que hacer cuando se escribe al device file.
ˆ Que hacer cuando se lee desde el device file..
ˆ Todo esto lo hacemos en un m´odulo.
ˆ La struct file operations:
ˆ Sirve para decirle al kernel como leer y/o escribir al dispositivo.
ˆ Cada variable posee un puntero a las funciones que
implementan las operaciones sobre el dispositivo.
¿Como creamos un driver?
ˆ Mediante la struct file operations especifico que funciones
leen/escriben al dispositivo.
struct file_operations my_driver_fops = {
read: myDriver_read,
write: myDriver_write,
open: myDriver_open,
release: mydriver_release};
ˆ En la funci´on module init registro mi driver.
register_chrdev(major_number, "myDriver", &
my_driver_fops);
ˆ En la funci´on module exit desregistro mi driver.
unregister_chrdev(major_number, "myDriver");
¿Como creamos un driver?(Cont..)
ˆ Operaciones sobre el dispositivo
ˆ Escritura del archivo de dispositivo (Ej. echo ”hi))
/dev/myDeviceFile)
ssize_t myDriver_write(struct file *filp, char
*buf,size_t count, loff_t *f_pos);
ˆ Lectura del archivo de dispositivo (Ej. cat /dev/myDeviceFile)
ssize_t myDriver_read(struct file *filp, char
*buf,size_t count, loff_t *f_pos)
¿Como creamos un driver?(Cont...)
ˆ Par´ametros de las funciones funciones:
ˆ Struct file: Estructura del kernel que representa un archivo
abierto.
ˆ char *buf: El dato a le´ıdo o a escribir desde/hacia el
dispositivo(espacio de usuario)
ˆ size t count: La longitud de buf.
ˆ loff t *f pos count: La posici´on manipulada
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDFULEAM
 
40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivosAprende Viendo
 
Administración de procesos en ubuntu
Administración de procesos en ubuntuAdministración de procesos en ubuntu
Administración de procesos en ubuntuluis guti
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Administración de linux tema 2
Administración de linux tema 2Administración de linux tema 2
Administración de linux tema 2mandres
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfigAprende Viendo
 
Curso de software03
Curso de software03Curso de software03
Curso de software03enriqueaco
 
Practica de procesos en Linux
Practica de procesos en LinuxPractica de procesos en Linux
Practica de procesos en LinuxTerrafx9
 
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Websec México, S.C.
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicosTensor
 
AIX Administration Knowledge Share
AIX Administration Knowledge ShareAIX Administration Knowledge Share
AIX Administration Knowledge Share.Gastón. .Bx.
 
Clasificación dos sistemas operativos
 Clasificación dos sistemas operativos Clasificación dos sistemas operativos
Clasificación dos sistemas operativosirocho
 
Niveles de ejecución en unix
Niveles de ejecución en  unixNiveles de ejecución en  unix
Niveles de ejecución en unixMoises
 
Administración de llaves SSH para aplicaciones
Administración de llaves SSH para aplicacionesAdministración de llaves SSH para aplicaciones
Administración de llaves SSH para aplicacionesRodolfo Pilas
 

La actualidad más candente (19)

Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDF
 
40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivos
 
Administración de procesos en ubuntu
Administración de procesos en ubuntuAdministración de procesos en ubuntu
Administración de procesos en ubuntu
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Administración de linux tema 2
Administración de linux tema 2Administración de linux tema 2
Administración de linux tema 2
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfig
 
Curso de software03
Curso de software03Curso de software03
Curso de software03
 
Practica de procesos en Linux
Practica de procesos en LinuxPractica de procesos en Linux
Practica de procesos en Linux
 
Unix 3.1
Unix 3.1Unix 3.1
Unix 3.1
 
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
AIX Administration Knowledge Share
AIX Administration Knowledge ShareAIX Administration Knowledge Share
AIX Administration Knowledge Share
 
Clasificación dos sistemas operativos
 Clasificación dos sistemas operativos Clasificación dos sistemas operativos
Clasificación dos sistemas operativos
 
Administracion basica redes linux
Administracion basica redes linuxAdministracion basica redes linux
Administracion basica redes linux
 
Programaciongnulinux
ProgramaciongnulinuxProgramaciongnulinux
Programaciongnulinux
 
Presentación1
Presentación1Presentación1
Presentación1
 
Tema3 procesos
Tema3 procesos Tema3 procesos
Tema3 procesos
 
Niveles de ejecución en unix
Niveles de ejecución en  unixNiveles de ejecución en  unix
Niveles de ejecución en unix
 
Administración de llaves SSH para aplicaciones
Administración de llaves SSH para aplicacionesAdministración de llaves SSH para aplicaciones
Administración de llaves SSH para aplicaciones
 

Destacado

Permisos en Linux
Permisos en LinuxPermisos en Linux
Permisos en LinuxPablo Macon
 
Editor de archivos de texto vi
Editor de archivos de texto viEditor de archivos de texto vi
Editor de archivos de texto viPablo Macon
 
Windows Y Mach
Windows Y MachWindows Y Mach
Windows Y Machsistemasop
 
Redirecciones y pipes - Date - Cal
Redirecciones y pipes - Date - CalRedirecciones y pipes - Date - Cal
Redirecciones y pipes - Date - CalPablo Macon
 
Ejercicios planificacion 1 y 2
Ejercicios planificacion 1 y 2Ejercicios planificacion 1 y 2
Ejercicios planificacion 1 y 2Pablo Macon
 
Planificación linux
Planificación linuxPlanificación linux
Planificación linuxPablo Macon
 
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS II
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS IIProyecto 2016 - ITS - SISTEMAS OPERATIVOS II
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS IIPablo Macon
 
Rudimental waiting all night
Rudimental waiting all nightRudimental waiting all night
Rudimental waiting all nighthaverstockmedia
 
Is it possible to transform healthcare (leaders)?
Is it possible to transform healthcare (leaders)?Is it possible to transform healthcare (leaders)?
Is it possible to transform healthcare (leaders)?Alice Lee
 
Carmelo cruz mendoza inicia la nueva administración
Carmelo cruz mendoza inicia la nueva administraciónCarmelo cruz mendoza inicia la nueva administración
Carmelo cruz mendoza inicia la nueva administraciónmegaradioexpress
 
2015 and Q4 2015 Financial Results
2015 and Q4 2015 Financial Results2015 and Q4 2015 Financial Results
2015 and Q4 2015 Financial ResultsLake Shore Gold
 
Porur Times epaper, July.24,2016
Porur Times epaper, July.24,2016Porur Times epaper, July.24,2016
Porur Times epaper, July.24,2016Porur Times
 
How to Build and Manage a Thriving Facebook Community
How to Build and Manage a Thriving Facebook CommunityHow to Build and Manage a Thriving Facebook Community
How to Build and Manage a Thriving Facebook CommunityAndrea Vahl
 
Tata Cara Registrasi ~ Modamodis.com
Tata Cara Registrasi ~ Modamodis.comTata Cara Registrasi ~ Modamodis.com
Tata Cara Registrasi ~ Modamodis.comModamodis.com
 
How does Diaspora Mobilization Become a Causal Feature of Structural Change
How does Diaspora Mobilization Become a Causal Feature of Structural ChangeHow does Diaspora Mobilization Become a Causal Feature of Structural Change
How does Diaspora Mobilization Become a Causal Feature of Structural ChangeMyung Ja Kim
 
Dectron Support for Your LEED Projects
Dectron Support for Your LEED ProjectsDectron Support for Your LEED Projects
Dectron Support for Your LEED ProjectsDectron Internationale
 

Destacado (20)

Permisos en Linux
Permisos en LinuxPermisos en Linux
Permisos en Linux
 
Editor de archivos de texto vi
Editor de archivos de texto viEditor de archivos de texto vi
Editor de archivos de texto vi
 
Windows Y Mach
Windows Y MachWindows Y Mach
Windows Y Mach
 
Redirecciones y pipes - Date - Cal
Redirecciones y pipes - Date - CalRedirecciones y pipes - Date - Cal
Redirecciones y pipes - Date - Cal
 
Ejercicios planificacion 1 y 2
Ejercicios planificacion 1 y 2Ejercicios planificacion 1 y 2
Ejercicios planificacion 1 y 2
 
Planificación linux
Planificación linuxPlanificación linux
Planificación linux
 
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS II
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS IIProyecto 2016 - ITS - SISTEMAS OPERATIVOS II
Proyecto 2016 - ITS - SISTEMAS OPERATIVOS II
 
Rudimental waiting all night
Rudimental waiting all nightRudimental waiting all night
Rudimental waiting all night
 
Is it possible to transform healthcare (leaders)?
Is it possible to transform healthcare (leaders)?Is it possible to transform healthcare (leaders)?
Is it possible to transform healthcare (leaders)?
 
Carmelo cruz mendoza inicia la nueva administración
Carmelo cruz mendoza inicia la nueva administraciónCarmelo cruz mendoza inicia la nueva administración
Carmelo cruz mendoza inicia la nueva administración
 
Sant jordi
Sant jordiSant jordi
Sant jordi
 
2015 and Q4 2015 Financial Results
2015 and Q4 2015 Financial Results2015 and Q4 2015 Financial Results
2015 and Q4 2015 Financial Results
 
Porur Times epaper, July.24,2016
Porur Times epaper, July.24,2016Porur Times epaper, July.24,2016
Porur Times epaper, July.24,2016
 
Lineales boyaca
Lineales boyacaLineales boyaca
Lineales boyaca
 
How to Build and Manage a Thriving Facebook Community
How to Build and Manage a Thriving Facebook CommunityHow to Build and Manage a Thriving Facebook Community
How to Build and Manage a Thriving Facebook Community
 
Aca implementation in pa summer 13
Aca implementation in pa summer 13Aca implementation in pa summer 13
Aca implementation in pa summer 13
 
Tata Cara Registrasi ~ Modamodis.com
Tata Cara Registrasi ~ Modamodis.comTata Cara Registrasi ~ Modamodis.com
Tata Cara Registrasi ~ Modamodis.com
 
How does Diaspora Mobilization Become a Causal Feature of Structural Change
How does Diaspora Mobilization Become a Causal Feature of Structural ChangeHow does Diaspora Mobilization Become a Causal Feature of Structural Change
How does Diaspora Mobilization Become a Causal Feature of Structural Change
 
Ol
OlOl
Ol
 
Dectron Support for Your LEED Projects
Dectron Support for Your LEED ProjectsDectron Support for Your LEED Projects
Dectron Support for Your LEED Projects
 

Similar a Linux Kernel - System Calls - Modules - Drivers

Configuacion de estaciones de trabajo
Configuacion de estaciones de trabajoConfiguacion de estaciones de trabajo
Configuacion de estaciones de trabajoHeder Ithamar Romero
 
Gnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemasGnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemasDiego Caceres
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosK-MICOSIL
 
Tarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroTarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroNelisRivero
 
Un sistema operativo
Un sistema operativoUn sistema operativo
Un sistema operativogeralis
 
Sistemas operativos hector
Sistemas operativos hectorSistemas operativos hector
Sistemas operativos hectorhecmaster222
 
Estructura de los sistemas operativos
Estructura de los sistemas operativosEstructura de los sistemas operativos
Estructura de los sistemas operativosANDREA
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativosjeisson66
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjeisson33
 
Estructura de un sistema operativo
Estructura de un sistema operativoEstructura de un sistema operativo
Estructura de un sistema operativoEzmee XD
 
Taller de sistemas bryan melo
Taller de sistemas bryan meloTaller de sistemas bryan melo
Taller de sistemas bryan melobryanmelo
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosrIsAdA
 

Similar a Linux Kernel - System Calls - Modules - Drivers (20)

Notas de sistemas operativos/Saade Sergio
Notas de sistemas operativos/Saade SergioNotas de sistemas operativos/Saade Sergio
Notas de sistemas operativos/Saade Sergio
 
Configuacion de estaciones de trabajo
Configuacion de estaciones de trabajoConfiguacion de estaciones de trabajo
Configuacion de estaciones de trabajo
 
Javier aponte
Javier aponteJavier aponte
Javier aponte
 
arquitectura-de-linux
arquitectura-de-linuxarquitectura-de-linux
arquitectura-de-linux
 
Shirley
ShirleyShirley
Shirley
 
Gnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemasGnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemas
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Tarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroTarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis Rivero
 
Programaciongnulinux
ProgramaciongnulinuxProgramaciongnulinux
Programaciongnulinux
 
Un sistema operativo
Un sistema operativoUn sistema operativo
Un sistema operativo
 
Practica4
Practica4Practica4
Practica4
 
Sistemas operativos hector
Sistemas operativos hectorSistemas operativos hector
Sistemas operativos hector
 
Estructura de los sistemas operativos
Estructura de los sistemas operativosEstructura de los sistemas operativos
Estructura de los sistemas operativos
 
Fredy cardenas
Fredy cardenasFredy cardenas
Fredy cardenas
 
Fredy cardenas
Fredy cardenasFredy cardenas
Fredy cardenas
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Estructura de un sistema operativo
Estructura de un sistema operativoEstructura de un sistema operativo
Estructura de un sistema operativo
 
Taller de sistemas bryan melo
Taller de sistemas bryan meloTaller de sistemas bryan melo
Taller de sistemas bryan melo
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (20)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Linux Kernel - System Calls - Modules - Drivers

  • 1. kernel II - System Calls y M´odulos Explicaci´on de pr´actica 3 Sistemas Operativos Facultad de Inform´atica Universidad Nacional de La Plata 2015
  • 2. Agenda 1 Kernel 2 System Calls 3 M´odulos
  • 3. Agenda 1 Kernel 2 System Calls 3 M´odulos
  • 4. Kernel de GNU Linux ˆ 2,4 millones de lineas de c´odigo(y contando...) ˆ El 70 % del c´odigo son drivers ˆ Windows: mas del doble de lineas! ˆ Tasa de errores en drivers con respecto al Kernel: 7 veces mas ˆ Fuente:http://pdos.csail.mit.edu/6.097/readings/osbugs.pdf ˆ Comparaci´on con la aerona´utica: ˆ Aislamiento de fallas ˆ Un problema en el toilet no afecta al sistema de navegaci´on!
  • 5. Kernel Monol´ıtico - Mismo proceso ˆ Todos los componentes del kernel linkeados en un mismo binario en memoria. ˆ Memoria Compartida(sincronizaci´on!) ˆ Scheduler, Drivers, Memory Manager,etc en un mismo proceso
  • 6. Kernel Monol´ıtico - Operating System Crash ˆ ¿Que sucede si hay un error en un driver? ˆ Windows: BSD(blue screen of death). ˆ Unix: Kernel Panic. ˆ Un ´unico gran componente linkeado en un mismo espacio de direcciones implica un m´odulo muy grande y complejo. ˆ La raz´on de tener un ´unico gran componente linkeado en un mismo espacio de direcciones se debe a cuestiones de performance por limitaciones de hardware tomadas hace mucho tiempo. ˆ ¿Hoy en dia la decisi´on seria la misma?
  • 7. Microkernel - Procesos de usuario ˆ Componentes del kernel en distintos procesos de USUARIO ˆ Kernel minimalista(comunicaci´on con el hard e IPC) ˆ IPC (Computaci´on distribuida!) ˆ Scheduler, Drivers, Memory Manager en distintos procesos de Usuario ˆ IPC es parte del Kernel(muchos cambios de modo)
  • 8. Microkernel ˆ Pros ˆ Facilidad para desarrollar servicios del SO. ˆ Los bugs existen y existir´an siempre, entonces deben ser aislados. ˆ Kernel muy peque˜no, entonces mas f´acil de entender, actualizar y optimizar. ˆ Contras ˆ Baja performance ˆ La computaci´on distribuida es inheremente mas compleja que la computaci´on por memoria compartida ˆ No fue adoptado masivamente por la industria(ej. Minix)
  • 9. Tanembaum – Torvalds debate vs http://en.wikipedia.org/wiki/Tanenbaum
  • 10. Agenda 1 Kernel 2 System Calls 3 M´odulos
  • 11. API del Sistema Operativo ˆ Los SOs proveen un conjunto de interfaces mediante las cuales un proceso que corre en espacio de usuario accede a un conjunto de funciones comunes ˆ En UNIX el API principal que provee estos servicios es libc: ˆ Es el API principal del SO ˆ Provee las librer´ıas estandar de C ˆ Es una Interface entre aplicaciones de usuario y las System Calls(System Call Wrappers).
  • 12. POSIX APIs ˆ La funcionalidad anterior est´a definida por el estandar POSIX ˆ Su pr´oposito es proveer una interfaz com´un para lograr portabilidad ˆ En el caso de las System Calls, el desarrollador generalmente interact´ua con el API y NO directamente con el Kernel ˆ En UNIX por lo general cada funci´on del API se corresponde con una System Call
  • 13. System Calls - Repaso ˆ Son llamados al kernel para ejecutar una funci´on espec´ıfica que controla un dispositivo o ejecuta una instrucci´on privilegiada ˆ Su pr´oposito es proveer una interfaz com´un para lograr portabilidad ˆ Su funcionalidad la ejecuta el Kernel ˆ Recordar ˆ Cambio de Modo ˆ ¿Como se pasa de modo usuario a modo Kernel?
  • 14. Invocando System Calls ˆ Utilizando los wrappers de glibc ˆ int rc = chmod( /etc/passwd", 0444); ˆ Invocaci´on expl´ıcita utilizando la System Call syscall provista por glibc ˆ Definida en la libreria unistd.h ˆ long int syscall (long int sysno, ...) ˆ Ejemplo utilizando syscall: ˆ rc = syscall(SYS chmod, /etc/passwd", 0444);
  • 15. Ejemplo #include <stdlib.h> #include <sys/syscall.h> #include <sys/time.h> #include <unistd.h> #define SYS_gettimeofday 78 void main(void){ struct timeval tv; /* usando el wrapper de glibc */ gettimeofday(&tv, NULL); /* Invocaci´on expl´ıcita del system call */ syscall(SYS_gettimeofday, &tv, NULL); }
  • 16. Interrupciones y System Calls ˆ La manera en que una system call es llevada a cabo depender´a del procesador. ˆ Los procesadores x86 se basan en el mecanismo de interrupciones. ˆ Interrupci´on enmascarable int 0x80 en Linux. ˆ Se usa el vector 0x80 para transferir el control al kernel. Este vector de interrupci´on esta inicializado durante el startup del sistema. ˆ Una librer´ıa de espacio de usuario(libc) carga el ´ındice de la system call y sus argumentos, la interrupci´on enmascarable por software 0x80 es invocada, la cual resulta en el cambio de modo. ˆ La estructura sys call table y el registro eax como ´ındice se determina que funci´on invocar.
  • 17. System Calls e Interrupciones Consideremos el siguiente caso: #include <syscall.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> #define sys_getpid 20 int main(void) { long ID = syscall(SYS_getpid); printf ("El pId del proceso es:n", ID); }
  • 18. System Calls e Interrupciones(cont.) El compilador generar´a: _setuid: subl $4, %exp pushl %ebx movzwl 12( %esp), %eax movl %eax,4( %esp) movl $20, %eax movl 4( %esp), %ebx int $0x80 movl %eax, %edx testl %edx, %edx jge L2 negl %edx movl %edx,_errno movl $-1, %eax popl %ebx addl $4, %esp
  • 19. System Calls en GNU Linux ˆ Debemos declarar nuestra syscall por un n´umero ´unico(syscall number). ˆ Aggregamos una entrada a la syscall table. ˆ Debemos considerar el sys call number. ˆ Ver que el c´odigo fuente organizado por arquitectura. ˆ Respetar las convenciones del Kernel(ej. prefijo sys ). /usr/src/linux-3.8/arch/x86/syscalls/syscall 32.tbl 343 i386 clock adjtime sys clock adjtime 347 i386 process vm readv sys process vm readv 348 i386 process vm writev sys process vm writev 349 i386 kcmp sys kcmp 350 i386 finit module sys finit module 351 i386 newcall sys newcall
  • 20. System Calls en GNU Linux(Cont.) ˆ Debemos definir el prototipo de nuestra system call ˆ Los par´ametros a system calls deben ser realizados por medio del stack ˆ Informamos de esto al compilador mediante la macro asmlinkage ˆ asmlinkage instruye al compilador a pasar par´ametros por stack y no por ejemplo en registros /usr/src/linux-3.8/include/linux/syscalls.h asmlinkage long sys newcall(int i);
  • 21. System Calls en GNU Linux(Cont..) ˆ Debemos nuestra syscall en alg´un punto del ´arbol de fuentes. ˆ Podemos utilizar alg´un archivo existente. ˆ Podemos incluir un nuevo archivo y su correspondiente Makefile. ˆ Ver apuntes adjuntos En alg´un archivo ya incluido en los fuentes del Kernel... asmlinkage int sys newcall(int a) printk(¸calling newcall... ”); return a+1; ˆ ¿printk?, ¿porque no printf?
  • 22. System Calls en GNU Linux(Cont...) ˆ Recompilar el Kernel! ˆ Idem Pr´actica 2
  • 23. Invocando expl´ıcitamente nuestra System Call #include <linux/unistd.h> #include <stdio.h> #define sys_newcall 351 int main(void) { int i = syscall(sys_newcall,1); printf ("El resultado es:n", i); }
  • 24. Strace ˆ Reporta las system calls que realiza cualquier programa ˆ man strace ˆ Opci´on ´util -f (tiene en cuenta procesos hijos) strace a.out (hola mundo) execve(”./a.out”, [”./a.out”], [/* 62 vars */]) = 0 brk(0) = 0x1295000 access(/etc/ld.so.nohwcap”, F OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT READ—PROT WRITE, MAP PRIVATE—MAP ANONYMOUS, -1, 0) = 0x7f3b70b43000 access(/etc/ld.so.preload”, R OK) = -1 ENOENT (No such file or directory)
  • 25. Agenda 1 Kernel 2 System Calls 3 M´odulos
  • 26. ¿Que son los M´odulos del Kernel? ˆ “Pedazos de c´odigo” que pueden ser cargados y descargados bajo demanda ˆ Extienden la funcionalidad del kernel ˆ Sin ellos el kernel ser´ıa 100 ˆ Monol´ıtico ”hibrido” ˆ No recompilar ni rebootear
  • 27. Comandos relacionados ˆ lsmod ˆ Lista los m´odulos cargados (es equivalente a cat /proc/modules) ˆ rmmod ˆ Descarga uno o m´as m´odulos ˆ modinfo ˆ Muestra informaci´on sobre el m´odulo ˆ insmod ˆ Trata de cargar el m´odulo especificado ˆ depmod ˆ Permite calcular las dependencias de un m´odulo ˆ depmod -a escribe las dependencias en el archivo /lib/modules/version/modules.emp ˆ modprobe ˆ Emplea la informaci´on generada por depmod e informaci´on de /etc/modules.conf para cargar el m´odulo especificado.
  • 28. ¿Como creamos un m´odulo? ˆ Debemos proveer dos funciones: ˆ Inicializaci´on: Ejecutada cuando ejecutamos insmod. ˆ Descarga: Ejecutada cuando ejecutamos rmmod. #include <linux/module.h> #include <linux/kernel.h> int init_module(void){ printk(KERN_INFO "Hello world 1.n"); return 0; } void cleanup_module(void){ printk(KERN_INFO "Goodbye world 1.n"); }
  • 29. ¿Como creamos un m´odulo?(cont.) ˆ Tambi´en podemos indicarle otras funciones. ˆ module init ˆ module exit #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> static int hello_2_init(void){ printk(KERN_INFO "Hello, world 2n"); return 0;} static void hello_2_exit(void){ printk(KERN_INFO "Goodbye, world 2n");} module_init(hello_2_init); module_exit(hello_2_exit);
  • 30. ¿Como compilamos un m´odulo? ˆ Construimos el Makefile obj−m += h e l l o . o a l l : make −C / l i b / modules /$ ( s h e l l uname −r ) / b u i l d M=$ (pwd) modules clean : make −C / l i b / modules /$ ( s h e l l uname −r ) / b u i l d M=$ (pwd) clean ˆ Compilamos make make −C <KERNEL CODE> M=$ (pwd) modules
  • 31. ¿Que son los Dispositivos? ˆ Entendemos por dispositivo a cualquier dispositivo de hard: discos, memoria, mouse, etc ˆ Cada operaci´on sobre un dispositivo es llevada por c´odigo espec´ıfico para el dispositivo ˆ Este c´odigo se denomina “driver” y se implementa como un m´odulo ˆ Cada dispositivo de hardware es un archivo (abstracci´on) ˆ Ejemplo: /dev/hda ˆ En realidad no es un archivo. ˆ Si leemos/escribimos desde ´el lo hacemos sobre datos “crudos” del disco (bulk data). ˆ Accedemos a estos archivos mediante operaciones b´asicas (espacio del kernel). ˆ read, write: escribir y recuperar bulk data ˆ ioctl: configurar el dispositivo
  • 32. ¿Que son los Dispositivos?(Cont) ˆ Podemos clasificar el hard en varios tipos. ˆ Dispositivos de acceso aleatorio(ej. discos). ˆ Dispositivos seriales(ej. Mouse, sonido,etc). ˆ Acorde a esto los drivers se clasifican en: ˆ Drivers de bloques: son un grupo de bloques de datos persistentes. Leemos y escribimos de a bloques, generalmente de 1024 bytes. ˆ Drivers de car´acter: Se accede de a 1 byte a la vez y 1 byte s´olo puede ser le´ıdo por ´unica vez. ˆ Drivers de red: tarjetas ethernet, WIFI, etc.
  • 33. Dispositivos en UNIX ˆ Major y Minor device number. ˆ Los dispositivos se dividen en n´umeros llamados major device number. Ej: los discos SCSI tienen el major number 8. ˆ Cada dispositivo tiene su minor device number. Ejemplo: /dev/sda major number 8 y minor number 0 ˆ Con el major y el minor number el kernel identifica un dispositivo. ˆ kernel code/linux/Documentation/devices.txt # l s −l /dev/hda [1 −3] brw−rw−−−− 1 root d i s k 3 , 1 Abr 9 15:24 /dev/hda1 brw−rw−−−− 1 root d i s k 3 , 2 Abr 9 15:24 /dev/hda2 brw−rw−−−− 1 root d i s k 3 , 3 Abr 9 15:24 /dev/hda3
  • 34. Archivos de dispositivos en UNIX ˆ Representaci´on de los dispositivos(device files) ˆ Por convenci´on est´an en el /dev ˆ Se crean mediante el comando mknod. mknod[− m<mode >] f i l e [ b | c ] major minor ˆ b o c: seg´un se trate de dispositivos de caracter o de bloque. ˆ El minor y el major number lo obtenemos de kernel code/linux/Documentation/devices.txt
  • 35. Dispositivos en UNIX ˆ Necesitamos decirle al kernel: ˆ Que hacer cuando se escribe al device file. ˆ Que hacer cuando se lee desde el device file.. ˆ Todo esto lo hacemos en un m´odulo. ˆ La struct file operations: ˆ Sirve para decirle al kernel como leer y/o escribir al dispositivo. ˆ Cada variable posee un puntero a las funciones que implementan las operaciones sobre el dispositivo.
  • 36. ¿Como creamos un driver? ˆ Mediante la struct file operations especifico que funciones leen/escriben al dispositivo. struct file_operations my_driver_fops = { read: myDriver_read, write: myDriver_write, open: myDriver_open, release: mydriver_release}; ˆ En la funci´on module init registro mi driver. register_chrdev(major_number, "myDriver", & my_driver_fops); ˆ En la funci´on module exit desregistro mi driver. unregister_chrdev(major_number, "myDriver");
  • 37. ¿Como creamos un driver?(Cont..) ˆ Operaciones sobre el dispositivo ˆ Escritura del archivo de dispositivo (Ej. echo ”hi)) /dev/myDeviceFile) ssize_t myDriver_write(struct file *filp, char *buf,size_t count, loff_t *f_pos); ˆ Lectura del archivo de dispositivo (Ej. cat /dev/myDeviceFile) ssize_t myDriver_read(struct file *filp, char *buf,size_t count, loff_t *f_pos)
  • 38. ¿Como creamos un driver?(Cont...) ˆ Par´ametros de las funciones funciones: ˆ Struct file: Estructura del kernel que representa un archivo abierto. ˆ char *buf: El dato a le´ıdo o a escribir desde/hacia el dispositivo(espacio de usuario) ˆ size t count: La longitud de buf. ˆ loff t *f pos count: La posici´on manipulada