2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel...

22
2 Llamadas al Sistema, Kernel Introducci´ on a los Sistemas Operativos, 2019-2020 Pablo Gonz´ alez Nalda Depto. de Lenguajes y Sistemas Inform´ aticos EU de Ingenier´ ıa de Vitoria-Gasteiz, UPV/EHU 30 de enero de 2020

Transcript of 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel...

Page 1: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

2 Llamadas al Sistema, Kernel

Introduccion a los Sistemas Operativos,

2019-2020

Pablo Gonzalez Nalda

Depto. de Lenguajes y Sistemas InformaticosEU de Ingenierıa de Vitoria-Gasteiz,

UPV/EHU

30 de enero de 2020

Page 2: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Contenidos de la presentacion

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

2 / 22

Page 3: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Hola, soy Tux, el Kernel.

https://en.wikipedia.org/wiki/Linux_kernel

https://en.wikipedia.org/wiki/Kernel_(computer_science)

Page 4: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

4 / 22

Page 5: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

¿�e es el kernel?

Es la parte del SO que gestiona los recursos hardware y

uniformiza su acceso.

Ordenador

Hardware

Kernel dependiente del Hardware

Kernel

Interfaz de Llamadas al Sistema

Biblioteca C de GNU

glibc

Espacio de usuario

Aplicaciones de usuario

y de SO

Sistema Operativo

Kernel

5 / 22

Page 6: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

¿�e es el kernel?

Wikipedia

Linuxprocessscheduler

Linuxmemorymanager

IPCmanager

I/Ointerface

Networkinterface

Virtualfilesystem

A

ApplicationPOSIX-compatible

Linux-specificApplication

system calls

system calls

functioncalls

functio

n

calls

6 / 22

Page 7: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Modo Kernel y Modo Usuario

En el Modo Kernel (tambien llamado Modo Supervisor) se

pueden hacer las siguientes operaciones (propias del codigo del

Kernel), prohibidas en codigo ejecutado en Modo Usuario.

ejecutar instrucciones privilegiadas de Lenguaje Maquina

acceder a memoria de otros programas

acceder a cualquier informacion del Kernel (tablas de

gestion)

acceder a todo tipo de hardware (memoria, perifericos

7 / 22

Page 8: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Anillos

El Modo Kernel es el Anillo 0 y el Modo Usuario es el Anillo 3

(ver Wikipedia). En el anillo -1 se pueden gestionar

maquinas virtuales (para codigo de hipervisores).

Ring 3

Ring 2

Ring 1

Ring 0

Kernel

Device drivers

Applications

Device drivers

Least privileged

Most privileged

8 / 22

Page 9: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

9 / 22

Page 10: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Estructuras del Kernel

Gestion de Procesos

Sistema de Ficheros Virtual (VFS)

Gestion de Memoria (MM)

Pila de Red TCP/IP

So�ware controlador de dispositivos (device drivers)

Mecanismo de interrupciones

Hardware : se mueve el raton, IRQ del USB.

So�ware : division por cero en la FPU.

Trap : instruccion de Lenguaje Maquina que

produce un cambio.

10 / 22

Page 11: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Estructuras del Kernel: VFS

Niveles:

Capa de abstraccion

Sistemas de Ficheros: ext4, vfat (FAT32), ntfs, /proc, etc

Buferes de dispositivos (cache de discos)

Acceso a bloques del dispositivo (SATA, IDE, SCSI. . . )

Controladora Hardware del dispositivo (circuitos y

firmware)

11 / 22

Page 12: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Estructuras del Kernel

https://makelinux.github.io/kernel/map/

12 / 22

Page 13: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes
Page 14: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

14 / 22

Page 15: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Tipos de kernels

La diferencia es que se ejecuta en modo usuario y que en modo

kernel. Ver Wikipedia.

VFS

IPC, File System

Scheduler, Virtual Memory

Device Drivers, Dispatcher, … Basic IPC, Virtual Memory, Scheduling

UNIX

Server

Device

Driver

File

Server

Application

IPC

System CallApplication

Hardware Hardware

user

mode

kernel

mode

Monolithic Kernel

based Operating System

Microkernel

based Operating System

15 / 22

Page 16: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

16 / 22

Page 17: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Programa de ejemplo con E/S de C

Programa de ejemplo con E/S de C, compatible para todos los

SO.

1 #include <stdio.h>#include <stdlib.h>

4 int main () {FILE * fp;

7 fp = fopen ("fichero.txt", "w+");fprintf(fp, "Hola...\n");

10 fclose(fp);

return 0; // Para verlo, echo $? en CLI13 // (la lınea de comandos)

}

17 / 22

Page 18: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Programa de ejemplo de Llamadas al Sistema

Programa de ejemplo de Llamadas al Sistema

1 #include <stdio.h>#include <sys/types.h>#include <sys/stat.h>

4 #include <fcntl.h>#include <unistd.h>int main(){

7 int fd; // entrada en la tabla de canalesfd=open("hola.txt", O_WRONLY|O_CREAT, 0666);write(fd, "Hola...\n",8);

10 close(fd);return 0; // Para verlo, echo $? en CLI

// (la lınea de comandos)13 }

18 / 22

Page 19: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

Llamadas al Sistema

Hay principalmente dos metodos para hacer Llamadas al

Sistema (ver

https://en.wikipedia.org/wiki/System_call):

Escribir en registros el numero de llamada, los datos y

punteros a datos (referencias) y hacer una interrupcion

trap (INT 80h en MS-DOS)

Por ejemplo (ver tabla), para open, un 5 en el registro

EAX del procesador, un puntero a la cadena que contiene

el nombre del fichero en EBX, y dos enteros para otros

parametros en ECX y EDX.

SYSCALL/SYSRET, SYSENTER/SYSEXIT son instrucciones

de Lenguaje Maquina.

X86 Assembly/Interfacing with Linux19 / 22

Page 20: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

¿Mas preguntas?

1 ¿�e es el Kernel o Nucleo del SO?

2 Estructuras del kernel

3 Tipos de kernels

4 Llamadas al Sistema

5 ¿Mas preguntas?

20 / 22

Page 21: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

Contenidos

¿�e es el Kernel

o Nucleo del SO?

Estructuras del

kernel

Tipos de kernels

Llamadas al

Sistema

¿Mas preguntas?

¿Mas preguntas?

¿Mas preguntas?

¿Mas preguntas?

21 / 22

Page 22: 2 Llamadas al Sistema, Kernel - Gasteiz UPV/EHU Llamadas al...2 Llamadas al Sistema, Kernel Introduccion a los Sistemas Operativos,´ 2019-2020 Pablo Gonz´alez Nalda Depto. de Lenguajes

2 Llamadas al Sistema, Kernel

Introduccion a los Sistemas Operativos,

2019-2020

Pablo Gonzalez Nalda

Depto. de Lenguajes y Sistemas InformaticosEU de Ingenierıa de Vitoria-Gasteiz,

UPV/EHU

30 de enero de 2020