diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-24 11:22:00 +0100 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-24 11:22:00 +0100 |
| commit | 79e1a51eb55d0df43323c0fe77a7d55b2c2bd17d (patch) | |
| tree | 89bd93a329f9deb72efce8fed205b69918c3d9b9 | |
| parent | 1f7f9bcc7660fba0827a62c3068d5c7082f025d7 (diff) | |
POO
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | fvv1/n.lyx | 205 | ||||
| -rw-r--r-- | fvv1/n1.lyx | 1914 | ||||
| -rw-r--r-- | fvv1/n2.lyx | 1010 | ||||
| -rw-r--r-- | fvv1/n3.lyx | 1046 | ||||
| -rw-r--r-- | fvv1/n4.lyx | 592 | ||||
| -rw-r--r-- | fvv2/n.lyx | 218 | ||||
| -rw-r--r-- | fvv2/n1.lyx | 3333 | ||||
| -rw-r--r-- | fvv2/n3.lyx | 3763 | ||||
| -rw-r--r-- | fvv2/n4.lyx | 688 | ||||
| -rw-r--r-- | iso/n.lyx | 336 | ||||
| -rw-r--r-- | iso/n1.lyx | 997 | ||||
| -rw-r--r-- | iso/n2.lyx | 1232 | ||||
| -rw-r--r-- | iso/n3.lyx | 943 | ||||
| -rw-r--r-- | iso/n4.lyx | 895 | ||||
| -rw-r--r-- | iso/n5.lyx | 879 | ||||
| -rw-r--r-- | iso/n6.lyx | 826 | ||||
| -rw-r--r-- | iso/na.lyx | 7090 | ||||
| -rw-r--r-- | iso/nb.lyx | 1092 | ||||
| -rw-r--r-- | iso/nc.lyx | 1408 | ||||
| -rw-r--r-- | iso/nd.lyx | 4024 | ||||
| -rw-r--r-- | iso/ne.lyx | 1997 | ||||
| -rw-r--r-- | iso/nf.lyx | 2949 | ||||
| -rw-r--r-- | iso/pegado1.png | bin | 0 -> 19295 bytes | |||
| -rw-r--r-- | iso/pegado2.png | bin | 0 -> 39707 bytes | |||
| -rw-r--r-- | iso/pegado3.png | bin | 0 -> 21311 bytes | |||
| -rw-r--r-- | iso/pegado4.png | bin | 0 -> 3204 bytes | |||
| -rw-r--r-- | iso/pegado5.png | bin | 0 -> 32237 bytes | |||
| -rw-r--r-- | iso/pegado6.png | bin | 0 -> 32568 bytes | |||
| -rw-r--r-- | license.lyx | 24 | ||||
| -rw-r--r-- | poo/n.lyx | 266 | ||||
| -rw-r--r-- | poo/n1.lyx | 235 | ||||
| -rw-r--r-- | poo/n2.lyx | 1168 | ||||
| -rw-r--r-- | poo/n3.lyx | 959 | ||||
| -rw-r--r-- | poo/n4.lyx | 3827 | ||||
| -rw-r--r-- | poo/n5.lyx | 926 | ||||
| -rw-r--r-- | poo/n6.lyx | 771 | ||||
| -rw-r--r-- | poo/na.lyx | 1500 | ||||
| -rw-r--r-- | poo/nb.lyx | 743 |
39 files changed, 47860 insertions, 0 deletions
@@ -16,6 +16,8 @@ son las siguientes: * `gae`: Geometría Afín y Euclídea. * `tem`: Topología de Espacios Métricos. * `aalg`: Ampliación de Álgebra y Geometría. +* `fvv1`: Funciones de Varias Variables I. +* `fvv2`: Funciones de Varias Variables II. Falta el capítulo 2. Las asignaturas de ingeniería informática que se incluyen son las siguientes: @@ -26,6 +28,8 @@ Las asignaturas de ingeniería informática que se incluyen son las siguientes: * `ffi`: Fundamentos Físicos de la Informática. * `tp`: Tecnología de la Programación. * `aed1`: Algoritmos y Estructuras de Datos I. +* `iso`: Introducción a los Sistemas Operativos. +* `poo`: Programación Orientada a Objetos. Los apuntes están escritos con [LyX](https://www.lyx.org/). En cada directorio, el fichero `n.lyx` es el fichero principal con los apuntes de la asignatura. diff --git a/fvv1/n.lyx b/fvv1/n.lyx new file mode 100644 index 0000000..0e1cf08 --- /dev/null +++ b/fvv1/n.lyx @@ -0,0 +1,205 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\input{../defs} +\end_preamble +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Funciones de varias variables I +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2018} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Antonio Avilés. +\end_layout + +\begin_layout Itemize +FVV1, Luis Oncina (2016–17). +\end_layout + +\begin_layout Chapter +Normas y convergencia +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Derivadas y diferenciales +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Dobles diferenciales +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n3.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Regiones de +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n4.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/fvv1/n1.lyx b/fvv1/n1.lyx new file mode 100644 index 0000000..41aa455 --- /dev/null +++ b/fvv1/n1.lyx @@ -0,0 +1,1914 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Sea +\begin_inset Formula $E$ +\end_inset + + un +\begin_inset Formula $\mathbb{R}$ +\end_inset + +-espacio vectorial, una +\series bold +norma +\series default + es una aplicación +\begin_inset Formula $\Vert\cdot\Vert:E\rightarrow\mathbb{R}$ +\end_inset + + tal que +\begin_inset Formula $\forall x,y\in E,\lambda\in\mathbb{R}$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\Vert x\Vert\geq0\land(\Vert x\Vert=0\iff x=0)$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\Vert x+y\Vert\leq\Vert x\Vert+\Vert y\Vert$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\Vert\lambda x\Vert=|\lambda|\Vert x\Vert$ +\end_inset + +. +\end_layout + +\begin_layout Standard +El par +\begin_inset Formula $(E,\Vert\cdot\Vert)$ +\end_inset + + es un +\series bold +espacio normado +\series default +. + Llamamos +\series bold +distancia asociada a la norma +\series default + a +\begin_inset Formula $d(x,y):=\Vert x-y\Vert$ +\end_inset + +. + Dos normas son equivalentes si sus distancias lo son. +\end_layout + +\begin_layout Standard +Ejemplos de normas en +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + son las dadas por +\begin_inset Formula $\Vert(x_{1},\dots,x_{n})\Vert_{p}:=\sqrt[p]{\sum_{i=1}^{n}|x_{i}|^{p}}$ +\end_inset + + y +\begin_inset Newline newline +\end_inset + + +\begin_inset Formula $\Vert(x_{1},\dots,x_{n})\Vert_{\infty}:=\max\{|x_{i}|\}_{i=1}^{n}$ +\end_inset + +. + Además, +\begin_inset Formula $V:={\cal C}[a,b]:=\{f:[a,b]\rightarrow\mathbb{R}\text{ continua}\}$ +\end_inset + + con +\begin_inset Formula $\Vert f\Vert_{\infty}:=\sup\{|f(x)|\}_{x\in[a,b]}$ +\end_inset + + es un espacio normado. +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status open + +\begin_layout Enumerate +Dado +\begin_inset Formula $f\in V$ +\end_inset + +, existe al menos un +\begin_inset Formula $x\in[a,b]$ +\end_inset + + y entonces +\begin_inset Formula $\Vert f\Vert_{\infty}\geq|f(x)|\geq0$ +\end_inset + +, y +\begin_inset Formula $\Vert f\Vert_{\infty}=0\iff\forall x\in[a,b],f(x)=0\iff f=0$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\Vert f+g\Vert_{\infty}=\sup\{|f(x)+g(x)|\}_{x\in[a,b]}\leq\sup\{|f(x)|+|g(x)|\}_{x\in[a,b]}\leq\sup\{|f(x)|\}_{x\in[a,b]}+\sup\{|g(x)|\}_{x\in[a,b]}=\Vert f\Vert_{\infty}+\Vert g\Vert_{\infty}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Dado +\begin_inset Formula $\lambda\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $\Vert\lambda f\Vert_{\infty}=\sup\{|\lambda f(x)|\}_{x\in[a,b]}=|\lambda|\sup\{|f(x)|\}_{x\in[a,b]}=|\lambda|\Vert f\Vert_{\infty}$ +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{TEM} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $f:(X,d)\rightarrow(Y,d')$ +\end_inset + + es continua en +\begin_inset Formula $p$ +\end_inset + + [...] si y sólo si +\begin_inset Formula $\forall\varepsilon>0,\exists\delta>0:\forall x\in X,(d(x,p)<\delta\implies d'(f(x),f(p))<\varepsilon)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Definimos la norma de una aplicación +\begin_inset Formula $L:(E,\Vert\cdot\Vert)\rightarrow(F,\Vert\cdot\Vert')$ +\end_inset + + como +\begin_inset Formula $\Vert L\Vert:=\Vert L\Vert_{\Vert\cdot\Vert}^{\Vert\cdot\Vert'}:=\sup\{\Vert L(x)\Vert'\}_{x\in E,\Vert x\Vert\leq1}$ +\end_inset + +, y tenemos como +\series bold +teorema +\series default + que +\begin_inset Formula $L$ +\end_inset + + es continua si y sólo si +\begin_inset Formula $\Vert L\Vert<+\infty$ +\end_inset + +, y entonces es uniformemente continua. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Sea +\begin_inset Formula $L$ +\end_inset + + continua en 0, es decir, +\begin_inset Formula $\forall\varepsilon>0,\exists\delta>0:\forall y\in E,(\Vert y\Vert<\delta\implies\Vert L(y)\Vert'<\varepsilon)$ +\end_inset + +. + Fijado +\begin_inset Formula $\varepsilon$ +\end_inset + +, sea +\begin_inset Formula $\Vert z\Vert\leq1$ +\end_inset + +, entonces +\begin_inset Formula $\Vert\frac{\delta}{2}z\Vert<\delta$ +\end_inset + + y +\begin_inset Formula $\Vert L(\frac{\delta}{2}z)\Vert'<\varepsilon$ +\end_inset + +, luego +\begin_inset Formula $\Vert L(z)\Vert'<\frac{2\varepsilon}{\delta}$ +\end_inset + + y +\begin_inset Formula $\Vert L\Vert<\frac{2\varepsilon}{\delta}$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Veamos primero que +\begin_inset Formula $\Vert L\Vert<+\infty\implies\forall x\in E,\Vert L(x)\Vert'\leq\Vert L\Vert\Vert x\Vert$ +\end_inset + +. + En efecto, para +\begin_inset Formula $\Vert x\Vert=1$ +\end_inset + +, +\begin_inset Formula $\Vert L(x)\Vert'\leq\sup\{\Vert L(y)\Vert\}_{\Vert y\Vert\leq1}=\Vert L\Vert=\Vert L\Vert\Vert x\Vert$ +\end_inset + +, y para cualquier otra +\begin_inset Formula $x$ +\end_inset + + basta dividir entre la norma. + Ahora bien, dado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, tomando +\begin_inset Formula $\delta:=\frac{\varepsilon}{\Vert L\Vert+1}$ +\end_inset + + entonces +\begin_inset Formula $\Vert y-x\Vert<\delta\implies\Vert L(y)-L(x)\Vert'=\Vert L(y-x)\Vert'\leq\Vert L\Vert\Vert y-x\Vert<\Vert L\Vert\delta=\frac{\Vert L\Vert\varepsilon}{\Vert L\Vert+1}<\varepsilon$ +\end_inset + +. + Pero como +\begin_inset Formula $\delta$ +\end_inset + + no depende de +\begin_inset Formula $x$ +\end_inset + +, +\begin_inset Formula $L$ +\end_inset + + es uniformemente continua. +\end_layout + +\begin_layout Section +Equivalencia de normas +\end_layout + +\begin_layout Standard +Dos normas +\begin_inset Formula $\Vert\cdot\Vert$ +\end_inset + + y +\begin_inset Formula $\Vert\cdot\Vert'$ +\end_inset + + son equivalentes si y sólo si +\begin_inset Formula $\exists\alpha,\beta>0:\forall x\in E,\alpha\Vert x\Vert\leq\Vert x\Vert'\leq\beta\Vert x\Vert$ +\end_inset + +. + +\series bold +Demostración: +\series default + Sean +\begin_inset Formula $L:=id_{E}:(E,\Vert\cdot\Vert)\rightarrow(E,\Vert\cdot\Vert')$ +\end_inset + + y +\begin_inset Formula $L':=L^{-1}$ +\end_inset + +, entonces +\begin_inset Formula ${\cal T}_{\Vert\cdot\Vert}={\cal T}_{\Vert\cdot\Vert'}$ +\end_inset + + si y sólo si +\begin_inset Formula $L$ +\end_inset + + y +\begin_inset Formula $L'$ +\end_inset + + son continuas, pues +\begin_inset Formula $L\text{ es continua}\iff\forall A\in{\cal T}_{\Vert\cdot\Vert'},A\in{\cal T}_{\Vert\cdot\Vert}\iff{\cal T}_{\Vert\cdot\Vert'}\subseteq{\cal T}_{\Vert\cdot\Vert}$ +\end_inset + +, y el otro contenido es análogo. + Entonces: +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Si +\begin_inset Formula $L$ +\end_inset + + es continua +\begin_inset Formula $\Vert L\Vert<+\infty$ +\end_inset + +, luego +\begin_inset Formula $\Vert x\Vert'=\Vert L(x)\Vert'\leq\Vert L\Vert\Vert x\Vert\overset{\beta:=\Vert L\Vert}{=}\beta\Vert x\Vert$ +\end_inset + +. + La otra cota se hace de forma análoga. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Si existe +\begin_inset Formula $\beta$ +\end_inset + + tal que +\begin_inset Formula $\forall x\in E,\Vert x\Vert'\leq\beta\Vert x\Vert$ +\end_inset + +, en particular se cumple para +\begin_inset Formula $\Vert x\Vert\leq1$ +\end_inset + +, y entonces +\begin_inset Formula $\Vert L(x)\Vert=\Vert x\Vert'\leq\beta\Vert x\Vert$ +\end_inset + +, luego +\begin_inset Formula $\Vert L\Vert=\sup\{\Vert x\Vert'\}_{\Vert x\Vert\leq1}\leq\beta<+\infty$ +\end_inset + + y +\begin_inset Formula $L$ +\end_inset + + es continua. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{TEM} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Las métricas +\begin_inset Formula $d_{E}$ +\end_inset + +, +\begin_inset Formula $d_{T}$ +\end_inset + + y +\begin_inset Formula $d_{\infty}$ +\end_inset + + [...] son equivalentes, [...]. + +\series bold +Demostración: +\series default + Se deduce de que +\begin_inset Formula $\frac{1}{n}d_{T}(x,y)\leq d_{\infty}(x,y)\leq d_{T}(x,y)$ +\end_inset + + y +\begin_inset Formula $\frac{1}{\sqrt{n}}d_{E}(x,y)\leq d_{\infty}(x,y)\leq d_{E}(x,y)$ +\end_inset + +. + [...] +\end_layout + +\begin_layout Standard +Todo cerrado +\begin_inset Formula $C$ +\end_inset + + de un compacto +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + es compacto. + [...] En [...] +\begin_inset Formula $(\mathbb{R},{\cal T}_{u})$ +\end_inset + + [...] todo subespacio cerrado y acotado es compacto. + [...] Todo subespacio compacto +\begin_inset Formula $K$ +\end_inset + + de un espacio métrico +\begin_inset Formula $(X,d)$ +\end_inset + + es [cerrado y] acotado. + [...]Si +\begin_inset Formula $f:(X,{\cal T})\rightarrow(Y,{\cal T}')$ +\end_inset + + es continua y +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + es compacto entonces +\begin_inset Formula $f(X)$ +\end_inset + + es compacto. + [...] +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + es +\series bold +compacto +\series default +[...] si toda sucesión admite una subsucesión convergente. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Toda norma +\begin_inset Formula $\Vert\cdot\Vert:(E,\Vert\cdot\Vert)\rightarrow\mathbb{R}$ +\end_inset + + es uniformemente continua. + +\series bold +Demostración: +\series default + Fijado +\begin_inset Formula $\varepsilon$ +\end_inset + + y tomando +\begin_inset Formula $\delta:=\varepsilon$ +\end_inset + +, si +\begin_inset Formula $\Vert x-y\Vert<\delta$ +\end_inset + + entonces usando que +\begin_inset Formula $|\Vert x\Vert-\Vert y\Vert|\leq\Vert x-y\Vert$ +\end_inset + +, lo que se deduce de +\begin_inset Formula $\Vert x\Vert\leq\Vert x-y\Vert+\Vert y\Vert$ +\end_inset + + y +\begin_inset Formula $\Vert y\Vert\leq\Vert y-x\Vert+\Vert x\Vert$ +\end_inset + +, obtenemos que +\begin_inset Formula $|\Vert x\Vert-\Vert y\Vert|<\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, en +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + +, todas las normas son equivalentes. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Formula $\Vert x\Vert\leq C\Vert x\Vert_{1}]$ +\end_inset + + +\begin_inset Formula $\Vert x\Vert=\Vert\sum x_{i}\vec{e}_{i}\Vert\leq\sum|x_{i}|\Vert\vec{e}_{i}\Vert\leq\max\{\Vert\vec{e}_{i}\Vert\}\sum|x_{i}|=\max\{\Vert\vec{e}_{i}\Vert\}\Vert x\Vert_{1}$ +\end_inset + +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Formula $\Vert x\Vert_{1}\leq D\Vert x\Vert]$ +\end_inset + + Tomamos +\begin_inset Formula $(\mathbb{R}^{n},\Vert\cdot\Vert_{1})\overset{id}{\rightarrow}(\mathbb{R}^{n},\Vert\cdot\Vert)\overset{\Vert\cdot\Vert}{\rightarrow}\mathbb{R}$ +\end_inset + +, que es continua por ser composición de dos funciones continuas (la identidad + es continua por la otra cota y la demostración del teorema anterior), entonces + +\begin_inset Formula $S:=\{x\in\mathbb{R}^{n}:\Vert x\Vert_{1}=1\}$ +\end_inset + + es cerrado dentro del compacto +\begin_inset Formula $\overline{B}(0,1)$ +\end_inset + +, luego es compacto y como la función dada es continua, +\begin_inset Formula $\Vert\cdot\Vert(S)$ +\end_inset + + es compacto y alcanza su máximo y su mínimo. + Sea ahora +\begin_inset Formula $\mu:=\min\{\Vert x\Vert\}_{x\in S}>0$ +\end_inset + + (pues +\begin_inset Formula $0\notin S$ +\end_inset + +), si +\begin_inset Formula $\Vert x\Vert_{1}=1$ +\end_inset + + para un cierto +\begin_inset Formula $x\in\mathbb{R}^{n}$ +\end_inset + +, entonces +\begin_inset Formula $\Vert x\Vert\geq\mu$ +\end_inset + +, luego +\begin_inset Formula $x\neq0$ +\end_inset + + y +\begin_inset Formula $\left\Vert \frac{x}{\Vert x\Vert_{1}}\right\Vert =1$ +\end_inset + +, con lo que +\begin_inset Formula $\left\Vert \frac{x}{\Vert x\Vert_{1}}\right\Vert \geq\mu$ +\end_inset + + y +\begin_inset Formula $\Vert x\Vert\geq\mu\Vert x\Vert_{1}$ +\end_inset + +, y entonces +\begin_inset Formula $\Vert x\Vert_{1}\leq\frac{1}{\mu}\Vert x\Vert$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Tenemos pues que toda +\begin_inset Formula $T:(\mathbb{R}^{m},\Vert\cdot\Vert)\rightarrow(\mathbb{R}^{n},\Vert\cdot\Vert')$ +\end_inset + + lineal es continua +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +, pues equivale a una multiplicación por una matriz en +\begin_inset Formula $M_{n\times m}(\mathbb{R})$ +\end_inset + +, que es continua con la norma euclídea y por tanto en todas las demás +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Convergencia +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + un espacio topológico e +\begin_inset Formula $(Y,d)$ +\end_inset + + un espacio métrico, una sucesión de funciones +\begin_inset Formula $(f_{n}:(X,{\cal T})\rightarrow(Y,d))_{n}$ +\end_inset + + +\series bold +converge puntualmente +\series default + a +\begin_inset Formula $f:(X,{\cal T})\rightarrow(Y,d)$ +\end_inset + + si para todo +\begin_inset Formula $x\in X$ +\end_inset + +, +\begin_inset Formula $f_{n}(x)\rightarrow f(x)$ +\end_inset + +, y converge +\series bold +uniformemente +\series default + a +\begin_inset Formula $f$ +\end_inset + + si +\begin_inset Formula $d_{\infty}(f_{n},f)\rightarrow0$ +\end_inset + +. + Sea +\begin_inset Formula $x_{0}\in(X,{\cal T})$ +\end_inset + + y +\begin_inset Formula $(f_{n}:X\rightarrow\mathbb{R})_{n}$ +\end_inset + + una sucesión de funciones continuas en +\begin_inset Formula $x_{0}$ +\end_inset + + que converge uniformemente a +\begin_inset Formula $f$ +\end_inset + +, entonces +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $x_{0}$ +\end_inset + +. + +\series bold +Demostración: +\series default + Fijado un +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, existe un +\begin_inset Formula $n_{0}\in\mathbb{N}$ +\end_inset + + tal que para +\begin_inset Formula $n\geq n_{0}$ +\end_inset + + y +\begin_inset Formula $x\in X$ +\end_inset + + se tiene +\begin_inset Formula $|f_{n}(x)-f(x)|<\frac{\varepsilon}{3}$ +\end_inset + +. + Como +\begin_inset Formula $f_{n}$ +\end_inset + + es continua, existe +\begin_inset Formula ${\cal V}\in{\cal E}(x_{0})$ +\end_inset + + tal que si +\begin_inset Formula $x\in{\cal V}$ +\end_inset + + entonces +\begin_inset Formula $|f_{n}(x)-f_{n}(x_{0})|<\frac{\varepsilon}{3}$ +\end_inset + +, con lo que +\begin_inset Formula $|f(x)-f(x_{0})|\leq|f(x)-f_{n}(x)|+|f_{n}(x)-f_{n}(x_{0})|+|f_{n}(x_{0})-f(x_{0})|<\frac{\varepsilon}{3}+\frac{\varepsilon}{3}+\frac{\varepsilon}{3}=\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +El límite puntual de funciones continuas no es necesariamente continua, + ni siquera en funciones de +\begin_inset Formula $(a,b)$ +\end_inset + + a +\begin_inset Formula $\mathbb{R}$ +\end_inset + +, y como contraejemplo tenemos +\begin_inset Formula $(f_{n}:(-1,1)\rightarrow\mathbb{R})_{n}$ +\end_inset + + dada por +\begin_inset Formula $f_{n}(x)=\begin{cases} +0 & \text{si }x\leq0\\ +nx & \text{si }0<x<\frac{1}{n}\\ +1 & \text{si }x\geq\frac{1}{n} +\end{cases}$ +\end_inset + +, que converge a +\begin_inset Formula $f(x)=\begin{cases} +0 & \text{si }x\leq0\\ +1 & \text{si }x>0 +\end{cases}$ +\end_inset + +. + Asimismo, el límite uniforme de funciones derivables no es necesariamente + derivable, y como contraejemplo tenemos +\begin_inset Formula $f_{n}(x)=\sqrt{x^{2}+\frac{1}{n}}$ +\end_inset + +, que converge a +\begin_inset Formula $f(x)=|x|$ +\end_inset + +. +\end_layout + +\begin_layout Plain Layout +La función +\begin_inset Formula $\sum_{n}\frac{\cos(7^{n}\pi x)}{2^{n}}$ +\end_inset + + es continua en todos los puntos ( +\begin_inset Formula $\Vert\frac{\cos(7^{n}\pi x)}{2^{n}}\Vert_{\infty}=\frac{1}{2^{n}}\implies\Vert\sum_{n}\frac{\cos(7^{n}\pi x)}{2^{n}}\Vert<+\infty$ +\end_inset + +, con lo que la función es continua por ser la suma de una sucesión convergente + de funciones continuas) pero no es derivable en ninguno. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{FUVR1} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $\lim_{n}x_{n}=\pm\infty$ +\end_inset + + entonces +\begin_inset Formula $\lim_{n}\left(1+\frac{1}{x_{n}}\right)^{x_{n}}=e$ +\end_inset + + y +\begin_inset Formula $\lim_{n}\left(1-\frac{1}{x_{n}}\right)^{x_{n}}=e^{-1}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Si existe +\begin_inset Formula $\lim_{n}\frac{z_{n+1}}{z_{n}}=w\in\mathbb{R}$ +\end_inset + + con +\begin_inset Formula $|w|<1$ +\end_inset + +, entonces +\begin_inset Formula $\lim_{n}z_{n}=0$ +\end_inset + +. + [...] +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $b>0$ +\end_inset + +, +\begin_inset Formula $c>1$ +\end_inset + + y +\begin_inset Formula $d>0$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\log n\ll n^{b}\ll c^{n}\ll n^{dn} +\] + +\end_inset + +Si además +\begin_inset Formula $d\geq1$ +\end_inset + +, entonces +\begin_inset Formula $c^{n}\ll n!\ll n^{dn}$ +\end_inset + +. + [...] +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $\lim_{n}x_{n}=0$ +\end_inset + + con +\begin_inset Formula $0<|x_{n}|<1$ +\end_inset + +, entonces: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\log(1+x_{n})\sim x_{n}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $e^{x_{n}}-1\sim x_{n}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $\lim_{n}x_{n}=1$ +\end_inset + + con +\begin_inset Formula $x_{n}\neq1$ +\end_inset + + y +\begin_inset Formula $\lim_{n}y_{n}=\pm\infty$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\lim_{n}x_{n}^{y_{n}}=e^{\lim_{n}y_{n}(x_{n}-1)} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $\lim_{n}x_{n}=0$ +\end_inset + + y +\begin_inset Formula $x_{n}\neq0$ +\end_inset + +, entonces +\begin_inset Formula $\sin x_{n}\sim x_{n}$ +\end_inset + +. +\end_layout + +\begin_layout Standard + +\series bold +Criterios de Stolz: +\series default + Si +\begin_inset Formula $(a_{n})_{n}$ +\end_inset + + y +\begin_inset Formula $(b_{n})_{n}$ +\end_inset + + son sucesiones de reales tales que +\begin_inset Formula $(b_{n})_{n}$ +\end_inset + + es estrictamente creciente o decreciente y bien +\begin_inset Formula $\lim_{n}a_{n}=\lim_{n}b_{n}=0$ +\end_inset + +, bien +\begin_inset Formula $\lim_{n}b_{n}=\infty$ +\end_inset + +, si existe +\begin_inset Formula $\lim_{n}\frac{a_{n+1}-a_{n}}{b_{n+1}-b_{n}}=L\in\overline{\mathbb{R}}$ +\end_inset + +, entonces +\begin_inset Formula $\lim_{n}\frac{a_{n}}{b_{n}}=L$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Como consecuencia: +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $(a_{n})_{n}$ +\end_inset + + converge, entonces +\begin_inset Formula +\[ +\lim_{n}\frac{a_{1}+\dots+a_{n}}{n}=\lim_{n}a_{n} +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $(a_{n})_{n}$ +\end_inset + + converge y +\begin_inset Formula $a_{n}>0$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\lim_{n}\sqrt[n]{a_{1}\cdots a_{n}}=\lim_{n}a_{n} +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $a_{n}>0$ +\end_inset + + y existe +\begin_inset Formula $\lim_{n}\frac{a_{n}}{a_{n-1}}$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\lim_{n}\sqrt[n]{a_{n}}=\lim_{n}\frac{a_{n}}{a_{n-1}} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{FUVR1} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +La +\series bold +condición de Cauchy +\series default + nos dice que +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + es convergente si y sólo si +\begin_inset Formula $\forall\varepsilon>0,\exists n_{0}\in\mathbb{N}:\forall p,q\in\mathbb{N},(n_{0}\leq p\leq q\implies|a_{p+1}+\dots+a_{q}|<\varepsilon)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +[...] Si +\begin_inset Formula $S_{n}$ +\end_inset + + converge, entonces +\begin_inset Formula $\lim_{n}a_{n}=0$ +\end_inset + +. + [...] La convergencia de una serie no se altera modificando un número finito + de términos de esta. + [...] +\end_layout + +\begin_layout Standard +Dada una serie +\begin_inset Formula $\sum_{n=1}^{\infty}a_{n}$ +\end_inset + + de términos +\begin_inset Formula $a_{n}\geq0$ +\end_inset + +, esta es convergente si y sólo si la sucesión de sumas parciales es acotada + [...]. +\end_layout + +\begin_layout Standard + +\series bold +Criterios de comparación: +\end_layout + +\begin_layout Enumerate +Dadas +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + y +\begin_inset Formula $\sum_{n}b_{n}$ +\end_inset + + con +\begin_inset Formula $a_{n},b_{n}\geq0$ +\end_inset + +, si existe +\begin_inset Formula $M>0$ +\end_inset + + tal que +\begin_inset Formula $a_{n}\leq Mb_{n}\forall n$ +\end_inset + +, entonces la convergencia de +\begin_inset Formula $\sum_{n=1}^{\infty}b_{n}$ +\end_inset + + implica la de +\begin_inset Formula $\sum_{n=1}^{\infty}a_{n}$ +\end_inset + + [...]. +\end_layout + +\begin_layout Enumerate +Dadas +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + y +\begin_inset Formula $\sum_{n}b_{n}$ +\end_inset + + con +\begin_inset Formula $a_{n},b_{n}>0$ +\end_inset + + y existe +\begin_inset Formula $l:=\lim_{n}\frac{a_{n}}{b_{n}}\in\mathbb{R}\cup\{+\infty\}$ +\end_inset + +: +\end_layout + +\begin_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $0<l<\infty$ +\end_inset + +, ambas series tienen el mismo carácter. + [...] +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $l=0$ +\end_inset + + entonces la convergencia de +\begin_inset Formula $\sum_{n}b_{n}$ +\end_inset + + implica la de +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + +. + [...] +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $l=+\infty$ +\end_inset + + entonces la convergencia de +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + implica la de +\begin_inset Formula $\sum_{n}b_{n}$ +\end_inset + +. + [...] +\end_layout + +\end_deeper +\begin_layout Standard + +\series bold +Criterio de la raíz: +\series default + Dada +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + con +\begin_inset Formula $a_{n}>0$ +\end_inset + + y +\begin_inset Formula $a:=\lim_{n}\sqrt[n]{a_{n}}\in\mathbb{R}$ +\end_inset + +: +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a<1$ +\end_inset + +, la serie converge. + [...] +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a>1$ +\end_inset + +, la serie diverge. + [...] +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a=1$ +\end_inset + + no se puede afirmar nada. +\end_layout + +\begin_layout Standard + +\series bold +Criterio del cociente: +\series default + Sea +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + con +\begin_inset Formula $a_{n}>0$ +\end_inset + + y +\begin_inset Formula $a:=\lim_{n}\frac{a_{n+1}}{a_{n}}\in\mathbb{R}$ +\end_inset + +. + [...] +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a<1$ +\end_inset + +, la serie converge. +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a>1$ +\end_inset + +, la serie diverge. +\end_layout + +\begin_layout Standard + +\series bold +Criterio de condensación: +\series default + Dada una sucesión +\begin_inset Formula $(a_{n})_{n}$ +\end_inset + + monótona decreciente con +\begin_inset Formula $a_{n}>0$ +\end_inset + +. + Entonces +\begin_inset Formula +\[ +\sum_{n=1}^{\infty}a_{n}\in\mathbb{R}\iff\sum_{n=1}^{\infty}2^{n}a_{2^{n}}\in\mathbb{R} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Una serie +\begin_inset Formula $\sum_{n}a_{n}$ +\end_inset + + con +\begin_inset Formula $a_{n}\in\mathbb{R}$ +\end_inset + + es +\series bold +absolutamente convergente +\series default + si +\begin_inset Formula $\sum_{n}|a_{n}|$ +\end_inset + + es convergente. + Toda serie absolutamente convergente es convergente. + [...] +\end_layout + +\begin_layout Standard +La +\series bold +serie geométrica +\series default + +\begin_inset Formula $\sum_{n=0}^{\infty}r^{n}$ +\end_inset + + es convergente si +\begin_inset Formula $|r|<1$ +\end_inset + + con suma +\begin_inset Formula $\frac{1}{1-r}$ +\end_inset + + y divergente si +\begin_inset Formula $|r|\geq1$ +\end_inset + +. + La +\series bold +serie armónica +\series default + +\begin_inset Formula $\sum_{n=1}^{\infty}\frac{1}{n^{k}}$ +\end_inset + + es convergente si +\begin_inset Formula $k>1$ +\end_inset + + y divergente si +\begin_inset Formula $k\leq1$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Completitud +\end_layout + +\begin_layout Standard +Una sucesión +\begin_inset Formula $(x_{n})$ +\end_inset + + en un espacio métrico +\begin_inset Formula $(E,d)$ +\end_inset + + es +\series bold +de Cauchy +\series default + si +\begin_inset Formula $\forall\varepsilon>0,\exists n_{\varepsilon}\in\mathbb{N}:\forall n,m\geq n_{\varepsilon},d(x_{n},x_{m})<\varepsilon$ +\end_inset + +. + Un espacio métrico es +\series bold +completo +\series default + si toda sucesión de Cauchy es convergente. + Un +\series bold +espacio de Banach +\series default + es un espacio normado completo. + Dadas dos normas +\begin_inset Formula $\Vert\cdot\Vert$ +\end_inset + + y +\begin_inset Formula $\Vert\cdot\Vert'$ +\end_inset + + equivalentes sobre +\begin_inset Formula $E$ +\end_inset + +, +\begin_inset Formula $(E,\Vert\cdot\Vert)$ +\end_inset + + es completo si y sólo si lo es +\begin_inset Formula $(E,\Vert\cdot\Vert')$ +\end_inset + +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\series bold +Demostración: +\series default + Existen +\begin_inset Formula $\alpha,\beta>0$ +\end_inset + + tales que +\begin_inset Formula $\alpha\Vert x\Vert\leq\Vert x\Vert'\leq\beta\Vert x\Vert$ +\end_inset + +, luego si +\begin_inset Formula $(x_{n})$ +\end_inset + + es de Cauchy en +\begin_inset Formula $(E,\Vert\cdot\Vert)$ +\end_inset + + también lo es en +\begin_inset Formula $(E,\Vert\cdot\Vert')$ +\end_inset + + sin más que tomar +\begin_inset Formula $n_{\frac{\varepsilon}{\beta}}$ +\end_inset + +, y viceversa, y como +\begin_inset Formula $(x_{n})$ +\end_inset + + converge a +\begin_inset Formula $x$ +\end_inset + + en +\begin_inset Formula $(E,\Vert\cdot\Vert)$ +\end_inset + + si y sólo si converge en +\begin_inset Formula $(E,\Vert\cdot\Vert')$ +\end_inset + +, la completitud de uno implica la del otro. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + es un espacio de Banach con cualquier norma. + +\series bold +Demostración: +\series default + Basta probar que +\begin_inset Formula $(\mathbb{R}^{n},\Vert\cdot\Vert_{\infty})$ +\end_inset + + es completo. + Si +\begin_inset Formula $(x_{m})$ +\end_inset + + es de Cauchy en +\begin_inset Formula $(\mathbb{R}^{n},\Vert\cdot\Vert_{\infty})$ +\end_inset + +, como +\begin_inset Formula $|x_{mi}-x_{ki}|\leq\Vert x_{m}-x_{k}\Vert_{\infty}$ +\end_inset + + para todo +\begin_inset Formula $i\in\{1,\dots,n\}$ +\end_inset + +, entonces +\begin_inset Formula $(x_{mi})_{m}$ +\end_inset + + es de Cauchy en +\begin_inset Formula $\mathbb{R}$ +\end_inset + + y por tanto convergente a un +\begin_inset Formula $x_{0i}$ +\end_inset + +, con lo que +\begin_inset Formula $(x_{m})_{m}$ +\end_inset + + converge a +\begin_inset Formula $(x_{01},\dots,x_{0n})$ +\end_inset + +, y se tiene que +\begin_inset Formula $(\mathbb{R}^{n},\Vert\cdot\Vert)$ +\end_inset + + es completo. +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, +\begin_inset Formula $({\cal C}[a,b],\Vert\cdot\Vert_{\infty})$ +\end_inset + + es un espacio de Banach. + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $(f_{n})_{n}$ +\end_inset + + una sucesión de Cauchy en +\begin_inset Formula $({\cal C}[a,b],\Vert\cdot\Vert_{\infty})$ +\end_inset + +, fijado un +\begin_inset Formula $\varepsilon>0$ +\end_inset + + existe un +\begin_inset Formula $n_{0}$ +\end_inset + + tal que para +\begin_inset Formula $n,m\geq n_{0}$ +\end_inset + + y +\begin_inset Formula $x\in[a,b]$ +\end_inset + +, +\begin_inset Formula $|f_{n}(x)-f_{m}(x)|<\frac{\varepsilon}{2}$ +\end_inset + +. + Por tanto para cada +\begin_inset Formula $x\in[a,b]$ +\end_inset + +, +\begin_inset Formula $(f_{n}(x))_{n}$ +\end_inset + + es de Cauchy en +\begin_inset Formula $\mathbb{R}$ +\end_inset + + y converge pues a un valor +\begin_inset Formula $f(x)$ +\end_inset + +. + Ahora bien, dado un +\begin_inset Formula $x\in[a,b]$ +\end_inset + +, por la convergencia puntual que acabamos de probar existe +\begin_inset Formula $n_{x}\in\mathbb{N}$ +\end_inset + + tal que para +\begin_inset Formula $n\geq n_{x}$ +\end_inset + + se tiene +\begin_inset Formula $|f_{n}(x)-f(x)|<\frac{\varepsilon}{2}$ +\end_inset + +. + Si +\begin_inset Formula $n>n_{0}$ +\end_inset + +, +\begin_inset Formula $|f_{n}(x)-f(x)|\leq|f_{n}(x)-f_{\max\{n_{0},n_{x}\}}(x)|+|f_{\max\{n_{0},n_{x}\}}(x)-f(x)|<\frac{\varepsilon}{2}+\frac{\varepsilon}{2}=\varepsilon$ +\end_inset + +, y como +\begin_inset Formula $n_{0}$ +\end_inset + + no depende de +\begin_inset Formula $x$ +\end_inset + + (sólo de +\begin_inset Formula $\varepsilon$ +\end_inset + +), queda probada la convergencia uniforme. +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $(x_{n})_{n}$ +\end_inset + + una sucesión en el espacio de Banach +\begin_inset Formula $(E,\Vert\cdot\Vert)$ +\end_inset + + con +\begin_inset Formula $\sum_{n}\Vert x_{n}\Vert<+\infty$ +\end_inset + +, entonces +\begin_inset Formula $\sum_{n}x_{n}$ +\end_inset + + converge. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\series bold +Demostración: +\series default + Tenemos que +\begin_inset Formula $\sum_{n}\Vert x_{n}\Vert$ +\end_inset + +, por ser convergente, es de Cachy, por lo que dado +\begin_inset Formula $\varepsilon>0$ +\end_inset + + existe +\begin_inset Formula $n_{\varepsilon}$ +\end_inset + + tal que si +\begin_inset Formula $n,m>n_{\varepsilon}$ +\end_inset + + se tiene +\begin_inset Formula $|\sum_{k=1}^{n}\Vert x_{k}\Vert-\sum_{k=1}^{m}\Vert x_{k}\Vert|<\varepsilon$ +\end_inset + +. + Pero por la desigualdad triangular +\begin_inset Formula $\Vert\sum_{k=1}^{n}x_{k}-\sum_{k=1}^{m}x_{k}\Vert\leq|\sum_{k=1}^{n}\Vert x_{k}\Vert-\sum_{k=1}^{m}\Vert x_{k}\Vert|<\varepsilon$ +\end_inset + +, luego +\begin_inset Formula $\sum_{n}x_{n}$ +\end_inset + + también es de Cauchy y por tanto convergente por estar en un espacio completo. +\end_layout + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/fvv1/n2.lyx b/fvv1/n2.lyx new file mode 100644 index 0000000..c190e9d --- /dev/null +++ b/fvv1/n2.lyx @@ -0,0 +1,1010 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Derivadas +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $E$ +\end_inset + + y +\begin_inset Formula $F$ +\end_inset + + normados, +\begin_inset Formula $\Omega\subseteq E$ +\end_inset + + abierto y +\begin_inset Formula $f:\Omega\rightarrow F$ +\end_inset + +, dados +\begin_inset Formula $a\in\Omega$ +\end_inset + + y +\begin_inset Formula $u\in E$ +\end_inset + +, +\begin_inset Formula $f$ +\end_inset + + es +\series bold +derivable +\series default + en +\begin_inset Formula $a$ +\end_inset + + según +\begin_inset Formula $u$ +\end_inset + + si existe la +\series bold +derivada direccional +\series default + de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $x$ +\end_inset + + según +\begin_inset Formula $u$ +\end_inset + +, dada por +\begin_inset Formula +\[ +d_{u}f(x_{0}):=\lim_{t\rightarrow0}\frac{f(a+tu)-f(a)}{t} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $u=\vec{e}_{i}$ +\end_inset + + es el vector +\begin_inset Formula $i$ +\end_inset + +-ésimo de la base canónica hablamos de la +\series bold +derivada parcial +\series default + +\begin_inset Formula $i$ +\end_inset + +-ésima, que denotamos +\begin_inset Formula +\[ +\frac{\partial f}{\partial x_{i}}(a):=d_{i}f(a):=d_{\vec{e}_{i}}f(a) +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $\vec{u}=\lambda\vec{v}$ +\end_inset + + con +\begin_inset Formula $\lambda\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $d_{\vec{u}}f(t)$ +\end_inset + + existe si y sólo si existe +\begin_inset Formula $d_{\vec{v}}f(t)$ +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +, pues +\begin_inset Formula +\[ +d_{\vec{u}}f(t)=\lim_{t\rightarrow0}\frac{f(a+t\lambda\vec{v})-f(a)}{t}=\lim_{t\rightarrow0}\frac{f(a+t\lambda\vec{v})-f(a)}{t\lambda}\lambda\overset{t\lambda\rightarrow0}{=}\lambda d_{\vec{v}}f(t) +\] + +\end_inset + + +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Formula $f:(a,b)\rightarrow\mathbb{R}^{n}$ +\end_inset + + es derivable en +\begin_inset Formula $x_{0}$ +\end_inset + + si cada una de sus coordenadas lo es, y entonces +\begin_inset Formula $f'(x_{0})=(f'_{1}(x_{0}),\dots,f'_{n}(x_{0}))$ +\end_inset + +. +\end_layout + +\begin_layout Section +Diferenciales +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $\Omega\subseteq E$ +\end_inset + + abierto, +\begin_inset Formula $f:\Omega\rightarrow F$ +\end_inset + + y +\begin_inset Formula $a\in\Omega$ +\end_inset + +, +\begin_inset Formula $f$ +\end_inset + + es +\series bold +diferenciable +\series default + en +\begin_inset Formula $a$ +\end_inset + + si existe una aplicación lineal +\begin_inset Formula $L:E\rightarrow F$ +\end_inset + + tal que +\begin_inset Formula +\[ +\lim_{h\rightarrow0}\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}=0 +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Esta aplicación es la +\series bold +diferencial +\series default + de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + +, denotada por +\begin_inset Formula $df(a)$ +\end_inset + +, y si existe es única. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\series bold +Demostración: +\series default + Sean +\begin_inset Formula $L,M:E\rightarrow F$ +\end_inset + + dos diferenciales de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + +. + Entonces +\begin_inset Formula $\lim_{h\rightarrow0}\frac{L(h)-M(h)}{\Vert h\Vert}=\lim_{h\rightarrow0}\left(\frac{f(a+h)-f(a)-M(h)}{\Vert h\Vert}-\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}\right)=0-0=0$ +\end_inset + +, pero entonces, dado +\begin_inset Formula $v\neq0$ +\end_inset + + arbitrario, +\begin_inset Formula $0=\lim_{t\rightarrow0^{+}}\frac{L(tv)-M(tv)}{\Vert tv\Vert}=\lim_{t\rightarrow0^{+}}\frac{L(v)-M(v)}{\Vert v\Vert}$ +\end_inset + +, con lo que +\begin_inset Formula $L(v)=M(v)$ +\end_inset + + y +\begin_inset Formula $L=M$ +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Escribimos +\begin_inset Formula $L\equiv M$ +\end_inset + + si +\begin_inset Formula $M$ +\end_inset + + es la matriz asociada a la aplicación lineal +\begin_inset Formula $L$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + es diferenciable en +\begin_inset Formula $a\in\Omega$ +\end_inset + + con diferencial +\begin_inset Formula $L$ +\end_inset + + si y sólo si cada +\begin_inset Formula $f_{i}:\mathbb{R}^{m}\rightarrow\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $i\in\{1,\dots,n\}$ +\end_inset + +, es diferenciable con diferencial +\begin_inset Formula $L_{i}$ +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +, pues +\begin_inset Formula $\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}\rightarrow0\iff\forall i\in\{1,\dots,n\},\left(\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}\right)_{i}\rightarrow0\iff\frac{f_{i}(a+h)-f_{i}(a)-L_{i}(h)}{\Vert h\Vert}\rightarrow0$ +\end_inset + + +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f:\Omega\subseteq E\rightarrow F$ +\end_inset + + es diferenciable en +\begin_inset Formula $a\in\Omega$ +\end_inset + +, también es continua en +\begin_inset Formula $a$ +\end_inset + +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\series bold +Demostración: +\series default + +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $a$ +\end_inset + + si y sólo si +\begin_inset Formula $\lim_{x\rightarrow a}f(x)=f(a)$ +\end_inset + +, si y sólo si +\begin_inset Formula $\lim_{h\rightarrow0}f(a+h)-f(a)=0$ +\end_inset + +. + Pero si +\begin_inset Formula $\lim_{h\rightarrow0}\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}=0$ +\end_inset + +, multiplicando por +\begin_inset Formula $\Vert h\Vert$ +\end_inset + +, que tiende a 0, tenemos +\begin_inset Formula $\lim_{h\rightarrow0}f(a+h)-f(a)-L(h)=0$ +\end_inset + +, y como +\begin_inset Formula $L(h)$ +\end_inset + + tiende a 0 nos queda la expresión de arriba. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + es diferenciable en +\begin_inset Formula $a\in\Omega$ +\end_inset + + ( +\begin_inset Formula $\Omega$ +\end_inset + + abierto) si para todo +\begin_inset Formula $P\in\Omega$ +\end_inset + + existen todas las derivadas parciales +\begin_inset Formula $\frac{\partial f_{i}}{\partial x_{j}}(P)$ +\end_inset + + y son continuas en +\begin_inset Formula $a$ +\end_inset + +. +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Podemos suponer +\begin_inset Formula $n=1$ +\end_inset + +, pues de lo contrario basta probar que cada +\begin_inset Formula $f_{i}$ +\end_inset + + es diferenciable en +\begin_inset Formula $a$ +\end_inset + +. + Se trata pues de probar que +\begin_inset Formula $\lim_{h\rightarrow0}\frac{f(a+h)-f(a)-\sum_{i=1}^{m}\frac{\partial f}{\partial x_{i}}(a)h_{i}}{\Vert h\Vert}=0$ +\end_inset + +, lo que ocurre si y sólo si +\begin_inset Formula +\begin{eqnarray*} +0 & = & \lim_{h\rightarrow0}\frac{|f(a+h)-f(a)-\sum_{i=1}^{m}\frac{\partial f}{\partial x_{i}}(a)h_{i}|}{\Vert h\Vert}=\lim_{h\rightarrow0}\frac{f(a+\sum_{i=1}^{m}h_{i}\vec{e}_{i})-f(a)-\sum_{i=1}^{m}\frac{\partial f}{\partial x_{i}}(a)h_{i}}{\Vert h\Vert}\\ + & = & \lim_{h\rightarrow0}\frac{\left|\sum_{i=1}^{m}\left(f(a+h_{1}\vec{e}_{1}+\dots+h_{i}\vec{e}_{i})-f(a+h_{1}\vec{e}_{1}+\dots+h_{i-1}\vec{e}_{i-1})-\frac{\partial f}{\partial x_{i}}(a)h_{i}\right)\right|}{\Vert h\Vert} +\end{eqnarray*} + +\end_inset + +El último sumatorio con sus dos primeros elementos forma una +\series bold +suma telescópica +\series default +: todos los elementos se anulan salvo el primero y el último. + Sabemos que cada +\begin_inset Formula $a+h_{1}\vec{e}_{1}+\dots+h_{i}\vec{e}_{i}$ +\end_inset + + está en el dominio de +\begin_inset Formula $f$ +\end_inset + + porque +\begin_inset Formula $\Omega$ +\end_inset + + es abierto y +\begin_inset Formula $h$ +\end_inset + + se supone lo suficientemente pequeño. + Ahora llamamos +\begin_inset Formula $\varphi_{i}(t):=f(a+h_{1}\vec{e}_{1}+\dots+h_{i-1}\vec{e}_{i-1}+t\vec{e}_{i})$ +\end_inset + +, con lo que +\begin_inset Formula $\varphi'_{i}(t)=\frac{\partial f}{\partial x_{i}}(a+h_{1}\vec{e}_{1}+\dots+h_{i-1}\vec{e}_{i-1}+t\vec{e}_{i})$ +\end_inset + +, y +\begin_inset Formula $\Delta_{i}:=\varphi_{i}(h_{i})-\varphi_{i}(0)=f(a+h_{1}\vec{e}_{1}+\dots+h_{i}\vec{e}_{i})-f(a+h_{1}\vec{e}_{1}+\dots+h_{i-1}\vec{e}_{i-1})=\varphi'_{i}(\xi_{i})h_{i}$ +\end_inset + + para algún +\begin_inset Formula $\xi_{i}$ +\end_inset + + entre 0 y +\begin_inset Formula $h_{i}$ +\end_inset + +, que tiende a 0. + Sustituyendo nos queda que lo anterior es igual a +\begin_inset Formula +\[ +\lim_{h\rightarrow0}\frac{\left|\sum_{i=1}^{m}\varphi'_{i}(\xi_{i})h_{i}-\frac{\partial f}{\partial x_{i}}(a)h_{i}\right|}{\Vert h\Vert} +\] + +\end_inset + +Entonces, +\begin_inset Formula +\begin{eqnarray*} +0 & \leq & \frac{\left|\sum_{i=1}^{m}\varphi'_{i}(\xi_{i})h_{i}-\frac{\partial f}{\partial x_{i}}(a)h_{i}\right|}{\Vert h\Vert_{\infty}}\\ + & \leq & \left|\sum_{i=1}^{m}\frac{\partial f}{\partial x_{i}}(a+h_{1}\vec{e}_{1}+\dots+h_{i-1}\vec{e}_{i-1}+\xi_{i}\vec{e}_{i})-\frac{\partial f}{\partial x_{i}}(a)\right|\frac{\left|h_{i}\right|}{\Vert h\Vert_{\infty}}\rightarrow0 +\end{eqnarray*} + +\end_inset + +Que esta última expresión tienda a 0 se debe a que +\begin_inset Formula $0\leq\frac{|h_{i}|}{\Vert h\Vert_{\infty}}\leq1$ +\end_inset + + y a que las derivadas parciales de +\begin_inset Formula $f$ +\end_inset + + sean continuas y por tanto +\begin_inset Formula $\lim_{h\rightarrow0}\frac{\partial f}{\partial x_{i}}(a+\dots)=\frac{\partial f}{\partial x_{i}}(\lim_{h\rightarrow0}(a+\dots))$ +\end_inset + +. + Entonces, por la regla del sandwich, el límite inicial tiende a 0. + Hemos utilizado la norma +\begin_inset Formula $\Vert\cdot\Vert_{\infty}$ +\end_inset + +, pero como dada una norma +\begin_inset Formula $\Vert\cdot\Vert$ +\end_inset + + +\begin_inset Formula $\exists\alpha,\beta>0:\forall h,\alpha\leq\frac{\Vert h\Vert_{\infty}}{\Vert h\Vert}\leq\beta$ +\end_inset + +, la convergencia a 0 no depende de la norma que tomemos. +\end_layout + +\begin_layout Section +Regla de la cadena +\end_layout + +\begin_layout Standard +La +\series bold +regla de la cadena +\series default + afirma que si +\begin_inset Formula ${\cal U}\subseteq\mathbb{R}^{m}$ +\end_inset + + y +\begin_inset Formula ${\cal V}\subseteq\mathbb{R}^{n}$ +\end_inset + + son abiertos, +\begin_inset Formula $a\in{\cal U}$ +\end_inset + + y +\begin_inset Formula ${\cal U}\overset{f}{\rightarrow}{\cal V}\overset{g}{\rightarrow}\mathbb{R}^{k}$ +\end_inset + + son diferenciables en +\begin_inset Formula $a$ +\end_inset + + y en +\begin_inset Formula $f(a)$ +\end_inset + +, respectivamente, entonces +\begin_inset Formula $g\circ f$ +\end_inset + + es diferenciable en +\begin_inset Formula $a$ +\end_inset + + y +\begin_inset Formula $d(g\circ f)(a)=dg(f(a))\circ df(a)$ +\end_inset + +. +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Sean +\begin_inset Formula $L:=df(a):\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + y +\begin_inset Formula $S:=dg(f(a)):\mathbb{R}^{n}\rightarrow\mathbb{R}^{k}$ +\end_inset + +, tenemos que +\begin_inset Formula +\[ +\lim_{h\rightarrow0}\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}=\lim_{\eta\rightarrow0}\frac{g(f(a)+\eta)-g(f(a))-S(\eta)}{\Vert\eta\Vert}=0 +\] + +\end_inset + +y queremos ver que +\begin_inset Formula +\[ +\lim_{h\rightarrow0}\frac{g(f(a+h))-g(f(a))-S(L(h))}{\Vert h\Vert}=0 +\] + +\end_inset + +Si llamamos +\begin_inset Formula $\eta:=f(a+h)-f(a)$ +\end_inset + +, que tiende a 0 por la continuidad de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + +, entonces +\begin_inset Formula +\begin{multline*} +\lim_{h\rightarrow0}\frac{g(f(a+h))-g(f(a))-S(L(h))}{\Vert h\Vert}=\lim_{h\rightarrow0}\frac{g(f(a)+\eta)-g(f(a))-S(\eta)}{\Vert h\Vert}+\frac{S(\eta)-S(L(h))}{\Vert h\Vert}\\ +=\lim_{h\rightarrow0}\frac{g(f(a)+\eta)-g(f(a))-S(\eta)}{\Vert\eta\Vert}\frac{\Vert\eta\Vert}{\Vert h\Vert}-S\left(\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}\right) +\end{multline*} + +\end_inset + +Como +\begin_inset Formula $S\left(\frac{f(a+h)-f(a)-L(h)}{\Vert h\Vert}\right)\rightarrow0$ +\end_inset + + usando la linealidad de +\begin_inset Formula $S$ +\end_inset + + y su continuidad (que se deduce de su linealidad), y como +\begin_inset Formula $\frac{g(f(a)+\eta)-g(f(a))-S(\eta)}{\Vert\eta\Vert}\rightarrow0$ +\end_inset + +, el límite tenderá a 0 si y sólo si +\begin_inset Formula $\frac{\Vert\eta\Vert}{\Vert h\Vert}$ +\end_inset + + es acotado, pero +\begin_inset Formula +\begin{eqnarray*} +0 & \leq & \frac{\Vert\eta\Vert}{\Vert h\Vert}=\frac{\Vert f(a+h)-f(a)-L(h)+L(h)\Vert}{\Vert h\Vert}\\ + & \leq & \frac{\Vert f(a+h)-f(a)-L(h)\Vert}{\Vert h\Vert}+\frac{\Vert L(h)\Vert}{\Vert h\Vert}\rightarrow0+\frac{\Vert L(h)\Vert}{\Vert h\Vert}\leq\frac{\Vert L\Vert\Vert h\Vert}{\Vert h\Vert}<+\infty +\end{eqnarray*} + +\end_inset + + por la continuidad de +\begin_inset Formula $L$ +\end_inset + +. +\end_layout + +\begin_layout Section +Incremento finito +\end_layout + +\begin_layout Standard +El +\series bold +teorema del incremento finito +\series default + afirma que, sean +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + +, +\begin_inset Formula $a,b\in\Omega$ +\end_inset + + con el segmento +\begin_inset Formula $[a,b]\subseteq\Omega$ +\end_inset + + y +\begin_inset Formula $L:\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + lineal, si +\begin_inset Formula $\Vert df(x)\Vert\leq M$ +\end_inset + + para todo +\begin_inset Formula $x\in[a,b]$ +\end_inset + + se tiene +\begin_inset Formula $\Vert f(b)-f(a)\Vert\leq M\Vert b-a\Vert$ +\end_inset + +. +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Fijado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, sabemos que para +\begin_inset Formula $x\in[a,b]$ +\end_inset + +, +\begin_inset Formula $\lim_{h\rightarrow0}\frac{f(x+h)-f(x)-df(x)(h)}{\Vert h\Vert}=0$ +\end_inset + + y por tanto existe +\begin_inset Formula $\delta_{x}>0$ +\end_inset + + tal que para +\begin_inset Formula $\Vert h\Vert<\delta_{x}$ +\end_inset + + se tiene +\begin_inset Formula +\[ +\Vert f(x+h)-f(x)-df(x)(h)\Vert<\varepsilon\Vert h\Vert +\] + +\end_inset + +con lo que +\begin_inset Formula +\[ +\Vert f(x+h)-f(x)\Vert-\Vert df(x)(h)\Vert\leq\Vert f(x+h)-f(x)-df(x)(h)\Vert<\varepsilon\Vert h\Vert +\] + +\end_inset + + y por tanto +\begin_inset Formula +\[ +\Vert f(x+h)-f(x)\Vert<\varepsilon\Vert h\Vert+\Vert df(x)(h)\Vert\leq\varepsilon\Vert h\Vert+\Vert df(x)\Vert\Vert h\Vert\leq(\varepsilon+M)\Vert h\Vert +\] + +\end_inset + +Esta desigualdad depende de +\begin_inset Formula $\delta_{x}$ +\end_inset + + y por tanto de +\begin_inset Formula $x$ +\end_inset + +. + Sea entonces +\begin_inset Formula $\{B(x,\frac{\delta_{x}}{2})\}_{x\in[a,b]}$ +\end_inset + + un re +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +cu +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +bri +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +mien +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +to por abiertos de +\begin_inset Formula $[a,b]$ +\end_inset + + y +\begin_inset Formula $\{B_{i}\}_{i=1}^{k}:=\{B(x_{i},\frac{\delta_{x_{i}}}{2})\}_{i=1}^{k}$ +\end_inset + + un subrecubrimiento finito del que suponemos que no podemos quitar ninguna + bola. + Ahora llamamos +\begin_inset Formula $x_{0}:=a$ +\end_inset + + y +\begin_inset Formula $x_{k+1}:=b$ +\end_inset + + y suponemos +\begin_inset Formula $a=x_{0}<x_{1}<\dots<x_{k}<x_{k+1}=b$ +\end_inset + +. + Por la desigualdad anterior, para +\begin_inset Formula $x,y\in[a,b]$ +\end_inset + + con +\begin_inset Formula $\Vert y-x\Vert<\delta_{x}$ +\end_inset + + o +\begin_inset Formula $\Vert x-y\Vert<\delta_{y}$ +\end_inset + +, +\begin_inset Formula $\Vert f(y)-f(x)\Vert\leq(M+\varepsilon)\Vert x-y\Vert$ +\end_inset + +. + El segmento +\begin_inset Formula $[x_{i},x_{i+1}]$ +\end_inset + + queda cubierto por +\begin_inset Formula $B_{i}$ +\end_inset + + y +\begin_inset Formula $B_{i+1}$ +\end_inset + +, pues si hiciera falta además +\begin_inset Formula $B_{j}$ +\end_inset + + con +\begin_inset Formula $j\neq i,i+1$ +\end_inset + + para cubrirlo sería +\begin_inset Formula $x_{j}<x_{i}$ +\end_inset + + y entonces +\begin_inset Formula $B_{i}\subseteq B_{j}$ +\end_inset + + o +\begin_inset Formula $x_{j}>x_{i+1}$ +\end_inset + + y entonces +\begin_inset Formula $B_{i+1}\subseteq B_{j}$ +\end_inset + +, pero entonces podríamos quitar una bola del recubrimiento +\begin_inset Formula $\#$ +\end_inset + +. + Por tanto +\begin_inset Formula $\Vert x_{i+1}-x_{i}\Vert<\frac{\delta_{x_{i}}}{2}+\frac{\delta_{x_{i+1}}}{2}\leq\max\{\delta_{x_{i}},\delta_{x_{i+1}}\}$ +\end_inset + +. + Finalmente tenemos que +\begin_inset Formula $\Vert f(b)-f(a)\Vert=\Vert f(x_{k+1})-f(x_{k})+\dots+f(x_{1})-f(x_{0})\Vert\leq\sum_{i=0}^{k}\Vert f(x_{i+1})-f(x_{i})\Vert\leq\sum_{i=0}^{k}\Vert x_{i+1}-x_{i}\Vert(M+\varepsilon)$ +\end_inset + + y, como todos los +\begin_inset Formula $x_{i+1}-x_{i}$ +\end_inset + + tienen la forma +\begin_inset Formula $\lambda(b-a)$ +\end_inset + + con +\begin_inset Formula $\lambda>0$ +\end_inset + +, entonces +\begin_inset Formula $\sum_{i=0}^{k}\Vert x_{i+1}-x_{i}\Vert(M+\varepsilon)=\Vert b-a\Vert(M+\varepsilon)$ +\end_inset + +. + Como esto se da para todo +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, el resultado queda probado. +\end_layout + +\end_body +\end_document diff --git a/fvv1/n3.lyx b/fvv1/n3.lyx new file mode 100644 index 0000000..776351a --- /dev/null +++ b/fvv1/n3.lyx @@ -0,0 +1,1046 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + es +\series bold +dos veces diferenciable +\series default + o +\series bold +de clase +\series default + +\begin_inset Formula ${\cal C}^{2}$ +\end_inset + + en +\begin_inset Formula $a\in\Omega$ +\end_inset + + si +\begin_inset Formula $f$ +\end_inset + + es diferenciable en +\begin_inset Formula ${\cal U}\in{\cal E}(a)$ +\end_inset + + y +\begin_inset Formula $df:{\cal U}\rightarrow{\cal L}(\mathbb{R}^{m},\mathbb{R}^{n})\equiv M_{n\times m}(\mathbb{R})\equiv\mathbb{R}^{nm}$ +\end_inset + + (la aplicación que a cada elemento de +\begin_inset Formula ${\cal U}$ +\end_inset + + le asigna un vector en +\begin_inset Formula $\mathbb{R}^{nm}$ +\end_inset + + que contiene, en algún orden, los elementos de la matriz asociada a la + diferencial del elemento) es diferenciable en +\begin_inset Formula $a$ +\end_inset + +. + Por inducción se define el ser +\begin_inset Formula $n$ +\end_inset + + veces diferenciable o de clase +\begin_inset Formula ${\cal C}^{n}$ +\end_inset + +, y el ser infinitamente diferenciable o de clase +\begin_inset Formula ${\cal C}^{\infty}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Denotamos la derivada parcial +\begin_inset Formula $k$ +\end_inset + +-ésima de la derivada parcial +\begin_inset Formula $j$ +\end_inset + +-ésima de la +\begin_inset Formula $i$ +\end_inset + +-ésima coordenada de +\begin_inset Formula $f$ +\end_inset + +, o la +\begin_inset Formula $i$ +\end_inset + +-ésima coordenada de la doble derivada parcial respecto a +\begin_inset Formula $x_{j}$ +\end_inset + + y +\begin_inset Formula $x_{k}$ +\end_inset + +, como +\begin_inset Formula $\frac{\partial^{2}f_{i}}{\partial x_{j}\partial x_{k}}$ +\end_inset + +, y si +\begin_inset Formula $j=k$ +\end_inset + +, también escribimos +\begin_inset Formula $\frac{\partial^{2}f_{i}}{\partial x_{j}^{2}}$ +\end_inset + +. + Si +\begin_inset Formula $f$ +\end_inset + + tiene derivadas parciales segundas +\begin_inset Formula $\frac{\partial f_{i}}{\partial x_{k}\partial x_{j}}$ +\end_inset + + todas continuas en +\begin_inset Formula $a$ +\end_inset + + entonces +\begin_inset Formula $f$ +\end_inset + + es dos veces diferenciable en +\begin_inset Formula $a$ +\end_inset + +. +\end_layout + +\begin_layout Section +Matriz hessiana +\end_layout + +\begin_layout Standard +Del mismo modo que podemos pensar en la diferencial de una función diferenciable + como +\begin_inset Formula $df(a):\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + dada por +\begin_inset Formula $\vec{u}\mapsto d_{\vec{u}}f(a)$ +\end_inset + +, llamamos +\series bold +diferencial segunda +\series default + de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + + a la aplicación +\begin_inset Formula $d^{2}f(a):\mathbb{R}^{m}\times\mathbb{R}^{m}\rightarrow\mathbb{R}^{n}$ +\end_inset + + con +\begin_inset Formula $(\vec{u},\vec{v})\mapsto d_{\vec{v}}d_{\vec{u}}f(a)$ +\end_inset + +, y vemos que esta es una aplicación bilineal. +\end_layout + +\begin_layout Standard +La matriz de +\begin_inset Formula $d^{2}f(a):\mathbb{R}^{m}\times\mathbb{R}^{m}\rightarrow\mathbb{R}$ +\end_inset + +, dada por +\begin_inset Formula +\[ +\left(\frac{\partial^{2}f}{\partial x_{i}\partial x_{j}}\right)_{ij} +\] + +\end_inset + + se denomina +\series bold +matriz hessiana +\series default +. + Así, si +\begin_inset Formula $M$ +\end_inset + + es la matriz hessiana de +\begin_inset Formula $f$ +\end_inset + +, entonces +\begin_inset Formula +\[ +d^{2}f(a)(\vec{u},\vec{v})=\left(\begin{array}{ccc} +- & \vec{u} & -\end{array}\right)M\left(\begin{array}{c} +|\\ +\vec{v}\\ +| +\end{array}\right) +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, sea +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{2}\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $a=(x_{0},y_{0})\in\Omega$ +\end_inset + +, si +\begin_inset Formula $\frac{\partial^{2}f}{\partial x\partial y}$ +\end_inset + + y +\begin_inset Formula $\frac{\partial^{2}f}{\partial y\partial x}$ +\end_inset + + están definidas en +\begin_inset Formula $\Omega$ +\end_inset + + y son continuas en +\begin_inset Formula $a$ +\end_inset + +, entonces su valor en +\begin_inset Formula $a$ +\end_inset + + coincide. + Esto significa que la matriz Hessiana es simétrica. + +\series bold +Demostración: +\series default + Como +\begin_inset Formula $\Omega$ +\end_inset + + es abierto, existe +\begin_inset Formula $\varepsilon$ +\end_inset + + tal que +\begin_inset Formula $B_{\infty}(a,\varepsilon)=(x_{0}-\varepsilon,x_{0}+\varepsilon)\times(y_{0}-\varepsilon,y_{0}+\varepsilon)\subseteq\Omega$ +\end_inset + +. + Fijamos +\begin_inset Formula $t\in(x_{0}-\varepsilon,y_{0}+\varepsilon)$ +\end_inset + + y +\begin_inset Formula $s\in(y_{0}-\varepsilon,y_{0}+\varepsilon)$ +\end_inset + +, y consideramos +\begin_inset Formula $\Delta_{t,s}:=f(t,s)-f(t,y_{0})-f(x_{0},s)+f(x_{0},y_{0})$ +\end_inset + +. + Si ahora llamamos +\begin_inset Formula $F_{\overline{s}}(\overline{t}):=f(\overline{t},\overline{s})-f(\overline{t},y_{0})$ +\end_inset + +, vemos que +\begin_inset Formula $F_{\overline{s}}(\overline{t})$ +\end_inset + + es derivable con +\begin_inset Formula $F'_{\overline{s}}(\overline{t})=\frac{\partial f}{\partial x}(\overline{t},\overline{s})-\frac{\partial f}{\partial x}(\overline{t},y_{0})$ +\end_inset + + y que entonces +\begin_inset Formula $\Delta_{t,s}=F_{s}(t)-F_{s}(x_{0})=F'_{\overline{s}}(\xi_{t,s})(t-x_{0})=\left(\frac{\partial f}{\partial x}(\xi_{t,s},s)-\frac{\partial f}{\partial x}(\xi_{t,s},y_{0})\right)(t-x_{0})\overset{\Phi(\overline{s}):=\frac{\partial f}{\partial x}(\xi_{t,s},\overline{s})}{=}(\Phi(s)-\Phi(y_{0}))(t-x_{0})\overset{\Phi\text{ derivable por hipótesis}}{=}\Phi'(\eta_{t,s})(s-y_{0})(t-x_{0})=\frac{\partial^{2}f}{\partial x\partial y}(\xi_{t,s},\eta_{t,s})(s-y_{0})(t-x_{0})$ +\end_inset + +. + Permutando los papeles de las dos coordenadas (definiendo +\begin_inset Formula $\sigma_{\overline{t}}(\overline{s}):=f(\overline{t},\overline{s})-f(x,\overline{s})$ +\end_inset + +) obtenemos que +\begin_inset Formula $\Delta_{t,s}=\sigma_{\overline{t}}(\overline{s})-\sigma_{\overline{t}}(y_{0})=\frac{\partial^{2}f}{\partial y\partial x}(\hat{\xi}_{t,s},\hat{\eta}_{t,s})(s-y_{0})(t-x_{0})$ +\end_inset + +. + Haciendo ahora tender +\begin_inset Formula $(t,s)$ +\end_inset + + a +\begin_inset Formula $(x_{0},y_{0})$ +\end_inset + +, por la regla del sandwich +\begin_inset Formula $(\xi_{t,s},\eta_{ts})$ +\end_inset + + y +\begin_inset Formula $(\hat{\xi}_{t,s},\hat{\eta}_{t,s})$ +\end_inset + + también tienden a +\begin_inset Formula $(x_{0},y_{0})$ +\end_inset + +, y aplicando la continuidad de las derivadas parciales dobles en +\begin_inset Formula $a$ +\end_inset + +, nos queda finalmente que +\begin_inset Formula $\frac{\partial^{2}f}{\partial x\partial y}(x_{0},y_{0})=\frac{\partial^{2}f}{\partial y\partial x}(x_{0},y_{0})$ +\end_inset + +. +\end_layout + +\begin_layout Section +Desarrollos de Taylor +\end_layout + +\begin_layout Standard +Despejando de la definición de diferencial, nos queda que +\begin_inset Formula $f(a+h)=f(a)+df(a)(h)+o(\Vert h\Vert)$ +\end_inset + +, lo que podemos interpretar como una aproximación de +\begin_inset Formula $f(x)$ +\end_inset + + cerca de +\begin_inset Formula $a$ +\end_inset + + por un polinomio de grado 1. + Como +\series bold +teorema +\series default +, si +\begin_inset Formula $f:\Omega\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}$ +\end_inset + + es dos veces diferenciable en +\begin_inset Formula $a\in\Omega$ +\end_inset + + entonces +\begin_inset Formula $f(a+h)=f(a)+df(a)(h)+\frac{1}{2}d^{2}f(a)(h,h)+o(\Vert h\Vert^{2})$ +\end_inset + +. + +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $R(h):=f(a+h)-f(a)-df(a)(h)-\frac{1}{2}d^{2}f(a)(h,h)$ +\end_inset + +, y hemos de ver que +\begin_inset Formula $\lim_{h\rightarrow0}\frac{R(h)}{\Vert h\Vert^{2}}=0$ +\end_inset + +. + Como todas las normas en +\begin_inset Formula $\mathbb{R}^{m}$ +\end_inset + + son equivalentes, elegimos +\begin_inset Formula $\Vert\cdot\Vert_{\infty}$ +\end_inset + +. + Usamos el teorema del incremento finito, que afirma que si +\begin_inset Formula $R$ +\end_inset + + es diferenciable y +\begin_inset Formula $\Vert dR(\xi)\Vert\leq M\forall\xi\in[0,h]$ +\end_inset + + entonces +\begin_inset Formula $\Vert R(h)-R(0)\Vert\leq M\cdot\Vert h-0\Vert$ +\end_inset + +. + +\begin_inset Formula $R$ +\end_inset + + es diferenciable al ser la suma de +\begin_inset Formula $f(c+h)$ +\end_inset + + y un polinomio de grado máximo 2. + Para estimar +\begin_inset Formula $\Vert dR\Vert$ +\end_inset + + vemos que +\begin_inset Formula $R(a)=f(a+h)-f(a)-\sum_{i}\frac{\partial f}{\partial x_{i}}(a)h_{i}-\frac{1}{2}\sum_{i,j}\frac{\partial f}{\partial x_{i}\partial x_{j}}(a)h_{i}h_{j}$ +\end_inset + +, y usando la +\begin_inset Formula $\delta$ +\end_inset + + de Kronecker, +\begin_inset Formula +\[ +\frac{\partial}{\partial x_{k}}\frac{1}{2}\sum_{i,j}\frac{\partial f}{\partial x_{i}\partial x_{j}}(a)h_{i}h_{j}=\frac{1}{2}\sum_{i,j}\left(\frac{\partial f}{\partial x_{i}x_{j}}(a)\delta_{ik}+\frac{\partial f}{\partial x_{i}\partial x_{j}}(a)\delta_{jk}\right)=\frac{1}{2}\cdot2d\left(\frac{\partial f}{\partial x_{k}}\right)(a)(h) +\] + +\end_inset + + Por tanto +\begin_inset Formula +\[ +\frac{\partial R}{\partial x_{k}}=\frac{\partial f}{\partial x_{k}}(a+h)-0-\frac{\partial f}{\partial x_{k}}(a)-d\left(\frac{\partial f}{\partial x_{k}}\right)(a)(h)=:\psi_{k}(h)\Vert h\Vert +\] + +\end_inset + +donde +\begin_inset Formula $\lim_{h\rightarrow0}\psi(h)=0$ +\end_inset + +. + Como +\begin_inset Formula $\frac{\partial R}{\partial x_{k}}$ +\end_inset + + es continua, definiendo el compacto +\begin_inset Formula $[0,h]$ +\end_inset + + como +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\xout off +\uuline off +\uwave off +\noun off +\color none + +\begin_inset Formula $\{th\}_{t\in[0,1]}$ +\end_inset + + +\family default +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\xout default +\uuline default +\uwave default +\noun default +\color inherit + existe un punto +\begin_inset Formula $t_{k,h}h\in[0,h]$ +\end_inset + + tal que +\begin_inset Formula +\[ +\frac{\partial R}{\partial x_{k}}(t_{k,h}h)=\max\left\{ \frac{\partial R}{\partial x_{k}}(\xi)\right\} _{\xi\in[0,h]} +\] + +\end_inset + +Por esto, y como +\begin_inset Formula $dR(\xi)\equiv\left(\frac{\partial R}{\partial x_{1}}(\xi),\dots,\frac{\partial R}{\partial x_{m}}(\xi)\right)$ +\end_inset + +, existe +\begin_inset Formula $C$ +\end_inset + + tal que +\begin_inset Formula +\[ +\Vert dR(\xi)\Vert\leq C\cdot\Vert dR(a)\Vert_{\infty}=C\cdot\max\left\{ \left|\frac{\partial R}{\partial x_{k}}(a)\right|\right\} _{k=1}^{n} +\] + +\end_inset + +para +\begin_inset Formula $\xi\in[0,h]$ +\end_inset + +, y por el teorema del incremento finito, si +\begin_inset Formula $p$ +\end_inset + + es tal que +\begin_inset Formula +\[ +\left|\frac{\partial R}{\partial x_{p}}(a)\right|=\max\left\{ \left|\frac{\partial R}{\partial x_{k}}(a)\right|\right\} _{k=1}^{n} +\] + +\end_inset + +tenemos +\begin_inset Formula +\[ +\Vert R(h)\Vert=\Vert R(h)-R(0)\Vert\leq C\left|\frac{\partial R}{\partial x_{p}}(t_{p,h})\right|\Vert h\Vert=C\psi_{p}(t_{p,h}h)\Vert h\Vert\Vert h\Vert=C\psi_{p}(t_{p,h}h)\Vert h\Vert^{2} +\] + +\end_inset + + y entonces +\begin_inset Formula $\frac{|R(h)|}{\Vert h\Vert^{2}}\leq C\psi_{p}(t_{p,h}h)\rightarrow0$ +\end_inset + +, lo que prueba el teorema. +\end_layout + +\begin_layout Section +Extremos relativos +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $V$ +\end_inset + + es un +\begin_inset Formula $K$ +\end_inset + +-espacio vectorial con +\begin_inset Formula $k:=\dim_{K}(V)<+\infty$ +\end_inset + + y +\begin_inset Formula $\sigma:V\times V\rightarrow\mathbb{R}$ +\end_inset + + una aplicación bilineal, existe +\begin_inset Formula $A=(a_{ij})\in{\cal M}_{k}(K)$ +\end_inset + + asociado a +\begin_inset Formula $\sigma$ +\end_inset + + y podemos definir +\begin_inset Formula +\[ +\Delta_{1}=\left|a_{11}\right|,\Delta_{2}=\left|\begin{array}{cc} +a_{11} & a_{12}\\ +a_{21} & a_{22} +\end{array}\right|,\dots,\Delta_{k}=\left|\begin{array}{ccc} +a_{11} & \cdots & a_{1k}\\ +\vdots & \ddots & \vdots\\ +a_{k1} & \cdots & a_{kk} +\end{array}\right| +\] + +\end_inset + +Entonces un +\series bold +teorema +\series default + de álgebra nos dice que +\begin_inset Formula $\sigma$ +\end_inset + + es: +\end_layout + +\begin_layout Enumerate +Semidefinida positiva si y sólo si +\begin_inset Formula $\Delta_{i}\geq0\forall i$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Semidefinida negativa si y sólo si +\begin_inset Formula $\Delta_{i}(-1)^{i}\geq0\forall i$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Definida positiva si y sólo si +\begin_inset Formula $\Delta_{i}>0\forall i$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Definida negativa si y sólo si +\begin_inset Formula $\Delta_{i}(-1)^{i}>0\forall i$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, sea +\begin_inset Formula $\Omega\subseteq\mathbb{R}^{m}$ +\end_inset + + abierto, +\begin_inset Formula $f:\Omega\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $a\in\Omega$ +\end_inset + +, +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f$ +\end_inset + + alcanza en +\begin_inset Formula $a$ +\end_inset + + un extremo relativo entonces +\begin_inset Formula $df(a)=0$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +Podemos suponer que alcanza un máximo. + Entonces +\begin_inset Formula $\exists{\cal U}\in{\cal E}(a):f(x)\leq f(a)\forall x\in{\cal U}$ +\end_inset + +, luego si para +\begin_inset Formula $i\in\{1,\dots,m\}$ +\end_inset + + definimos +\begin_inset Formula $\varphi_{i}(t):=f(a_{1},\dots,a_{i-1},t,a_{i+1},\dots,a_{m})$ +\end_inset + +, fijado +\begin_inset Formula $i$ +\end_inset + +, +\begin_inset Formula $\exists\varepsilon>0:\forall t\in(a-\varepsilon,a+\varepsilon),\varphi_{i}(t)\leq\varphi_{i}(a_{i})$ +\end_inset + + y +\begin_inset Formula $\frac{\partial f}{\partial x_{i}}(a_{1},\dots,a_{i-1},t,a_{i+1},\dots,a_{m})=\varphi'(t)$ +\end_inset + +, luego +\begin_inset Formula $\frac{\partial f}{\partial x_{i}}(a)=\varphi'(a_{i})=0$ +\end_inset + + y +\begin_inset Formula +\[ +df(a)=\left(\begin{array}{ccc} +\frac{\partial f}{\partial x_{1}}(a) & \cdots & \frac{\partial f}{\partial x_{m}}(a)\end{array}\right)=0 +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f$ +\end_inset + + es de clase +\begin_inset Formula ${\cal C}^{2}$ +\end_inset + + y +\begin_inset Formula $df(a)=0$ +\end_inset + +, entonces +\begin_inset Formula +\begin{eqnarray*} +d^{2}f(a)\text{ definida positiva} & \implies & f\text{ tiene un mínimo estricto en }a\implies\\ +\implies f\text{ tiene un mínimo en }a & \implies & d^{2}f(a)\text{ semidefinida positiva} +\end{eqnarray*} + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description +\begin_inset Formula $1\implies2]$ +\end_inset + + Consideremos el desarrollo de Taylor de +\begin_inset Formula $f$ +\end_inset + + de orden 2 en +\begin_inset Formula $a$ +\end_inset + +, que como +\begin_inset Formula $df(a)=0$ +\end_inset + +, queda como +\begin_inset Formula +\begin{eqnarray*} +f(x) & = & f(a)+\frac{1}{2}d^{2}f(a)(x-a,x-a)+o(\Vert x-a\Vert^{2})\\ + & = & f(a)+\frac{1}{2}\Vert x-a\Vert^{2}d^{2}f(a)\left(\frac{x-a}{\Vert x-a\Vert},\frac{x-a}{\Vert x-a\Vert}\right)+o(\Vert x-a\Vert^{2})\\ + & = & f(a)+\frac{1}{2}\Vert x-a\Vert^{2}\left(d^{2}f(a)\left(\frac{x-a}{\Vert x-a\Vert},\frac{x-a}{\Vert x-a\Vert}\right)+\frac{2o(\Vert x-a\Vert^{2})}{\Vert x-a\Vert^{2}}\right) +\end{eqnarray*} + +\end_inset + +suponiendo +\begin_inset Formula $x\neq a$ +\end_inset + +. + Pero +\begin_inset Formula $\frac{x-a}{\Vert x-a\Vert}\in\{y\in\mathbb{R}^{m}:\Vert y\Vert=1\}=:K$ +\end_inset + +, que es compacto por ser cerrado y acotado, y +\begin_inset Formula $\Phi:\mathbb{R}^{m}\rightarrow\mathbb{R}$ +\end_inset + + dada por +\begin_inset Formula $\Phi(u):=d^{2}f(a)(u,u)=\sum_{i,j}\frac{\partial f}{\partial x_{i}\partial x_{j}}(a)u_{i}u_{j}$ +\end_inset + + es continua, luego +\begin_inset Formula $\Phi(K)=\left\{ d^{2}f(a)\left(\frac{x-a}{\Vert x-a\Vert},\frac{x-a}{\Vert x-a\Vert}\right)\right\} _{x\in\mathbb{R}^{m}}$ +\end_inset + + es compacto y, por ser además +\begin_inset Formula $d^{2}f(a)$ +\end_inset + + definida positiva, existe +\begin_inset Formula $M>0$ +\end_inset + + tal que +\begin_inset Formula $\Phi(K)\geq M$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +Como +\begin_inset Formula $\frac{2o(\Vert x-a\Vert^{2})}{\Vert x-a\Vert^{2}}\rightarrow0$ +\end_inset + + cuando +\begin_inset Formula $x\rightarrow a$ +\end_inset + +, existe +\begin_inset Formula ${\cal U}\in{\cal E}(a)$ +\end_inset + + tal que +\begin_inset Formula $\forall x\in{\cal U},\left|\frac{2o(\Vert x-a\Vert)^{2}}{\Vert x-a\Vert^{2}}\right|<M$ +\end_inset + +, luego si +\begin_inset Formula $x\in{\cal U}\backslash\{a\},d^{2}f(a)\left(\frac{x-a}{\Vert x-a\Vert},\frac{x-a}{\Vert x-a\Vert}\right)+\frac{2o(\Vert x-a\Vert^{2})}{\Vert x-a\Vert^{2}}>M-M=0$ +\end_inset + + y +\begin_inset Formula $f(x)>f(a)+\frac{1}{2}\Vert x-a\Vert^{2}\cdot0=f(a)$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $2\implies3]$ +\end_inset + + Obvio. +\end_layout + +\begin_layout Description +\begin_inset Formula $3\implies4]$ +\end_inset + + Fijamos +\begin_inset Formula $u\in\mathbb{R}^{m}$ +\end_inset + + y definimos +\begin_inset Formula $\varphi(t):=a+tu$ +\end_inset + + como la función +\begin_inset Formula $\varphi:\mathbb{R}\rightarrow\mathbb{R}^{m}$ +\end_inset + + que parametriza la recta +\begin_inset Formula $a+<\vec{u}>$ +\end_inset + +. + Sea +\begin_inset Formula ${\cal U}\in{\cal E}(a)$ +\end_inset + + con +\begin_inset Formula $f(a)\leq f(x)\forall x\in{\cal U}$ +\end_inset + +, si restringimos +\begin_inset Formula $\varphi$ +\end_inset + + a +\begin_inset Formula $\varphi^{-1}({\cal U})$ +\end_inset + +, un entorno de 0 en +\begin_inset Formula $\mathbb{R}$ +\end_inset + +, entonces +\begin_inset Formula $f\circ\varphi$ +\end_inset + + alcanza un mínimo en 0, pues +\begin_inset Formula $(f\circ\varphi)(0)=f(\varphi(0))=f(a)\leq f(\varphi(t))\forall t\in\varphi^{-1}({\cal U})$ +\end_inset + +, y tenemos que +\begin_inset Formula $f\circ\varphi$ +\end_inset + + es de clase +\begin_inset Formula ${\cal C}^{2}$ +\end_inset + + y semidefinida positiva. + Por la regla de la cadena, al ser +\begin_inset Formula $\varphi$ +\end_inset + + y +\begin_inset Formula $f$ +\end_inset + + diferenciables, +\begin_inset Formula +\begin{multline*} +d(f\circ\varphi)(t)=df(\varphi(t))\circ d\varphi(t)\equiv\\ +\equiv\left(\begin{array}{ccc} +\frac{\partial f}{\partial x_{1}}(a+tu) & \cdots & \frac{\partial f}{\partial x_{m}}(a+tu)\end{array}\right)\left(\begin{array}{c} +u_{1}\\ +\vdots\\ +u_{m} +\end{array}\right)=\sum_{i}\frac{\partial f}{\partial x_{i}}(a+tu)u_{i} +\end{multline*} + +\end_inset + +Entonces +\begin_inset Formula $d^{2}(f\circ\varphi)(t)\equiv\frac{d}{dt}\sum_{i}\frac{\partial f}{\partial x_{i}}(a+tu)u_{i}=\sum_{i}u_{i}\frac{d}{dt}\left(\frac{\partial f}{\partial x_{i}}(a+tu)\right)$ +\end_inset + +. + Como +\begin_inset Formula $\frac{\partial f}{\partial x_{i}}$ +\end_inset + + es diferenciable al ser +\begin_inset Formula $f$ +\end_inset + + de clase +\begin_inset Formula ${\cal C}^{2}$ +\end_inset + +, +\begin_inset Formula +\begin{multline*} +\frac{d}{dt}\left(\frac{\partial f}{\partial x_{i}}(a+tu)\right)=d\left(\frac{\partial f}{\partial x_{i}}\circ\varphi\right)(t)=d\frac{\partial f}{\partial x_{i}}(\varphi(t))\circ d\varphi(t)\equiv\\ +\equiv\left(\begin{array}{ccc} +\frac{\partial^{2}f}{\partial_{i}\partial_{1}}(a+tu) & \cdots & \frac{\partial^{2}f}{\partial_{i}\partial_{m}}(a+tu)\end{array}\right)\left(\begin{array}{c} +u_{1}\\ +\vdots\\ +u_{m} +\end{array}\right)=\sum_{j}\frac{\partial^{2}f}{\partial x_{i}\partial x_{j}}(a+tu)u_{j} +\end{multline*} + +\end_inset + +Sustituyendo, +\begin_inset Formula $d^{2}(f\circ\varphi)(t)\equiv\sum_{i,j}\frac{\partial^{2}f}{\partial x_{i}\partial x_{j}}(a+tu)u_{i}u_{j}=d^{2}f(a+tu)(u,u)$ +\end_inset + +. + Pero al ser +\begin_inset Formula $f\circ\varphi$ +\end_inset + + una función real de una variable real dos veces derivable con su mínimo + en 0, sustituyendo +\begin_inset Formula $0\leq(f\circ\varphi)''(0)=d^{2}f(a)(u,u)$ +\end_inset + +, y como esto se cumple para todo +\begin_inset Formula $u\in\mathbb{R}^{m}$ +\end_inset + +, queda probado que +\begin_inset Formula $d^{2}f(a)$ +\end_inset + + es semidefinida positiva. +\end_layout + +\end_deeper +\end_body +\end_document diff --git a/fvv1/n4.lyx b/fvv1/n4.lyx new file mode 100644 index 0000000..07fa28a --- /dev/null +++ b/fvv1/n4.lyx @@ -0,0 +1,592 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Podemos describir una región de +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +De forma +\series bold +implícita +\series default +, como el conjunto de puntos que cumplen +\begin_inset Formula $f(x)=0$ +\end_inset + + para cierta función +\begin_inset Formula $f:{\cal U}\rightarrow\mathbb{R}^{k}$ +\end_inset + +, siendo +\begin_inset Formula ${\cal U}\subseteq\mathbb{R}^{n}$ +\end_inset + + un abierto. + La región +\begin_inset Formula $A=\{(x_{1},\dots,x_{n})\in{\cal U}:f(x_{1},\dots,x_{n})=0\}$ +\end_inset + + está +\series bold +descrita implícitamente de forma +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + +-regular +\series default + si +\begin_inset Formula $f$ +\end_inset + + es de clase +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + + y +\begin_inset Formula $\forall p\in A,\text{rg}(df(p))=k$ +\end_inset + + (el rango de la diferencial es +\begin_inset Formula $k$ +\end_inset + +). +\end_layout + +\begin_layout Enumerate +De forma +\series bold +paramétrica +\series default +, como la imagen de una función +\begin_inset Formula $\varphi:{\cal U}\rightarrow\mathbb{R}^{n}$ +\end_inset + +, siendo +\begin_inset Formula ${\cal U}\subseteq\mathbb{R}^{m}$ +\end_inset + + un abierto. + La +\series bold +parametrización +\series default + es +\series bold + +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + +-regular +\series default + si +\begin_inset Formula $\varphi$ +\end_inset + + es de clase +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + + y +\begin_inset Formula $\forall p\in{\cal U},\text{rg}(d\varphi(p))=m$ +\end_inset + +. +\end_layout + +\begin_layout Standard +El +\series bold +teorema de la función implícita +\series default + +\begin_inset Foot +status open + +\begin_layout Plain Layout +Esto corresponde a FVV3, pero lo estudiamos por su utilidad práctica. +\end_layout + +\end_inset + + afirma que, para +\begin_inset Formula $A\subseteq\mathbb{R}^{n}$ +\end_inset + + y +\begin_inset Formula $p\in A$ +\end_inset + +, existe un +\begin_inset Formula ${\cal U}\in{\cal E}(p)$ +\end_inset + + tal que +\begin_inset Formula ${\cal U}\cap A$ +\end_inset + + admite una presentación implícita +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + +-regular si y sólo si existe +\begin_inset Formula ${\cal U}'\in{\cal E}(p)$ +\end_inset + + tal que +\begin_inset Formula ${\cal U}\cap A$ +\end_inset + + admite una parametrización +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + +-regular. +\end_layout + +\begin_layout Standard +Sean pues +\begin_inset Formula ${\cal U}\subseteq\mathbb{R}^{m}\overset{\varphi}{\longrightarrow}{\cal V}\subseteq\mathbb{R}^{n}\overset{f}{\longrightarrow}{\cal W}\subseteq\mathbb{R}^{k}$ +\end_inset + + la parametrización y la forma implícita de +\begin_inset Formula $A$ +\end_inset + + y +\begin_inset Formula $q\in{\cal U}$ +\end_inset + + tal que +\begin_inset Formula $\varphi(q)=p\in{\cal V}$ +\end_inset + +, se tiene que +\begin_inset Formula $\text{Im}(d\varphi(q))=\ker(df(p))$ +\end_inset + +. + En efecto, como +\begin_inset Formula $f$ +\end_inset + + es constante en +\begin_inset Formula $A$ +\end_inset + + por ser +\begin_inset Formula $f(A)=\{0\}$ +\end_inset + +, +\begin_inset Formula $f\circ\varphi$ +\end_inset + + también lo es, luego +\begin_inset Formula $0=d(f\circ\varphi)(q)=df(p)\circ d\varphi(q)$ +\end_inset + + y entonces +\begin_inset Formula $\text{Im}(d\varphi(q))\subseteq\ker(df(p))$ +\end_inset + +, pero como ambos subespacios tienen la misma dirección +\begin_inset Note Note +status open + +\begin_layout Plain Layout +(¿por qué?) +\end_layout + +\end_inset + +, se tiene la igualdad. + Esto significa además que este espacio no depende de +\begin_inset Formula $\varphi$ +\end_inset + + o +\begin_inset Formula $f$ +\end_inset + +, y en esta situación llamamos +\series bold +espacio tangente +\series default + al compacto +\begin_inset Note Note +status open + +\begin_layout Plain Layout +¿por qué compacto? +\end_layout + +\end_inset + + +\begin_inset Formula $A$ +\end_inset + + en el punto +\begin_inset Formula $p$ +\end_inset + + al espacio afín que pasa por +\begin_inset Formula $p$ +\end_inset + + y tiene por dirección +\begin_inset Formula $\text{Im}(d\varphi(q))=\ker(df(p))$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Llamamos +\series bold +gradiente +\series default + en +\begin_inset Formula $a\in{\cal U}$ +\end_inset + + de una función +\begin_inset Formula $f:D\subseteq\mathbb{R}^{n}\rightarrow\mathbb{R}$ +\end_inset + + diferenciable en +\begin_inset Formula $a$ +\end_inset + + al vector +\begin_inset Formula $\nabla f(a):=\left(\frac{\partial f}{\partial x_{1}},\dots,\frac{\partial f}{\partial x_{n}}\right)\in\mathbb{R}^{n}$ +\end_inset + +, la matriz de la diferencial de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + + expresada como vector. + Para encontrar los extremos relativos de una función +\begin_inset Formula $f:D\rightarrow\mathbb{R}^{n}$ +\end_inset + + sobre un subconjunto +\begin_inset Formula $D\subseteq\mathbb{R}^{n}$ +\end_inset + + no abierto: +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $D$ +\end_inset + + está dado en forma paramétrica como +\begin_inset Formula $\varphi({\cal U})$ +\end_inset + +, donde +\begin_inset Formula ${\cal U}$ +\end_inset + + es un abierto de +\begin_inset Formula $\mathbb{R}^{m}$ +\end_inset + + y +\begin_inset Formula $\varphi:{\cal {\cal U}}\rightarrow\mathbb{R}^{n}$ +\end_inset + + es diferenciable, buscamos los extremos relativos de +\begin_inset Formula $f\circ\varphi$ +\end_inset + + en +\begin_inset Formula ${\cal U}$ +\end_inset + +, teniendo en cuenta que +\begin_inset Formula $f\circ\varphi$ +\end_inset + + tiene máximo absoluto en +\begin_inset Formula $a$ +\end_inset + + si y sólo si +\begin_inset Formula $f$ +\end_inset + + tiene un máximo absoluto en +\begin_inset Formula $\varphi(a)$ +\end_inset + +. + Si además +\begin_inset Formula $\varphi$ +\end_inset + + es continua, un máximo relativo de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $\varphi(a)$ +\end_inset + + implica uno de +\begin_inset Formula $f\circ\varphi$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + +, y si +\begin_inset Formula $\varphi:({\cal U},{\cal T}_{u}|_{{\cal U}})\rightarrow(\varphi({\cal U}),{\cal T}_{u}|_{\varphi({\cal U})})$ +\end_inset + + es abierta, un máximo relativo de +\begin_inset Formula $f\circ\varphi$ +\end_inset + + en +\begin_inset Formula $a$ +\end_inset + + es uno de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $\varphi(a)$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $D$ +\end_inset + + está dado en forma implícita como +\begin_inset Formula $\{x\in{\cal U}:g(x)=0\}$ +\end_inset + +, donde +\begin_inset Formula ${\cal U}$ +\end_inset + + es un abierto de +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + y +\begin_inset Formula $g:{\cal U}\rightarrow\mathbb{R}^{k}$ +\end_inset + + es de clase +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + +, aplicamos el +\series bold +teorema de los multiplicadores de Lagrange +\series default +, que afirma que si +\begin_inset Formula $f:{\cal U}\rightarrow\mathbb{R}$ +\end_inset + + es diferenciable, alcanza en un punto +\begin_inset Formula $a\in{\cal U}$ +\end_inset + + un extremo relativo y +\begin_inset Formula $\text{rg}(dg(a))=k$ +\end_inset + +, entonces +\begin_inset Formula $\nabla f(a)\in\text{span}(\nabla g_{1}(a),\dots,\nabla g_{k}(a)):=<\nabla g_{1}(a),\dots,\nabla g_{k}(a)>$ +\end_inset + + (el espacio generado por los vectores). + +\series bold +Demostración: +\series default + Por el teorema de la función implícita, existen +\begin_inset Formula ${\cal V}\subseteq\mathbb{R}^{n-k}$ +\end_inset + + abierto, +\begin_inset Formula ${\cal W}\in{\cal E}(a)$ +\end_inset + + y +\begin_inset Formula $\varphi:{\cal V}\rightarrow{\cal W}$ +\end_inset + + de clase +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + + con +\begin_inset Formula $\text{rg}(d\varphi(a))=n-k$ +\end_inset + + tales que +\begin_inset Formula $D\cap{\cal W}=\varphi({\cal V})$ +\end_inset + +, y si +\begin_inset Formula $a$ +\end_inset + + es extremo relativo de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $D$ +\end_inset + +, por la continuidad de +\begin_inset Formula $\varphi$ +\end_inset + +, el punto +\begin_inset Formula $b\in{\cal V}$ +\end_inset + + con +\begin_inset Formula $\varphi(b)=a$ +\end_inset + + es extremo relativo de +\begin_inset Formula $f\circ\varphi$ +\end_inset + + en +\begin_inset Formula ${\cal V}$ +\end_inset + +, luego +\begin_inset Formula $d(f\circ\varphi)(b)=0=df(a)\circ\varphi(b)$ +\end_inset + + y entonces +\begin_inset Formula $\text{Im}(d\varphi(b))=\ker(dg(a))=\ker(dg_{1}(a),\dots,dg_{k}(a))\subseteq\ker(df(a))$ +\end_inset + + y por tanto +\begin_inset Formula $\bigcap_{i=1}^{k}\ker(dg_{i}(a))\subseteq\ker(df(a))$ +\end_inset + +, que por un misterioso lema de álgebra equivale a que +\begin_inset Formula $df(a)\in\text{span}(dg_{1}(a),\dots,dg_{k}(a))$ +\end_inset + +. +\begin_inset Note Note +status open + +\begin_layout Plain Layout +¿Ñandé? +\end_layout + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/fvv2/n.lyx b/fvv2/n.lyx new file mode 100644 index 0000000..be70f72 --- /dev/null +++ b/fvv2/n.lyx @@ -0,0 +1,218 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Funciones de varias variables II +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2018} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Funciones de varias variables II: Integración, Antonio José Pallarés Ruiz, + Universidad de Murcia (Curso 2010–11). +\end_layout + +\begin_layout Itemize +Measure and Integral: An Introduction to Real Analysis, Richard L. + Wheeden & Antoni Zygmund. +\end_layout + +\begin_layout Itemize +Cálculo en variedades, Michael Spivak. +\end_layout + +\begin_layout Itemize +Medida e Integración: Notas de clase para el curso 1998–1999, Antonio José + Pallarés Ruiz, Departamento de Matemáticas, Universidad de Murcia. +\end_layout + +\begin_layout Chapter +Integración Riemann en varias variables +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Medidas de conjuntos +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter +Integración Lebesgue +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n3.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Cambio de variable +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n4.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/fvv2/n1.lyx b/fvv2/n1.lyx new file mode 100644 index 0000000..0537932 --- /dev/null +++ b/fvv2/n1.lyx @@ -0,0 +1,3333 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 0 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{FUVR2} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Una +\series bold +partición +\series default + de +\begin_inset Formula $[a,b]$ +\end_inset + + es una colección de puntos +\begin_inset Formula $a=t_{0}<t_{1}<\dots<t_{n}=b$ +\end_inset + + [...]. + [...] +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $f\in{\cal R}[a,b]$ +\end_inset + +, llamamos +\series bold +integral indefinida +\series default + de +\begin_inset Formula $f$ +\end_inset + + a la función +\begin_inset Formula $F:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + con +\begin_inset Formula $F(x):=\int_{a}^{x}f$ +\end_inset + +. + El +\series bold +TEOREMA FUNDAMENTAL DEL CÁLCULO +\series default + afirma que, si +\begin_inset Formula $f\in{\cal R}[a,b]$ +\end_inset + + y +\begin_inset Formula $F$ +\end_inset + + es su integral indefinida, entonces +\begin_inset Formula $F$ +\end_inset + + es continua en +\begin_inset Formula $[a,b]$ +\end_inset + + y si +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $c\in(a,b)$ +\end_inset + + entonces +\begin_inset Formula $F$ +\end_inset + + es derivable en +\begin_inset Formula $c$ +\end_inset + + y +\begin_inset Formula $F'(c)=f(c)$ +\end_inset + +, y esto también ocurre con los extremos del intervalo y las correspondientes + derivadas laterales. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Integral de Riemann para funciones de varias variables +\end_layout + +\begin_layout Standard +Llamamos +\series bold +gráfica +\series default + de una función +\begin_inset Formula $f:[a_{1},b_{1}]\times\dots\times[a_{n},b_{n}]\rightarrow\mathbb{R}$ +\end_inset + + a +\begin_inset Formula +\[ +\text{graf}(f):=\{(x_{1},\dots,x_{n},y)\in\mathbb{R}^{n+1}:(x_{1},\dots,x_{n})\in[a_{1},b_{1}]\times\dots\times[a_{n},b_{n}]\land y=f(x_{1},\dots,x_{n})\} +\] + +\end_inset + +y +\series bold +subgrafo +\series default + a +\begin_inset Formula +\begin{multline*} +\text{subgraf}(f):=\\ +\{(x_{1},\dots,x_{n},y)\in\mathbb{R}^{n+1}:(x_{1},\dots,x_{n})\in[a_{1},b_{1}]\times\dots\times[a_{n},b_{n}]\land0\leq y\leq f(x_{1},\dots,x_{n})\} +\end{multline*} + +\end_inset + + +\end_layout + +\begin_layout Standard +El +\series bold +volumen +\series default + del +\series bold +rectángulo +\series default + +\begin_inset Formula $n$ +\end_inset + +-dimensional +\begin_inset Formula $R:=[a_{1},b_{1}]\times\dots\times[a_{n},b_{n}]\subset\mathbb{R}^{n}$ +\end_inset + + se define como +\begin_inset Formula $v(R)=(b_{1}-a_{1})\cdots(b_{n}-a_{n})$ +\end_inset + +. + Si +\begin_inset Formula $n=1$ +\end_inset + +, +\begin_inset Formula $R$ +\end_inset + + es un intervalo y +\begin_inset Formula $v(R)$ +\end_inset + + es su +\series bold +longitud +\series default +; si +\begin_inset Formula $n=2$ +\end_inset + +, +\begin_inset Formula $R$ +\end_inset + + es un rectángulo y +\begin_inset Formula $v(R)$ +\end_inset + + es su +\series bold +área +\series default +, y si +\begin_inset Formula $n=3$ +\end_inset + +, +\begin_inset Formula $R$ +\end_inset + + es un paralelepípedo recto y +\begin_inset Formula $v(R)$ +\end_inset + + es su +\series bold +volumen +\series default + tridimensional. +\end_layout + +\begin_layout Standard +Una +\series bold +partición +\series default + sobre este rectángulo es una lista +\begin_inset Formula $P:=(P_{1},\dots,P_{n})$ +\end_inset + + en la que cada +\begin_inset Formula $P_{i}$ +\end_inset + + es una partición de +\begin_inset Formula $[a_{i},b_{i}]$ +\end_inset + +. + Si cada +\begin_inset Formula $P_{i}$ +\end_inset + + divide el intervalo +\begin_inset Formula $[a_{i},b_{i}]$ +\end_inset + + en +\begin_inset Formula $k_{i}$ +\end_inset + + subintervalos, los +\begin_inset Formula $k_{1}\cdots k_{n}$ +\end_inset + + rectángulos en los que +\begin_inset Formula $P$ +\end_inset + + divide a +\begin_inset Formula $R$ +\end_inset + + son los +\series bold +subrectángulos +\series default + de la partición +\begin_inset Formula $P$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + + es acotada y +\begin_inset Formula $P:=(P_{i})_{i=1}^{n}$ +\end_inset + + es una partición de +\begin_inset Formula $R$ +\end_inset + + que lo divide en una cantidad finita de subrectángulos +\begin_inset Formula $\{S_{i}\}_{i=1}^{N}$ +\end_inset + +, si para cada +\begin_inset Formula $S_{h}$ +\end_inset + + denotamos +\begin_inset Formula $m_{S_{h}}(f):=\inf\{f(x)\}_{x\in S_{h}}$ +\end_inset + + y +\begin_inset Formula $M_{S_{h}}(f)=\sup\{f(x)\}_{x\in S_{h}}$ +\end_inset + +, y definimos las +\series bold +sumas inferior +\series default + y +\series bold +superior +\series default + de +\begin_inset Formula $f$ +\end_inset + + correspondientes a la partición +\begin_inset Formula $P$ +\end_inset + +, respectivamente, como +\begin_inset Formula +\begin{eqnarray*} +s(f,P):=\sum_{h=1}^{N}m_{S_{h}}(f)v(S_{h}) & \text{y} & S(f,P):=\sum_{h=1}^{N}M_{S_{h}}(f)v(S_{h}) +\end{eqnarray*} + +\end_inset + + +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $P$ +\end_inset + + y +\begin_inset Formula $P'$ +\end_inset + + dos particiones del rectángulo +\begin_inset Formula $n$ +\end_inset + +-dimensional +\begin_inset Formula $R$ +\end_inset + + tales que +\begin_inset Formula $P'\succeq P$ +\end_inset + + ( +\begin_inset Formula $\forall i\in\{1,\dots,n\},P'_{i}\succeq P_{i}$ +\end_inset + + o, equivalentemente, cada subrectángulo de +\begin_inset Formula $P'$ +\end_inset + + está contenido en uno de +\begin_inset Formula $P$ +\end_inset + +) y +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + +, entonces +\begin_inset Formula +\[ +s(f,P)\leq s(f,P')\leq S(f,P')\leq S(f,P) +\] + +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Obviamente +\begin_inset Formula $s(f,P')\leq S(f,P')$ +\end_inset + +. + Si +\begin_inset Formula $P$ +\end_inset + + se divide en los subrectángulos +\begin_inset Formula $\{S_{i},\dots,S_{N}\}$ +\end_inset + + y +\begin_inset Formula $P'$ +\end_inset + + en +\begin_inset Formula $\{S'_{1},\dots,S'_{M}\}$ +\end_inset + +, dado un subrectángulo +\begin_inset Formula $S_{i}$ +\end_inset + + de +\begin_inset Formula $P$ +\end_inset + + que se expresa como unión de subrectángulos +\begin_inset Formula $S_{i1},\dots,S_{ik_{i}}$ +\end_inset + + de +\begin_inset Formula $P'$ +\end_inset + +, es claro que para +\begin_inset Formula $j\in\{1,\dots,k_{i}\}$ +\end_inset + +, +\begin_inset Formula $m_{S}(f)=\inf\{f(x)\}_{x\in S_{i}}\leq m_{S_{ij}}(f)=\inf\{f(x)\}_{x\in S_{ij}}$ +\end_inset + +. + Por otro lado, +\begin_inset Formula $v(S_{i})=\sum_{j=1}^{k_{i}}v(S_{ij})$ +\end_inset + +, con lo que +\begin_inset Formula $m_{S_{i}}(f)v(S_{i})=m_{S_{i}}(f)\sum_{j=1}^{k_{i}}v(S_{ij})=\sum_{j=1}^{k_{i}}m_{S_{i}}(f)v(S_{ij})\leq\sum_{j=1}^{k_{i}}m_{S_{ij}}(f)v(S_{ij})$ +\end_inset + + y entonces +\begin_inset Formula $s(f,P)=\sum_{i=1}^{N}m_{S_{i}}(f)v(S_{i})\leq\sum_{i=1}^{N}\sum_{j=1}^{k_{i}}m_{S_{ij}}(f)v(S_{ij})=\sum_{i=1}^{M}m_{S'_{i}}(f)v(S'_{i})=s(f,P')$ +\end_inset + +. + La prueba de que +\begin_inset Formula $S(f,P')\leq S(f,P)$ +\end_inset + + se hace de forma análoga. +\end_layout + +\begin_layout Standard +Definimos las +\series bold +integrales superior e inferior de Riemann +\series default + de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $R$ +\end_inset + +, respectivamente, como +\begin_inset Formula +\begin{eqnarray*} +\overline{\int_{R}}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n} & := & \inf\{S(f,P)\}_{P\text{ partición de }R}\\ +\underline{\int_{R}}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n} & := & \sup\{s(f,P)\}_{P\text{ partición de }R} +\end{eqnarray*} + +\end_inset + + +\end_layout + +\begin_layout Standard +Por lo anterior, es claro que la integral inferior es siempre menor o igual + a la su +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pe +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rior. + Si son iguales decimos que +\begin_inset Formula $f$ +\end_inset + + es +\series bold +integrable Riemann +\series default + en +\begin_inset Formula $R$ +\end_inset + + ( +\begin_inset Formula $f\in{\cal R}(R)$ +\end_inset + +) con +\series bold +integral +\series default + +\begin_inset Formula $\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}$ +\end_inset + + igual a estas dos. +\end_layout + +\begin_layout Standard +\begin_inset Formula $f\in{\cal R}(R)\iff\forall\varepsilon>0,\exists P_{\varepsilon}:S(f,P_{\varepsilon})-s(f,P_{\varepsilon})\leq\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Basta tomar +\begin_inset Formula $P$ +\end_inset + + y +\begin_inset Formula $P'$ +\end_inset + + con +\begin_inset Formula $S(f,P)\leq\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}+\frac{\varepsilon}{2}$ +\end_inset + + y +\begin_inset Formula $s(f,P')\geq\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}-\frac{\varepsilon}{2}$ +\end_inset + + y quedarnos con la partición +\begin_inset Formula $P\lor P'$ +\end_inset + + ( +\begin_inset Formula $\{P_{i}\lor P'_{i}\}_{i=1}^{n}$ +\end_inset + +). +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Si se cumple +\begin_inset Formula $0\leq\overline{\int_{R}}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}-\underline{\int_{R}}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}\leq S(f,P_{\varepsilon})-s(f,P_{\varepsilon})\leq\varepsilon$ +\end_inset + + para todo +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, haciendo tender +\begin_inset Formula $\varepsilon$ +\end_inset + + a 0 obtenemos la igualdad de las integrales superior e inferior. +\end_layout + +\begin_layout Standard +La integral es un operador lineal: sean +\begin_inset Formula $f,g\in{\cal R}(R)$ +\end_inset + + y +\begin_inset Formula $c\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $f+g\in{\cal R}(R)$ +\end_inset + + con +\begin_inset Formula $\int_{R}(f+g)(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}=\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}+\int_{R}g(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}$ +\end_inset + +, y +\begin_inset Formula $cf\in{\cal R}(R)$ +\end_inset + + con +\begin_inset Formula $\int_{R}(cf)(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}=c\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}$ +\end_inset + +. + +\series bold +Demostración: +\series default + Se deriva de que para +\begin_inset Formula $S\subseteq R$ +\end_inset + +, +\begin_inset Formula $m_{S}(f)+m_{S}(g)\leq m_{S}(f+g)$ +\end_inset + +, +\begin_inset Formula $M_{S}(f+g)\leq M_{S}(f)+M_{S}(g)$ +\end_inset + + y +\begin_inset Formula $M_{S}(cf)=cM_{S}(f)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset + + +\end_layout + +\begin_layout Standard +También es un operador positivo. + Sean +\begin_inset Formula $f,g\in{\cal R}(R)$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\forall(x_{1},\dots,x_{n})\in R,f(x_{1},\dots,x_{n})\geq0\implies\int_{R}(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}\geq0$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\forall(x_{1},\dots,x_{n})\in R,f(x_{1},\dots,x_{n})\geq g(x_{1},\dots,x_{n})\implies\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}\geq\int_{R}g(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $|f|\in{\cal R}(R)$ +\end_inset + + y +\begin_inset Formula $\left|\int_{R}f(x_{1},\dots,x_{n})dx_{1}\dots dx_{n}\right|\leq\int_{R}|f(x_{1},\dots,x_{n})|dx_{1}\dots dx_{n}$ +\end_inset + + (desigualdad triangular). +\end_layout + +\begin_layout Standard +Definimos la +\series bold +oscilación +\series default + de +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + + en +\begin_inset Formula $S\subseteq R$ +\end_inset + + como +\begin_inset Formula +\[ +\text{osc}(f,S):=M_{S}(f)-m_{S}(f)=\sup\{|f(x)-f(y)|\}_{x,y\in S} +\] + +\end_inset + + y la oscilación de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $x\in R$ +\end_inset + + como +\begin_inset Formula +\[ +\text{osc}(f,x):=\inf\{\text{osc}(f,S\cap T)\}_{T\text{ rectángulo abierto centrado en }S} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Vemos que +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $x$ +\end_inset + + si y sólo si +\begin_inset Formula $\text{osc}(f,x)=0$ +\end_inset + +, y que para cada +\begin_inset Formula $\varepsilon>0$ +\end_inset + + y cada +\begin_inset Formula $x$ +\end_inset + + donde +\begin_inset Formula $f$ +\end_inset + + es continua existe un cubo abierto +\begin_inset Formula $C_{x}(d_{x})$ +\end_inset + + centrado en +\begin_inset Formula $x$ +\end_inset + + con diámetro +\begin_inset Formula $d_{x}$ +\end_inset + + donde la oscilación de +\begin_inset Formula $f$ +\end_inset + + es menor que +\begin_inset Formula $\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{TEM} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Toda +\begin_inset Formula $f:(X,d)\rightarrow(Y,d')$ +\end_inset + + continua, siendo +\begin_inset Formula $(X,{\cal T}_{d})$ +\end_inset + + compacto, es uniformemente continua. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, toda +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + + continua definida en un rectángulo cerrado +\begin_inset Formula $n$ +\end_inset + +-dimensional +\begin_inset Formula $R$ +\end_inset + + es integrable Riemann en +\begin_inset Formula $R$ +\end_inset + +. +\end_layout + +\begin_layout Section +Conjuntos de contenido y de medida nula +\end_layout + +\begin_layout Standard +Un subconjunto +\begin_inset Formula $S\subseteq\mathbb{R}^{n}$ +\end_inset + + tiene +\series bold +medida +\series default + ( +\begin_inset Formula $n$ +\end_inset + +-dimensional) +\series bold +nula +\series default + si para cada +\begin_inset Formula $\varepsilon>0$ +\end_inset + + existe una sucesión +\begin_inset Formula $(R_{k})_{k}$ +\end_inset + + de rectángulos +\begin_inset Formula $n$ +\end_inset + +-dimensionales cerrados tal que +\begin_inset Formula $S\subseteq\bigcup_{j=1}^{\infty}R_{j}$ +\end_inset + + y +\begin_inset Formula $\sum_{j=1}^{\infty}v(R_{j})<\varepsilon$ +\end_inset + +. + Sustituyendo los rectángulos cerrados por rectángulos abiertos obtenemos + el mismo concepto. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Fijado +\begin_inset Formula $\varepsilon$ +\end_inset + +, sea +\begin_inset Formula $(R_{k})_{k}$ +\end_inset + + la sucesión de cerrados que cumple las propiedades y +\begin_inset Formula $0<d<\varepsilon-\sum_{j=1}^{\infty}v(R_{j})$ +\end_inset + +. + Para cada rectángulo +\begin_inset Formula $R_{k}$ +\end_inset + +, tomamos un rectángulo abierto +\begin_inset Formula $R'_{k}\supseteq R_{k}$ +\end_inset + + tal que +\begin_inset Formula $v(R'_{k})\leq R_{k}+\frac{d}{2^{k+1}}$ +\end_inset + +, y vemos que, en efecto, +\begin_inset Formula $\sum_{j=1}^{\infty}v(R'_{j})\leq\sum_{j=1}^{\infty}v(R_{j})+\sum_{j=1}^{\infty}\frac{d}{2^{k+1}}<\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Fijado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, sea +\begin_inset Formula $(R_{k})_{k\in\mathbb{N}}$ +\end_inset + + una sucesión de rectángulos abiertos que cumple las propiedades, vemos + que +\begin_inset Formula $N\subseteq\bigcup_{k\in\mathbb{N}}R_{k}\subseteq\bigcup_{k\in\mathbb{N}}\overline{R_{k}}$ +\end_inset + + y que +\begin_inset Formula $\sum_{j=1}^{\infty}v(\overline{R_{j}})=\sum_{j=1}^{\infty}v(R_{j})<\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, la unión numerable de conjuntos de medida nula tiene medida nula. + +\series bold +Demostración: +\series default + Consideremos +\begin_inset Formula $\bigcup_{i=1}^{\infty}S_{i}$ +\end_inset + +. + Fijado +\begin_inset Formula $\varepsilon$ +\end_inset + +, para cada +\begin_inset Formula $i\in\mathbb{N}$ +\end_inset + + utilizamos que +\begin_inset Formula $S_{i}$ +\end_inset + + es de medida nula para recubrirlo con una sucesión +\begin_inset Formula $\{R_{ij}\}_{j\in\mathbb{N}}$ +\end_inset + + cuyos volúmenes suman menos que +\begin_inset Formula $\frac{\varepsilon}{2^{i}}$ +\end_inset + +. + Vemos que +\begin_inset Formula $\{R_{ij}\}_{i,j\in\mathbb{N}}$ +\end_inset + + es numerable y podemos describirlo como una sucesión que recubre +\begin_inset Formula $N$ +\end_inset + + y cuyos volúmenes suman menos que +\begin_inset Formula $\varepsilon$ +\end_inset + +, pues +\begin_inset Formula $\sum_{i,j=1}^{\infty}v(R_{ij})=\sum_{i=1}^{\infty}(\sum_{j=1}^{\infty}v(R_{ij}))<\sum_{i=1}^{\infty}\frac{\varepsilon}{2^{i}}=\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Un subconjunto +\begin_inset Formula $S\subseteq\mathbb{R}^{n}$ +\end_inset + + tiene +\series bold +contenido +\series default + ( +\begin_inset Formula $n$ +\end_inset + +-dimensional) +\series bold +nulo +\series default + si para cada +\begin_inset Formula $\varepsilon>0$ +\end_inset + + existe una familia finita de rectángulos +\begin_inset Formula $n$ +\end_inset + +-dimensionales cerrados que cumplen las mismas condiciones que los de la + definición de medida nula. + Es claro que todo conjunto de contenido nulo tiene medida nula. + Como +\series bold +teorema +\series default +, todo compacto en +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + de medida nula es de contenido nulo; basta usar un cubrimiento con rectángulos + abiertos en la definición de medida nula y extraer un subrecubrimiento + finito por compacidad. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f:R\subseteq\mathbb{R}^{m}\rightarrow\mathbb{R}$ +\end_inset + + es integrable Riemann en el rectángulo cerrado +\begin_inset Formula $R$ +\end_inset + +, entonces +\begin_inset Formula $\text{graf}(f)$ +\end_inset + + tiene contenido +\begin_inset Formula $(m+1)$ +\end_inset + +-dimensional nulo. +\end_layout + +\begin_layout Subsection +El conjunto de Cantor +\end_layout + +\begin_layout Standard +Consideremos el intervalo +\begin_inset Formula $[0,1]$ +\end_inset + +, que dividimos en 3 subintervalos y eliminamos el subintervalo abierto + central, +\begin_inset Formula $(\frac{1}{3},\frac{2}{3})$ +\end_inset + +. + A continuación, de cada subintervalo cerrado restante, eliminamos el subinterva +lo abierto central de longitud la tercera parte del subintervalo original. + Repitiendo este proceso indefinidamente lo que nos queda es el +\series bold +conjunto de Cantor +\series default +, +\begin_inset Formula $C$ +\end_inset + +. + Observamos que un número está en el conjunto de Cantor si y sólo si su + representación en base 3, +\begin_inset Formula $0.c_{1}c_{2}c_{3}\cdots c_{n}\cdots$ +\end_inset + +, contiene sólo los dígitos 0 y 2, teniendo en cuenta que el número puede + también acabar por una secuencia infinita de doses. + Teoremas: +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + es incontable, con igual cardinalidad que +\begin_inset Formula $[0,1]$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +La función +\begin_inset Formula $f:C\rightarrow[0,1]$ +\end_inset + + dada por +\begin_inset Formula $f(0.c_{1}c_{2}\cdots c_{n}\cdots_{(3)}):=0.\frac{c_{1}}{2}\frac{c_{2}}{2}\cdots\frac{c_{n}}{2}\cdots_{(2)}$ +\end_inset + + es suprayectiva, luego +\begin_inset Formula $|C|\geq|[0,1]|$ +\end_inset + +, pero es claro que +\begin_inset Formula $|C|\leq|[0,1]|$ +\end_inset + +, luego +\begin_inset Formula $|C|=|[0,1]|$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + es de medida nula. +\begin_inset Newline newline +\end_inset + +Al principio +\begin_inset Formula $[0,1]$ +\end_inset + + tiene longitud 1, y es fácil ver que si en un +\begin_inset Quotes fld +\end_inset + +paso +\begin_inset Quotes frd +\end_inset + + de la construcción el conjunto resultante tiene longitud +\begin_inset Formula $n$ +\end_inset + +, en el siguiente tendrá longitud +\begin_inset Formula $\frac{2}{3}n$ +\end_inset + +. + Por tanto la longitud de +\begin_inset Formula $C$ +\end_inset + + es +\begin_inset Formula $\lim_{n}\left(\frac{2}{3}\right)^{n}=0$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + no tiene puntos interiores. +\begin_inset Newline newline +\end_inset + +Como es de medida nula no contiene puntos de acumulación, pues para ello + debería contener intervalos, de medida no nula. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + está acotado. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + es cerrado. +\begin_inset Newline newline +\end_inset + +Es el resultado de quitar a un cerrado ( +\begin_inset Formula $[0,1]$ +\end_inset + +) un abierto (la unión de los abiertos eliminados en su construcción). +\end_layout + +\begin_layout Itemize +\begin_inset Formula $C$ +\end_inset + + no tiene puntos aislados. +\begin_inset Newline newline +\end_inset + +Dado +\begin_inset Formula $x\in C$ +\end_inset + + y +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, sea +\begin_inset Formula $n$ +\end_inset + + tal que +\begin_inset Formula $\frac{2}{3^{n}}<\varepsilon$ +\end_inset + +, existe un punto, el resultado de cambiar la cifra +\begin_inset Formula $n$ +\end_inset + +-ésima de +\begin_inset Formula $x$ +\end_inset + + por un 2 si era un 0 o viceversa, cuya distancia a +\begin_inset Formula $x$ +\end_inset + + es menor que +\begin_inset Formula $\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +Dados +\begin_inset Formula $a,b\in C$ +\end_inset + + distintos, existe una partición +\begin_inset Formula $\{A,B\}$ +\end_inset + + de +\begin_inset Formula $C$ +\end_inset + + con +\begin_inset Formula $A$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + cerrados, +\begin_inset Formula $a\in A$ +\end_inset + + y +\begin_inset Formula $b\in B$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +Sea +\begin_inset Formula $n$ +\end_inset + + la posición de una cifra (en base 3) en la que +\begin_inset Formula $a$ +\end_inset + + y +\begin_inset Formula $b$ +\end_inset + + difieren, basta hacer la partición según el valor de dicha cifra. +\end_layout + +\begin_layout Subsection +Caracterización +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $A\subseteq\mathbb{R}^{n}$ +\end_inset + + cerrado, si +\begin_inset Formula $f:A\rightarrow\mathbb{R}$ +\end_inset + + es acotada y +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, +\begin_inset Formula $B:=\{x\in A:\text{osc}(f,x)\geq\varepsilon\}$ +\end_inset + + es cerrado. + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $x\in\mathbb{R}^{n}\backslash B$ +\end_inset + +. + Si +\begin_inset Formula $x\notin A$ +\end_inset + +, existe una bola de centro +\begin_inset Formula $x$ +\end_inset + + que no interseca con +\begin_inset Formula $A$ +\end_inset + +. + Si +\begin_inset Formula $x\in A$ +\end_inset + +, existe un rectángulo abierto +\begin_inset Formula $C\ni x$ +\end_inset + + con +\begin_inset Formula $\text{osc}(f,c)<\varepsilon$ +\end_inset + +, y para +\begin_inset Formula $y\in C$ +\end_inset + + existe +\begin_inset Formula $\delta_{y}$ +\end_inset + + tal que si +\begin_inset Formula $\Vert z-y\Vert<\delta_{y}$ +\end_inset + + entonces +\begin_inset Formula $\Vert x-z\Vert<\delta$ +\end_inset + +, con lo que +\begin_inset Formula $\text{osc}(f,y)<\varepsilon$ +\end_inset + + y +\begin_inset Formula $C\subseteq\mathbb{R}^{n}\backslash B$ +\end_inset + +. +\end_layout + +\begin_layout Standard +El +\series bold +teorema de Lebesgue de caracterización de las funciones integrables +\series default + afirma que si +\begin_inset Formula $R$ +\end_inset + + es un rectángulo +\begin_inset Formula $n$ +\end_inset + +-dimensional cerrado y +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + + es acotada, entonces +\begin_inset Formula $f\in{\cal R}(R)$ +\end_inset + + si y sólo si +\begin_inset Formula $B:=\{x\in R:f\text{ no es continua en }x\}$ +\end_inset + + tiene medida nula. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Sea +\begin_inset Formula $B_{k}:=\{x\in R:o(f,x)\geq\frac{1}{k}\}$ +\end_inset + +, basta probar que cada +\begin_inset Formula $B_{k}$ +\end_inset + + tiene medida nula dado que +\begin_inset Formula $B=\bigcup_{k\in\mathbb{N}}B_{k}$ +\end_inset + +. + Dado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, sean +\begin_inset Formula $P$ +\end_inset + + una partición de +\begin_inset Formula $R$ +\end_inset + + con +\begin_inset Formula $S(f,P)-s(f,P)<\frac{\varepsilon}{k}$ +\end_inset + + y +\begin_inset Formula ${\cal S}$ +\end_inset + + el conjunto de subrectángulos de +\begin_inset Formula $P$ +\end_inset + + que cortan a +\begin_inset Formula $B_{k}$ +\end_inset + + , entonces para +\begin_inset Formula $S\in{\cal S}$ +\end_inset + + se tiene +\begin_inset Formula $M_{S}(f)-m_{S}(f)\geq\frac{1}{k}$ +\end_inset + + y +\begin_inset Formula +\[ +\frac{1}{k}\sum_{S\in{\cal S}}v(S)\leq\sum_{S\in{\cal S}}(M_{S}(f)-m_{S}(f))v(S)\leq S(f,P)-s(f,P)<\frac{\varepsilon}{k} +\] + +\end_inset + +con lo que +\begin_inset Formula $\sum_{S\in{\cal S}}v(S)<\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Fijado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, sea +\begin_inset Formula $K$ +\end_inset + + tal que +\begin_inset Formula $|f(x)|\leq K\forall x\in R$ +\end_inset + +, y tenemos que +\begin_inset Formula $M_{N}(f)-m_{N}(f)\leq2K\forall N\subseteq R$ +\end_inset + +. + Consideramos el conjunto de puntos donde +\begin_inset Formula $\text{osc}(f,x)\geq\frac{\varepsilon}{2v(R)}$ +\end_inset + +, un cerrado de medida nula y por tanto un compacto de contenido nulo, que + podemos cubrir con una cantidad finita de abiertos +\begin_inset Formula $N_{k}$ +\end_inset + + tales que +\begin_inset Formula $\sum_{k}v(N_{k})<\frac{\varepsilon}{4K}$ +\end_inset + +, y por tanto +\begin_inset Formula $\sum_{k}\text{osc}(N_{k},f)v(N_{k})<2K\cdot\frac{\varepsilon}{4K}=\frac{\varepsilon}{2}$ +\end_inset + +. + Es claro que +\begin_inset Formula $C:=R\backslash\bigcup_{k}N_{k}$ +\end_inset + + es compacto, y como para cada +\begin_inset Formula $x\in C$ +\end_inset + + podemos tomar un +\begin_inset Formula $S_{x}$ +\end_inset + + abierto tal que +\begin_inset Formula $\text{osc}(f,S_{x})<\frac{\varepsilon}{2v(R)}$ +\end_inset + +, existe un subrecubrimiento finito +\begin_inset Formula $S_{x_{i}}$ +\end_inset + + a partir de este, de modo que +\begin_inset Formula $\sum_{i}\text{osc}(f,S_{x_{i}})v(S_{x_{i}})<\frac{\varepsilon}{2v(R)}\cdot v(R)=\frac{\varepsilon}{2}$ +\end_inset + + La partición +\begin_inset Formula $P$ +\end_inset + + cuyos subintervalos están contenidos bien en un rectángulo +\begin_inset Formula $S_{x_{i}}$ +\end_inset + + o +\begin_inset Formula $N_{k}$ +\end_inset + + cumple que +\begin_inset Formula $S(f,P)-s(f,P)\leq\sum_{k}\text{osc}(f,N_{k})v(N_{k})+\sum_{i}\text{osc}(f,S_{x_{i}})v(S_{x_{i}})<\frac{\varepsilon}{2}+\frac{\varepsilon}{2}=\varepsilon$ +\end_inset + +. +\end_layout + +\begin_layout Subsection +Conjuntos medibles Jordan +\end_layout + +\begin_layout Standard +\begin_inset Formula $A\subseteq\mathbb{R}^{n}$ +\end_inset + + acotado es +\series bold +medible Jordan +\series default + si su +\series bold +función característica +\series default +, +\begin_inset Formula +\[ +\chi_{A}(x):=\begin{cases} +1 & \text{si }x\in A\\ +0 & \text{si }x\notin A +\end{cases} +\] + +\end_inset + + es integrable Riemann en un rectángulo cerrado +\begin_inset Formula $R\supseteq A$ +\end_inset + +, y se define el +\series bold +volumen +\series default + +\begin_inset Formula $n$ +\end_inset + +-dimensional de +\begin_inset Formula $A$ +\end_inset + + como +\begin_inset Formula +\[ +v(A):=\int_{R}\chi_{A}(x_{1},\dots,x_{n})dx_{1}\cdots dx_{n} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Equivalentemente, +\begin_inset Formula $A$ +\end_inset + + es medible Jordan si y sólo si su frontera, +\begin_inset Formula $\partial A=\overline{A}\backslash\mathring{A}$ +\end_inset + +, tiene medida nula. + Se dice que una función acotada +\begin_inset Formula $f:A\rightarrow\mathbb{R}$ +\end_inset + + es integrable Riemann en +\begin_inset Formula $A$ +\end_inset + + si +\begin_inset Formula $f\chi_{A}\in{\cal R}(R)$ +\end_inset + +. + Por ejemplo, si +\begin_inset Formula $N$ +\end_inset + + tiene contenido nulo y +\begin_inset Formula $f:N\rightarrow\mathbb{R}$ +\end_inset + + es acotada, entonces +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann en +\begin_inset Formula $N$ +\end_inset + + y +\begin_inset Formula $\int_{N}f(x)dx=0$ +\end_inset + +. +\end_layout + +\begin_layout Section +Teorema de Fubini +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Sean +\begin_inset Formula $R_{1}\subseteq\mathbb{R}^{n}$ +\end_inset + + y +\begin_inset Formula $R_{2}\subseteq\mathbb{R}^{m}$ +\end_inset + + rectángulos cerrados de dimensiones respectivas +\begin_inset Formula $n$ +\end_inset + + y +\begin_inset Formula $m$ +\end_inset + +, +\begin_inset Formula $R=R_{1}\times R_{2}\subseteq\mathbb{R}^{n+m}$ +\end_inset + + un rectángulo cerrado +\begin_inset Formula $(n+m)$ +\end_inset + +-dimensional y +\begin_inset Formula $f:R\rightarrow\mathbb{R}$ +\end_inset + + una función acotada. + Para cada +\begin_inset Formula $x\in R_{1}$ +\end_inset + + definimos +\begin_inset Formula $lf_{x}:R_{2}\rightarrow\mathbb{R}$ +\end_inset + + como +\begin_inset Formula $lf_{x}(y):=f(x,y)$ +\end_inset + +, +\begin_inset Formula $s_{lf}(x):=\underline{\int_{R_{2}}}lf_{x}(y_{1},\dots,y_{m})dy_{1}\cdots dy_{m}$ +\end_inset + + y +\begin_inset Formula $S_{lf}(x):=\overline{\int_{R_{2}}}lf_{x}(y_{1},\dots,y_{m})dy_{1}\cdots dy_{m}$ +\end_inset + +, y para cada +\begin_inset Formula $y\in R_{2}$ +\end_inset + + definimos +\begin_inset Formula $rf_{y}(x):=f(x,y)$ +\end_inset + +, +\begin_inset Formula $s_{rf}(y):=\int_{R_{1}}rf_{y}(x_{1},\dots,x_{n})dx_{1}\cdots dx_{m}$ +\end_inset + + y +\begin_inset Formula $S_{rf}(y):=\overline{\int_{R_{1}}}rf_{y}(x_{1},\dots,x_{n})dx_{1}\cdots dx_{m}$ +\end_inset + +. + Si +\begin_inset Formula $f\in{\cal R}(R)$ +\end_inset + + entonces +\begin_inset Formula $s_{lf},S_{lf}\in{\cal R}(R_{1})$ +\end_inset + +, +\begin_inset Formula $s_{rf},S_{rf}\in{\cal R}(R_{2})$ +\end_inset + + y +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{multline*} +\int_{R}f(x_{1},\dots,x_{n},y_{1},\dots,y_{m})dx_{1}\cdots dx_{n}dy_{1}\cdots dy_{m}=\\ +=\int_{R_{1}}s_{lf}(x_{1},\dots,x_{n})dx_{1}\cdots dx_{n}=\int_{R_{1}}S_{lf}(x_{1},\dots,x_{n})dx_{1}\cdots dx_{n}=\\ +=\int_{R_{2}}s_{rf}(y_{1},\dots,y_{m})dy_{1}\cdots dy_{m}=\int_{R_{2}}S_{rf}(y_{1},\dots,y_{m})dy_{1}\cdots dy_{m} +\end{multline*} + +\end_inset + + +\end_layout + +\begin_layout Standard +En la práctica esto significa que +\begin_inset Formula +\[ +\int_{R}f(\vec{x},\vec{y})d\vec{x}d\vec{y}=\int_{R_{1}}\left(\int_{R_{2}}f(\vec{x},\vec{y})d\vec{y}\right)d\vec{x}=\int_{R_{2}}\left(\int_{R_{1}}f(\vec{x},\vec{y})d\vec{x}\right)d\vec{y} +\] + +\end_inset + +donde +\begin_inset Formula $d\vec{x}:=dx_{1}\cdots dx_{n}$ +\end_inset + + y +\begin_inset Formula $d\vec{y}:=dy_{1}\cdots dy_{m}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{FUVR2} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Cálculo de primitivas +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int u^{n}u'\,dx=\frac{u^{n+1}}{n+1}+C\forall n\neq-1$ +\end_inset + +; +\begin_inset Formula $\int\frac{u'}{u}dx=\ln|u|+C\forall u\neq0$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int e^{u}u'\,dx=e^{u}+C$ +\end_inset + +; +\begin_inset Formula $\int a^{u}u'\,dx=\frac{a^{u}}{\ln a}+C\forall a>0,a\neq1$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\cos u\,u'\,dx=\sin u+C$ +\end_inset + +; +\begin_inset Formula $\int\sin u\,u'\,dx=-\cos u+C$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\cosh u\,u'\,dx=\sinh u+C$ +\end_inset + +; +\begin_inset Formula $\int\sinh u\,u'\,dx=\cosh u+C$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{u'}{\sin^{2}u}dx=\int\frac{u'}{\sinh^{2}u}dx=-\cot u+C$ +\end_inset + +; +\begin_inset Formula $\int\frac{u'}{\cos^{2}u}dx=\int\frac{u'}{\cosh^{2}u}dx=\tan u+C$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{u'}{1+u^{2}}dx=\arctan u+C$ +\end_inset + +; +\begin_inset Formula $\int\frac{u'}{1-u^{2}}dx=\arg\tanh u+C$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{u'}{\sqrt{1-u^{2}}}dx=\arcsin u+C=-\arccos u+C'$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{u'}{\sqrt{u^{2}+1}}dx=\arg\sinh u+C$ +\end_inset + +; +\begin_inset Formula $\int\frac{u'}{\sqrt{u^{2}-1}}dx=\arg\cosh u+C$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\backslash +sremember{FUVR2} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula +\begin{eqnarray*} +\cosh(x)=\frac{e^{x}+e^{-x}}{2} & & \arg\cosh(x)=\ln(x+\sqrt{x^{2}-1})\\ +\sinh(x)=\frac{e^{x}-e^{-x}}{2} & & \arg\sinh(x)=\ln(x+\sqrt{x^{2}+1})\\ +\cosh^{2}(x)-\sinh^{2}(x)=1 & & \arg\tanh(x)=\frac{1}{2}\ln\frac{1+x}{1-x} +\end{eqnarray*} + +\end_inset + + +\end_layout + +\begin_layout Subsection +Integración por partes +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $f,g\in{\cal R}[a,b]$ +\end_inset + + con primitivas respectivas +\begin_inset Formula $F$ +\end_inset + + y +\begin_inset Formula $G$ +\end_inset + +, +\begin_inset Formula +\[ +\int_{a}^{b}Fg=F(b)G(b)-F(a)G(a)-\int_{a}^{b}fG +\] + +\end_inset + +lo que suele escribirse como +\begin_inset Formula $\int u\,dv=uv-\int v\,du$ +\end_inset + +. +\end_layout + +\begin_layout Subsection +Cambio de variable +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, sea +\begin_inset Formula $\varphi:[c,d]\rightarrow[a,b]\in{\cal C}^{1}[c,d]$ +\end_inset + + con +\begin_inset Formula $\varphi(c)=a$ +\end_inset + + y +\begin_inset Formula $\varphi(d)=b$ +\end_inset + +, sea +\begin_inset Formula $f:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + continua, entonces +\begin_inset Formula +\[ +\int_{a}^{b}f=\int_{c}^{d}(f\circ\varphi)\varphi' +\] + +\end_inset + + +\end_layout + +\begin_layout Subsection +Funciones racionales +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $P(x)$ +\end_inset + + y +\begin_inset Formula $Q(x)$ +\end_inset + + polinomios y queremos resolver +\begin_inset Formula $\int_{a}^{b}\frac{P(x)}{Q(x)}dx$ +\end_inset + +. + Si el grado de +\begin_inset Formula $P(x)$ +\end_inset + + es mayor o igual que el de +\begin_inset Formula $Q(x)$ +\end_inset + + hacemos +\begin_inset Formula $\int_{a}^{b}\frac{P(x)}{Q(x)}dx=\int C(x)dx+\int\frac{R(x)}{Q(x)}dx$ +\end_inset + + para que el grado del numerador sea menor que el del denominador. + Entonces descomponemos en fracciones simples. +\end_layout + +\begin_layout Standard +Descomponemos +\begin_inset Formula $Q(x)$ +\end_inset + + como +\begin_inset Formula $Q(x)=\prod_{i=1}^{r}(x-a_{i})^{m_{i}}\prod_{i=1}^{s}(x^{2}+p_{i}x+q_{i})^{n_{i}}$ +\end_inset + +, donde +\begin_inset Formula $q_{i}>\frac{p_{i}^{2}}{4}$ +\end_inset + + para que los factores sean irreducibles. + Entonces (si el grado de +\begin_inset Formula $P(x)$ +\end_inset + + es menor que el de +\begin_inset Formula $Q(x)$ +\end_inset + +) podemos expresar la fracción como +\begin_inset Formula +\[ +\frac{P(x)}{Q(x)}=\sum_{i=1}^{r}\sum_{j=1}^{m_{i}}\frac{A_{ij}}{(x-a_{i})^{j}}+\sum_{i=1}^{M}\sum_{j=1}^{n_{i}}\frac{M_{ij}x+N_{ij}}{(x^{2}+p_{i}x+q_{i})^{j}} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Resolvemos los +\begin_inset Formula $A_{k,i}$ +\end_inset + +, +\begin_inset Formula $M_{k,i}$ +\end_inset + +, +\begin_inset Formula $N_{k,i}$ +\end_inset + + y nos queda hallar la integral de cada sumando como sigue: +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{A}{x-a}dx=A\ln|x-a|+C$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{A}{(x-a)^{n}}dx=-\frac{A}{(n-1)(x-a)^{n-1}}+C$ +\end_inset + +, donde +\begin_inset Formula $n\in2,3,\dots$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\backslash +sremember{FUVR2} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\int\frac{Mx+N}{x^{2}+px+q}dx=\frac{M}{2}\ln\left(\left(x+\frac{p}{2}\right)^{2}+c^{2}\right)+\frac{N-\frac{Mp}{2}}{c}\arctan\left(\frac{x+\frac{p}{2}}{c}\right)+C$ +\end_inset + +, donde +\begin_inset Formula $c=\frac{\sqrt{4q-p^{2}}}{2}$ +\end_inset + +. +\end_layout + +\begin_layout Subsection +Funciones que contienen +\begin_inset Formula $\cos x$ +\end_inset + + y +\begin_inset Formula $\sin x$ +\end_inset + + +\end_layout + +\begin_layout Standard +En general, haremos +\begin_inset Formula $t=\tan\frac{x}{2}$ +\end_inset + + y entonces +\begin_inset Formula +\begin{eqnarray*} +\cos x=\frac{\cos(2\frac{x}{2})}{\sin^{2}\frac{x}{2}+\cos^{2}\frac{x}{2}}=\frac{\cos^{2}\frac{x}{2}-\sin^{2}\frac{x}{2}}{\sin^{2}\frac{x}{2}+\cos^{2}\frac{x}{2}} & \overset{\text{div. }\cos^{2}\frac{x}{2}}{=} & \frac{1-\tan^{2}\frac{x}{2}}{\tan^{2}\frac{x}{2}+1}=\frac{1-t^{2}}{1+t^{2}}\\ +\sin x=\frac{\sin(2\frac{x}{2})}{\sin^{2}\frac{x}{2}+\cos^{2}\frac{x}{2}}=\frac{2\sin\frac{x}{2}\cos\frac{x}{2}}{\sin^{2}\frac{x}{2}+\cos^{2}\frac{x}{2}} & \overset{\text{div. }\cos^{2}\frac{x}{2}}{=} & \frac{2\tan\frac{x}{2}}{\tan^{2}\frac{x}{2}+1}=\frac{2t}{1+t^{2}}\\ +x=2\arctan t & \text{ y } & dx=\frac{2}{1+t^{2}}dt +\end{eqnarray*} + +\end_inset + + +\end_layout + +\begin_layout Standard +Si la función es de la forma +\begin_inset Formula $f(x)=g(\sin x)\cos x$ +\end_inset + +, siendo +\begin_inset Formula $g$ +\end_inset + + una función racional, hacemos +\begin_inset Formula $t=\sin x$ +\end_inset + +, y si es +\begin_inset Formula $f(x)=g(\cos x)\sin x$ +\end_inset + + hacemos +\begin_inset Formula $t=\cos x$ +\end_inset + +. + Si es +\begin_inset Formula $f(x)=g(\tan x)$ +\end_inset + + hacemos +\begin_inset Formula $\tan x=t$ +\end_inset + +, y podemos llegar a esta situación cuando al sustituir +\begin_inset Formula $\sin x$ +\end_inset + + por +\begin_inset Formula $\cos x\tan x$ +\end_inset + + quedan solo potencias pares de +\begin_inset Formula $\cos x$ +\end_inset + +, y hacemos +\begin_inset Formula $\cos^{2}x=\frac{1}{1+\tan^{2}x}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +En el caso +\begin_inset Formula $f(x)=\cos^{n}x\sin^{m}x$ +\end_inset + +, si +\begin_inset Formula $n$ +\end_inset + + es impar hacemos +\begin_inset Formula $t=\sin x$ +\end_inset + +, si +\begin_inset Formula $m$ +\end_inset + + es impar, +\begin_inset Formula $t=\cos x$ +\end_inset + +, y si ambos son pares, usamos +\begin_inset Formula $\cos^{2}x=\frac{1+\cos(2x)}{2}$ +\end_inset + + y +\begin_inset Formula $\sin^{2}x=\frac{1-\cos(2x)}{2}$ +\end_inset + + para +\begin_inset Quotes cld +\end_inset + +reducir el grado +\begin_inset Quotes crd +\end_inset + +. +\end_layout + +\begin_layout Subsection +Funciones de la forma +\begin_inset Formula $f(e^{x})$ +\end_inset + + +\end_layout + +\begin_layout Standard +Hacemos el cambio +\begin_inset Formula $t=e^{x}$ +\end_inset + + y +\begin_inset Formula $dt=e^{x}dx$ +\end_inset + +, y esto también sirve para el coseno y seno hiperbólicos ( +\begin_inset Formula $\cosh$ +\end_inset + + y +\begin_inset Formula $\sinh$ +\end_inset + +). +\end_layout + +\begin_layout Subsection +Funciones que contienen +\begin_inset Formula $\sqrt{ax^{2}+2bx+c}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Llamamos +\begin_inset Formula $d:=\frac{ac-b^{2}}{a}$ +\end_inset + + y se tiene +\begin_inset Formula $ax^{2}+2bx+c=a\left(x+\frac{b}{a}\right)^{2}+d$ +\end_inset + +. + Hacemos entonces el cambio de variable +\begin_inset Formula $t=x+\frac{b}{a}$ +\end_inset + + y a continuación: +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a>0$ +\end_inset + + y +\begin_inset Formula $d>0$ +\end_inset + + hacemos +\begin_inset Formula $at^{2}=d\tan^{2}u$ +\end_inset + + y entonces +\begin_inset Formula $\sqrt{at^{2}+d}=[...]\sqrt{d}\sec u$ +\end_inset + + y +\begin_inset Formula $dt=\sqrt{\frac{d}{a}}\sec^{2}u\,du$ +\end_inset + +. + También podemos hacer +\begin_inset Formula $at^{2}=d\sinh^{2}u$ +\end_inset + + y entonces +\begin_inset Formula $\sqrt{at^{2}+d}=[...]\sqrt{d}\cosh u$ +\end_inset + + y +\begin_inset Formula $dt=\sqrt{\frac{d}{a}}\cosh u\,du$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a>0$ +\end_inset + + y +\begin_inset Formula $d<0$ +\end_inset + + hacemos +\begin_inset Formula $at^{2}=-d\sec^{2}u$ +\end_inset + + y entonces +\begin_inset Formula $\sqrt{at^{2}+d}=[...]\sqrt{-d}\tan u$ +\end_inset + + y +\begin_inset Formula $dt=\sqrt{-\frac{d}{a}}\sec u\tan u\,du$ +\end_inset + +. + También podemos hacer +\begin_inset Formula $at^{2}=-d\cosh^{2}u$ +\end_inset + + y entonces +\begin_inset Formula $\sqrt{at^{2}+d}=[...]\sqrt{-d}\sinh u$ +\end_inset + + y +\begin_inset Formula $dt=\sqrt{-\frac{d}{a}}\sinh u\,du$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\backslash +sremember{FUVR2} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize +Si +\begin_inset Formula $a<0$ +\end_inset + + y +\begin_inset Formula $d>0$ +\end_inset + + hacemos +\begin_inset Formula $at^{2}=-d\sin^{2}u$ +\end_inset + + y entonces +\begin_inset Formula $\sqrt{at^{2}+d}=[..]\sqrt{d}\cos u$ +\end_inset + + y +\begin_inset Formula $dt=\sqrt{-\frac{d}{a}}\cos u\,du$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Cambio de variable +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $\Omega$ +\end_inset + + un abierto y +\begin_inset Formula $T:\Omega\subseteq\mathbb{R}^{n}\rightarrow\mathbb{R}^{n}$ +\end_inset + +, llamamos +\series bold +jacobiano +\series default + de +\begin_inset Formula $T$ +\end_inset + + en +\begin_inset Formula $a\in\Omega$ +\end_inset + + a la matriz cuadrada asociada a +\begin_inset Formula $dT(a)$ +\end_inset + +, +\begin_inset Formula $\left(\frac{\partial T_{i}}{\partial x_{j}}(a)\right)_{ij}$ +\end_inset + +. + El +\series bold +teorema de cambio de variable +\series default + afirma que si +\begin_inset Formula $\Omega\subseteq\mathbb{R}^{n}$ +\end_inset + + es un abierto medible Jordan y +\begin_inset Formula $T:\Omega\rightarrow\mathbb{R}^{n}$ +\end_inset + + es una función inyectiva diferenciable con derivadas parciales continuas + tal que +\begin_inset Formula $\forall x\in\Omega,\det(dg(x))\neq0$ +\end_inset + +, si +\begin_inset Formula $f:T(\Omega)\rightarrow\mathbb{R}$ +\end_inset + + es integrable Riemann en +\begin_inset Formula $T(\Omega)$ +\end_inset + + entonces +\begin_inset Formula $f\circ T$ +\end_inset + + es integrable Riemann en +\begin_inset Formula $\Omega$ +\end_inset + + y +\begin_inset Formula +\[ +\int_{g(A)}f(\vec{x})d\vec{x}=\int f(T(\vec{y}))|\det(dg(\vec{y}))|d\vec{y} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Algunos cambios de variable importantes: +\end_layout + +\begin_layout Itemize + +\series bold +Coordenadas polares +\series default + en +\begin_inset Formula $\mathbb{R}^{2}$ +\end_inset + +: Los puntos vienen dados por la distancia al origen, y el ángulo entre + el eje OX y el vector desde el origen al punto. + La función de cambio de variable es +\begin_inset Formula $T(\rho,\theta)=(\rho\cos\theta,\rho\sin\theta)$ +\end_inset + +, inyectiva en cualquier banda de la forma +\begin_inset Formula $(0,+\infty)\times(a,b)$ +\end_inset + + con +\begin_inset Formula $b-a\leq2\pi$ +\end_inset + +, y +\begin_inset Formula +\[ +|dT(\rho,\theta)|=\left|\begin{array}{cc} +\cos\theta & -\rho\sin\theta\\ +\sin\theta & \rho\cos\theta +\end{array}\right|=\rho +\] + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +Coordenadas cilíndricas +\series default + en +\begin_inset Formula $\mathbb{R}^{3}$ +\end_inset + +: Los puntos vienen dados por las coordenadas de +\begin_inset Formula $(x,y)$ +\end_inset + + en polares y la coordenada +\begin_inset Formula $z$ +\end_inset + +. + La función de cambio es +\begin_inset Formula $T(\rho,\theta,z)=(\rho\cos\theta,\rho\sin\theta,z)$ +\end_inset + +, inyectiva en cualquier banda de la forma +\begin_inset Formula $(0,+\infty)\times(a,b)\times\mathbb{R}$ +\end_inset + + con +\begin_inset Formula $b-a\leq2\pi$ +\end_inset + +, y +\begin_inset Formula +\[ +|dT(\rho,\theta,z)|=\left|\begin{array}{ccc} +\cos\theta & -\rho\sin\theta & 0\\ +\sin\theta & \rho\cos\theta & 0\\ +0 & 0 & 1 +\end{array}\right|=\rho +\] + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +Coordenadas esféricas +\series default + o +\series bold +polares +\series default + en +\begin_inset Formula $\mathbb{R}^{3}$ +\end_inset + +: Los puntos vienen dados por la distancia al origen; el ángulo entre el + eje OX y la proyección en el plano XY del vector del origen al punto, y + el ángulo entre el eje OZ y el vector del origen al punto. + La función de cambio es +\begin_inset Formula $T(\rho,\theta,\varphi)=(\rho\cos\theta\sin\varphi,\rho\sin\theta\sin\varphi,\rho,\rho\cos\varphi)$ +\end_inset + +, inyectiva en cualquier banda de la forma +\begin_inset Formula $(0,+\infty)\times(a,b)\times(0,\pi)$ +\end_inset + + con +\begin_inset Formula $b-a\leq2\pi$ +\end_inset + +, y +\begin_inset Formula +\[ +|dT(\rho,\theta,\varphi)|=\left|\begin{array}{ccc} +\cos\theta\sin\varphi & -\rho\sin\theta\sin\varphi & \rho\cos\theta\cos\varphi\\ +\sin\theta\sin\varphi & \rho\cos\theta\sin\varphi & \rho\sin\theta\cos\varphi\\ +\cos\varphi & 0 & -\rho\sin\varphi +\end{array}\right|=\rho^{2}\sin\varphi +\] + +\end_inset + + +\end_layout + +\begin_layout Section +La integral de Riemann-Stieltjes +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $f,\varphi:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $P=\{a=t_{0}<\dots<t_{n}=b\}$ +\end_inset + + una partición del intervalo, llamamos +\series bold +suma de Riemann-Stieltjes +\series default + de +\begin_inset Formula $f$ +\end_inset + + con respecto a +\begin_inset Formula $\varphi$ +\end_inset + + asociada a la partición +\begin_inset Formula $P$ +\end_inset + + a cualquier suma de la forma +\begin_inset Formula +\[ +R(f,\varphi,P,\{\xi_{i}\})=\sum_{i=1}^{n}f(\xi_{i})(\varphi(t_{i})-\varphi(t_{i-1})) +\] + +\end_inset + +donde +\begin_inset Formula $\xi_{i}\in[t_{i-1},t_{i}]\forall i\in\{1,\dots,n\}$ +\end_inset + +. + Si existe el límite de estas sumas cuando +\begin_inset Formula $|P|:=\sup\{t_{i}-t_{i-1}\}_{i=1}^{n}$ +\end_inset + + tiende a 0 se dice que +\begin_inset Formula $f$ +\end_inset + + es +\series bold +integrable en el sentido de Riemann-Stieltjes +\series default + con respecto a +\begin_inset Formula $\varphi$ +\end_inset + + en el intervalo +\begin_inset Formula $[a,b]$ +\end_inset + +, y a este límite lo llamamos +\series bold +integral de Riemann-Stieltjes +\series default + de +\begin_inset Formula $f$ +\end_inset + + con respecto a +\begin_inset Formula $\varphi$ +\end_inset + + en +\begin_inset Formula $[a,b]$ +\end_inset + +, denotado como +\begin_inset Formula +\[ +\int_{a}^{b}f(x)d\varphi(x)=\int_{a}^{b}f\,d\varphi +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Vemos que si +\begin_inset Formula $\varphi$ +\end_inset + + es la identidad entonces la integral es exactamente la de Riemann. + Denotamos +\begin_inset Formula $\lambda_{\varphi}([a,b]):=\varphi(b)-\varphi(a)$ +\end_inset + +. + Para que esta medida sea positiva es necesario que +\begin_inset Formula $\varphi$ +\end_inset + + sea creciente. + Una función +\begin_inset Formula $\varphi:D\subseteq\mathbb{R}\rightarrow\mathbb{R}$ +\end_inset + + es +\series bold +continua por la derecha +\series default + en +\begin_inset Formula $c\in D$ +\end_inset + + si +\begin_inset Formula $\lim_{x\rightarrow c^{+}}\varphi(x)=\varphi(c)$ +\end_inset + +. + Si se quiere que +\begin_inset Formula $\lambda_{\varphi}$ +\end_inset + + se comporte bien al hacer uniones crecientes o intersecciones decrecientes + de intervalos, es necesario que +\begin_inset Formula $\varphi$ +\end_inset + + sea continua por la derecha. +\end_layout + +\begin_layout Standard +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann-Stieltjes con respecto a +\begin_inset Formula $\varphi$ +\end_inset + + en +\begin_inset Formula $[a,b]$ +\end_inset + + si y sólo si +\begin_inset Formula $\forall\varepsilon>0,\exists\delta>0:\forall P,Q\in[a,b],(|P|,|Q|<\delta\implies|R(f,\varphi,P)-R(f,\varphi,Q)|<\varepsilon)$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Dado +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, existe +\begin_inset Formula $\delta>0$ +\end_inset + + tal que si +\begin_inset Formula $|P|<\delta$ +\end_inset + + entonces +\begin_inset Formula $\left|R(f,\varphi,P)-\int_{a}^{b}f\,d\varphi\right|<\frac{\varepsilon}{2}$ +\end_inset + +, pero si +\begin_inset Formula $P$ +\end_inset + + y +\begin_inset Formula $Q$ +\end_inset + + son son particiones de +\begin_inset Formula $[a,b]$ +\end_inset + + con +\begin_inset Formula $|P|,|Q|<\delta$ +\end_inset + +, entonces +\begin_inset Formula +\[ +|R(f,\varphi,P)-R(f,\varphi,Q)|\leq\left|R(f,\varphi,P)-\int_{a}^{b}f\,d\varphi\right|+\left|\int_{a}^{b}f\,d\varphi-R(f,\varphi,Q)\right|<\frac{\varepsilon}{2}+\frac{\varepsilon}{2}=\varepsilon +\] + +\end_inset + + +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Dada una sucesión de particiones +\begin_inset Formula $(P_{k})_{k}$ +\end_inset + + de +\begin_inset Formula $[a,b]$ +\end_inset + + con +\begin_inset Formula $|P_{k}|\rightarrow0$ +\end_inset + +, por la condición se tiene que +\begin_inset Formula $(R(f,\varphi,P_{k}))_{k}$ +\end_inset + + es de Cauchy y por tanto converge hacia un +\begin_inset Formula $I\in\mathbb{R}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $[a,b]$ +\end_inset + + y +\begin_inset Formula $\varphi$ +\end_inset + + es monótona creciente definida en +\begin_inset Formula $[a,b]$ +\end_inset + +, entonces +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann-Stieltjes respecto a +\begin_inset Formula $\varphi$ +\end_inset + + en +\begin_inset Formula $[a,b]$ +\end_inset + +. + +\series bold +Demostración: +\series default + Al ser +\begin_inset Formula $f$ +\end_inset + + continua en un compacto, es uniformemente continua, luego para +\begin_inset Formula $\varepsilon>0$ +\end_inset + + existe +\begin_inset Formula $\delta>0$ +\end_inset + + tal que si +\begin_inset Formula $|x-y|<\delta$ +\end_inset + + entonces +\begin_inset Formula $|f(x)-f(y)|<\frac{\varepsilon}{\varphi(b)-\varphi(a)}$ +\end_inset + +. + Sean +\begin_inset Formula $P:=\{a=x_{0}<\dots<x_{n}=b\}$ +\end_inset + + y +\begin_inset Formula $Q:=\{a=y_{0}<\dots<y_{m}=b\}$ +\end_inset + + particiones con +\begin_inset Formula $|P|,|Q|<\frac{\delta}{2}$ +\end_inset + + y +\begin_inset Formula $P\lor Q=:\{a=t_{0}<\dots<t_{p}=b\}$ +\end_inset + +, podemos escribir las sumas de Riemann-Stieltjes asociadas a +\begin_inset Formula $P$ +\end_inset + + y +\begin_inset Formula $Q$ +\end_inset + + como +\begin_inset Formula $R(f,\varphi,P)=\sum_{i=1}^{n}f(\chi_{i})(\varphi(x_{i})-\varphi(x_{i-1}))=\sum_{j=1}^{p}f(\chi_{j}^{*})(\varphi(t_{j})-\varphi(t_{j-1}))$ +\end_inset + + y +\begin_inset Formula $R(f,\varphi,Q)=\sum_{k=1}^{m}f(\eta_{i})(\varphi(y_{k})-\varphi(y_{k-1}))=\sum_{j=1}^{p}f(\eta_{j}^{*})(\varphi(t_{j})-\varphi(t_{j-1}))$ +\end_inset + +, respectivamente, donde +\begin_inset Formula $\chi_{j}^{*}=\chi_{i}$ +\end_inset + + si +\begin_inset Formula $[t_{j-1},t_{j}]\subseteq[x_{i-1},x_{i}]$ +\end_inset + + y +\begin_inset Formula $\eta_{j}^{*}=\eta_{k}$ +\end_inset + + si +\begin_inset Formula $[t_{j-1},t_{j}]\subseteq[y_{k-1},y_{k}]$ +\end_inset + +. + De aquí, +\begin_inset Formula $|\chi_{j}^{*}-\eta_{j}^{*}|\leq|\chi_{j}^{*}-t_{j}|+|t_{j}-\eta_{j}^{*}|<\frac{\delta}{2}+\frac{\delta}{2}=\delta$ +\end_inset + +, y con esto +\begin_inset Formula +\begin{multline*} +|R(f,\varphi,P)-R(f,\varphi,Q)|\leq\sum_{j=1}^{p}|f(\chi_{j}^{*})-f(\eta_{j}^{*})|(\varphi(t_{j})-\varphi(t_{j-1}))<\\ +<\sum_{j=1}^{p}\frac{\varepsilon}{\varphi(b)-\varphi(a)}(\varphi(t_{j})-\varphi(t_{j-1}))=\frac{\varepsilon}{\varphi(b)-\varphi(a)}(\varphi(b)-\varphi(a))=\varepsilon +\end{multline*} + +\end_inset + +Por tanto si +\begin_inset Formula $f$ +\end_inset + + es continua en +\begin_inset Formula $[a,b]$ +\end_inset + + y +\begin_inset Formula $\varphi$ +\end_inset + + es una función creciente de clase +\begin_inset Formula ${\cal C}^{1}$ +\end_inset + + en +\begin_inset Formula $[a,b]$ +\end_inset + +, se cumple que +\begin_inset Formula +\[ +\int_{a}^{b}f(x)d\varphi(x)=\int_{a}^{b}f(x)\varphi'(x)dx +\] + +\end_inset + + Propiedades: Dadas +\begin_inset Formula $f,g:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + integrables Riemann-Stieltjes en +\begin_inset Formula $[a,b]$ +\end_inset + + respecto a +\begin_inset Formula $\varphi,\psi:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $\lambda\in\mathbb{R}$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\int_{a}^{b}(\lambda f)d\varphi=\int_{a}^{b}f\,d(\lambda\varphi)=\lambda\int_{a}^{b}f\,d\varphi$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\int_{a}^{b}(f+g)d\varphi=\int_{a}^{b}f\,d\varphi+\int_{a}^{b}g\,d\varphi$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f(t)\geq g(t)\forall t\in[a,b]$ +\end_inset + + y +\begin_inset Formula $\varphi$ +\end_inset + + es monótona creciente, +\begin_inset Formula $\int_{a}^{b}f\,d\varphi\geq\int_{a}^{b}g\,d\varphi$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\int_{a}^{b}f\,d(\varphi+\psi)=\int_{a}^{b}f\,d\varphi+\int_{a}^{b}f\,d\psi$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Para +\begin_inset Formula $c\in(a,b)$ +\end_inset + +, +\begin_inset Formula $\int_{a}^{c}f\,d\varphi+\int_{c}^{b}f\,d\varphi=\int_{a}^{b}f\,d\varphi$ +\end_inset + +. +\end_layout + +\begin_layout Standard +La +\series bold +integración por partes +\series default + en Riemann-Stieltjes se basa en que, si existe +\begin_inset Formula $\int_{a}^{b}f\,d\varphi$ +\end_inset + + entonces también existe +\begin_inset Formula $\int_{a}^{b}\varphi\,df$ +\end_inset + + y +\begin_inset Formula +\[ +\int_{a}^{b}\varphi\,df=(f(b)\varphi(b)-f(a)\varphi(a))-\int_{a}^{b}f\,d\varphi +\] + +\end_inset + + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $P=\{a=t_{0}<\dots<t_{n}=b\}$ +\end_inset + + una partición de +\begin_inset Formula $[a,b]$ +\end_inset + + y +\begin_inset Formula $\xi_{i}\in[t_{i-1},t_{i}]\forall i\in\{1,\dots,n\}$ +\end_inset + +. + Sea +\begin_inset Formula $Q=\{a=\xi_{0}<\dots<\xi_{n}<\xi_{n+1}=b\}$ +\end_inset + +, +\begin_inset Formula $x_{1}:=t_{0}=a\in[\xi_{0},\xi_{1}]$ +\end_inset + +, +\begin_inset Formula $x_{i}:=t_{i-1}\in[\xi_{i-1},\xi_{i}]\forall i\in\{1,\dots,n\}$ +\end_inset + + y +\begin_inset Formula $x_{n+1}:=t_{n}=b\in[\xi_{n},\xi_{n+1}]$ +\end_inset + +. + Entonces +\begin_inset Formula +\begin{multline*} +R(\varphi,f,P,\{\xi_{i}\})=\sum_{i=1}^{n}\varphi(\xi_{i})(f(t_{i})-f(t_{i-1}))=\sum_{i=1}^{n}f(t_{i})\varphi(\xi_{i})-\sum_{i=1}^{n}f(t_{i-1})\varphi(\xi_{i})=\\ +=\sum_{i=1}^{n-1}f(t_{i})\varphi(\xi_{i})+f(b)\varphi(b)-f(a)\varphi(\xi_{1})-\sum_{i=2}^{n}f(t_{i-1})\varphi(\xi_{i})=\\ +=f(b)\varphi(b)-f(a)\varphi(a)-f(a)(\varphi(\xi_{1})-\varphi(a))+\sum_{i=2}^{n}f(x_{i})\varphi(\xi_{i-1})-\sum_{i=2}^{n}f(x_{i})\varphi(\xi_{i})=\\ +=f(b)\varphi(b)-f(a)\varphi(a)-\sum_{i=1}^{n}f(x_{i})(\varphi(\xi_{i})-\varphi(\xi_{i-1}))=f(b)\varphi(b)-f(a)\varphi(a)-R(f,\varphi,Q,\{x_{i}\}) +\end{multline*} + +\end_inset + +Basta pues tomar límites en esta última expresión cuando +\begin_inset Formula $|Q|\leq2|P|\rightarrow0$ +\end_inset + +. +\end_layout + +\end_body +\end_document diff --git a/fvv2/n3.lyx b/fvv2/n3.lyx new file mode 100644 index 0000000..a35f67f --- /dev/null +++ b/fvv2/n3.lyx @@ -0,0 +1,3763 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 0 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Funciones medibles +\end_layout + +\begin_layout Standard +Una aplicación +\begin_inset Formula $f:\Omega\rightarrow\Omega'$ +\end_inset + + es +\series bold + +\begin_inset Formula $(\Sigma,\Sigma')$ +\end_inset + +-medible +\series default + si +\begin_inset Formula $\forall E'\in\Sigma',f^{-1}(E')\in\Sigma$ +\end_inset + +. + Cuando +\begin_inset Formula $\Omega'$ +\end_inset + + es un espacio topológico, decimos que +\begin_inset Formula $f$ +\end_inset + + es +\series bold + +\begin_inset Formula $\Sigma$ +\end_inset + +-medible +\series default + si es +\begin_inset Formula $(\Sigma,{\cal B}(\Omega'))$ +\end_inset + +-medible. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $\Sigma'=:\sigma({\cal D})$ +\end_inset + +, +\begin_inset Formula $f$ +\end_inset + + es +\begin_inset Formula $(\Sigma,\Sigma')$ +\end_inset + +-medible si y sólo si +\begin_inset Formula $\forall D\in{\cal D},f^{-1}(D)\in\Sigma$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Obvio. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Sea +\begin_inset Formula ${\cal A}:=\{E\in\Sigma':f^{-1}(E)\in\Sigma\}$ +\end_inset + +, vemos que +\begin_inset Formula ${\cal A}$ +\end_inset + + es una +\begin_inset Formula $\sigma$ +\end_inset + +-álgebra que contiene a +\begin_inset Formula ${\cal D}$ +\end_inset + +, pues +\begin_inset Formula $f^{-1}(E^{\complement})=\Omega\backslash f^{-1}(E)$ +\end_inset + + y +\begin_inset Formula $f^{-1}(\bigcup_{k=1}^{\infty}E_{k})=\bigcup_{k=1}^{\infty}f^{-1}(E_{k})$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $T:=(X,{\cal T})$ +\end_inset + + y +\begin_inset Formula $T':=(X,{\cal T}')$ +\end_inset + + espacios topológicos, toda función +\begin_inset Formula $f:T\rightarrow T'$ +\end_inset + + continua es +\begin_inset Formula $({\cal B}(T),{\cal B}(T'))$ +\end_inset + +-medible, pues +\begin_inset Formula ${\cal B}(T')=\sigma({\cal T}')$ +\end_inset + + y la continuidad asegura que +\begin_inset Formula $\forall A\in{\cal T}',f^{-1}(A)\in{\cal T}\subseteq{\cal B}(T)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Composición de medibles: +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f:\Omega\rightarrow\Omega'$ +\end_inset + + y +\begin_inset Formula $g:f(\Omega)\rightarrow\Omega''$ +\end_inset + + son medibles, +\begin_inset Formula $g\circ f$ +\end_inset + + también lo es. + En particular, si +\begin_inset Formula $T$ +\end_inset + + y +\begin_inset Formula $T'$ +\end_inset + + son espacios topológicos, +\begin_inset Formula $f:\Omega\rightarrow T$ +\end_inset + + es +\begin_inset Formula $(\Sigma,{\cal B}(T))$ +\end_inset + +-medible y +\begin_inset Formula $g:T\rightarrow T'$ +\end_inset + + es continua, +\begin_inset Formula $g\circ f$ +\end_inset + + es +\begin_inset Formula $(\Sigma,{\cal B}(T'))$ +\end_inset + +-medible. +\end_layout + +\begin_deeper +\begin_layout Standard +Para +\begin_inset Formula $E\in\Sigma''$ +\end_inset + +, +\begin_inset Formula $g^{-1}(E)\in\Sigma'$ +\end_inset + + por ser +\begin_inset Formula $g$ +\end_inset + + medible y +\begin_inset Formula $f^{-1}(g^{-1}(E))=(g\circ f)^{-1}(E)\in\Sigma$ +\end_inset + + por ser +\begin_inset Formula $g$ +\end_inset + + medible, luego +\begin_inset Formula $g\circ f$ +\end_inset + + es medible. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $u_{1},\dots u_{n}:\Omega\rightarrow\mathbb{R}$ +\end_inset + + son medibles, +\begin_inset Formula $\varphi:\Omega\rightarrow\mathbb{R}^{n}$ +\end_inset + + dada por +\begin_inset Formula $\varphi(\omega):=(u_{1}(\omega),\dots,u_{n}(\omega))$ +\end_inset + + es medible. +\end_layout + +\begin_deeper +\begin_layout Standard +Un abierto +\begin_inset Formula $G\subseteq\mathbb{R}^{n}$ +\end_inset + + se puede expresar como unión numerable de cubos diádicos disjuntos, y como + estos están en +\begin_inset Formula ${\cal B}(\mathbb{R}^{n})$ +\end_inset + +, lo generan. + Si +\begin_inset Formula $[a,b)$ +\end_inset + + es uno de estos cubos, +\begin_inset Formula +\[ +\varphi^{-1}([a,b))=\bigcap_{i=1}^{n}u_{i}^{-1}([a_{i},b_{i}))\in\Sigma +\] + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +\begin_inset Formula $f:\Omega\rightarrow\mathbb{C}$ +\end_inset + + es medible si y sólo si lo son +\begin_inset Formula $\omega\mapsto\text{Re}(f(\omega))$ +\end_inset + + e +\begin_inset Formula $\omega\mapsto\text{Im}(f(\omega))$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + + Se deriva de que +\begin_inset Formula $x\mapsto\text{Re}(x)$ +\end_inset + + y +\begin_inset Formula $x\mapsto\text{Im}(x)$ +\end_inset + + son continuas. +\end_layout + +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Sea +\begin_inset Formula $\pi:\mathbb{R}^{2}\rightarrow\mathbb{C}$ +\end_inset + + el isomorfismo canónico, como +\begin_inset Formula $\pi$ +\end_inset + + es continua y +\begin_inset Formula $f(\omega)=\pi(\text{Re}(f(\omega)),\text{Im}(f(\omega)))$ +\end_inset + +, el punto anterior nos da que +\begin_inset Formula $f$ +\end_inset + + es medible. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f,g:\Omega\rightarrow\mathbb{C}$ +\end_inset + + son medibles, +\begin_inset Formula $f+g$ +\end_inset + +, +\begin_inset Formula $fg$ +\end_inset + + y +\begin_inset Formula $\frac{f}{g}\chi_{\{g\neq0\}}$ +\end_inset + + también lo son. +\end_layout + +\begin_deeper +\begin_layout Standard +Se debe a que +\begin_inset Formula $(x,y)\mapsto x+y$ +\end_inset + +, +\begin_inset Formula $(x,y)\mapsto xy$ +\end_inset + + son continuas. + Para el cociente, si +\begin_inset Formula $\{g=0\}=\emptyset$ +\end_inset + +, la continuidad de +\begin_inset Formula $(x,y)\mapsto\frac{x}{y}$ +\end_inset + + cuando +\begin_inset Formula $y\neq0$ +\end_inset + + implica que +\begin_inset Formula $\frac{f}{g}$ +\end_inset + + es medible. + En el caso general, sea +\begin_inset Formula $S\subseteq\mathbb{C}$ +\end_inset + + medible, +\begin_inset Formula +\begin{multline*} +\left(\frac{f}{g}\chi_{\{g\neq0\}}\right)^{-1}(S)=\left(\left(\frac{f}{g}\chi_{\{g\neq0\}}\right)^{-1}(S)\cap\{g\neq0\}\right)\cup\left(\left(\frac{f}{g}\chi_{\{g\neq0\}}\right)^{-1}(S)\cap\{g=0\}\right)\\ +=\left(\frac{f}{g}\chi_{\{g\neq0\}}\right)^{-1}(S\backslash\{0\}))\cup\left(\frac{f}{g}\chi_{\{g\neq0\}}\right)^{-1}(S\cap\{0\}) +\end{multline*} + +\end_inset + +El primer elemento de esta última unión no contiene elementos de +\begin_inset Formula $\{g=0\}$ +\end_inset + +, pues para todos ellos +\begin_inset Formula $\frac{f}{g}\chi_{\{g\neq0\}}(\omega)\neq0$ +\end_inset + +, por tanto el conjunto es igual a +\begin_inset Formula $\left(\frac{f}{g}\right)^{-1}(S\backslash\{0\})$ +\end_inset + +, que es medible. + El segundo elemento es +\begin_inset Formula $\emptyset$ +\end_inset + + si +\begin_inset Formula $0\notin S$ +\end_inset + + o +\begin_inset Formula $\{f=0\}\cup\{g=0\}$ +\end_inset + + si +\begin_inset Formula $0\in S$ +\end_inset + +; en cualquier caso es medible. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f:\Omega\rightarrow\mathbb{C}$ +\end_inset + + es medible, +\begin_inset Formula $|f|$ +\end_inset + + también lo es y existe +\begin_inset Formula $\alpha:\Omega\rightarrow\mathbb{C}$ +\end_inset + + tal que +\begin_inset Formula $\forall\omega\in\Omega,|\alpha(\omega)|=1$ +\end_inset + + y +\begin_inset Formula $|f|=\alpha f$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset Formula $|f|$ +\end_inset + + es medible por ser +\begin_inset Formula $\omega\mapsto\sqrt{\text{Re}(f(\omega))^{2}+\text{Im}(f(\omega))^{2}}$ +\end_inset + +, al igual que +\begin_inset Formula $\alpha$ +\end_inset + + dada por +\begin_inset Formula $\alpha(\omega)=\chi_{\{f=0\}}+\frac{f}{|f|}\chi_{\{f\neq0\}}$ +\end_inset + +, que cumple las condiciones. +\end_layout + +\end_deeper +\begin_layout Standard +Una función +\begin_inset Formula $f:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + es +\series bold + +\begin_inset Formula $\Sigma$ +\end_inset + +-medible +\series default + si es +\begin_inset Formula $(\Sigma,\Sigma':=\sigma(\{(a,+\infty]\}_{a\in\mathbb{R}}))$ +\end_inset + +-medible. + Todos los cubos diádicos +\begin_inset Formula $[a,b)\subseteq\mathbb{R}$ +\end_inset + + están en +\begin_inset Formula $\Sigma'$ +\end_inset + +, luego también están todos los abiertos de +\begin_inset Formula $\mathbb{R}$ +\end_inset + + como unión numerable de cubos diádicos y por tanto +\begin_inset Formula ${\cal B}(\mathbb{R})\subseteq\Sigma'$ +\end_inset + +. + Adoptamos el convenio +\begin_inset Formula $\pm\infty\cdot0=0\cdot\pm\infty=0$ +\end_inset + + y la notación +\begin_inset Formula $\{f\bullet a\}:=\{\omega\in\Omega:f(\omega)\bullet a\}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $f:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + +, si tenemos que +\begin_inset Formula +\begin{multline*} +f\text{ es medible}\iff\forall a\in\mathbb{R},\{f>a\}\in\Sigma\iff\forall a\in\mathbb{R},\{f\geq a\}\in\Sigma\\ +\iff\forall a\in\mathbb{R},\{f<a\}\in\Sigma\iff\forall a\in\mathbb{R},\{f\leq a\}\in\Sigma +\end{multline*} + +\end_inset + + +\end_layout + +\begin_layout Description +\begin_inset Formula $1\implies3]$ +\end_inset + + Como +\begin_inset Formula $(a,+\infty]$ +\end_inset + + es medible, +\begin_inset Formula $f^{-1}((a,+\infty])=\{f>a\}$ +\end_inset + + también lo es. +\end_layout + +\begin_layout Description +\begin_inset Formula $3\implies1]$ +\end_inset + + Para cada elemento de +\begin_inset Formula $\{(a,+\infty]\}_{a\in\mathbb{R}}$ +\end_inset + +, +\begin_inset Formula $f^{-1}((a,+\infty])=\{f>a\}\in\Sigma$ +\end_inset + +, y por tanto +\begin_inset Formula $f$ +\end_inset + + es medible. +\end_layout + +\begin_layout Description +\begin_inset Formula $2\implies3]$ +\end_inset + + +\begin_inset Formula $\{f\geq a\}=\bigcap_{k=1}^{\infty}\{f>a-\frac{1}{k}\}$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $3\implies4]$ +\end_inset + + +\begin_inset Formula $\{f<a\}=\Omega\backslash\{f\geq a\}$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $4\implies5]$ +\end_inset + + +\begin_inset Formula $\{f\leq a\}=\bigcap_{k=1}^{\infty}\{f<a+\frac{1}{k}\}$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $5\implies2]$ +\end_inset + + +\begin_inset Formula $\{f>a\}=\Omega\backslash\{f\leq a\}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Además, si +\begin_inset Formula $f$ +\end_inset + + es medible, +\begin_inset Formula $\{f>-\infty\}$ +\end_inset + +, +\begin_inset Formula $\{f<+\infty\}$ +\end_inset + +, +\begin_inset Formula $\{f=-\infty\}$ +\end_inset + +, +\begin_inset Formula $\{f=+\infty\}$ +\end_inset + +, +\begin_inset Formula $\{a\leq f\leq b\}$ +\end_inset + +, +\begin_inset Formula $\{f=a\}$ +\end_inset + +, etc. + son medibles, y +\begin_inset Formula $f$ +\end_inset + + es medible si y sólo si +\begin_inset Formula $\{f=-\infty\}$ +\end_inset + + es medible y para +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $\{a<f<+\infty\}$ +\end_inset + + es medible. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula $\{a<f<+\infty\}=\{f>a\}\cap\bigcup_{k=1}^{\infty}\{f<k\}$ +\end_inset + +, +\begin_inset Formula $\{f=-\infty\}=\bigcap_{k=1}^{\infty}\{f<-k\}$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula $\{f>a\}=\{a<f<+\infty\}\cup\left(\{f=-\infty\}\cup\bigcup_{k=1}^{\infty}\{-k<f<+\infty\}\right)^{\complement}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Dado un subconjunto denso +\begin_inset Formula $A\subseteq[-\infty,+\infty]$ +\end_inset + +, si +\begin_inset Formula $\{f>a\}$ +\end_inset + + es medible para todo +\begin_inset Formula $a\in A$ +\end_inset + +, +\begin_inset Formula $f$ +\end_inset + + es medible. + +\series bold +Demostración: +\series default + Para +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, existe una sucesión +\begin_inset Formula $(a_{k})_{k}$ +\end_inset + + de elementos de +\begin_inset Formula $A$ +\end_inset + + que converge a +\begin_inset Formula $a$ +\end_inset + + con +\begin_inset Formula $a_{k}>a\forall k\in\mathbb{N}$ +\end_inset + +, y entonces +\begin_inset Formula $\{f>a\}=\bigcup\{f>a_{k}\}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Formula $f:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + es medible si y sólo si para todo abierto +\begin_inset Formula $G\subseteq\mathbb{R}^{n}$ +\end_inset + +, +\begin_inset Formula $f^{-1}(G)$ +\end_inset + + es medible. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +Los abiertos de +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + están en +\begin_inset Formula $\sigma(\{(a,+\infty]\}_{a\in\mathbb{R}})$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Para todo +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $f^{-1}((a,+\infty))=\{a<f<+\infty\}$ +\end_inset + + es medible, luego +\begin_inset Formula $f$ +\end_inset + + lo es. +\end_layout + +\begin_layout Standard +Una propiedad se cumple +\series bold +en casi todo punto +\series default + de +\begin_inset Formula $\Omega$ +\end_inset + + si el conjunto de puntos +\begin_inset Formula $\omega\in\Omega$ +\end_inset + + en los que no se cumple tiene medida cero. +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f,g:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + son medibles, +\begin_inset Formula $\{f>g\}$ +\end_inset + + también lo es. +\end_layout + +\begin_deeper +\begin_layout Standard +Si +\begin_inset Formula $\{r_{k}\}_{k\in\mathbb{N}}=\mathbb{Q}$ +\end_inset + +, entonces +\begin_inset Formula $\{f>g\}=\bigcup_{k=1}^{\infty}\{f>r_{k}>g\}=\bigcup_{k=1}^{\infty}(\{f>r_{k}\}\cap\{g<r_{k}\})$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f$ +\end_inset + + es medible y +\begin_inset Formula $g=f$ +\end_inset + + en casi todo punto, +\begin_inset Formula $g$ +\end_inset + + es medible y +\begin_inset Formula $\mu(\{g>a\})=\mu(\{f>a\})$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +Si +\begin_inset Formula $Z:=\{f\neq g\}$ +\end_inset + +, +\begin_inset Formula $\{g>a\}\cup Z=\{f>a\}\cup Z$ +\end_inset + +, luego si +\begin_inset Formula $f$ +\end_inset + + es medible, +\begin_inset Formula $\{g>a\}\cup Z$ +\end_inset + + lo es y como difiere de +\begin_inset Formula $\{g>a\}$ +\end_inset + + por un conjunto de medida cero, +\begin_inset Formula $g$ +\end_inset + + es medible. + Por último, +\begin_inset Formula $\mu(\{g>a\})=\mu(\{g>a\}\cup Z)=\mu(\{f>a\}\cup Z)=\mu(\{f>a\})$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f$ +\end_inset + + es medible y +\begin_inset Formula $\lambda\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $f+\lambda$ +\end_inset + + y +\begin_inset Formula $\lambda f$ +\end_inset + + son medibles. +\end_layout + +\begin_deeper +\begin_layout Standard +Para +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $\{f+\lambda>a\}=\{f>a-\lambda\}$ +\end_inset + + y +\begin_inset Formula +\[ +\{\lambda f>a\}=\begin{cases} +f>\frac{a}{\lambda} & \text{si }\lambda>0\\ +f<\frac{a}{\lambda} & \text{si }\lambda<0\\ +\Omega & \text{si }\lambda=0\land a<0\\ +\emptyset & \text{si }\lambda=0\land a\geq0 +\end{cases} +\] + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f$ +\end_inset + + y +\begin_inset Formula $g$ +\end_inset + + son medibles, también lo es +\begin_inset Formula $f+g$ +\end_inset + +. + Esto significa que las combinaciones lineales +\begin_inset Formula $\lambda_{1}f_{1}+\dots+\lambda_{n}f_{n}$ +\end_inset + + de funciones medibles +\begin_inset Formula $f_{1},\dots,f_{n}$ +\end_inset + + son medibles, por lo que el conjunto de funciones +\begin_inset Formula $\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + +\begin_inset Formula $\Sigma$ +\end_inset + +-medibles es un espacio vectorial. +\end_layout + +\begin_deeper +\begin_layout Standard +Para +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, si +\begin_inset Formula $g$ +\end_inset + + es medible, también lo es +\begin_inset Formula $a-g$ +\end_inset + +, y entonces +\begin_inset Formula $\{f+g>a\}=\{f>a-g\}$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Para +\begin_inset Formula $f,g:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + medibles, +\begin_inset Formula $fg$ +\end_inset + + es medible y, si +\begin_inset Formula $g\neq0$ +\end_inset + + en casi todo punto, +\begin_inset Formula $f/g$ +\end_inset + + (definida en casi todo punto) es medible. +\end_layout + +\begin_deeper +\begin_layout Standard +Si +\begin_inset Formula $f$ +\end_inset + + es medible, es fácil ver que +\begin_inset Formula $f^{2}=|f|^{2}$ +\end_inset + + también lo es. + Para valores finitos, +\begin_inset Formula $fg=\frac{(f+g)^{2}-(f-g)^{2}}{4}$ +\end_inset + +. + Si alguna de las funciones puede tener valores infinitos, vemos que +\begin_inset Formula $\{f=+\infty\}$ +\end_inset + +, +\begin_inset Formula $\{f=-\infty\}$ +\end_inset + +, +\begin_inset Formula $\{f=0\}$ +\end_inset + +, +\begin_inset Formula $\{g=+\infty\}$ +\end_inset + +, etc. + son medibles y por tanto +\begin_inset Formula $\{fg=0\}=\{f=0\}\cup\{g=0\}$ +\end_inset + +, +\begin_inset Formula $\{fg=+\infty\}$ +\end_inset + + y +\begin_inset Formula $\{fg=-\infty\}$ +\end_inset + + también lo son. + Para +\begin_inset Formula $f/g$ +\end_inset + +, basta ver que +\begin_inset Formula $1/g$ +\end_inset + + es medible, pero dado +\begin_inset Formula $a\in\mathbb{R}$ +\end_inset + +, +\begin_inset Formula +\[ +\{1/g>a\}=\begin{cases} +\{0<g<\frac{1}{a}\} & \text{si }a>0\\ +\{0<g<+\infty\} & \text{si }a=0\\ +\{g<\frac{1}{a}\}\cup\{0<g<+\infty\} & \text{si }a<0 +\end{cases} +\] + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +Dada una sucesión de funciones medibles +\begin_inset Formula $(f_{k}:\Omega\rightarrow\mathbb{R})_{k}$ +\end_inset + +, las funciones +\begin_inset Formula $\sup_{k}f_{k}(\omega)$ +\end_inset + +, +\begin_inset Formula $\inf_{k}f_{k}(\omega)$ +\end_inset + +, +\begin_inset Formula $\limsup_{k}f_{k}(\omega)$ +\end_inset + + y +\begin_inset Formula $\liminf_{k}f_{k}(\omega)$ +\end_inset + + son medibles. + De aquí que, si +\begin_inset Formula $E$ +\end_inset + + es el conjunto de puntos +\begin_inset Formula $\omega\in\Omega$ +\end_inset + + en los que +\begin_inset Formula $(f_{n}(\omega))_{n}$ +\end_inset + + converge, entonces el límite puntual de +\begin_inset Formula $(f_{n}|_{E})_{n}$ +\end_inset + + es medible y +\begin_inset Formula $E$ +\end_inset + + también lo es. +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Basta probarlo para el supremo, pues +\begin_inset Formula $\inf_{k}f_{k}(x)=-\sup_{k}(-f_{k})$ +\end_inset + +, +\begin_inset Formula $\limsup_{n}f_{n}(\omega)=\inf_{m\in\mathbb{N}}\{\sup_{k\geq m}\{f_{k}(\omega)\}\}$ +\end_inset + + y +\begin_inset Formula $\liminf_{n}f_{n}(\omega)=\sup_{m\in\mathbb{N}}\{\inf_{k\geq m}\{f_{k}(\omega)\}\}$ +\end_inset + +, pero +\begin_inset Formula $\{\sup_{k}f_{k}>a\}=\bigcup_{k}\{f_{k}>a\}$ +\end_inset + +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Section +Funciones simples +\end_layout + +\begin_layout Standard +Una +\series bold +función simple +\series default + es aquella cuya imagen es finita. + Si +\begin_inset Formula $f:\Omega\rightarrow\Omega'$ +\end_inset + + es una función simple que toma valores distintos +\begin_inset Formula $a_{1},\dots,a_{n}$ +\end_inset + + en conjuntos disjuntos respectivos +\begin_inset Formula $E_{1},\dots,E_{n}$ +\end_inset + +, su +\series bold +forma canónica +\series default + es +\begin_inset Formula +\[ +f=\sum_{k=1}^{n}a_{k}\chi_{E_{k}} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Claramente +\begin_inset Formula $\chi_{E}$ +\end_inset + + es medible si y sólo si +\begin_inset Formula $E$ +\end_inset + + lo es, por lo que +\begin_inset Formula $f$ +\end_inset + + es medible si y sólo si lo son +\begin_inset Formula $E_{1},\dots,E_{n}$ +\end_inset + +. + Algunos autores sólo llaman funciones simples a las que además son medibles. + Como +\series bold +teorema +\series default +: +\end_layout + +\begin_layout Enumerate +Toda función +\begin_inset Formula $f:\Omega\rightarrow[0,+\infty]$ +\end_inset + + es límite de una sucesión creciente de funciones simples. +\end_layout + +\begin_deeper +\begin_layout Standard +Para +\begin_inset Formula $k\in\mathbb{N}$ +\end_inset + +, subdividimos +\begin_inset Formula $[0,k]$ +\end_inset + + en subintervalos +\begin_inset Formula $\{[(j-1)2^{-k},j2^{-k}]\}_{j\in\{1,\dots,k2^{k}\}}$ +\end_inset + + y definimos +\begin_inset Formula +\[ +f_{k}(x):=\begin{cases} +\frac{j-1}{2^{k}} & \text{si }\frac{j-1}{2^{k}}\leq f(x)<\frac{j}{2^{k}},j\in\{1,\dots,k2^{k}\}\\ +k & \text{si }f(x)\geq k +\end{cases} +\] + +\end_inset + +Cada +\begin_inset Formula $f_{k}$ +\end_inset + + es una función simple definida en todo +\begin_inset Formula $\Omega$ +\end_inset + +, +\begin_inset Formula $f_{k}\leq f_{k+1}$ +\end_inset + + porque al pasar de +\begin_inset Formula $f_{k}$ +\end_inset + + a +\begin_inset Formula $f_{k+1}$ +\end_inset + + dividimos los intervalos por la mitad y permitimos valores mayores en la + imagen, y +\begin_inset Formula $f_{k}\rightarrow f$ +\end_inset + + porque para un valor +\begin_inset Formula $k$ +\end_inset + + lo suficientemente grande, +\begin_inset Formula $0\leq f(x)-f_{k}(x)\leq2^{-k}$ +\end_inset + + si +\begin_inset Formula $f(x)$ +\end_inset + + es finito y +\begin_inset Formula $f_{k}=k\rightarrow+\infty$ +\end_inset + + si +\begin_inset Formula $f(x)=+\infty$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Toda función +\begin_inset Formula $f:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + es límite de una sucesión de funciones simples. +\end_layout + +\begin_deeper +\begin_layout Standard +Basta aplicar lo anterior a +\begin_inset Formula $f^{+}:=\max\{0,f\}$ +\end_inset + + y +\begin_inset Formula $f^{-}:=-\min\{0,f\}$ +\end_inset + + y restar las sucesiones resultantes. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si la función +\begin_inset Formula $f$ +\end_inset + + en los dos apartados anteriores es medible, podemos hacer que las +\begin_inset Formula $f_{k}$ +\end_inset + + también lo sean. +\end_layout + +\begin_deeper +\begin_layout Standard +En el primer apartado, +\begin_inset Formula +\[ +f_{k}=\sum_{j=1}^{k2^{k}}\frac{j-1}{2^{k}}\chi_{\left\{ \frac{j-1}{2^{k}}\leq f<\frac{j}{2^{k}}\right\} }+k\chi_{\{f\geq k\}} +\] + +\end_inset + +que es medible porque todos los conjuntos involucrados lo son, y en el segundo + basta considerar +\begin_inset Formula $f^{+}$ +\end_inset + + y +\begin_inset Formula $f^{-}$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Standard +Si +\begin_inset Formula $f$ +\end_inset + + es acotada, las funciones simples dadas convergerán uniformemente a +\begin_inset Formula $f$ +\end_inset + +. +\end_layout + +\begin_layout Section +Integrales en funciones positivas +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $(\Omega,\Sigma,\mu)$ +\end_inset + + un espacio de medida, +\begin_inset Formula ${\cal S}(\Omega)$ +\end_inset + + el espacio vectorial de las funciones simples +\begin_inset Formula $\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + y +\begin_inset Formula ${\cal S}(\Omega)^{+}:=\{h\in{\cal S}(\Omega):h\geq0\}$ +\end_inset + +, llamamos +\series bold +integral +\series default + de una función simple +\begin_inset Formula $h:=\sum_{k=1}^{n}a_{k}\chi_{E_{k}}\in{\cal S}(\Omega)^{+}$ +\end_inset + + como +\begin_inset Formula +\[ +\int h\,d\mu:=\sum_{k=1}^{n}a_{k}\mu(E_{k}) +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f,g\in{\cal S}(\Omega)^{+}$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $\alpha\in[0,+\infty)$ +\end_inset + +, +\begin_inset Formula $\int\alpha f\,d\mu=\alpha\int f\,d\mu$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +Supongamos +\begin_inset Formula $f=:\sum_{i=1}^{n}a_{i}\chi_{A_{i}}$ +\end_inset + + y +\begin_inset Formula $g=:\sum_{j=1}^{m}b_{j}\chi_{B_{j}}$ +\end_inset + +. + Entonces +\begin_inset Formula $\alpha f=\sum_{i=1}^{n}\alpha a_{i}\chi_{A_{i}}$ +\end_inset + + y +\begin_inset Formula +\[ +\int\alpha f\,d\mu=\sum_{i=1}^{n}\alpha a_{i}\mu(A_{i})=\alpha\sum_{i=1}^{n}a_{i}\mu(A_{i})=\alpha\int f\,d\mu +\] + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +\begin_inset Formula $\int(f+g)d\mu=\int f\,d\mu+\int g\,d\mu$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +Sean +\begin_inset Formula $C:=\{c_{1},\dots,c_{r}\}=\{a_{i}+b_{j}\}_{i\in\{1,\dots,n\},j\in\{1,\dots,m\}}$ +\end_inset + +, y +\begin_inset Formula $C_{k}:=\bigcup_{a_{i}+b_{j}=c_{k}}(A_{i}\cap B_{j})$ +\end_inset + + para cada +\begin_inset Formula $c_{k}$ +\end_inset + +, tenemos +\begin_inset Formula $f+g=\sum_{k=1}^{r}c_{k}\chi_{C_{k}}$ +\end_inset + +. + Entonces +\begin_inset Formula +\begin{multline*} +\int f+g\,d\mu=\sum_{k=1}^{r}c_{k}\mu(C_{k})=\sum_{k=1}^{r}c_{k}\mu(C_{k})=\sum_{k=1}^{r}c_{k}\left(\sum_{a_{i}+b_{j}=c_{k}}\mu(A_{i}\cap B_{j})\right)=\\ +=\sum_{k=1}^{r}\sum_{a_{i}+b_{j}=c_{k}}(a_{i}+b_{j})\mu(A_{i}\cap B_{j})=\sum_{i=1}^{n}\sum_{j=1}^{m}((a_{i}+b_{j})\mu(A_{i}\cap B_{j})=\\ +=\sum_{i=1}^{n}a_{i}\left(\sum_{j=1}^{m}\mu(A_{i}\cap B_{j})\right)+\sum_{j=1}^{m}b_{j}\left(\sum_{i=1}^{n}\mu(A_{i}\cap B_{j})\right)=\sum_{i=1}^{n}a_{i}\mu(A_{i})+\sum_{j=1}^{m}b_{i}\mu(B_{j}) +\end{multline*} + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f\leq g$ +\end_inset + + entonces +\begin_inset Formula $\int f\,d\mu\leq\int g\,d\mu$ +\end_inset + +. +\begin_inset Formula +\[ +\int g\,d\mu=\int f\,d\mu+\int(g-f)d\mu\geq\int f\,d\mu +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\nu:\Sigma\rightarrow[0,+\infty]$ +\end_inset + + dada por +\begin_inset Formula $\nu(E):=\int f\chi_{E}d\mu$ +\end_inset + + es una medida finita. +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset Formula $\nu(E)=\sum_{i=1}^{n}a_{i}\mu(A_{i}\cap E)$ +\end_inset + +, y como las aplicaciones +\begin_inset Formula $\nu_{i}(E)=\mu(E\cap A_{i})$ +\end_inset + + son medidas, +\begin_inset Formula $\nu$ +\end_inset + + también lo es. +\end_layout + +\end_deeper +\begin_layout Standard +Para +\begin_inset Formula $f:\Omega\rightarrow[0,+\infty]$ +\end_inset + + medible, se define +\begin_inset Formula +\[ +\int f\,d\mu:=\sup\left\{ \int s\,d\mu:s\in{\cal S}(\Omega)\land0\leq s\leq f\right\} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Esta definición es compatible con la dada inicialmente para funciones simples. + Para +\begin_inset Formula $E\in\Sigma$ +\end_inset + +, se define +\begin_inset Formula +\[ +\int_{E}f\,d\mu:=\int\chi_{E}f\,d\mu +\] + +\end_inset + + +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Standard +Para +\begin_inset Formula $f,g:\Omega\rightarrow[0,+\infty]$ +\end_inset + + medibles y +\begin_inset Formula $A,B\in\Sigma$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $f\leq g\implies\int f\,d\mu\leq\int g\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $A\subseteq B\implies\int_{A}f\,d\mu\leq\int_{B}f\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\forall\alpha\in[0,+\infty),\int\alpha f\,d\mu=\alpha\int f\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $f|_{A}=0\implies\int_{A}f\,d\mu=0$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\mu(A)=0\implies\int_{A}f\,d\mu=0$ +\end_inset + +. +\end_layout + +\begin_layout Standard +La +\series bold +desigualdad de Tchevichev +\series default + afirma que si +\begin_inset Formula $f:\Omega\rightarrow[0,+\infty]$ +\end_inset + + es medible y +\begin_inset Formula $E\in\Sigma$ +\end_inset + +: +\end_layout + +\begin_layout Enumerate +Si para +\begin_inset Formula $t>0$ +\end_inset + + definimos +\begin_inset Formula $E_{t}:=E\cap\{f>t\}$ +\end_inset + +, entonces +\begin_inset Formula +\[ +t\mu(E_{t})\leq\int_{E_{t}}f\,d\mu\leq\int f\,d\mu +\] + +\end_inset + +Se obtiene de integrar en +\begin_inset Formula $t\chi_{E_{t}}\leq f\chi_{E_{t}}\leq f$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $\int_{E}f\,d\mu=0$ +\end_inset + + entonces +\begin_inset Formula $f(\omega)=0$ +\end_inset + + para casi todo +\begin_inset Formula $\omega\in E$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +Por lo anterior, +\begin_inset Formula $\forall k\in\mathbb{N},\mu(E_{\frac{1}{k}})=0$ +\end_inset + +, y como +\begin_inset Formula $\{f\neq0\}=\bigcup_{k}E_{\frac{1}{k}}$ +\end_inset + +, este conjunto también tiene medida nula. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $\int_{E}f\,d\mu<+\infty$ +\end_inset + + entonces +\begin_inset Formula $f(\omega)<+\infty$ +\end_inset + + para casi todo +\begin_inset Formula $\omega\in E$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset Formula $\mu(E_{k})\leq\frac{1}{k}\int f\,d\mu$ +\end_inset + +, luego +\begin_inset Formula $\mu(\{f=+\infty\})=\mu\left(\bigcap_{k}E_{k}\right)=\lim_{n}\mu(E_{k})=0$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $\int_{E}f\,d\mu<+\infty$ +\end_inset + + entonces +\begin_inset Formula $\{f>0\}$ +\end_inset + + es +\begin_inset Formula $\sigma$ +\end_inset + +-finito. +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset Formula $\{f>0\}=\bigcup_{k}E_{\frac{1}{k}}$ +\end_inset + + y cada +\begin_inset Formula $E_{\frac{1}{k}}$ +\end_inset + + tiene medida finita. +\end_layout + +\end_deeper +\begin_layout Standard +El +\series bold +teorema de convergencia monótona de Lebesgue +\series default + afirma que si +\begin_inset Formula $(f_{n}:\Omega\rightarrow[0,+\infty])_{n}$ +\end_inset + + es una sucesión creciente de funciones medibles que converge puntualmente + a +\begin_inset Formula $f:\Omega\rightarrow[0,+\infty]$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\int f\,d\mu=\lim_{n}\int f_{n}d\mu +\] + +\end_inset + + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $\alpha:=\sup\int f_{n}d\mu\in[0,+\infty]$ +\end_inset + +, como +\begin_inset Formula $f_{n}\leq f\forall n$ +\end_inset + + y +\begin_inset Formula $f$ +\end_inset + + es medible por ser límite puntual de medibles, +\begin_inset Formula $\alpha\leq\int f$ +\end_inset + +. + Sea +\begin_inset Formula $s\leq f$ +\end_inset + + una función simple, al ser +\begin_inset Formula $f_{n}$ +\end_inset + + creciente y convergente a +\begin_inset Formula $f$ +\end_inset + +, se tiene que +\begin_inset Formula $(E_{n}:=\{f_{n}\geq s\})_{n}$ +\end_inset + + es creciente con +\begin_inset Formula $\bigcup_{n}E_{n}=\Omega$ +\end_inset + +. + Tenemos que +\begin_inset Formula $\int f_{n}d\mu\geq\int\chi_{E_{n}}f_{n}d\mu\geq\int\chi_{E_{n}}s\,d\mu$ +\end_inset + +. + Tomando límites aquí, vemos que +\begin_inset Formula $\alpha\geq\int\chi_{\Omega}s\,d\mu=\int s\,d\mu$ +\end_inset + +, y tomando supremos entre las funciones simples +\begin_inset Formula $s\leq f$ +\end_inset + +, +\begin_inset Formula $\alpha\geq\int f\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Usando esto podemos probar para +\begin_inset Formula $f,g:\Omega\rightarrow[0,+\infty]$ +\end_inset + + que +\begin_inset Formula $\int(f+g)d\mu=\int f\,d\mu+\int g\,d\mu$ +\end_inset + +, partiendo de la propiedad correspondiente para funciones simples. +\end_layout + +\begin_layout Standard +El +\series bold +teorema de Beppo-Levi +\series default + afirma que la suma de una sucesión de funciones medibles +\begin_inset Formula $f_{n}:\Omega\rightarrow[0,+\infty]$ +\end_inset + + es medible y +\begin_inset Formula +\[ +\int\left(\sum_{n=1}^{\infty}f_{n}\right)d\mu=\sum_{n=1}^{\infty}\int f_{n}d\mu +\] + +\end_inset + + +\series bold +Demostración: +\series default + +\begin_inset Formula $(F_{n}:=\sum_{k=1}^{n}f_{k})_{n}$ +\end_inset + + es una sucesión de funciones medibles, por lo que basta tomar límites en + +\begin_inset Formula $\int F_{n}d\mu=\sum_{k=1}^{n}\int f_{k}d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Una función +\begin_inset Formula $\Omega\rightarrow[0,+\infty]$ +\end_inset + + medible es +\series bold +integrable +\series default + si su integral es finita. + Por ejemplo, si +\begin_inset Formula $\Sigma={\cal P}(\Omega)$ +\end_inset + + y +\begin_inset Formula $\mu(E)=|E|\forall E\in\Sigma$ +\end_inset + +, una función +\begin_inset Formula $f$ +\end_inset + + medible positiva es integrable si y sólo si +\begin_inset Formula $\int f\,d\mu=\sum_{\omega\in\Omega}f(\omega)<+\infty$ +\end_inset + +, y si además +\begin_inset Formula $\Omega=\mathbb{N}$ +\end_inset + +, la sucesión +\begin_inset Formula $f$ +\end_inset + + es integrable si y sólo si la serie +\begin_inset Formula $\sum_{n}f(n)$ +\end_inset + + converge, y la integral coincide con la suma. + En tal caso, el teorema de Beppo-Levi nos dice que si +\begin_inset Formula $a_{n,m}$ +\end_inset + + es una sucesión doble de números positivos, entonces +\begin_inset Formula +\[ +\sum_{n=1}^{\infty}\sum_{m=1}^{\infty}a_{m,n}=\sum_{m=1}^{\infty}\sum_{n=1}^{\infty}a_{m,n} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +El +\series bold +lema de Fatou +\series default + afirma que si +\begin_inset Formula $f_{n}:\Omega\rightarrow[0,+\infty]$ +\end_inset + + es una sucesión de funciones medibles, su límite inferior +\begin_inset Formula $f(\omega):=\liminf_{n}f_{n}(\omega)$ +\end_inset + + es medible y +\begin_inset Formula $\int f\,d\mu\leq\liminf_{n}\int f_{n}d\mu$ +\end_inset + +. + +\series bold +Demostración: +\series default + +\begin_inset Formula $(g_{n}:=\inf_{m\geq n}\{f_{m}(x)\})_{n}$ +\end_inset + + define una sucesión creciente de funciones medibles convergente hacia +\begin_inset Formula $f$ +\end_inset + +, y por la monotonía de la integral y el teorema de convergencia monótona, + +\begin_inset Formula +\[ +\int f\,d\mu=\sup_{n\in\mathbb{N}}\left\{ \int g_{n}d\mu\right\} \leq\sup_{n\in\mathbb{N}}\left\{ \inf_{m\geq n}\left\{ \int f_{m}d\mu\right\} \right\} =\liminf_{n}\int f_{n}d\mu +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, si +\begin_inset Formula $g:\Omega\rightarrow[0,+\infty]$ +\end_inset + + es medible, entonces +\begin_inset Formula $\nu:\Sigma\rightarrow[0,+\infty]$ +\end_inset + + dada por +\begin_inset Formula $\nu(E):=\int_{E}g\,d\mu$ +\end_inset + + es una medida y para +\begin_inset Formula $f:\Omega\rightarrow[0,+\infty]$ +\end_inset + +, +\begin_inset Formula +\[ +\int f\,d\nu=\int fg\,d\mu +\] + +\end_inset + + +\series bold +Demostración: +\series default + +\begin_inset Formula $\nu(\emptyset)=0$ +\end_inset + + y, dada una sucesión +\begin_inset Formula $(A_{n})_{n}$ +\end_inset + + de medibles disjuntos, +\begin_inset Formula $g\chi_{\bigcup_{n}A_{n}}=\sum_{n}g\chi_{A_{n}}$ +\end_inset + + y el teorema de Beppo-Levi nos da que +\begin_inset Formula $\nu(\bigcup_{n}A_{n})=\sum_{n}\nu(A_{n})$ +\end_inset + + y por tanto +\begin_inset Formula $\nu$ +\end_inset + + es una medida. + Sea +\begin_inset Formula $s:=\sum_{i=1}^{m}a_{i}\chi_{E_{i}}\in{\cal S}(\Omega)^{+}$ +\end_inset + +, +\begin_inset Formula +\[ +\int s\,d\nu=\sum_{i=1}^{m}a_{i}\int\chi_{E_{i}}g\,d\mu=\int\left(\sum_{i=1}^{m}a_{i}\chi_{E_{i}}\right)g\,d\mu=\int sg\,d\mu +\] + +\end_inset + +Usando el teorema de la convergencia monótona para tomar límites en una + sucesión creciente de funciones simples que converge a +\begin_inset Formula $f$ +\end_inset + + se completa la prueba. +\end_layout + +\begin_layout Section +Funciones integrables +\end_layout + +\begin_layout Standard +Una función medible +\begin_inset Formula $f:\Omega\rightarrow\mathbb{R}$ +\end_inset + + es integrable si +\begin_inset Formula $\int|f|d\mu<+\infty$ +\end_inset + +, si y sólo si +\begin_inset Formula $f^{+}=\max\{f,0\},f^{-}=\min\{f,0\}:\Omega\rightarrow[-\infty,+\infty]$ +\end_inset + + son integrables, y definimos +\begin_inset Formula +\[ +\int f\,d\mu:=\int f^{+}\,d\mu-\int f^{-}\,d\mu +\] + +\end_inset + +Si solo una de entre +\begin_inset Formula $f^{+}$ +\end_inset + + y +\begin_inset Formula $f^{-}$ +\end_inset + + es integrable, usamos esta misma definición y entonces +\begin_inset Formula $\int f\,d\mu\in[-\infty,+\infty]$ +\end_inset + +. + Una función medible +\begin_inset Formula $f:\Omega\rightarrow\mathbb{C}$ +\end_inset + + es integrable si +\begin_inset Formula $\int|f|d\mu<+\infty$ +\end_inset + +. + Si +\begin_inset Formula $u,v:\Omega\rightarrow\mathbb{R}$ +\end_inset + + son tales que +\begin_inset Formula $f=u+iv$ +\end_inset + +, es claro que +\begin_inset Formula $f$ +\end_inset + + es integrable si y sólo si +\begin_inset Formula $u$ +\end_inset + + y +\begin_inset Formula $v$ +\end_inset + + lo son, y definimos +\begin_inset Formula +\[ +\int f\,d\mu:=\int u\,d\mu+i\int v\,d\mu +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Llamamos +\begin_inset Formula ${\cal L}^{1}(\Omega,\Sigma,\mu)$ +\end_inset + + al conjunto de funciones integrables +\begin_inset Formula $f:\Omega\rightarrow\mathbb{C}$ +\end_inset + +. + Cuando basta indicar uno de los componentes de la terna y se sobreentiende + el resto, podemos escribir +\begin_inset Formula ${\cal L}^{1}(\Omega)$ +\end_inset + +, +\begin_inset Formula ${\cal L}^{1}(\Sigma)$ +\end_inset + + o +\begin_inset Formula ${\cal L}^{1}(\mu)$ +\end_inset + +. + El subconjunto de +\begin_inset Formula ${\cal L}^{1}$ +\end_inset + + formado por las funciones reales se denota +\begin_inset Formula ${\cal L}_{\mathbb{R}}^{1}(\mu)$ +\end_inset + +, y por definición +\begin_inset Formula $f\in{\cal L}^{1}(\mu)\iff|f|\in{\cal L}^{1}(\mu)$ +\end_inset + +. + Propiedades: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula ${\cal L}^{1}(\mu)$ +\end_inset + + es un espacio vectorial complejo y, si lo consideramos como un espacio + vectorial real por el isomorfismo canónico entre +\begin_inset Formula $\mathbb{C}$ +\end_inset + + y +\begin_inset Formula $\mathbb{R}^{2}$ +\end_inset + +, +\begin_inset Formula ${\cal L}_{\mathbb{R}}^{1}$ +\end_inset + + es un subespacio suyo. +\begin_inset Newline newline +\end_inset + +Sean +\begin_inset Formula $f,g\in{\cal L}^{1}(\mu)$ +\end_inset + + y +\begin_inset Formula $\alpha\in\mathbb{C}$ +\end_inset + +, +\begin_inset Formula $\alpha f+g$ +\end_inset + + es medible y +\begin_inset Formula $|\alpha f+g|\leq|\alpha||f|+|g|$ +\end_inset + +, e integrando y aplicando las propiedades de la integral en funciones positivas +, +\begin_inset Formula $\int|\alpha f+g|d\mu\leq\int(|\alpha||f|+|g|)d\mu=|\alpha|\int|f|d\mu+\int|g|d\mu<+\infty$ +\end_inset + +, +\end_layout + +\begin_layout Enumerate +La aplicación +\begin_inset Formula $\nu:{\cal L}^{1}(\mu)\rightarrow\mathbb{C}$ +\end_inset + + dada por +\begin_inset Formula $\nu(f):=\int f\,d\mu$ +\end_inset + + es lineal. +\begin_inset Newline newline +\end_inset + +Sean +\begin_inset Formula $u,v\in{\cal L}_{\mathbb{R}}^{1}(\mu)$ +\end_inset + + y +\begin_inset Formula $\alpha\in\mathbb{R}$ +\end_inset + +: +\end_layout + +\begin_deeper +\begin_layout Enumerate +\begin_inset Formula $i\int(u+iv)d\mu=i\int ud\mu+i^{2}\int v\,d\mu=\int(-v+iu)d\mu=\int i(u+iv)d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $h:=u+v\implies h^{+}-h^{-}=u^{+}-u^{-}+v^{+}-v^{-}\implies h^{+}+(u^{-}+v^{-})=(u^{+}+v^{+})+h^{-}\implies\int h^{+}d\mu+\int u^{-}d\mu+\int v^{-}d\mu=\int u^{+}d\mu+\int v^{+}d\mu+\int h^{-}d\mu\implies\int h\,d\mu=\int h^{+}d\mu-\int h^{-}d\mu=\int u^{+}d\mu-\int u^{-}d\mu+\int v^{+}d\mu-\int v^{-}d\mu=\int u\,d\mu+\int v\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\alpha\geq0\implies(\alpha u)^{+}=\alpha u^{+}\land(\alpha u)^{-}=\alpha u^{-}\implies\int\alpha u\,d\mu=\int\alpha u^{+}d\mu-\int\alpha u^{-}d\mu=\alpha\left(\int u^{+}d\mu-\int u^{-}d\mu\right)=\alpha\int u\,d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\alpha<0\implies(\alpha u)^{+}=(-\alpha)u^{-}\land(\alpha u)^{-}=(-\alpha)u^{+}\implies\int\alpha u\,d\mu=\int(-\alpha)u^{-}d\mu-\int(-\alpha)u^{+}d\mu=(-\alpha)\left(\int u^{-}d\mu-\int u^{+}d\mu\right)=\alpha\int u\,d\mu$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Desigualdad triangular: +\begin_inset Formula +\[ +\forall f\in{\cal L}^{1}(\mu),\left|\int f\,d\mu\right|\leq\int|f|d\mu +\] + +\end_inset + +Si +\begin_inset Formula $\left|\int f\,d\mu\right|=0$ +\end_inset + + es trivial. + Si +\begin_inset Formula $\left|\int f\,d\mu\right|\neq0$ +\end_inset + +, sea +\begin_inset Formula $a:=\frac{\int f\,d\mu}{|\int f\,d\mu|}$ +\end_inset + + y como +\begin_inset Formula $\forall z\in\mathbb{C},|\text{Re}(z)|\leq|z|$ +\end_inset + +, +\begin_inset Formula $|\text{Re}(af)|\leq|af|=|f|$ +\end_inset + +; de aquí que +\begin_inset Formula $\left|\int f\,d\mu\right|=a\int f\,d\mu=\text{Re}\left(\int af\,d\mu\right)=\int\text{Re}(af)d\mu\leq\int|f|d\mu$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Una función medible +\begin_inset Formula $f:E\rightarrow\mathbb{C}$ +\end_inset + + definida en +\begin_inset Formula $E\in\Sigma$ +\end_inset + + es +\series bold +integrable sobre +\begin_inset Formula $E$ +\end_inset + + +\series default + si la +\series bold +extensión canónica +\series default + +\begin_inset Formula $\tilde{f}:=f\chi_{E}$ +\end_inset + + es integrable, y entonces se define +\begin_inset Formula $\int_{E}f\,d\mu:=\int\tilde{f}\,d\mu$ +\end_inset + +. + Con esto: +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f:E\rightarrow\mathbb{C}$ +\end_inset + + es una función medible definida en +\begin_inset Formula $E\in\Sigma$ +\end_inset + +, +\begin_inset Formula $f$ +\end_inset + + es integrable sobre +\begin_inset Formula $E$ +\end_inset + + y +\begin_inset Formula $\forall A\in\Sigma\cap{\cal P}(E),\int_{A}f\,d\mu=0$ +\end_inset + + si y sólo si +\begin_inset Formula $f$ +\end_inset + + se anula en casi todo +\begin_inset Formula $\omega\in E$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + +En particular, +\begin_inset Formula $\int(\text{Re}(f))^{+}d\mu=\text{Re}\left(\int_{\{\text{Re}(f)\geq0\}}f\,d\mu\right)=0$ +\end_inset + +, y por la desigualdad de Tchevichev, +\begin_inset Formula $\mu\{\text{Re}(f)^{+}>t\}\leq\frac{1}{t}\int(\text{Re}(f))^{+}d\mu=0$ +\end_inset + + para todo +\begin_inset Formula $t>0$ +\end_inset + +, por lo que +\begin_inset Formula $\text{Re}(f)^{+}$ +\end_inset + + se anula en casi todo punto. + Lo mismo sucede con +\begin_inset Formula $(\text{Re}(f))^{-}$ +\end_inset + +, +\begin_inset Formula $(\text{Im}(f))^{+}$ +\end_inset + + e +\begin_inset Formula $(\text{Im}(f))^{-}$ +\end_inset + +. + Por tanto +\begin_inset Formula $f$ +\end_inset + + se anula en casi todo punto. +\end_layout + +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + +Para +\begin_inset Formula $A\in\Sigma\cap{\cal P}(E)$ +\end_inset + +, +\begin_inset Formula $(\text{Re}(f))^{+}$ +\end_inset + +, +\begin_inset Formula $(\text{Re}(f))^{-}$ +\end_inset + +, +\begin_inset Formula $(\text{Im}(f))^{+}$ +\end_inset + + e +\begin_inset Formula $(\text{Im}(f))^{-}$ +\end_inset + + se anulan en casi todo +\begin_inset Formula $\omega\in A\subseteq E$ +\end_inset + +, por lo que +\begin_inset Formula $\text{Re}\left(\int f\,d\mu\right)=\int\text{Re}(f)d\mu=\int(\text{Re}(f))^{+}d\mu-\int(\text{Re}(f))^{-}d\mu=0-0=0$ +\end_inset + + y, análogamente, +\begin_inset Formula $\text{Im}\left(\int f\,d\mu\right)=0$ +\end_inset + +. +\end_layout + +\end_deeper +\begin_layout Enumerate +Si +\begin_inset Formula $f,g:E\rightarrow\mathbb{C}$ +\end_inset + + son medibles iguales en casi todo punto y +\begin_inset Formula $f$ +\end_inset + + es integrable sobre +\begin_inset Formula $E$ +\end_inset + + entonces +\begin_inset Formula $g$ +\end_inset + + también lo es y +\begin_inset Formula $\int_{E}f\,d\mu=\int_{E}g\,d\mu$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +Basta aplicar el punto anterior a +\begin_inset Formula $f-g$ +\end_inset + +. +\end_layout + +\begin_layout Standard +El +\series bold +teorema de la convergencia dominada +\series default + afirma que, dada una sucesión +\begin_inset Formula $(f_{n}:\Omega\rightarrow\mathbb{C})_{n}$ +\end_inset + + de funciones que converge en casi todo punto, si existe +\begin_inset Formula $g:\Omega\rightarrow\mathbb{C}$ +\end_inset + + integrable con +\begin_inset Formula $|f_{n}|\leq g\forall n\in\mathbb{N}$ +\end_inset + +, entonces la función límite +\begin_inset Formula $f(\omega):=\lim_{n}f_{n}(\omega)$ +\end_inset + +, definida en casi todo punto, es integrable, +\begin_inset Formula +\[ +\lim_{n}\int|f_{n}-f|d\mu=0 +\] + +\end_inset + +y, en particular, +\begin_inset Formula +\[ +\lim_{n}\int f_{n}d\mu=\int f\,d\mu +\] + +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Las +\begin_inset Formula $f_{n}$ +\end_inset + + son integrables al estar acotadas por una función integrable. + Te +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ne +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +mos que +\begin_inset Formula $|f-f_{n}|\leq|f|+|f_{n}|\leq2g$ +\end_inset + + y, teniendo en cuenta que +\begin_inset Formula $\limsup_{n}|f-f_{n}|=0$ +\end_inset + + y aplicando el lema de Fatou a la sucesión de medibles positivas +\begin_inset Formula $2g-|f-f_{n}|$ +\end_inset + +, queda que +\begin_inset Formula $\int2g\,d\mu=\int\liminf_{n}(2g-|f-f_{n}|)d\mu\leq\liminf_{n}\int(2g-|f-f_{n}|)d\mu=\int2g\,d\mu-\limsup_{n}\int|f-f_{n}|$ +\end_inset + +. + Restando la cantidad finita +\begin_inset Formula $\int2g\,d\mu$ +\end_inset + + a ambos miembros de la desigualdad, +\begin_inset Formula $0\leq-\limsup_{n}\int|f-f_{n}|\leq0$ +\end_inset + +, con lo que +\begin_inset Formula $\lim_{n}\int|f-f_{n}|=0$ +\end_inset + + y +\begin_inset Formula $f$ +\end_inset + + es integrable porque +\begin_inset Formula $|f|\leq|f_{n}|+|f-f_{n}|$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Como +\series bold +teorema +\series default +, dada una sucesión de funciones integrables +\begin_inset Formula $(f_{n}:\Omega\rightarrow\mathbb{C})_{n}$ +\end_inset + + con +\begin_inset Formula $\sum_{n=1}^{\infty}\int|f_{n}|d\mu<+\infty$ +\end_inset + +, la serie +\begin_inset Formula $\sum_{n=1}^{\infty}f_{n}(\omega)$ +\end_inset + + converge absolutamente en casi todo punto y su suma es integrable con +\begin_inset Formula $\int\left(\sum_{n=1}^{\infty}f_{n}\right)d\mu=\sum_{n=1}^{\infty}\int f_{n}d\mu$ +\end_inset + +. + +\series bold +Demostración: +\series default + Por el teorema de la convergencia monótona, +\begin_inset Formula $G:=\sum_{n}|f_{n}|$ +\end_inset + + converge en casi todo punto y es integrable, y +\begin_inset Formula $S:=\sum_{n}f_{n}$ +\end_inset + + también, y como para +\begin_inset Formula $(g_{m}:=\sum_{n=0}^{m}f_{n})_{m}$ +\end_inset + + se tiene +\begin_inset Formula $|g_{m}|\leq G$ +\end_inset + +, podemos aplicar el teorema de la convergencia dominada para obtener el + resultado. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Relación entre las integrales de Riemann y Lebesgue +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, las funciones integrables Riemann son integrables respecto a la medida + de Lebesgue y las integrales coinciden. + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $f:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + integrable Riemann, y por tanto acotada, existe una sucesión +\begin_inset Formula $(P_{k})_{k}$ +\end_inset + + de particiones en +\begin_inset Formula $[a,b]$ +\end_inset + + con +\begin_inset Formula $\Vert P_{n}\Vert\rightarrow0$ +\end_inset + + y +\begin_inset Formula $\int_{[a,b]}f(\vec{x})d\vec{x}=\lim_{k}s(f,P_{k})$ +\end_inset + +, y si +\begin_inset Formula $\{N_{k1},\dots,N_{km_{k}}\}$ +\end_inset + + es el conjunto de subrectángulos de +\begin_inset Formula $P_{k}$ +\end_inset + +, la sucesión +\begin_inset Formula $(s_{k})_{k}$ +\end_inset + + de funciones simples +\begin_inset Formula $s_{k}(t):=\sum_{i=1}^{m_{k}}\chi_{N_{ki}}\inf_{x\in N_{ki}}\{f(x)\}$ +\end_inset + + está acotada por la función constante +\begin_inset Formula $M:=\chi_{[a,b]}\sup_{x\in[a,b]}\{|f(x)|\}$ +\end_inset + + y converge a +\begin_inset Formula $f$ +\end_inset + + en todos sus puntos de continuidad y por tanto en casi todo punto. + Entonces, por el teorema de la convergencia dominada, +\begin_inset Formula $f$ +\end_inset + + es integrable Lebesgue en +\begin_inset Formula $[a,b]$ +\end_inset + + y +\begin_inset Formula $\int_{[a,b]}f\,d\lambda_{n}=\int_{[a,b]}f(\vec{x})d\vec{x}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Una función +\begin_inset Formula $f:S\rightarrow\mathbb{R}$ +\end_inset + + definida en un intervalo +\begin_inset Formula $n$ +\end_inset + +-dimensional +\begin_inset Formula $S\subseteq\mathbb{R}^{n}$ +\end_inset + + se dice +\series bold +localmente integrable Riemann +\series default + si es integrable Riemann sobre cada intervalo compacto +\begin_inset Formula $I\subseteq S$ +\end_inset + +. + Definimos entonces la +\series bold +integral impropia +\series default + de +\begin_inset Formula $f$ +\end_inset + + en +\begin_inset Formula $S$ +\end_inset + + como +\begin_inset Formula +\[ +\int_{S}f(x)dx:=\lim_{I\nearrow S}\int_{I}f(x)dx +\] + +\end_inset + +y si existe, decimos que +\series bold +converge +\series default +. + La integral impropia +\begin_inset Formula $\int_{S}f(x)dx$ +\end_inset + + es +\series bold +absolutamente convergente +\series default + si +\begin_inset Formula $\int_{S}|f(x)|dx$ +\end_inset + + es convergente. +\end_layout + +\begin_layout Standard +Para +\begin_inset Formula $f:S\rightarrow\mathbb{R}$ +\end_inset + + localmente integrable Riemann sobre un intervalo +\begin_inset Formula $n$ +\end_inset + +-dimensional +\begin_inset Formula $S\subseteq\mathbb{R}^{n}$ +\end_inset + +, +\begin_inset Formula $\int_{S}f(x)dx$ +\end_inset + + es absolutamente convergente si y sólo si +\begin_inset Formula $f$ +\end_inset + + es integrable Lebesgue sobre +\begin_inset Formula $S$ +\end_inset + + y +\begin_inset Formula $\int_{S}f\,d\lambda_{n}=\int_{S}f(x)dx$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\implies]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann, y por tanto Lebesgue, sobre todo intervalo compacto + +\begin_inset Formula $I\subseteq S$ +\end_inset + +, y dada una sucesión +\begin_inset Formula $(I_{k})_{k}$ +\end_inset + + de intervalos compactos en +\begin_inset Formula $S$ +\end_inset + + que tiende a +\begin_inset Formula $S$ +\end_inset + +, +\begin_inset Formula $(f_{k}:=\chi_{I_{k}}f)$ +\end_inset + + es una sucesión de funciones que tiende a +\begin_inset Formula $f$ +\end_inset + + tal que +\begin_inset Formula $|f_{k}|<|f|\forall k\in\mathbb{N}$ +\end_inset + +, y por la convergencia dominada tenemos que +\begin_inset Formula $\int_{S}f\,d\lambda_{n}=\lim_{k}\int f_{k}d\lambda_{n}=\lim_{k}\int_{I_{k}}f\,dx=\int_{S}f(x)dx$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\impliedby]$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Si +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann en un intervalo compacto +\begin_inset Formula $I\subseteq S$ +\end_inset + +, también es acotada en ese intervalo y por tanto +\begin_inset Formula $f^{+}$ +\end_inset + + y +\begin_inset Formula $f^{-}$ +\end_inset + + también lo son. + Si además +\begin_inset Formula $f$ +\end_inset + + es integrable Lebesgue sobre +\begin_inset Formula $S$ +\end_inset + +, por la convergencia monótona tenemos que si +\begin_inset Formula $(I_{k})_{k}$ +\end_inset + + es una sucesión creciente de in +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ter +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +va +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +los compactos que tiende a +\begin_inset Formula $S$ +\end_inset + +, +\begin_inset Formula $\int_{S}f^{+}(x)dx=\lim_{I\nearrow S}\int_{I}f^{+}(x)dx=\lim_{k}\int_{I_{k}}f^{+}(x)dx=\lim_{k}\int_{I_{k}}f^{+}(x)d\lambda_{n}=\int\lim_{k}\chi_{I_{k}}f^{+}(x)d\lambda_{n}=\int_{S}f^{+}(x)d\lambda_{n}<+\infty$ +\end_inset + +, y análogamente +\begin_inset Formula $\int_{S}f^{-}(x)dx<+\infty$ +\end_inset + +, por lo que +\begin_inset Formula $\int_{S}|f(x)|dx=\int_{S}f^{+}(x)dx+\int_{S}f^{-}(x)dx<+\infty$ +\end_inset + +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Llamamos +\series bold +soporte +\series default + de una función +\begin_inset Formula $g:\Omega\rightarrow\mathbb{C}$ +\end_inset + + a +\begin_inset Formula $\text{sop}(g):=\overline{\{g\neq0\}}$ +\end_inset + +, y +\begin_inset Formula ${\cal C}_{0}(\Omega)$ +\end_inset + + al conjunto de funciones continuas +\begin_inset Formula $g:\Omega\rightarrow\mathbb{C}$ +\end_inset + + con soporte compacto. + Como +\series bold +teorema +\series default +, +\begin_inset Formula ${\cal C}_{0}(\mathbb{R}^{n})$ +\end_inset + + es denso en +\begin_inset Formula ${\cal L}^{1}(\mathbb{R}^{n})$ +\end_inset + +. + +\series bold +Demostración: +\series default + Como las funciones simples medibles son densas en +\begin_inset Formula ${\cal L}^{1}(\mathbb{R}^{n})$ +\end_inset + +, basta ver que la función característica de cualquier conjunto medible + Lebesgue es límite de una sucesión de funciones en +\begin_inset Formula ${\cal C}_{0}(\mathbb{R}^{n})$ +\end_inset + +. + Para ello, dado un medible +\begin_inset Formula $E$ +\end_inset + + y +\begin_inset Formula $\varepsilon>0$ +\end_inset + +, existen +\begin_inset Formula $K$ +\end_inset + + compacto y +\begin_inset Formula $A$ +\end_inset + + abierto con +\begin_inset Formula $K\subseteq E\subseteq A$ +\end_inset + + y +\begin_inset Formula $\lambda(A\backslash K)<\frac{\varepsilon}{2}$ +\end_inset + +, y si +\begin_inset Formula $f\in{\cal C}_{0}(\mathbb{R}^{n})$ +\end_inset + + cumple que +\begin_inset Formula $K\subseteq\text{sop}(f)\subseteq A$ +\end_inset + + y +\begin_inset Formula $\chi_{K}\leq f\leq1$ +\end_inset + +, entonces +\begin_inset Formula $\Vert f-\chi_{E}\Vert_{\infty}\leq2\chi_{A\backslash K}$ +\end_inset + + y +\begin_inset Formula $\Vert f-\chi_{E}\Vert_{\infty}\leq2\lambda(A\backslash K)<\varepsilon$ +\end_inset + +. + Para ver que existe +\begin_inset Formula $f$ +\end_inset + +, fijado un cerrado +\begin_inset Formula $F\subseteq\mathbb{R}^{n}$ +\end_inset + +, +\begin_inset Formula $d(x,F)$ +\end_inset + + es continua, y como +\begin_inset Formula $\delta:=\min\{d(x,K):x\notin A\}>0$ +\end_inset + +, +\begin_inset Formula $A_{0}:=\{x:d(x,K)<\frac{\delta}{2}\}$ +\end_inset + + es un abierto acotado con +\begin_inset Formula $K\subseteq A_{0}\subseteq\overline{A_{0}}\subseteq A$ +\end_inset + +. + Tomando +\begin_inset Formula $F_{0}:=\mathbb{R}^{n}\backslash A_{0}=\{x:d(x,K)\geq\frac{\delta}{2}\}$ +\end_inset + +, podemos definir +\begin_inset Formula $f_{0}(y):=\frac{d(y,F_{0})}{1+d(y,F_{0})}$ +\end_inset + +, que cumple +\begin_inset Formula $0\leq f_{0}\leq1$ +\end_inset + +, +\begin_inset Formula $f_{0}(x)=0\forall x\in F_{0}\supseteq\mathbb{R}^{n}\backslash A$ +\end_inset + + y, como para +\begin_inset Formula $y\in K$ +\end_inset + +, +\begin_inset Formula $d(y,F_{0})\geq\frac{\delta}{2}$ +\end_inset + +, +\begin_inset Formula $f_{0}(y)\geq k_{0}:=\frac{\frac{\delta}{2}}{1+\frac{\delta}{2}}$ +\end_inset + + y la función continua +\begin_inset Formula $f(x):=\min\{1,\frac{f_{0}(x)}{k_{0}}\}$ +\end_inset + + tiene soporte compacto en +\begin_inset Formula $\overline{A_{0}}\subseteq A$ +\end_inset + + y +\begin_inset Formula $\chi_{K}\leq f\leq1$ +\end_inset + +. +\end_layout + +\begin_layout Section +Integrales dependientes de un parámetro +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default + sean +\begin_inset Formula $(\Omega,\Sigma,\mu)$ +\end_inset + + un espacio de medida, +\begin_inset Formula $(X,d)$ +\end_inset + + un espacio métrico y +\begin_inset Formula $f:X\times\Omega\rightarrow\mathbb{C}$ +\end_inset + + una función tal que: +\end_layout + +\begin_layout Enumerate +Para casi todo +\begin_inset Formula $\omega\in\Omega$ +\end_inset + + +\begin_inset Formula $f^{\omega}(x):=f(x,\omega)$ +\end_inset + + es continua. +\end_layout + +\begin_layout Enumerate +Para todo +\begin_inset Formula $x\in X$ +\end_inset + + +\begin_inset Formula $f_{x}(\omega):=f(x,\omega)$ +\end_inset + + es medible. +\end_layout + +\begin_layout Enumerate +Existe +\begin_inset Formula $g:\Omega\rightarrow[0,+\infty)$ +\end_inset + + tal que para todo +\begin_inset Formula $x\in X$ +\end_inset + +, para casi todo +\begin_inset Formula $\omega\in\Omega$ +\end_inset + +, +\begin_inset Formula $|f(x,\omega)|\leq g(\omega)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Entonces para todo +\begin_inset Formula $x\in X$ +\end_inset + + +\begin_inset Formula $f_{x}$ +\end_inset + + es integrable y +\begin_inset Formula $F(x):=\int f(x,\omega)d\mu(\omega)$ +\end_inset + + es continua. +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Como +\begin_inset Formula $(X,d)$ +\end_inset + + es un espacio métrico, la continuidad de las funciones en +\begin_inset Formula $X$ +\end_inset + + se puede caracterizar mediante sucesiones, por lo que basta tomar una sucesión + +\begin_inset Formula $(x_{n})_{n}$ +\end_inset + + de elementos de +\begin_inset Formula $X$ +\end_inset + + que converge a un cierto +\begin_inset Formula $x$ +\end_inset + + arbitrario y probar que +\begin_inset Formula +\[ +\left(F(x_{n})=\int f(x_{n},\omega)d\mu(\omega)\right)_{n} +\] + +\end_inset + + converge a +\begin_inset Formula $F(x)$ +\end_inset + +. + Sea +\begin_inset Formula $N\in\Sigma$ +\end_inset + + de medida cero tal que +\begin_inset Formula $f^{\omega}$ +\end_inset + + es continua para +\begin_inset Formula $\omega\notin N$ +\end_inset + + y por tanto +\begin_inset Formula $f^{\omega}(x_{n})=f(x_{n},\omega)\rightarrow f(x,\omega)$ +\end_inset + +. + Podemos tomar una sucesión +\begin_inset Formula $(A_{n})_{n}$ +\end_inset + + de conjuntos de medida nula tales que para +\begin_inset Formula $n\in\mathbb{N}$ +\end_inset + + y +\begin_inset Formula $\omega\notin A_{n}$ +\end_inset + +, +\begin_inset Formula $|f(x_{n},\omega)|\leq g(\omega)$ +\end_inset + +. + Entonces +\begin_inset Formula $N\cup\bigcup_{n}A_{n}$ +\end_inset + + tiene medida nula y fuera de él, como la sucesión +\begin_inset Formula $(f_{x_{n}})_{n}$ +\end_inset + + converge puntualmente y +\begin_inset Formula $|f_{x_{n}}|\leq g\forall n\in\mathbb{N}$ +\end_inset + +, podemos aplicar el teorema de la convergencia dominada y +\begin_inset Formula +\[ +\lim_{n}F(x_{n})=\lim_{n}\int f(x_{n},\omega)d\mu(\omega)=\int\lim_{n}f(x_{n},\omega)d\mu(\omega)=\int f(x,\omega)d\mu(\omega)=F(x) +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Otro +\series bold +teorema +\series default + nos dice que si +\begin_inset Formula $I\subseteq\mathbb{R}$ +\end_inset + + es un intervalo y +\begin_inset Formula $f:I\times\Omega\rightarrow\mathbb{C}$ +\end_inset + + cumple que: +\end_layout + +\begin_layout Enumerate +Para casi todo +\begin_inset Formula $\omega\in\Omega$ +\end_inset + + +\begin_inset Formula $f^{\omega}(x):=f(x,\omega)$ +\end_inset + + es derivable ( +\begin_inset Formula $\exists\frac{\partial f}{\partial x}(x,\omega)$ +\end_inset + +). +\end_layout + +\begin_layout Enumerate +Para todo +\begin_inset Formula $x\in I$ +\end_inset + + +\begin_inset Formula $f_{x}(\omega):=f(x,\omega)$ +\end_inset + + es medible, siendo integrable para algún +\begin_inset Formula $x_{0}\in I$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Existe +\begin_inset Formula $g:\Omega\rightarrow[0,+\infty)$ +\end_inset + + integrable tal que para casi todo +\begin_inset Formula $\omega\in\Omega$ +\end_inset + + para todo +\begin_inset Formula $x\in I$ +\end_inset + + +\begin_inset Formula $\left|\frac{\partial f}{\partial x}(x,\omega)\right|\leq g(\omega)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Entonces para todo +\begin_inset Formula $x\in I$ +\end_inset + +, +\begin_inset Formula $f_{x}$ +\end_inset + + es integrable, +\begin_inset Formula $F(x):=\int f(x,\omega)d\mu(\omega)$ +\end_inset + + es derivable y +\begin_inset Formula $F'(x)=\int\frac{\partial f}{\partial x}(x,\omega)d\mu(\omega)$ +\end_inset + +. +\end_layout + +\begin_layout Standard + +\series bold +Demostración: +\series default + Sea +\begin_inset Formula $A\in\Sigma$ +\end_inset + + de medida nula tal que +\begin_inset Formula +\[ +\left|\frac{\partial f}{\partial x}(s,\omega)\right|\leq g(\omega) +\] + +\end_inset + + para +\begin_inset Formula $\omega\notin A$ +\end_inset + + para todo +\begin_inset Formula $s\in I$ +\end_inset + +, por el teorema del incremento finito, si +\begin_inset Formula $\omega\notin A$ +\end_inset + +, +\begin_inset Formula +\[ +|f(x,\omega)-f(x_{0},\omega)|=\left|\frac{\partial f}{\partial x}(\xi_{x,\omega},\omega)(x-x_{0})\right|\leq g(\omega)|x-x_{0}| +\] + +\end_inset + +Entonces +\begin_inset Formula $f_{x}$ +\end_inset + + se diferencia de +\begin_inset Formula $f_{x_{0}}$ +\end_inset + + en un múltiplo de una función integrable +\begin_inset Formula $g$ +\end_inset + +, por lo que también es integrable. + Para ver que la integral es derivable, basta tomar una sucesión +\begin_inset Formula $(x_{n})_{n}$ +\end_inset + + de elementos de +\begin_inset Formula $X$ +\end_inset + + que converge a un cierto +\begin_inset Formula $x$ +\end_inset + + arbitrario y probar que existe +\begin_inset Formula $\lim_{n}\frac{F(x_{n})-F(x)}{x_{n}-x}$ +\end_inset + +. + Sea +\begin_inset Formula $N\in\Sigma$ +\end_inset + + de medida nula tal que para +\begin_inset Formula $\omega\notin N$ +\end_inset + +, +\begin_inset Formula $f^{\omega}$ +\end_inset + + es derivable y por tanto +\begin_inset Formula +\[ +\frac{f(x_{n},\omega)-f(x,\omega)}{x_{n}-x}\rightarrow\frac{\partial f}{\partial x}(x,\omega) +\] + +\end_inset + +Entonces +\begin_inset Formula $N\cup A$ +\end_inset + + tiene medida nula y fuera de él, la sucesión +\begin_inset Formula +\[ +\left(h_{n,\omega}:=\frac{f(x_{n},\omega)-f(x,\omega)}{x_{n}-x}\right)_{n} +\] + +\end_inset + + cumple que +\begin_inset Formula +\[ +|h_{n,\omega}|=\left|\frac{f(x_{n},\omega)-f(x,\omega)}{x_{n}-x}\right|=\left|\frac{\partial f}{\partial x}f(\eta_{x,x_{n},\omega},\omega)\right|\leq g(\omega) +\] + +\end_inset + + y, como además converge puntualmente, podemos aplicar el teorema de la + convergencia dominada y +\begin_inset Formula +\begin{eqnarray*} +F'(x) & = & \lim_{n}\frac{F(x_{n})-F(x)}{x_{n}-x}=\lim_{n}\frac{\int f(x_{n},\omega)d\mu(\omega)-\int f(x_{n},\omega)d\mu(\omega)}{x_{n}-x}\\ + & = & \lim_{n}\int\frac{f(x_{n},\omega)-f(x,\omega)}{x_{n}-x}d\mu(\omega)=\int\left(\lim_{n}\frac{f(x_{n},\omega)-f(x,\omega)}{x_{n}-x}\right)d\mu(\omega)\\ + & = & \int\frac{\partial f}{\partial x}(x,\omega)d\mu(\omega) +\end{eqnarray*} + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/fvv2/n4.lyx b/fvv2/n4.lyx new file mode 100644 index 0000000..6628b45 --- /dev/null +++ b/fvv2/n4.lyx @@ -0,0 +1,688 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 0 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +\begin_inset Note Comment +status open + +\begin_layout Section +Espacios producto +\end_layout + +\begin_layout Plain Layout +Dados dos espacios medibles +\begin_inset Formula $(\Omega_{1},\Sigma_{1})$ +\end_inset + + y +\begin_inset Formula $(\Omega_{2},\Sigma_{2})$ +\end_inset + +, llamamos +\series bold +rectángulo medible +\series default + en +\begin_inset Formula $\Omega:=\Omega_{1}\times\Omega_{2}$ +\end_inset + + a los elementos de +\begin_inset Formula ${\cal R}:=\{A\times B\}_{A\in\Sigma_{1},B\in\Sigma_{2}}$ +\end_inset + +. + Llamamos +\series bold + +\begin_inset Formula $\sigma$ +\end_inset + +-álgebra producto +\series default + de partes de +\begin_inset Formula $\Omega$ +\end_inset + + a +\begin_inset Formula $\Sigma:=\Sigma_{1}\times\Sigma_{2}:=\sigma({\cal R})$ +\end_inset + +. +\end_layout + +\begin_layout Plain Layout +Como +\series bold +teorema +\series default +, dados dos espacios de medida +\begin_inset Formula $(\Omega_{1},\Sigma_{1},\mu_{1})$ +\end_inset + + y +\begin_inset Formula $(\Omega_{2},\Sigma_{2},\mu_{2})$ +\end_inset + +, existe una medida +\begin_inset Formula $\mu$ +\end_inset + + en +\begin_inset Formula $\Sigma_{1}\times\Sigma_{2}$ +\end_inset + + tal que +\begin_inset Formula $\mu(A\times B)=\mu_{1}(A)\mu_{2}(B)$ +\end_inset + + para cada +\begin_inset Formula $A\times B$ +\end_inset + + medible. + Si además los dos espacios de medida son +\begin_inset Formula $\sigma$ +\end_inset + +-finitos, +\begin_inset Formula $\mu$ +\end_inset + + es la única. + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\series bold +Demostración: +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Cambio de variable +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Sea +\begin_inset Formula $(\Omega,\Sigma,\mu)$ +\end_inset + + un espacio de medida, +\begin_inset Formula $(\Omega',\Sigma')$ +\end_inset + + un espacio medible y +\begin_inset Formula $g:\Omega\rightarrow\Omega'$ +\end_inset + + medible, llamamos +\series bold +medida imagen +\series default + de +\begin_inset Formula $\mu$ +\end_inset + + a través de +\begin_inset Formula $g$ +\end_inset + + a la medida +\begin_inset Formula $\nu:=\mu g^{-1}:\Sigma'\rightarrow[0,+\infty]$ +\end_inset + + dada por +\begin_inset Formula $\nu(A):=\mu(g^{-1}(A))$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Una función +\begin_inset Formula $\Sigma'$ +\end_inset + +-medible +\begin_inset Formula $f:\Omega'\rightarrow\mathbb{C}$ +\end_inset + + es +\begin_inset Formula $\nu$ +\end_inset + +-integrable si y sólo si +\begin_inset Formula $f\circ g$ +\end_inset + + es +\begin_inset Formula $\mu$ +\end_inset + +-integrable, y si +\begin_inset Formula $f$ +\end_inset + + es +\begin_inset Formula $\nu$ +\end_inset + +-integrable o +\begin_inset Formula $f\geq0$ +\end_inset + + se tiene +\begin_inset Formula +\[ +\int f\,d\nu=\int f\circ g\,d\mu +\] + +\end_inset + + +\series bold +Demostración: +\series default + Para +\begin_inset Formula $A\in\Sigma'$ +\end_inset + + y +\begin_inset Formula $x\in\Omega$ +\end_inset + +, +\begin_inset Formula $\chi_{g^{-1}(A)}(x)=\chi_{A}(g(x))=(\chi_{A}\circ g)(x)$ +\end_inset + +, luego +\begin_inset Formula $\chi_{g^{-1}(A)}=\chi_{A}\circ g$ +\end_inset + + y +\begin_inset Formula $\int_{\Omega'}\chi_{A}d\nu=\nu(A)=\mu(g^{-1}(A))=\int_{\Omega}\chi_{g^{-1}(A)}d\mu=\int_{\Omega}(\chi_{A}\circ g)d\mu$ +\end_inset + +. + Con esto, una función simple +\begin_inset Formula $f:\Sigma'\rightarrow[0,+\infty]$ +\end_inset + + es +\begin_inset Formula $\nu$ +\end_inset + +-integrable si y sólo si +\begin_inset Formula $f\circ g$ +\end_inset + + es +\begin_inset Formula $\mu$ +\end_inset + +-integrable, y entonces +\begin_inset Formula $\int f\,d\nu=\int f\circ g\,d\mu$ +\end_inset + +. + Usando el teorema de la convergencia monótona podemos extender este resultado + a funciones medibles positivas, y el de la convergencia dominada nos da + el resultado para el caso general. +\end_layout + +\begin_layout Standard +Dada una función +\begin_inset Formula $\alpha:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + creciente y continua por la derecha, llamamos +\series bold +medida de Lebesgue-Stieltjes +\series default + asociada a +\begin_inset Formula $\alpha$ +\end_inset + + o +\series bold +medida de Borel inducida +\series default + a la única medida de Borel con +\begin_inset Formula $\mu_{\alpha}((a,b])=\alpha(b)-\alpha(a)$ +\end_inset + +, y que se construye de forma similar a la de Lebesgue. +\end_layout + +\begin_layout Standard +Como +\series bold +teorema +\series default +, si +\begin_inset Formula $f:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + es acotada y +\begin_inset Formula $D(f):=\{x\in[a,b]:f\text{ es discontinua en }x\}$ +\end_inset + +, entonces +\begin_inset Formula $f$ +\end_inset + + es integrable Riemann-Stieltjes con respecto a +\begin_inset Formula $\alpha$ +\end_inset + + en +\begin_inset Formula $[a,b]$ +\end_inset + + si y sólo si +\begin_inset Formula $\mu_{\alpha}(D(f))=0$ +\end_inset + +, y en tal caso +\begin_inset Formula $f$ +\end_inset + + es +\begin_inset Formula $\mu_{\alpha}$ +\end_inset + +-integrable y +\begin_inset Formula $\int_{[a,b]}f\,d\mu_{\alpha}=\int_{a}^{b}f\,d\alpha$ +\end_inset + +. + La demostración de esto es similar a la correspondiente para integrales + de Riemann simples. +\end_layout + +\begin_layout Standard +Dado un espacio de medida +\begin_inset Formula $(\Omega,\Sigma,\mu)$ +\end_inset + + finito, llamamos +\series bold +variables aleatorias +\series default + a las funciones medibles +\begin_inset Formula $f:\Omega\rightarrow\mathbb{R}$ +\end_inset + +, y tenemos que +\begin_inset Formula $\mu f^{-1}$ +\end_inset + + es una medida finita en +\begin_inset Formula $\mathbb{R}$ +\end_inset + + tal que +\begin_inset Formula $f=f\circ id$ +\end_inset + + es +\begin_inset Formula $\mu$ +\end_inset + +-integrable si y sólo si +\begin_inset Formula $id$ +\end_inset + + es +\begin_inset Formula $\mu f^{-1}$ +\end_inset + +-integrable, y entonces +\begin_inset Formula $\int_{\Omega}f\,d\mu=\int_{\mathbb{R}}id\,d\mu f^{-1}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Llamamos +\series bold +función de distribución +\series default + de +\begin_inset Formula $f$ +\end_inset + + a +\begin_inset Formula $F(x):=\mu(\{f\leq x\})$ +\end_inset + + o a +\begin_inset Formula $\varphi(x):=\mu(\{f>x\})=\mu(\Omega)-F(x)$ +\end_inset + +. + Sea +\begin_inset Formula $f:\Omega\rightarrow(a,b]$ +\end_inset + + una variable aleatoria, +\begin_inset Formula $F(x):=\mu(\{f\leq x\})$ +\end_inset + + y +\begin_inset Formula $\varphi(x):=\mu(\{f>x\})$ +\end_inset + +, entonces +\begin_inset Formula $f$ +\end_inset + + es integrable y +\begin_inset Formula +\[ +\int f\,d\mu=\int_{[a,b]}id\,d\mu f^{-1}=\int_{a}^{b}id\,dF=-\int_{a}^{b}id\,d\varphi +\] + +\end_inset + + +\series bold + +\begin_inset Newpage clearpage +\end_inset + +Demostración: +\series default +La identidad es continua y por tanto integrable Riemann-Stieltjes respecto + a +\begin_inset Formula $F$ +\end_inset + + o +\begin_inset Formula $\varphi$ +\end_inset + +, y como +\begin_inset Formula $F(y)-F(x)=-(\varphi(y)-\varphi(x))$ +\end_inset + +, se tiene +\begin_inset Formula $\int_{a}^{b}id\,dF=-\int_{a}^{b}id\,d\varphi$ +\end_inset + +, pero entonces +\begin_inset Formula $id$ +\end_inset + + es +\begin_inset Formula $\mu f^{-1}$ +\end_inset + +-integrable. +\end_layout + +\begin_layout Standard +Si +\begin_inset Formula $f$ +\end_inset + + no es acotada, podemos aplicar este resultado a los conjuntos +\begin_inset Formula $E_{a,b}:=\{a<f\leq b\}$ +\end_inset + + para +\begin_inset Formula $a<b$ +\end_inset + + cualesquiera definiendo +\begin_inset Formula $\mu_{a,b}(E):=\mu(E\cap E_{a,b})$ +\end_inset + + y usando esta medida. +\end_layout + +\begin_layout Standard +La restricción de que +\begin_inset Formula $f$ +\end_inset + + sea acotada se puede suprimir definiendo +\begin_inset Formula +\[ +\int_{-\infty}^{+\infty}id\,d\varphi:=\lim_{\begin{subarray}{c} +a\to-\infty\\ +b\to+\infty +\end{subarray}}\int_{a}^{b}id\,d\varphi +\] + +\end_inset + + cuando el límite existe. + En tal caso se cumple +\begin_inset Formula +\begin{eqnarray*} +\int_{\Omega}f^{+}d\mu=\lim_{b\rightarrow+\infty}\int_{E_{0,b}}f\,d\mu<+\infty & \text{ y } & \int_{\Omega}f^{-}d\mu=-\lim_{a\rightarrow-\infty}\int_{E_{a,0}}f\,d\mu<+\infty +\end{eqnarray*} + +\end_inset + +por lo que +\begin_inset Formula $f$ +\end_inset + + es +\begin_inset Formula $\mu$ +\end_inset + +-integrable. +\end_layout + +\begin_layout Standard +De aquí que, si +\begin_inset Formula $f:\Omega\rightarrow\mathbb{R}$ +\end_inset + + es medible, entonces +\begin_inset Formula $f\in{\cal L}^{1}(\Omega)$ +\end_inset + + si y sólo si +\begin_inset Formula $\int_{-\infty}^{+\infty}id\,d\varphi$ +\end_inset + + es finita, y en tal caso +\begin_inset Formula $\int_{\Omega}f\,d\mu=-\int_{-\infty}^{+\infty}id\,d\varphi$ +\end_inset + +. + Entonces: +\end_layout + +\begin_layout Enumerate +Si +\begin_inset Formula $f:\Omega\rightarrow[a,b]$ +\end_inset + + es medible con +\begin_inset Formula $\varphi(x):=\mu(\{f>x\})$ +\end_inset + + y +\begin_inset Formula $\phi:[a,b]\rightarrow\mathbb{R}$ +\end_inset + + es continua, entonces +\begin_inset Formula $\phi\circ f$ +\end_inset + + es integrable y +\begin_inset Formula +\[ +\int_{\Omega}\phi\circ f\,d\mu=-\int_{a}^{b}\phi\,d\varphi +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si es +\begin_inset Formula $f:\Omega\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $\phi:\mathbb{R}\rightarrow[0,+\infty)$ +\end_inset + +, entonces +\begin_inset Formula +\[ +\int_{\Omega}\phi\circ f\,d\mu=-\int_{-\infty}^{+\infty}\phi\,d\varphi +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Si es +\begin_inset Formula $\phi:\mathbb{R}\rightarrow\mathbb{R}$ +\end_inset + + y +\begin_inset Formula $\phi\circ f$ +\end_inset + + es integrable, esta igualdad también se cumple. +\end_layout + +\begin_layout Standard +Llamamos +\begin_inset Formula ${\cal L}_{\phi}(\mu)$ +\end_inset + + al conjunto de funciones medibles +\begin_inset Formula $f$ +\end_inset + + tales que +\begin_inset Formula $\phi\circ f$ +\end_inset + + es integrable, y para +\begin_inset Formula $\phi(x)=|x|^{p}$ +\end_inset + +, escribimos +\begin_inset Formula ${\cal L}^{p}(\mu):={\cal L}_{\phi}(\mu)$ +\end_inset + +. + Esto es compatible con la definición inicial de +\begin_inset Formula ${\cal L}^{1}(\mu)$ +\end_inset + +. +\end_layout + +\end_body +\end_document diff --git a/iso/n.lyx b/iso/n.lyx new file mode 100644 index 0000000..d1dc6ca --- /dev/null +++ b/iso/n.lyx @@ -0,0 +1,336 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Introducción a los Sistemas Operativos +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2018} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Apuntes de la asignatura, anónimos. +\end_layout + +\begin_layout Itemize +Wikipedia, the free encyclopedia ( +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://en.wikipedia.org/ +\end_layout + +\end_inset + +). +\end_layout + +\begin_layout Itemize +Páginas +\family typewriter +man +\family default + de Fedora 29 de todos los comandos y ficheros que se explican en los apéndices + en subsección propia, de sus respectivos autores, salvo que se indique + específicamente lo contrario, así como la página +\family typewriter +signal(7) +\family default +. +\end_layout + +\begin_layout Chapter +Introducción +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Gestión de procesos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Seguridad y protección +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n3.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Sistemas de ficheros +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n4.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Gestión de memoria +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n5.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Gestión de E/S +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n6.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +\start_of_appendix +El entorno de comandos de GNU +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "na.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Gestión de software +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nb.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Usuarios y grupos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nc.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Administración de discos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nd.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Procesos y memoria +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "ne.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Arranque del sistema +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nf.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/iso/n1.lyx b/iso/n1.lyx new file mode 100644 index 0000000..e1c15d4 --- /dev/null +++ b/iso/n1.lyx @@ -0,0 +1,997 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Un +\series bold +sistema operativo +\series default + es un intermediario entre el usuario y el hardware, un programa complejo + que se ejecuta cuando otro lo solicita o periódicamente para realizar ciertas + tareas. + +\end_layout + +\begin_layout Itemize +Como +\series bold +máquina extendida +\series default + o +\series bold +virtual +\series default +, presenta una interfaz sencilla de la máquina al programador ocultando + detalles de hardware de bajo nivel (interrupciones, relojes, control de + memoria, etc.). +\end_layout + +\begin_layout Itemize +Como +\series bold +controlador de recursos +\series default +, proporciona una asignación ordenada y controlada de los recursos de hardware + (procesadores, memoria, entrada y salida, etc.) entre los programas que + compiten por ellos. +\end_layout + +\begin_layout Standard +Destacamos Microsoft Windows, Apple MacOS X, Linux, y para dispositivos + móviles, iOS y Android. + Las características de un sistema operativo dependen del hardware en que + se ejecuta; por ejemplo, este en general no puede garantizar la protección + entre zonas de memoria de dos programas si el hardware no dispone de un + mecanismo para ello. + Por esto los sistemas operativos han evolucionado a la par con el hardware. +\end_layout + +\begin_layout Section +Historia +\end_layout + +\begin_layout Subsection +Primera generación (1945–55) +\end_layout + +\begin_layout Standard +Grandes máquinas experimentales que ocupaban habitaciones enteras, formadas + por miles de válvulas de vacío y cables conectados a mano, que consumían + una gran cantidad de energía y eran muy poco fiables. + Un solo grupo de personas diseñaba, construía, programaba, operaba y mantenía + cada máquina. + No existían lenguajes de programación ni sistemas operativos: la programación + era en lenguaje máquina, incluyendo el código de E/S dentro del propio + programa, y con frecuencia se usaban conexiones directamente para controlar + funciones básicas. +\end_layout + +\begin_layout Standard +La interacción con la máquina era directa: los programadores la reservaban + durante un tiempo, en el que introducían y ejecutaban el programa. + Si el trabajo terminaba en ese tiempo, había periodos en que la máquina + no se usaba (al ser máquinas muy caras había que aprovecharlas al máximo), + y si no daba tiempo a terminar, el programador tenía que volver a reservar + la máquina. +\end_layout + +\begin_layout Subsection +Segunda generación (1955-65) +\end_layout + +\begin_layout Standard +Aparecen desarrollos como los lectores de tarjetas, impresoras de líneas, + cintas magnéticas y, por el lado del software, ensambladores, cargadores + y enlazadores. + La introducción del transistor hizo que los ordenadores se volvieran fiables, + pudiendo venderse a clientes, y las bibliotecas de E/S hicieron que el + programador ya no tuviera que preocuparse de este aspecto. +\end_layout + +\begin_layout Standard +Si la interacción era directa, esta incluía colocar tarjetas perforadas, + preparar la impresora, hacer cambios de cinta (por ejemplo, colocar la + cinta con el compilador de FORTRAN para compilar un programa), etc. + Si el programador no tenía experiencia en esto se podían producir grandes + pérdidas de tiempo, por lo que se contrataba a un operador profesional + que controlaba la máquina de forma que los programadores entregaban su + trabajo y esperaban al resultado, perdiendo la interacción directa. + Otra medida fue planificar los trabajos para minimizar los cambios de cinta + (por ejemplo, agrupando todos los programas en FORTRAN para ser compilados + tras preparar la cinta con el compilador). +\end_layout + +\begin_layout Standard +Aun así, cuando se detenía un trabajo, el operador debía percatarse observando + la consola, determinar si se trataba de una terminación normal o anormal, + efectuar un volcado si era necesario, cargar el lector de tarjetas o la + cinta con el siguiente trabajo y volver a preparar el ordenador. + En este tiempo la CPU estaba inactiva, por lo que se desarrollaron sistemas + de +\series bold +procesamiento por lotes +\series default +, sistemas operativos rudimentarios, como el +\series bold +monitor residente +\series default +, formado por un intérprete de tarjetas de control, un cargador de programas + y controladores de dispositivos de E/S compartidos con los programas. + Este interpretaba instrucciones de tarjetas de control insertadas entre + tarjetas normales de datos, que indicaban el inicio y fin de un trabajo + y tipo de trabajo a realizar. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename pegado1.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Ejemplo de trabajo por lotes. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Los dispositivos de E/S eran (y son) lentos en comparación con la CPU, que + debía esperar la terminación de cada operación de E/S, por lo que se creó + la +\series bold +operación fuera de línea +\series default +, consistente en pasar de operaciones en línea ( +\emph on +on-line +\emph default +) donde la CPU interactuaba directamente con la E/S lenta, a operaciones + fuera de línea ( +\emph on +off-line +\emph default +), donde la CPU interactuaba con dispositivos más rápidos. + Para esto, primero los datos se leían de las tarjetas y se guardaban en + una cinta, a continuación los datos de la cinta se procesaban y se guardaban + los resultados en otra cinta, y finalmente los datos de la cinta de salida + se imprimen. +\end_layout + +\begin_layout Standard +Esto hizo surgir la +\series bold +independencia de dispositivo +\series default +, el escribir un programa para usar dispositivos de E/S lógicos y que fuera + el sistema operativo el que hiciera corresponder los dispositivos lógicos + con los físicos. + También aumentó el tiempo que el programador debía esperar para obtener + los resultados, pues las cintas se tenían que llenar, y también hizo necesarias + varias máquinas en paralelo para hacer las copias de tarjetas a cintas + y de cintas a la impresora. + Solución: +\end_layout + +\begin_layout Itemize +Hacer que los dispositivos de entrada escriban directamente en un +\series bold +\emph on +buffer +\series default +\emph default + en memoria principal, mientras la CPU procesa los datos anteriores, de + forma que la entrada y la CPU trabajen en paralelo. + Lo mismo ocurre con la salida. +\end_layout + +\begin_layout Itemize +Hacer que la entrada y la salida se den a través de ficheros en un disco, + por el mecanismo de +\series bold +\emph on +spooler +\series default +\emph default + ( +\emph on +simultaneous peripheral operation on-line +\emph default +), de forma que durante el cómputo de un programa se imprime la salida de + programas anteriores, leída del disco, y se lee la entrada de programas + posteriores, que se imprime en el disco. + Para esto el monitor necesita hacer uso de +\emph on +buffers +\emph default + e interrupciones. +\end_layout + +\begin_layout Standard +Sigue habiendo la limitación de que un único usuario no puede mantener a + la CPU y la E/S ocupados todo el tiempo. +\end_layout + +\begin_layout Subsection +Tercera generación (1965-80) +\end_layout + +\begin_layout Standard +Los ordenadores se vuelven más pequeños y fiables. + Se crea la +\series bold +multiprogramación +\series default +: cuando un trabajo no puede continuar su ejecución porque tiene que esperar + a la E/S, se pasa la CPU a otro trabajo listo para ejecutarse. + Es necesaria una +\series bold +planificación de trabajos +\series default +, así como evitar que estos trabajos se interfieran unos a otros en el uso + de los recursos (por ejemplo, escribiendo a la vez en la impresora). +\end_layout + +\begin_layout Standard +El +\series bold +tiempo compartido +\series default + o +\series bold +multitarea +\series default + es una variante de la multiprogramación consistente en hacer un cambio + rápido entre tareas de forma que cada usuario pueda interactuar con el + programa que está ejecutando como si todos se ejecutaran a la vez ( +\series bold +pseudoparalelismo +\series default +), recuperándose la interacción directa. + Puede ocurrir que un programa no quiera liberar la CPU durante bastante + tiempo, por lo que es necesario un mecanismo para obligarle a dejar la + CPU. +\end_layout + +\begin_layout Standard +Surgen sistemas operativos como OS/360 para el IBM 360, MULTICS y su sucesor + UNIX, del que se derivan sistemas como Linux. +\end_layout + +\begin_layout Subsection +Cuarta generación (1980-95) +\end_layout + +\begin_layout Standard +Los circuitos LSI ( +\emph on +Large Scale Integration +\emph default +) y VLSI ( +\emph on +Very Large Scale Integration +\emph default +) permiten la aparición en 1975 del primer +\series bold +ordenador personal +\series default +, invento que popularizó los computadores y la informática. + También aparecen las +\series bold +estaciones de trabajo +\series default +, ordenadores personales muy potentes (para empresas) conectados entre sí + en red. +\end_layout + +\begin_layout Standard +Se populariza el sistema operativo UNIX para estaciones de trabajo y el + MS-DOS, monousuario y monotarea, para ordenadores personales, si bien en + estos comienzan a aparecer conceptos como la multitarea o la memoria virtual + propios de UNIX. + También aparecen las redes de ordenadores personales, dando lugar a sistemas + operativos en red y distribuidos; los ordenadores con varias CPUs que permiten + ejecutar varios procesos a la vez ( +\series bold +paralelismo +\series default +), y los sistemas operativos de tiempo real. +\end_layout + +\begin_layout Subsection +Quinta generación (1995-) +\end_layout + +\begin_layout Standard +Explosión del uso de Internet y aparición de dispositivos móviles, especialmente + los llamados +\series bold +teléfonos inteligentes +\series default + o +\emph on +smartphones +\emph default +, que combinan telefonía y computación, siendo el primero el Nokia N9000, + lanzado a mediados de los 90, si bien estos no se popularizaron hasta el + iPhone de Apple en 2007. +\end_layout + +\begin_layout Standard +De Microsoft aparecen Windows 2000 y sus sucesores Server 2003, 2008, etc., + destinados a servidores, y Windows XP y sus sucesores Vista, 7, etc., destinados + a usuarios. + También alcanzan gran popularidad Linux, MacOS X, Android e iOS. +\end_layout + +\begin_layout Section +Tipos +\end_layout + +\begin_layout Itemize + +\series bold +De propósito general +\series default +, que destacan por su flexibilidad y capacidad para adaptarse, mediante + configuraciones concretas, tanto al hardware sobre el que se ejecutan como + a los trabajos a procesar. + Destacan Unix (principalmente Linux), Microsoft Windows y Apple MacOS X. +\end_layout + +\begin_deeper +\begin_layout Itemize +Unix es el más usado en +\series bold +supercomputadores +\series default +, formados por un gran cantidad de procesadores, memoria, discos, etc. + y capaces de procesar enormes cantidades de datos en poco tiempo, así como + en los +\series bold +\emph on +mainframes +\series default +\emph default +, capaces de procesar a la vez muchos trabajos que requieren enormes cantidades + de E/S (sobre todo, disco y red), y que suelen servir para procesamiento + por lotes o +\emph on +batch +\emph default + (sin interacción con usuarios), transacciones (bancarias, reservas de vuelo, + etc.) y trabajos multitarea (cuando los usuarios interactúan con el sistema). +\end_layout + +\begin_layout Itemize +Al pasar a sistemas menos potentes como +\series bold +servidores +\series default +, computadores que sirven a varios usuarios a la vez compartiendo recursos + hardware y software en red, podemos encontrar tanto Unix como MacOS X o + incluso Windows. + Esto también ocurre en los ordenadores personales, caracterizados por la + multitarea y estar diseñados para dar buen rendimiento a un único usuario, + y que hoy en día son +\series bold +multiprocesadores +\series default +, pues disponen de varios +\series bold +núcleos +\series default + o +\emph on +cores +\emph default + que actúan como CPUs separadas y comparten memoria principal. +\end_layout + +\begin_layout Itemize +En teléfonos inteligentes, tabletas y sistemas integrados, pequeños ordenadores + con menos recursos que uno normal pero con un consumo de energía mucho + menor, encontramos versiones de estos tres sistemas adaptados a estos dispositi +vos y a la interacción por pantalla táctil. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +De red +\series default +: Permiten interactuar con otros ordenadores conectados a una misma red, + si bien cada máquina es independiente. + Actualmente esto es lo común, y de hecho los tres sistemas de propósito + general que hemos visto también son de red. +\end_layout + +\begin_layout Itemize + +\series bold +Distribuidos +\series default +: También se conectan a otros mediante red, pero el conjunto de ordenadores + en esta red es visto como un sistema tradicional, con lo que el usuario + no es consciente de dónde se ejecutan los programas o dónde se encuentran + los ficheros ( +\series bold +transparencia de localización +\series default +). + Las ventajas son la compartición de recursos, aceleración de los cálculos + y tolerancia a fallos, pues si una máquina falla el resto puede seguir + haciendo todo el trabajo. + Destacan Amoeba, Plan 9 e Inferno, si bien todos han dejado de desarrollarse. +\end_layout + +\begin_layout Itemize + +\series bold +De tiempo real +\series default +: En los +\series bold +rigurosos +\series default +, usados por ejemplo en coches y plantas nucleares, una acción se debe realizar + necesariamente en cierto intervalo de tiempo o de lo contrario se podría + poner el sistema en peligro. + En los +\series bold +no rigurosos +\series default + es aceptable no cumplir de vez en cuando un plazo, dentro de unos límites. + Destacan VxWorks y QNX. +\end_layout + +\begin_layout Itemize + +\series bold +Para tarjetas inteligentes +\series default +, debido a las grandes limitaciones de potencia y memoria que presentan. + Suelen disponer de una máquina virtual de Java (JVM) que ejecuta los +\emph on +applets +\emph default + que se cargan en la tarjeta, pequeñas porciones de código que no se pueden + ejecutar por sí mismas sino que necesitan de un entorno proporcionado por + otro programa. +\end_layout + +\begin_layout Section +Programas y procesos +\end_layout + +\begin_layout Standard +Un +\series bold +programa +\series default + es la representación estática y almacenada de un conjunto de instrucciones + a ejecutar. + Cuando es cargado en memoria y se ejecuta, lo hace como un +\series bold +proceso +\series default +, la unidad de trabajo de un sistema, y de los cuales algunos pertenecen + al propio sistema operativo y el resto son procesos de usuario. + Un proceso es dinámico, requiriendo recursos como tiempo de CPU, memoria, + ficheros y dispositivos de E/S. + Varios procesos pueden ejecutar el mismo programa y un proceso (dependiendo + del sistema) puede ejecutar código de varios programas. +\end_layout + +\begin_layout Standard +En general los sistemas operativos se distribuyen junto con +\series bold +programas de sistema +\series default +, cuya misión es ofrecer un entorno más cómodo para el desarrollo y ejecución + de programas. + Tipos: +\end_layout + +\begin_layout Itemize + +\series bold +De manipulación de ficheros +\series default +. +\end_layout + +\begin_layout Itemize + +\series bold +De información de estado +\series default +, que solicitan información al sistema operativo, le dan formato y la imprimen. +\end_layout + +\begin_layout Itemize + +\series bold +De apoyo a lenguajes de programación +\series default +, como compiladores, ensambladores, intérpretes y depuradores. +\end_layout + +\begin_layout Itemize + +\series bold +De comunicaciones +\series default +, para crear conexiones virtuales entre procesos, usuarios o máquinas, permitien +do el envío de mensajes, correos electrónicos o ficheros a usuarios de la + misma máquina u otra y la conexión a una máquina remota. +\end_layout + +\begin_layout Itemize + +\series bold +De aplicación +\series default +, para efectuar otras operaciones comunes. + Incluímos aquí ditores de texto, generadores de gráficos, sistemas de bases + de datos, hojas de cálculo, paquetes de análisis estadístico, etc. +\end_layout + +\begin_layout Itemize + +\series bold +Intérprete de órdenes +\series default +, encargado de interpretar y ejecutar órdenes dadas por el usuario. + Las órdenes pueden estar contenidas en el código del propio intérprete + o en programas independientes. +\end_layout + +\begin_layout Standard +Aunque no hay diferencia entre un programa de usuario y uno del sistema, + la mayoría de usuarios suelen ver el sistema operativo desde el punto de + vista de los programas del sistema. +\end_layout + +\begin_layout Section +Componentes y servicios +\end_layout + +\begin_layout Standard +La interfaz entre el sistema operativo y un proceso tiene lugar mediante + +\series bold +llamadas al sistema +\series default +, con la siguiente estructura: +\end_layout + +\begin_layout Enumerate +El programa ejecuta la instrucción de la CPU para realizar la llamada al + sistema, cambiando la máquina a modo núcleo y pasando el control al sistema + operativo. +\end_layout + +\begin_layout Enumerate +Este lee el número de la llamada al sistema a realizar, y una vez validado, + llama al procedimiento correspondiente indicado en una tabla de apuntadores. +\end_layout + +\begin_layout Enumerate +La llamada termina y el control regresa al proceso de usuario, que continua + su ejecución por la instrucción inmediatamente posterior. +\end_layout + +\begin_layout Standard +El usuario informa al sistema operativo del número de la llamada a realizar + y los parámetros necesarios (habitualmente) mediante los registros, la + pila o una zona de memoria indicada en un registro. + Las bibliotecas de lenguajes de programación suelen contener procedimientos + que ocultan las llamadas al sistema, proporcionando una interfaz más sencilla. +\end_layout + +\begin_layout Standard +A continuación vemos los distintos componentes de un sistema operativo típico + junto a los servicios que ofrecen y las llamadas al sistema asociadas. + +\end_layout + +\begin_layout Subsection +Administración de procesos +\end_layout + +\begin_layout Standard +El sistema operativo debe ser capaz de crear y eliminar procesos, controlar + el tiempo de CPU que se le da a cada uno y cargar programas en estos procesos, + además de proveer medios para que los procesos se comuniquen entre sí. +\end_layout + +\begin_layout Standard +Existen pues llamadas al sistema para crear y terminar procesos; finalizar + el proceso actual; obtener y establecer atributos de un proceso; cargar + un programa; esperar un tiempo; esperar un suceso; enviar una señal a otro + proceso; crear o eliminar una conexión; enviar o recibir mensajes, o transferir + información de estado. +\end_layout + +\begin_layout Subsection +Administración de memoria principal +\end_layout + +\begin_layout Standard +El esquema de administración de memoria depende sobre todo del hardware, + que el sistema operativo debe usar para controlar de qué procesos están + usando qué zonas de memoria, asignar y recuperar memoria según se requiera + y decidir qué procesos se cargarán en memoria cuando haya espacio disponible. + Debe pues haber llamadas al sistema para solicitar y liberar memoria. +\end_layout + +\begin_layout Subsection +Administración de E/S +\end_layout + +\begin_layout Standard +En UNIX, esta se consigue mediante una interfaz uniforme con los manejadores + de dispositivo, un sistema de memoria caché y manejadores de hardware específic +os para las particularidades de cada dispositivo. +\end_layout + +\begin_layout Standard +Existen pues llamadas al sistema para solicitar o liberar dispositivos; + leer y escribir en ellos; reposicionarnos; obtener y establecer atributos + de dispositivos, y unir o separar dispositivos lógicos, sean físicos y + conectados a la propia máquina o accedidos remotamente mediante red. +\end_layout + +\begin_layout Subsection +Administración de ficheros +\end_layout + +\begin_layout Standard +Por comodidad, el sistema operativo organiza la memoria de los dispositivos + de almacenamiento secundario en +\series bold +ficheros +\series default +, unidades de almacenamiento lógico, que a su vez se organizan en directorios. +\end_layout + +\begin_layout Standard +Existen pues llamadas al sistema para crear y eliminar ficheros y directorios; + abrir y cerrar ficheros; leer, escribir y reposicionarnos en ficheros abiertos; + obtener y establecer atributos de ficheros y directorios, y manipular el + contenido de estos directorios. +\end_layout + +\begin_layout Subsection +Sistema de protección +\end_layout + +\begin_layout Standard +Los procesos de un sistema operativo deben ser protegidos unos de otros, + y el sistema operativo debe ser protegido de estos. + Para ello existen tres mecanismos hardware: +\end_layout + +\begin_layout Itemize + +\series bold +Modos de ejecución +\series default + del procesador: el +\series bold +modo núcleo +\series default + o +\series bold +supervisor +\series default +, en el que se ejecuta el sistema operativo por ser así capaz de ejecutar + cualquier instrucción, y el +\series bold +modo usuario +\series default +, en el que se ejecutan los programas de usuario y que no puede ejecutar + ciertas instrucciones como de E/S, configuración de memoria, etc. + Los programas de usuario, para realizar E/S, deben usar una instrucción + especial de +\series bold +llamada al sistema +\series default + ( +\emph on +syscall +\emph default +), tratada como una interrupción que, como todas, es tratada por el sistema + operativo en modo núcleo. +\end_layout + +\begin_layout Itemize + +\series bold +Protección de memoria +\series default +: Impedir que un programa de usuario acceda a zonas de memoria de otros + programas o del sistema operativo. +\end_layout + +\begin_layout Itemize + +\series bold +Interrupciones periódicas +\series default + mediante un reloj: Permiten al sistema operativo hacerse con el control + de la máquina cada cierto tiempo para evitar que un proceso monopolice + la CPU. +\end_layout + +\begin_layout Standard +Esta protección solo funciona si los tres mecanismos funcionan y se usan + de forma conjunta. + El sistema operativo es el encargado de hacer funcionar estos mecanismos + y usarlos para asegurarse de que los recursos puedan ser usados únicamente + por los procesos que han recibido la correspondiente autorización. + Además, el sistema operativo debe ser capaz de lidiar con los errores que + se puedan producir a nivel de hardware o dentro de un programa de usuario, + y emprender la acción adecuada en cada caso. +\end_layout + +\begin_layout Subsection +Mantenimiento de información +\end_layout + +\begin_layout Standard +Si bien esto generalmente no corresponde a una única parte del sistema operativo +, puede ser deseable llevar un control del uso de recursos del ordenador + por parte de los usuarios, sea con fines contables para facturar a los + usuarios o sencillamente para recopilar estadísticas de uso del sistema + que son útiles para su administración. + Además, tanto los procesos como los dispositivos o ficheros pueden poseer + información adicional que se debe leer y modificar aparte, y el reloj es + tratado de forma especial al ser usado en el sistema de protección. +\end_layout + +\begin_layout Standard +Existen pues llamadas al sistema para obtener o establecer la fecha y la + hora, datos del sistema y atributos de proceso, fichero o dispositivo. +\end_layout + +\begin_layout Section +Estructura +\end_layout + +\begin_layout Subsection +Sistemas monolíticos +\end_layout + +\begin_layout Standard +Están formados por un conjunto de procedimientos que se llaman unos a otros. + Ofrecen una interfaz muy clara, pero no tienen una estructura formalmente + definida y cada procedimiento es visible a los demás. + Están formados por el +\series bold +núcleo +\series default + (el sistema operativo como tal, junto a todos los controladores de dispositivo + o +\emph on +drivers +\emph default +) y los programas de sistema. + Destacan Unix (incluyendo Linux) y Windows. +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename pegado2.png + width 100text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Esquema de un sistema monolítico. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +Sistemas por capas +\end_layout + +\begin_layout Standard +El sistema operativo se divide en +\series bold +capas +\series default + o +\series bold +niveles +\series default +, siendo la más baja (capa 0) el hardware y la más alta la interfaz con + el usuario, de forma que cada capa sólo usa funciones y servicios de capas + inferiores. + Esto simplifica la depuración y verificación, pues usa vez se depura una + capa se asciende a la siguiente, y proporciona ocultación de información, + haciendo posibles las modificaciones en una capa en cualquier momento siempre + que no se modifique la interfaz al resto de capas. + Sin embargo, da problemas de dependencias entre capas, pues a veces es + difícil saber dónde colocar una función, por lo que se opta por tener menos + capas con más funcionalidad. +\end_layout + +\begin_layout Standard +Destacan THE (1968) que se definió en 6 capas (hardware, planificación de + CPU, administración de memoria, consola del operador, administración de + E/S y programas de usuario) y VENUS, donde las capas inferiores se implementaro +n directamente en hardware. +\end_layout + +\begin_layout Subsection +Sistemas cliente-servidor +\end_layout + +\begin_layout Standard +Están formados por un +\series bold +micronúcleo +\series default + o +\emph on +microkernel +\emph default + y una serie de procesos de usuario que implementan las funciones típicas + de un sistema operativo. + Así, los procesos +\series bold +clientes +\series default + solicitan servicios de los procesos +\series bold +servidores +\series default +, que realizan los trabajos solicitados por los clientes y a su vez pueden + ser clientes de otros procesos, de modo que el micronúcleo se limita a + controlar las comunicaciones cliente-servidor. + Para la E/S, bien se incluye el servidor correspondiente en el modo núcleo + o existen mensajes especiales dirigidos al núcleo para que los procese + él mismo. +\end_layout + +\begin_layout Standard +Estos sistemas tienen la ventaja de que un fallo en un servidor concreto + no afecta a todo el sistema, y que pueden adaptarse como sistemas distribuidos + dado que no importa si los procesos que se comunican están en la misma + máquina o no. + Destacan QNX, Minix 3 y MacOS X, cuyo núcleo está basado en la versión + 2.5 del micronúcleo Mach desarrollado en los 80 en la Carnegie-Mellon University. +\end_layout + +\end_body +\end_document diff --git a/iso/n2.lyx b/iso/n2.lyx new file mode 100644 index 0000000..4a252fc --- /dev/null +++ b/iso/n2.lyx @@ -0,0 +1,1232 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Normalmente hay bastantes más procesos que CPUs, por lo que hay que repartir + el uso de estas por parte de los procesos, buscando bien la eficiencia, + como en sistemas antiguos, o el poder ejecutar varios programas dando la + sensación de que todos se ejecutan a la vez, como ocurre actualmente. + El paralelismo y el pseudoparalelismo, que se dan normalmente a la vez, + permiten compartir recursos físicos y lógicos entre varios resultados y + acelerar los cálculos dividiéndolos entre varias CPUs, además de aportar + modularidad, al poder diseñar un sistema como un conjunto de procesos, + y comodidad, permitiendo a los usuarios hacer varias cosas a la vez. +\end_layout + +\begin_layout Standard +El cambio de un proceso a otro se llama +\series bold +cambio de proceso +\series default + o de +\series bold +contexto +\series default +. + El +\series bold +planificador +\series default + es el procedimiento que decide el siguiente proceso a ejecutar mediante + un +\series bold +algoritmo de planificación +\series default +, y modifica las estructuras necesarias para que el cambio de contexto sea + correcto. +\end_layout + +\begin_layout Standard +En UNIX, los procesos se organizan en un árbol de procesos y se crean con + la llamada al sistema +\family typewriter +fork() +\family default +, que crea una copia idéntica del proceso que hace la llamada y devuelve + al hijo el valor 0 y al padre el PID ( +\emph on +process identifier +\emph default +) del proceso hijo. + El PID del propio proceso se obtiene con la llamada al sistema +\family typewriter +getpid +\family default +. + Las llamadas de la familia +\family typewriter +exec +\family default +, como +\family typewriter +execve +\family default +, hacen que un proceso sustituya su código y datos por los de otro programa, + que comienza la ejecución desde el principio, si bien se conservan los + ficheros abiertos (aunque se puede especificar el cierre de algunos descriptore +s de ficheros en +\family typewriter +execve +\family default +), el PID y casi todas las propiedades. +\end_layout + +\begin_layout Standard +En Windows la jerarquía de procesos de UNIX desaparece al poder un proceso + cambiar de proceso padre, y los procesos se crean con +\family typewriter +CreateProcess +\family default +, que equivale a ejecutar un +\family typewriter +fork +\family default + seguido de +\family typewriter +exec +\family default + en el proceso hijo. +\end_layout + +\begin_layout Standard +La terminación voluntaria de un proceso se hace mediante la llamada al sistema + +\family typewriter +exit +\family default + en UNIX y +\family typewriter +ExitProcess +\family default + en Windows. + La terminación involuntaria es producida por el sistema operativo si se + produce un error fatal (división por cero, acceso a una zona memoria incorrecta +, etc.) o por otro proceso autorizado a ello con la llamada al sistema +\family typewriter +kill +\family default + en UNIX o +\family typewriter +TerminateProcess +\family default + en Windows. +\end_layout + +\begin_layout Section +Estados +\end_layout + +\begin_layout Standard +Un proceso puede estar en uno de varios estados: +\end_layout + +\begin_layout Itemize + +\series bold +Nuevo +\series default +: El proceso acaba de ser creado y todavía no tiene los recursos necesarios. +\end_layout + +\begin_layout Itemize + +\series bold +En ejecución +\series default +: Utilizando la CPU. +\end_layout + +\begin_layout Itemize + +\series bold +Listo +\series default + o +\series bold +listo suspendido +\series default +: Ejecutable pero detenido porque otro proceso está usando la CPU. +\end_layout + +\begin_layout Itemize + +\series bold +Bloqueado +\series default + o +\series bold +bloqueado +\series default + +\series bold +suspendido +\series default +: A la espera de un evento externo. +\end_layout + +\begin_layout Itemize + +\series bold +Saliente +\series default + ( +\emph on +zombie +\emph default +): El proceso ha terminado su ejecución pero todavía no ha desaparecido + del todo. + Por ejemplo, en UNIX, cuando un proceso acaba debe esperar a que su padre + recoja su estado de salida mediante la llamada al sistema +\family typewriter +wait +\family default + o +\family typewriter +waitpid +\family default +. +\end_layout + +\begin_layout Standard +Un proceso suspendido no puede ejecutarse y suele guardarse en disco. + La +\series bold +suspensión +\series default + y posterior +\series bold +reanudación +\series default + de un proceso, por parte de otro(s), es útil: +\end_layout + +\begin_layout Itemize +Si el sistema está funcionando mal, mientras se corrige el problema. +\end_layout + +\begin_layout Itemize +Si se cree que los resultados del proceso son incorrectos, para comprobar + si lo son. +\end_layout + +\begin_layout Itemize +Si el sistema está muy cargado, para dar servicio a procesos de más prioridad. +\end_layout + +\begin_layout Standard +Cambios de estado: +\end_layout + +\begin_layout Itemize +De +\begin_inset Quotes fld +\end_inset + +Nuevo +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Listo +\begin_inset Quotes frd +\end_inset + + cuando ya dispone de los recursos o a +\begin_inset Quotes fld +\end_inset + +Listo suspendido +\begin_inset Quotes frd +\end_inset + + si no hay memoria disponible y el proceso no tiene prioridad suficiente + para expulsar a otro. +\end_layout + +\begin_layout Itemize +De +\begin_inset Quotes fld +\end_inset + +Listo +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +En ejecución +\begin_inset Quotes frd +\end_inset + + o viceversa, debido al planificador. +\end_layout + +\begin_layout Itemize +De +\begin_inset Quotes fld +\end_inset + +En ejecución +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Bloqueado +\begin_inset Quotes frd +\end_inset + +, si el proces, ueado suspendido +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Listo suspendido +\begin_inset Quotes frd +\end_inset + +, cuando ocurre el evento esperado. +\end_layout + +\begin_layout Itemize +De +\begin_inset Quotes fld +\end_inset + +Bloqueado +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Bloqueado suspendido +\begin_inset Quotes frd +\end_inset + + o de +\begin_inset Quotes fld +\end_inset + +Listo +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Listo suspendido +\begin_inset Quotes frd +\end_inset + +, o viceversa. +\end_layout + +\begin_layout Itemize +De +\begin_inset Quotes fld +\end_inset + +En ejecución +\begin_inset Quotes frd +\end_inset + + a +\begin_inset Quotes fld +\end_inset + +Saliente +\begin_inset Quotes frd +\end_inset + + cuando termina. +\end_layout + +\begin_layout Section +Implementación +\end_layout + +\begin_layout Standard +El SO mantiene una +\series bold +tabla de procesos +\series default + con una entrada, +\series bold +PCB +\series default + ( +\emph on +Process Control Block +\emph default +) o BCP para cada proceso, donde se guarda todo lo necesario para poder + continuar la ejecución tras perder la CPU y recuperarla luego, junto con + datos estadísticos, el estado del proceso, etc. + En concreto suelen guardarse: +\end_layout + +\begin_layout Itemize +Para +\series bold +administración de procesos +\series default +, PID, registros (incluyendo contador del programa, palabra de estado y + puntero de pila), estado del proceso, prioridad, parámetros de planificación, + PID del proceso padre, grupo de procesos, señales, hora de inicio, tiempo + usado de CPU. +\end_layout + +\begin_layout Itemize +Para +\series bold +administración de memoria +\series default +, apuntadores a los segmentos de texto, datos, memoria dinámica. +\end_layout + +\begin_layout Itemize +Para +\series bold +administración de ficheros +\series default +, directorio raíz, directorio actual, descriptores de fichero, identificadores + de usuario y grupo. +\end_layout + +\begin_layout Standard +Crear un proceso consiste en darle nombre (como el PID en UNIX), insertarlo + en la tabla de procesos, determinar su prioridad inicial y asignarle recursos + iniciales. + En el caso de UNIX, +\family typewriter +fork +\family default + busca una entrada libre en la entrada de procesos y copia la información + del PCB del padre a esta, cambiando el PID; evita que uno sobrescriba la + memoria del otro +\begin_inset Foot +status open + +\begin_layout Plain Layout +Según los apuntes se copian los segmentos de datos y de pila, y el de código + se comparte por ser de sólo lectura. + Realmente, desde hace mucho Linux implementa copia en escritura, consistente + en marcar las entradas de la tabla de página de ambos de forma que el núcleo + solo tenga que hacer la copia de una página cuando uno de los procesos + escriba en ella. +\end_layout + +\end_inset + +; incrementa los contadores de los descriptores de ficheros del padre para + reflejar que estos también están abiertos en el hijo, y marca el proceso + hijo como +\begin_inset Quotes fld +\end_inset + +Listo +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +Los procesos en UNIX tienen dos modos: modo usuario, en que ejecutan un + programa normal, y modo núcleo, común a todos los procesos, en que ejecutan + código del SO al hacer una llamada al sistema. + En este último los procesos pueden bloquearse esperando a algún evento, + lo que hace que se le ceda la CPU a otro proceso hasta que el evento suceda, + momento en que el proceso continuará su ejecución en modo núcleo. + Otro enfoque es considerar el SO como una colección de procesos de sistema + distintos a los procesos de usuario, de modo que cada proceso ejecuta sólo + código de usuario, lo que ocurre en los sistemas cliente-servidor. +\end_layout + +\begin_layout Standard +En las llamadas al sistema, el hardware almacena en una pila el contador + de programa del proceso que se interrumpe, pasa a modo núcleo y almacena + un elemento del vector de interrupciones, que debe ser la dirección de + inicio de alguna rutina del SO, en el contador de programa. + Entonces, un procedimiento guarda el contexto del proceso activo en su + PCB (pudiendo actualizarse otra información como estado, contabilidad o + auditoría), elimina la información introducida en la pila por el hardware, + configura una pila en el núcleo para la llamada al sistema, comprueba que + esta es válida y llama a un procedimiento que procesa la llamada. + Tras esta, el primer procedimiento ejecuta el planificador si lo determina + necesario, teniendo en cuenta que, si el proceso se ha bloqueado en la + llamada, este ya ha sido invocado y no es necesario llamarlo de nuevo, + y finalmente ejecuta el +\series bold +despachador +\series default +, que restaura el contexto del proceso a ejecutar, entre otras cosas cambiando + a la pila de usuario e introduciendo en esta la dirección de su contador + de programa. +\end_layout + +\begin_layout Section +Hilos +\end_layout + +\begin_layout Standard +Un proceso tradicional es: +\end_layout + +\begin_layout Itemize +Unidad de propiedad de recursos, con un espacio de direcciones, variables + globales, ficheros abiertos, procesos hijos, alarmas, señales, semáforos, + información contable, etc. +\end_layout + +\begin_layout Itemize +Unidad de planificación y ejecución, con un contador de programa, una serie + de registros, una pila y un estado. +\end_layout + +\begin_layout Standard +Estas funciones son independientes, y los sistemas operativos modernos llaman + +\series bold +hilos +\series default + ( +\emph on +threads +\emph default +), +\series bold +procesos ligeros +\series default + ( +\emph on +LightWeight Processes +\emph default +, LWP), +\series bold +hebras +\series default + o +\series bold +subprocesos +\series default + a las unidades de ejecución y procesos a las de propiedad de recursos, + de forma que un mismo proceso puede tener uno o varios hilos. + Cuando comienza la ejecución de un programa existe un único hilo, el +\series bold +hilo principal +\series default +, que puede crear otros. +\end_layout + +\begin_layout Standard +En Linux y otros muchos UNIX, un hilo puede crear otro mediante +\family typewriter +pthread_create +\family default +, que entre sus parámetros recibe un puntero a otra función que es donde + comienza la ejecución el hilo hijo. + Todo hilo tiene un TID ( +\emph on +thread identifier +\emph default +), que se obtiene desde el propio hilo con la llamada al sistema +\family typewriter +gettid +\family default +. + Para facilitar la colabolación entre hilos, que pueden necesitar acceder + y modificar las mismas variables globales, existen métodos de sincronización + como +\emph on +mutex +\emph default + (exclusión mutua) y semáforos. +\end_layout + +\begin_layout Standard +Ventajas de los hilos: +\end_layout + +\begin_layout Itemize +Al compartir espacio de direcciones, se pueden comunicar entre sí sin intervenci +ón del núcleo, por lo que esta comunicación es más rápida. +\end_layout + +\begin_layout Itemize +Los hilos se pueden bloquear mientras termina una llamada al sistema, por + lo que si hay varios, la E/S puede solaparse con el cómputo. +\end_layout + +\begin_layout Itemize +Es mucho más rápido crear un hilo en un proceso existente que un nuevo proceso, + y el cambio de uno a otro es más rápido. +\end_layout + +\begin_layout Itemize +Se puede conseguir paralelismo real dentro de un mismo proceso. +\end_layout + +\begin_layout Standard +Los hilos pueden ser soportados directamente por el núcleo, como en Windows + y Linux, o ser implementados mediante una biblioteca a nivel de usuario, + como se hacía en Linux antes de que implementara hilos en el núcleo. +\end_layout + +\begin_layout Standard +La implementación en modo usuario tiene como ventajas que el programa se + puede usar en núcleos que no implementan hilos, los cambios de contexto + son mucho más rápidos al no tener que pasar por el núcleo y cada proceso + puede tener un algoritmo distinto de planificación. + Sin embargo, en este caso una llamada al sistema bloqueante, o un fallo + de página, bloquearía a todos los hilos del proceso, y no es posible obtener + paralelismo real dentro de un mismo proceso. +\end_layout + +\begin_layout Standard +En la implementación en modo núcleo, la creación, destrucción y sincronización + entre hilos es más costosa, pero esto se puede aliviar usando una biblioteca + de sincronización que sólo realice llamadas al sistema cuando sea estrictamente + necesarios, y manteniendo las estructuras de un hilo después de que termine + para poder usarlo posteriormente en vez de crear otro nuevo. + En cualquier caso todos los hilos deben pasar a estado suspendido al mismo + tiempo, pues la memoria de todo el proceso se mueve al disco. +\end_layout + +\begin_layout Section +Planificación +\end_layout + +\begin_layout Standard +Metas: +\end_layout + +\begin_layout Itemize + +\series bold +Equidad +\series default +: Dar a cada proceso una proporción adecuada de CPU. +\end_layout + +\begin_layout Itemize +Maximizar la +\series bold +eficacia +\series default + de la CPU, +\begin_inset Formula $E:=\frac{\text{Tiempo útil}}{\text{Tiempo total}}\cdot100$ +\end_inset + +, y el +\series bold +rendimiento +\series default + o +\series bold +productividad +\series default +, el número de tareas procesadas por unidad de tiempo. +\end_layout + +\begin_layout Itemize +Minimizar el +\series bold +tiempo de espera +\series default + (el que pasa un proceso en estado +\begin_inset Quotes fld +\end_inset + +Listo +\begin_inset Quotes frd +\end_inset + +), el de +\series bold +respuesta +\series default + (el que pasa desde que se solicita la ejecución de una acción hasta que + se obtienen los primeros resultados, importante para usuarios interactivos) + y el de +\series bold +regreso +\series default + o +\series bold +retorno +\series default + (el que pasa desde que se entrega a un trabajo hasta que termina y se obtienen + sus resultados, importante para trabajos por lotes). +\end_layout + +\begin_layout Standard +Algunas de estas, como el tiempo de espera y la eficacia, son contradictorias. +\end_layout + +\begin_layout Standard +Una planificación es +\series bold +apropiativa +\series default + si puede expulsar a procesos de la CPU para ejecutar otros sin necesidad + de que se bloqueen, y +\series bold +no apropiativa +\series default + o +\series bold +de ejecución hasta terminar +\series default + en caso contrario. + Para los procesos por lotes son convenientes tanto una planificación no + apropiativa como una apropiativa con periodos de CPU largos (pues los cambios + de proceso desperdician CPU), mientras que para procesos interactivos suele + ser necesaria una planificación apropiativa para cambiar la CPU rápidamente + de un proceso a otro. +\end_layout + +\begin_layout Standard +Los procesos alternan entre ráfagas de CPU y de E/S, comenzando y terminando + por una de CPU. + Decimos que un proceso es +\series bold +limitado por E/S +\series default + si pasa la mayor parte de su tiempo en espera de E/S, y normalmente tendrá + muchas ráfagas de CPU aunque breves, y es +\series bold +limitado por CPU +\series default + si usa la CPU la mayor parte del tiempo, y normalmente tendrá pocas ráfagas + de CPU aunque muy largas. +\end_layout + +\begin_layout Standard +Podemos representar un algoritmo de planificación mediante un +\series bold +diagrama de colas +\series default +, en el que cada rectángulo es una cola, los círculos son recursos que dan + servicio a las colas y las flechas indican el flujo de los procesos. + Un +\series bold +diagrama de Gantt +\series default + representa el proceso en ejecución en cada momento mediante rectángulos + de longitud proporcional a la duración de la ráfaga de CPU. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename pegado3.png + width 80text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Diagrama de colas de planificación de procesos. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename pegado4.png + width 80text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Diagrama de Gantt. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Algoritmos no apropiativos: +\end_layout + +\begin_layout Itemize + +\series bold +FCFS +\series default + ( +\emph on +First Coming, First Served +\emph default +, +\begin_inset Quotes fld +\end_inset + +primero en llegar, primero en ser servido +\begin_inset Quotes frd +\end_inset + +). + Es el más simple y se puede implementar con una cola FIFO. + El tiempo medio de respuesta puede ser bastante largo debido al +\series bold +efecto convoy +\series default +: Un proceso limitado por CPU ocupa la CPU mucho tiempo mientras el resto + terminan su E/S y entonces los dispositivos de E/S quedan inactivos hasta + que el proceso en ejecución pasa a realizar su E/S; entonces los procesos + limitados por E/S pasan a usar la CPU y terminan rápido por tener ráfagas + de CPU breves y la CPU queda inactiva hasta que el proceso limitado por + CPU continúa su ejecución, momento en que el ciclo se repite, resultando + en desaprovechamiento de recursos. +\end_layout + +\begin_layout Itemize + +\series bold +SJF +\series default + ( +\emph on +Shortest Job First +\emph default +, +\begin_inset Quotes fld +\end_inset + +primero el trabajo más corto +\begin_inset Quotes frd +\end_inset + +). + Adecuado para procesos por lotes, donde los tiempos de ejecución aproximados + se suelen conocer de antemano, y de lo contrario se puede estimar mediante + +\series bold +maduración +\series default +: +\begin_inset Formula $E_{t}=aE_{t-1}+(1-a)T_{t-1}$ +\end_inset + +, donde +\begin_inset Formula $E_{t}$ +\end_inset + + es la estimación de tiempo actual, +\begin_inset Formula $E_{t-1}$ +\end_inset + + la estimación anterior para el mismo proceso, +\begin_inset Formula $T_{t-1}$ +\end_inset + + el tiempo que tardó realmente y +\begin_inset Formula $a$ +\end_inset + + un parámetro ajustable entre 0 y 1, pues un valor de +\begin_inset Formula $a$ +\end_inset + + pequeño hace que se olviden rápidamente los tiempos de ejecuciones anteriores + y un valor grande hace que se recuerden demasiado tiempo. + Si se dispone de todos los procesos de forma simultánea, este algoritmo + proporciona el mínimo tiempo medio de retorno. +\end_layout + +\begin_layout Standard +Algoritmos apropiativos: +\end_layout + +\begin_layout Itemize + +\series bold +SRTF +\series default + ( +\emph on +Shortest Remaining Time First +\emph default +, +\begin_inset Quotes fld +\end_inset + +primero el que tenga el menor tiempo restante +\begin_inset Quotes frd +\end_inset + +). + Variante del SJF que permite quitar la CPU a un proceso para dársela a + otro con tiempo total de ráfaga de CPU menor al tiempo restante de CPU + de la ráfaga del proceso que se está ejecutando. +\end_layout + +\begin_layout Itemize + +\series bold +\emph on +Round Robin +\series default +\emph default + ( +\series bold +RR +\series default +) o +\series bold +circular +\series default +. + Es de los más antiguos, sencillos, equitativos y de mayor uso. + Similar al FCFS pero con un +\emph on +quantum +\emph default + de tiempo +\begin_inset Formula $q$ +\end_inset + + tal que, si un proceso consume un +\emph on +quantum +\emph default +, pasa al final de la cola de procesos listos para dar la CPU al siguiente + proceso. + De esta forma, si hay +\begin_inset Formula $n$ +\end_inset + + procesos, ninguno tiene tiempo de espera mayor a +\begin_inset Formula $(n-1)q$ +\end_inset + +. + Si +\begin_inset Formula $q$ +\end_inset + + es pequeño se desperdicia tiempo de CPU en cambios de proceso, pero si + es grande, los últimos procesos tardan mucho en ser atendidos, resultando + en tiempos de respuesta muy pobres en procesos interactivos. +\end_layout + +\begin_layout Standard +Otras formas de planificación pueden hacerse apropiativas o no apropiativas: +\end_layout + +\begin_layout Itemize + +\series bold +Planificación por prioridad +\series default +. + Cada proceso tiene una prioridad, normalmente un número que es mayor a + mayor prioridad (en UNIX es al revés), de modo que la CPU se da al primer + proceso de la cola con la mayor prioridad. + La asignación de prioridad puede ser +\series bold +estática +\series default +, si no cambia durante la ejecución del proceso, o +\series bold +dinámica +\series default + si depende de parámetros. + Un ejemplo de asignación dinámica para favorecer a los procesos limitados + por E/S, y que puedan ejecutarse pronto para enviar su siguiente solicitud + de E/S, es hacer que la prioridad sea inversamente proporcional a la fracción + del último +\emph on +quantum +\emph default + usado por el proceso. + Este +\emph on +quantum +\emph default + puede ser una referencia para medir el tiempo consumido o funcionar como + en la planificación +\emph on +round-robin +\emph default +. +\begin_inset Newline newline +\end_inset + +El +\series bold +bloqueo indefinido +\series default + o +\series bold +inanición +\series default + ocurre cuando los procesos de baja prioridad nunca llegan a ejecutarse. + Para evitarlo se puede disminuir cada cierto tiempo la prioridad del proceso + en ejecución, lo que tiene sentido si la planificación es apropiativa. + Esto sigue teniendo el problema de que pueden llegar continuamente procesos + de mayor cantidad que los que llevan tiempo esperando, por lo que una alternati +va es aumentar cada cierto tiempo la prioridad de los procesos listos. +\end_layout + +\begin_layout Itemize + +\series bold +Planificación de múltiples colas con realimentación +\series default +. + Es la más general, pero también la más compleja. + Existen varias colas de procesos listos y un proceso va a una u otra según + si es interactivo o por lotes, de sistema o de usuario, su prioridad, la + cola que usó la última vez, el consumo de CPU, etc. + Debe haber una planificación dentro de cada cola, y una planificación entre + colas, que suele ser apropiativa por prioridad pero puede ser cualquiera, + como el reparto equitativo y que cada cola se administre de una forma. + Para evitar que el esquema sea inflexible, debe haber un criterio para + que los procesos cambien de cola (realimentación). +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename pegado5.png + width 80text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Planificación de múltiples colas. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Si no se dispone de suficiente memoria es necesario que algunos procesos + se mantengan en disco. + Para ello, los procesos en memoria los gestiona un +\series bold +planificador a corto plazo +\series default + (PCP) mientras que un +\series bold +planificador a medio plazo +\series default + (PMP) es llamado periódicamente y se encarga de la suspensión y reanudación + de procesos, teniendo en cuenta criterios como el tiempo desde el último + intercambio, el tiempo de CPU que ha consumido el proceso recientemente, + el tamaño del proceso (los pequeños no causan problemas) y la prioridad + de este. + También es posible añadir un +\series bold +planificador a largo plazo +\series default + (PLP) que decida, de entre los procesos por lotes preparados, cuál ejecutar + después, eligiendo si este pasa directamente a memoria o a disco. +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename pegado6.png + width 80text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Planificación a corto, medio y largo plazo. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/iso/n3.lyx b/iso/n3.lyx new file mode 100644 index 0000000..fdc2fbb --- /dev/null +++ b/iso/n3.lyx @@ -0,0 +1,943 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Requisitos para la seguridad y amenazas asociadas: +\end_layout + +\begin_layout Itemize + +\series bold +Confidencialidad +\series default +: La información, incluyendo la existencia de esta, solo debe poder ser + leída por usuarios autorizados. +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Interceptación +\series default +: Leer un elemento sin autorización. + Incluye copias y lecturas no autorizadas, análisis estadístico para revelar + datos ocultos y observación del tráfico de mensajes. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Integridad +\series default +: Los elementos del sistema solo deben poder ser modificados, incluyendo + borrado y creación, por usuarios autorizados. +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Modificación +\series default +: Falsificar un elemento o modificarlo sin autorización, incluyendo alteración + de un programa en funcionamiento. +\end_layout + +\begin_layout Itemize + +\series bold +Invención +\series default +: Insertar objetos falsos en el sistema, incluyendo ficheros y mensajes. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Disponibilidad +\series default +: Los elementos de un sistema deben estar disponibles para usuarios autorizados. +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Interrupción +\series default +: Destruir un elemento o hacerlo inaccesible o inútil, incluyendo robo de + equipos, consumo excesivo de recursos, eliminación de ficheros o mensajes + y corte de las líneas de comunicaciones. +\end_layout + +\end_deeper +\begin_layout Standard +Para probar la seguridad de un sistema se suele contratar a un grupo de + expertos (equipo tigre o de penetración) para ver si puede penetrar en + él. + Ataques más comunes: +\end_layout + +\begin_layout Itemize +Reservar espacio de memoria o disco y leerlo, pues muchos sistemas no borran + el espacio antes de asignarlo. +\end_layout + +\begin_layout Itemize +Intentar llamadas inválidas, o con parámetros inválidos o no razonables. +\end_layout + +\begin_layout Itemize +Conectarse un sistema y pulsar +\family typewriter +C-c +\family default + o similares, terminando en ciertos sistemas el programa de verificación + de contraseñas y permitiendo el acceso. +\end_layout + +\begin_layout Itemize +Escribir un programa que aparente ser para iniciar sesión pero realmente + filtren la contraseña. +\end_layout + +\begin_layout Itemize +Buscar acciones que se conoce que no se deben llevar a cabo y hacerlas con + todas sus variaciones. +\end_layout + +\begin_layout Itemize +Convencer al administrador para que modifique el sistema de alguna forma + que evite verificaciones de seguridad. +\end_layout + +\begin_layout Itemize +Engañar o sobornar al personal de administración del centro de cálculo. +\end_layout + +\begin_layout Standard +Ataques específicos: +\end_layout + +\begin_layout Itemize + +\series bold +Bombas lógicas +\series default +: +\begin_inset Quotes fld +\end_inset + +Estallan +\begin_inset Quotes frd +\end_inset + + en un instante de tiempo determinado, y muchas veces son creadas por el + desarrollador del programa donde se encuentran como forma de protección. +\end_layout + +\begin_layout Itemize + +\series bold +Puertas traseras +\series default + ( +\emph on +backdoors +\emph default +): Programas normales pero que además permiten el acceso al sistema desde + el exterior o como administrador. + Por ejemplo un programa de autenticación que con cierta combinación de + usuario y contraseña proporciona acceso completo. +\begin_inset Foot +status open + +\begin_layout Plain Layout +Ver < +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +http://scienceblogs.com/goodmath/2007/04/15/strange-loops-dennis-ritchie-a/ +\end_layout + +\end_inset + +>. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +Desbordamiento de +\emph on +buffer +\series default +\emph default +: Aprovechar fallos de programación para causar que un programa escriba + (o lea) más información de la que cabe en el +\emph on +buffer +\emph default + que ha reservado, pudiendo llegar a ejecutar código malicioso, normalmente + sobrescribiendo la dirección de retorno en la pila para que apunte a este. +\end_layout + +\begin_layout Itemize + +\series bold +Caballos de Troya +\series default +: Sustituyen una orden por otra con el mismo nombre. +\end_layout + +\begin_layout Itemize + +\series bold +Virus +\series default +: Se encuentran dentro de un programa y se replican en otros programas o + ficheros, extendiéndose dentro del ordenador y copiándose a otros mediante + sistemas de almacenamiento y redes. +\end_layout + +\begin_layout Itemize + +\series bold +Gusanos +\series default +: Como los virus, pero en vez de copiarse en otros ficheros se transmiten + por red. +\end_layout + +\begin_layout Itemize + +\series bold +\emph on +Spyware +\series default +\emph default +: Código que, sin que el usuario sea consciente de ello ni lo autorice, + se ejecuta en segundo plano y recopila información del sistema y la actividad + del usuario para enviarla a computadores externos. +\end_layout + +\begin_layout Itemize + +\series bold +\emph on +Rootkits +\series default +\emph default +: Permiten acceso privilegiado continuo a un computador, normalmente mediante + una puerta trasera, a la vez que ocultan activamente su presencia. +\end_layout + +\begin_layout Standard +En 1975, Saltzer y Schroeder identificaron varios principios de diseño de + cara a la seguridad: +\end_layout + +\begin_layout Enumerate +El diseño debe ser público (muchos ojos ven más fallos que pocos). +\end_layout + +\begin_layout Enumerate +El estado predefinido debe ser de +\begin_inset Quotes fld +\end_inset + +no acceso +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Se debe verificar la autorización en el momento de hacer la operación; no + se debe verificar el permiso, determinar que está permitido y no hacer + más comprobaciones. +\end_layout + +\begin_layout Enumerate +Dar a los procesos el mínimo privilegio que les permita hacer su trabajo. +\end_layout + +\begin_layout Enumerate +El mecanismo de protección debe ser simple, uniforme e integrado hasta las + capas más bajas del sistema (la seguridad no es algo que se pueda añadir + por encima). +\end_layout + +\begin_layout Enumerate +El esquema debe ser psicológicamente aceptable para que los usuarios no + pongan la contraseña en un +\emph on +post-it +\emph default + o similares. +\end_layout + +\begin_layout Section +Autenticación +\end_layout + +\begin_layout Standard +La seguridad de un sistema requiere de: +\end_layout + +\begin_layout Itemize + +\series bold +Protección +\series default +. + Distinguimos entre la +\series bold +política +\series default +, que define qué se va a proteger, qué usuarios pueden acceder a qué recursos, + etc., y que pueden estar determinadas en el diseño del sistema, formuladas + por los administradores o definidas por los usuarios para proteger sus + propios ficheros, y el +\series bold +mecanismo +\series default +, que define cómo implementa esto el sistema, y es en lo que nos centraremos. +\end_layout + +\begin_layout Itemize + +\series bold +Entorno externo +\series default +. + Por ejemplo, no exponer la consola del operador a personal no autorizado, + ni permitir extraer el almacenamiento del sistema para transportarlo a + otro sin protección. +\end_layout + +\begin_layout Standard +La +\series bold +autenticación de usuarios +\series default + es el problema de identificar a los usuarios cuando están conectados al + sistema. + El método más común es pedir un nombre o identificador (ID) y una contraseña + para autenticar el ID. + Este identificador determina los privilegios del usuario, es decir, lo + que este puede o no puede hacer en el sistema. + En general existe un usuario o grupo reducido con estado de +\series bold +supervisor +\series default + o +\series bold +superusuario +\series default +, que les permite llevar a cabo funciones protegidas especialmente. + Algunos sistemas también disponen de cuentas anónimas cuyos usuarios tienen + privilegios más restringidos. + En muchos solo se permite acceder al sistema a los usuarios con un ID ya + registrado. +\end_layout + +\begin_layout Subsection +Contraseñas en UNIX +\end_layout + +\begin_layout Standard +La contraseña, junto con un +\series bold +valor base +\series default + ( +\emph on +salt +\emph default +) y el algoritmo de cifrado (función +\emph on +hash +\emph default +) a utilizar se pasan como parámetros a una función llamada +\family typewriter +crypt +\family default +, que devuelve la contraseña cifrada. + Esta se guarda en el fichero de contraseñas (antes +\family typewriter +/etc/passwd +\family default + y actualmente +\family typewriter +/etc/shadow +\family default +), con formato +\family typewriter +$ +\emph on +tipo +\emph default +$ +\emph on +base +\emph default +$ +\emph on +contraseñaCifrada +\family default +\emph default +, donde +\family typewriter +\emph on +tipo +\family default +\emph default + es 1 para MD5 (obsoleto), 5 para SHA-256 y 6 para SHA-512 y +\family typewriter +\emph on +base +\family default +\emph default + es la base sin cifrar. + El valor de la base está relacionado con el momento en que se asigna la + contraseña a un usuario y sirve para impedir que contraseñas iguales se + cifren igual. +\end_layout + +\begin_layout Subsection +Elección de contraseña +\end_layout + +\begin_layout Standard +Las funciones +\emph on +hash +\emph default + usadas están diseñadas para evitar ataques por adivinación, incluso usando + supercomputadores, pero algunos usuarios al elegir su contraseña eligen + una fácilmente adivinable. + Si se rechazan las contraseñas por longitud mínima, los usuarios pueden + elegir contraseñas igualmente adivinables como su propio nombre, el de + su calle, una palabra común del diccionario, etc., pero si se asignan contraseña +s aleatorias, la mayoría de los usuarios no la recordarán o acabarán apuntándola + en un lugar visible. + Soluciones (no incompatibles): +\end_layout + +\begin_layout Itemize + +\series bold +Instrucción del usuario +\series default +: Explicar a los usuarios la importancia de elegir contraseñas seguras y + cómo elegirlas, así como buenos hábitos como cambiarlas a menudo, no anotarlas + en lugares visibles ni comunicarlas, etc. + Una buena contraseña suele tener letras mayúsculas, minúsculas, números + y signos de puntuación u otros caracteres alfanuméricos. +\end_layout + +\begin_layout Itemize + +\series bold +Inspección proactiva de contraseña +\series default +: El sistema usa algoritmos y heurísticas para determinar la seguridad de + una contraseña y rechazarla si es fácilmente adivinable. + Incluso el administrador del sistema puede comprobar la robustez de las + contraseñas ejecutando programas de adivinación o +\emph on + cracks +\emph default +. +\end_layout + +\begin_layout Section +Protección +\end_layout + +\begin_layout Standard +Un +\series bold +derecho +\series default + es el permiso para realizar una determinada acción sobre algún objeto, + y un +\series bold +dominio +\series default +( +\series bold +de protección +\series default +) es una función que a cada objeto le asigna un conjunto de derechos. + Todo proceso se ejecuta en un dominio, y muchos sistemas proveen mecanismos + que permiten que los procesos cambien de dominio. + Algunas formas de representar los dominios son: +\end_layout + +\begin_layout Itemize + +\series bold +Matriz de protección +\series default + o +\series bold +de acceso +\series default +: Con una fila por dominio, una columna por proceso y un conjunto de derechos + en cada celda. + Si los procesos pueden cambiar de dominio, los dominios se pueden identificar + con objetos y añadir en estos el derecho de +\begin_inset Quotes fld +\end_inset + +entrar +\begin_inset Quotes frd +\end_inset + +. + Incluso la propia matriz se puede entender como un objeto que se puede + modificar mediante una serie de operaciones. + En la práctica esta matriz no se almacena. +\end_layout + +\begin_layout Itemize + +\series bold +Listas de control de acceso +\series default + o +\series bold +ACLs +\series default + ( +\emph on +Access Control Lists +\emph default +): A cada objeto se le asocia una lista con todos los dominios que pueden + tener acceso a él y con qué derechos. + Normalmente los dominios se asocian a usuarios y, si estos se pueden agrupar, + las ACLs también se pueden aplicar a los grupos. + Si una ACL contiene tanto una entrada para un usuario como entradas para + grupos a los que este pertenece se debe establecer un criterio sobre qué + derechos prevalecen. +\end_layout + +\begin_layout Itemize + +\series bold +Listas de posibilidades +\series default + o +\series bold +de capacidades +\series default +: A cada dominio se le asocia una lista de entradas, llamadas +\series bold +posibilidades +\series default + o +\series bold +capacidades +\series default +, que representan un objeto (normalmente con su tipo y una referencia a + este) y los derechos que se tienen sobre este (si un objeto no aparece, + no se tiene ningún derecho). + Normalmente los dominios se asocian a procesos, los cuales para acceder + a un objeto indican la posición de la capacidad correspondiente. + Como estas listas deben ser protegidas del manejo indebido, se suelen guardar + dentro del sistema operativo permitiendo que los procesos las referencien + por su número. + En general las posibilidades tienen operaciones genéricas para copiarlas, + eliminarlas, trasferirlas o generar una versión más restrictiva. +\end_layout + +\begin_layout Standard +Las ACLs se corresponden directamente con las necesidades del usuario, que + puede especificar los dominios que pueden acceder a un objeto cuando lo + crea, pero al haber que comprobar cada acceso al objeto, son ineficientes. + Las listas de posibilidades, por su parte, son mucho más eficientes, pero + son más complejas al no corresponderse directamente con las necesidades + de los usuarios. +\end_layout + +\begin_layout Subsection +Cancelación +\end_layout + +\begin_layout Standard +La +\series bold +cancelación +\series default + o +\series bold +revocación +\series default + de derechos de acceso puede ser +\series bold +inmediata +\series default + o +\series bold +demorada +\series default +, +\series bold +selectiva +\series default + o +\series bold +general +\series default +, +\series bold +parcial +\series default + o +\series bold +total +\series default +, y +\series bold +temporal +\series default + o +\series bold +permanente +\series default +. + Con las ACLs la cancelación es sencilla, pues basta eliminar de esta los + derechos que serán cancelados. +\end_layout + +\begin_layout Standard +Con las posibilidades haría falta determinar todas las existentes para un + objeto y modificarlas, pero esto es ineficiente. + Para cada objeto se podría llevar un registro de todas las posibilidades + asociadas, pero este podría consumir mucha memoria y en algunos sistemas + no es posible porque los procesos pueden pasarse posibilidades sin conocimiento + del sistema. +\end_layout + +\begin_layout Standard +Una técnica es hacer que cada posibilidad apunte hacia un objeto indirecto + en vez de al objeto en sí, de forma que basta romper esta conexión para + invalidar todas las posibilidades. + Otra es asignar a cada objeto un gran número aleatorio, también presente + en la posibilidad, y permitir la operación si ambos coinciden, de forma + que basta cambiar el número del objeto para invalidar todas las posibilidades. + Ninguna de estas dos técnicas permite la revocación selectiva. +\end_layout + +\begin_layout Subsection +Protección en UNIX +\end_layout + +\begin_layout Standard +Unix combina ACLs restringidas con listas de posibilidades. + Cada usuario lleva asociado un número, el +\series bold +identificador de usuario +\series default + o +\series bold +UID +\series default + ( +\emph on +User IDentifier +\emph default +), que se asocia al nombre de usuario o +\emph on +login +\emph default + mediante el fichero +\family typewriter +/etc/passwd +\family default +. + Destaca el usuario con UID 0, normalmente llamado +\family typewriter +root +\family default +, que tiene todos los privilegios. + Es pues importante elegir una buena contraseña para esta cuenta y protegerla. + Algunas distribuciones Linux no permiten iniciar sesión como +\family typewriter +root +\family default +. +\end_layout + +\begin_layout Standard +También hay grupos de usuarios, con un +\series bold +identificador de grupo +\series default + o +\series bold +GID +\series default + ( +\emph on +Group IDentifier +\emph default +) asociado al nombre del grupo y la lista de usuarios pertenecientes a él + a través del fichero +\family typewriter +/etc/group +\family default +. +\end_layout + +\begin_layout Standard +Pueden definirse varios usuarios o grupos con el mismo UID o GID, pero para + el sistema operativo se trata del mismo usuario o grupo. + Un dominio en UNIX se corresponde aproximadamente con un par +\begin_inset Formula $(\text{UID},\text{GID})$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Las ACLs restringidas se limitan a 3 conjuntos de usuarios: el propietario + de un fichero, el grupo de usuarios al que pertenece y el resto de usuarios. + Para cada uno existen 3 permisos: lectura ( +\family typewriter +r +\family default +), escritura ( +\family typewriter +w +\family default +) y ejecución ( +\family typewriter +x +\family default +). + En directorios, el permiso +\family typewriter +r +\family default + indica que se puede listar su contenido, +\family typewriter +w +\family default + que se puede modificar (creando, borrando y renombrando ficheros y subdirectori +os) y +\family typewriter +x +\family default + que se puede hacer que este sea nuestro directorio actual y que es posible + atravesarlo. +\end_layout + +\begin_layout Standard +Para determinar lo que un proceso puede hacer sobre un fichero, si el usuario + tiene UID 0, se considera que tiene los tres permisos; de lo contrario, + si el UID del proceso coincide con el del fichero, se queda con los permisos + de propietario; si esto no se cumple pero el GID del proceso coincide con + el del fichero, se queda con los permisos de grupo, y en caso contrario + usa los del resto de usuarios. +\end_layout + +\begin_layout Standard +Estos permisos suelen mostrarse mediante una cadena de 9 letras con formato + +\family typewriter +rwxrwxrwx +\family default + para representar los permisos de los 3 conjuntos en orden, donde la letra + correspondiente se sustituye por +\family typewriter +- +\family default + si el conjunto de usuarios correspondiente no tiene el permiso. + Esta cadena se almacena internamente mediante 9 bits, establecidos como + 1 si el permiso se da o como 0 en caso contrario. +\end_layout + +\begin_layout Standard +Algunos sistemas UNIX, como Linux, implementan también ACLs completas para + los sistemas de ficheros que lo admiten. +\end_layout + +\begin_layout Standard +Para cambiar de dominio, los ejecutable pueden poseer los bits SETUID y + SETGID. + Si SETUID está activo, al ejecutar el fichero, el proceso en que se ejecuta + tendrá como UID efectivo (EUID) el del propietario del ejecutable, y lo + mismo ocurre con SETGID para el grupo efectivo (EGID). + Un programa puede conocer su usuario y grupo reales mediante las funciones + +\family typewriter +getuid +\family default + y +\family typewriter +getgid +\family default +, así como su usuario y grupo efectivos mediante +\family typewriter +geteuid +\family default + y +\family typewriter +getegid +\family default +. + Cuando un ejecutable posee el bit SETUID, la primera +\family typewriter +x +\family default + en la cadena que representa los permisos cambia por una +\family typewriter +s +\family default +. +\end_layout + +\begin_layout Standard +Por ejemplo, el comando +\family typewriter +passwd +\family default + permite cambiar la contraseña a un usuario, pero para ello necesita acceder + y modificar +\family typewriter +/etc/shadow +\family default +, que en general no puede ser leído ni escrito por nadie salvo +\family typewriter +root +\family default +. + Por tanto +\family typewriter +passwd +\family default + tiene como propietario +\family typewriter +root +\family default + y tiene activo el SETUID, y determina el usuario que lo ha invocado con + +\family typewriter +getuid +\family default +. + Si el UID es 0, permite cambiar la contraseña de cualquier usuario; de + lo contrario solo permite cambiar la del usuario que ejecutó que lo ejecutó. +\end_layout + +\begin_layout Standard +Las ACLs sólo se comprueban al abrir el fichero. + Si se tiene acceso a este, se crea una entrada en la +\series bold +tabla de ficheros abiertos +\series default +, una lista de capacidades mantenida por el sistema operativo, y se devuelve + un índice a esta llamado +\series bold +descriptor de fichero +\series default +. + Esto significa que si el ACL de un fichero cambia tras haber sido abierto, + el proceso puede seguir accediendo a él aunque la nueva ACL no lo permitiera, + incumpliendo el principio de diseño que dice que la autorización debe comprobar +se en el momento de realizar la operación, pero a cambio permite un mejor + rendimiento. +\end_layout + +\end_body +\end_document diff --git a/iso/n4.lyx b/iso/n4.lyx new file mode 100644 index 0000000..4944c11 --- /dev/null +++ b/iso/n4.lyx @@ -0,0 +1,895 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Los sistemas de computación actuales necesitan un +\series bold +almacenamiento secundario +\series default + que complemente al primario, para almacenar grandes cantidades de información + que no caben en el primario; preservarla para que no desaparezca cuando + termine el proceso o el sistema se apague, y permitir que la información + sea fácilmente compartida y accedida. + Para ello se usan discos y otros dispositivos que almacenan la información + en un conjunto de bloques, o que se manejan como si fuera así, y sobre + los cuales el sistema operativo crea una abstracción para facilitar su + uso a usuarios y programadores. +\end_layout + +\begin_layout Standard +Un +\series bold +sistema de ficheros +\series default + es una parte del sistema operativo que organiza un sistema de almacenamiento + secundario como una serie de ficheros o unidades de información que se + agrupan en directorios, y también es el formato que adquiere el disco para + ello. + Desde el punto de vista del usuario es importante la forma de nombrar los + ficheros, las operaciones permitidas, el tipo de protección que podemos + aplicar, etc., mientras que desde el punto de vista del sistema operativo + es importante la implementación. +\end_layout + +\begin_layout Section +Ficheros +\end_layout + +\begin_layout Standard +En los sistemas modernos, un fichero es una secuencia de bytes con significado + definido por el programa que accede al mismo. + Cada fichero tiene un nombre que lo identifica, y que dependiendo del diseño + del sistema de ficheros y del sistema operativo, distingue o no entre mayúscula +s y minúsculas, tiene un cierto tamaño máximo, tiene o no una estructura + (como +\begin_inset Quotes fld +\end_inset + + +\family typewriter +\emph on +nombre +\emph default +. +\emph on +extensión +\family default +\emph default + +\begin_inset Quotes frd +\end_inset + +), etc. +\end_layout + +\begin_layout Standard +Los ficheros suelen tener atributos, como por ejemplo: +\end_layout + +\begin_layout Itemize +ACLs, contraseña, creador, propietario. +\end_layout + +\begin_layout Itemize +Sólo lectura, ocultación, fichero de sistema, biblioteca, texto o binario, + acceso aleatorio, temporal, bloqueo. +\end_layout + +\begin_layout Itemize +Tiempos de creación, último acceso y última modificación. +\end_layout + +\begin_layout Itemize +Tamaño actual y tamaño máximo. +\end_layout + +\begin_layout Standard +En general hay operaciones para crear un fichero vacío, eliminar un fichero, + abirlo, cerrar un fichero abierto, leer una cantidad de bytes, escribir + una cantidad de bytes al final (añadir) o (si es posible) en otra posición, + cambiar de posición dentro del fichero, obtener y establecer los atributos, + cambiar de nombre o mover el fichero a otro directorio, y truncar el fichero + a partir de una posición. +\end_layout + +\begin_layout Subsection +Ficheros regulares +\end_layout + +\begin_layout Standard +Contienen información del usuario. + Distinguimos entre ficheros +\series bold +de texto +\series default +, codificados en UTF-8 o algún otro sistema y con líneas que terminan en + CR, LF o LF/CR y que se pueden ver tal cual de forma legible, y los +\series bold +binarios +\series default +, que tienen cierta estructura pero no son de texto. +\end_layout + +\begin_layout Standard +Así, los ejecutables, binarios generalmente manejados por el sistema operativo, + contienen una cabecera con un +\series bold +número mágico +\series default + (número que identifica el formato de archivo), el tamaño de las secciones + de código y datos, el punto de entrada (dirección donde debe empezar la + ejecución) y otra información, seguida de las propias secciones. + Por su parte, los archivos de biblioteca son ficheros binarios que almacenan + código máquina de funciones (e información asociada). +\end_layout + +\begin_layout Standard +Muchas veces el nombre del fichero contiene una +\series bold +extensión +\series default + que identifica el tipo, que en los sistemas operativos modernos como Linux + no es significativa pero sí lo es para algunos programas, como exploradores + de ficheros para saber con qué programa abrirlo, y ayudan al usuario a + identificar el tipo rápidamente. + +\end_layout + +\begin_layout Standard +Ejemplos de extensiones son +\family typewriter +.bak +\family default + para copias de seguridad; +\family typewriter +.hlp +\family default + para ficheros de ayuda; +\family typewriter +.gif +\family default + o +\family typewriter +.jpg +\family default + para imágenes GIF o JPEG; +\family typewriter +.c +\family default + para código fuente en C; +\family typewriter +.html +\family default +o +\family typewriter +.tex +\family default + o +\family typewriter +.txt +\family default + para documentos HTML, \SpecialChar TeX + o de texto plano; +\family typewriter +.mp3 +\family default + para sonido MP3; +\family typewriter +.mpg +\family default + para vídeo MPEG; +\family typewriter +.o +\family default + para ficheros objeto; +\family typewriter +.pdf +\family default + o +\family typewriter +.ps +\family default + para documentos PDF; +\family typewriter +.zip +\family default + para archivos comprimidos ZIP; etc. +\end_layout + +\begin_layout Subsection +Ficheros especiales +\end_layout + +\begin_layout Standard +No se corresponden con un fichero en el propio sistema de almacenamiento, + sino con una forma de tratar otro tipo de datos como si fuera un fichero + (en el almacenamiento lo que se guarda es algún tipo de referencia). + En UNIX existen dos tipos: +\end_layout + +\begin_layout Itemize + +\series bold +De caracteres +\series default +: Representan dispositivos de E/S como terminales, impresoras y conexiones + de red. + No es posible cambiar de posición, escribir en una posición distinta del + final o truncarlos. +\end_layout + +\begin_layout Itemize + +\series bold +De bloques +\series default +: Representan dispositivos que permiten acceso aleatorio, en general almacenamie +nto secundario. +\end_layout + +\begin_layout Subsection +Directorios +\end_layout + +\begin_layout Standard +Son ficheros gestionados por el sistema operativo para registrar los ficheros + y organizarlos en una +\series bold +jerarquía de directorios +\series default +, de la que existen varios tipos: +\end_layout + +\begin_layout Itemize + +\series bold +Directorio único +\series default +, con los ficheros de todos los usuarios. + Se usaban en los primeros microcomputadores. + Puede haber problemas si distintos usuarios utilizan los mismos nombres + de fichero. +\end_layout + +\begin_layout Itemize + +\series bold +Directorio por usuario +\series default +, aunque no es deseable si uno tiene muchos ficheros. + Se debe decidir si un usuario puede o no acceder a los directorios de otros + y cómo. +\end_layout + +\begin_layout Itemize + +\series bold +Árbol de directorios +\series default +. + Un directorio puede contener a otros. + Es lo que se usa hoy en día. + Normalmente los directorios tienen una entrada especial +\family typewriter +. + +\family default + para referirse al propio directorio y +\family typewriter +.. + +\family default + para referirse al directorio padre. + Se accede a los ficheros (y directorios) mediante una +\series bold +ruta de acceso +\series default +, que indica el nombre de los directorios por los que hay que pasar hasta + llevar al fichero deseado (incluyendo el nombre del fichero), separados + por un cierto caracter, que es +\family typewriter +/ +\family default + en UNIX y +\family typewriter + +\backslash + +\family default + en Windows. + Dos tipos: +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Absoluta +\series default +: Parte desde la raíz y comienza por el caracter separador. + Es única para un mismo fichero siempre que no se usen +\family typewriter +. + +\family default + y +\family typewriter +.. +\family default +. +\end_layout + +\begin_layout Itemize + +\series bold +Relativa +\series default +: Parte de un +\series bold +directorio actual +\series default + o +\series bold +de trabajo +\series default +, y no comienza por el caracter separador. + Existe una cantidad numerable de rutas relativas para un mismo fichero + desde un mismo directorio actual. +\end_layout + +\end_deeper +\begin_layout Standard +No podemos leer y escribir en ellos como con los otros tipos de ficheros, + sino que en su lugar la apertura de un directorio sirve para recorrido + y hay operaciones para obtener la siguiente entrada; ligar o enlazar un + fichero al directorio, permitiendo que un mismo fichero aparezca en varios + directorios, y desligar una entrada del directorio, lo que equivale a borrarla + si esta es la única entrada del sistema de fichero en la que aparece. +\end_layout + +\begin_layout Section +Representación +\end_layout + +\begin_layout Standard +La representación en disco debe ser tal que consiga una buena velocidad + y aprovechamiento del espacio pero a la vez reduzca la fragmentación interna + (partes de un bloque sin aprovechar) y externa (bloques libres que no se + pueden ocupar). +\end_layout + +\begin_layout Subsection +Bloques lógicos +\end_layout + +\begin_layout Standard +Por lo general los discos proporcionan una interfaz basada en una lista + de +\series bold +bloques físicos +\series default + o +\series bold +sectores +\series default +, la unidad mínima de lectura y escritura, cuyo tamaño es constante y suele + ser una potencia de 2 desde +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + hasta +\begin_inset Formula $\unit[4]{kB}$ +\end_inset + +. + Es común que el sistema de ficheros agrupe o incluso divida los sectores + para formar +\series bold +bloques lógicos +\series default + o unidades de asignación más grandes o pequeñas. +\end_layout + +\begin_layout Standard +Si el bloque lógico es grande, un fichero tendrá menos bloques y el rendimiento + en discos duros será mayor pero habrá más fragmentación interna, mientras + que si el bloque es pequeño habrá poca fragmentación interna pero las listas + de bloques ocuparán mucho. +\end_layout + +\begin_layout Subsection +Asignación de espacio +\end_layout + +\begin_layout Standard +Todo fichero tiene asociado un conjunto de bloques donde guarda sus datos. + La asignación de estos puede ser de varias formas: +\end_layout + +\begin_layout Itemize + +\series bold +Adyacente +\series default + o +\series bold +contigua +\series default +. + De fácil especificación, pues solo hay que recordar un número para localizar + los bloques, y ofrece un excelente rendimiento en discos duros al suponer + muy pocos movimientos del brazo del disco o ninguno. + En general no es realizable, pues si no se sabe el tamaño máximo de un + fichero no se sabe cuánto espacio reservarle; si este es muy pequeño, cuando + el fichero crezca hay que moverlo a un hueco mayor, algo costoso y no siempre + posible. + Sin embargo es útil en medios como CD-ROMs y DVD-ROMs, donde se sabe el + tamaño de los ficheros de antemano. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante lista ligada +\series default +. + En cada bloque se guarda la dirección del siguiente. + No hay fragmentación externa y la entrada de directorio correspondiente + solo tiene que guardar la dirección del primer bloque, pero el acceso aleatorio + es muy lento y los programas que esperan que los bloques tengan un tamaño + potencia de 2 también se ralentizan. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante lista ligada e índice +\series default +. + Similar, pero la dirección del siguiente bloque no se guarda en el bloque + sino en una tabla con una entrada por bloque que indica la dirección del + siguiente en el fichero. + Esto solo es eficiente si toda la tabla está en memoria, lo que es un problema + si la tabla es grande. + Se puede reducir el tamaño de la tabla usando bloques lógicos grandes, + pero entonces se desperdicia espacio por fragmentación. + Además, si la tabla se modifica y la modificación no se escribe en disco, + una caída del sistema puede hacer que los ficheros desaparezcan o queden + incompletos. +\begin_inset Newline newline +\end_inset + +Se puede usar un número de bloque inválido (como el 0) para indicar que + un bloque está libre. + El sistema FAT, usado por MS-DOS y uno de los implementados en Windows, + usa este sistema. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante nodos-i +\series default +. + A cada fichero se le asigna un nodo-i (nodo índice) que contiene las direccione +s en disco de los bloques del fichero, en orden. + Normalmente se usan nodos-i pequeños capaces de almacenar unas pocas direccione +s y se guardan varios nodos-i en un mismo bloque, de modo que una zona contigua + del disco (o varias, por eficiencia), llamada +\series bold + tabla de nodos-i +\series default +, se destinan a nodos-i. +\begin_inset Newline newline +\end_inset + +Para ficheros grandes se usa un +\series bold +bloque simplemente indirecto +\series default + (BSI), que contiene direcciones de bloques de datos adicionales; un +\series bold +bloque doblemente indirecto +\series default + (BDI), que contiene direcciones de más BSIs, y un +\series bold +bloque triplemente indirecto +\series default + (BTI), que contiene direcciones de más BDIs, de forma que 3 de las direcciones + del nodo-i se usan para estos bloques. +\begin_inset Newline newline +\end_inset + +Este es el esquema usado en la mayoría de sistemas de ficheros en sistemas + UNIX, y permite acceder a cualquier bloque de un fichero abierto accediendo, + como mucho, a 4 bloques del disco si el nodo-i está en memoria. +\end_layout + +\begin_layout Standard +Además, debe haber una forma de saber que bloques de datos (así como qué + números de nodos-i) están libres. + Principalmente hay dos métodos: +\end_layout + +\begin_layout Itemize + +\series bold +Lista ligada de bloques +\series default +: Una lista con tantos números de bloques libres como pueda más un puntero + al siguiente bloque. + Los bloques de la lista son libres, por lo que podrán ser usados si es + necesario. +\end_layout + +\begin_layout Itemize + +\series bold +Mapa de bits +\series default +: Contiene un bit para cada bloque, que indica si el bloque es libre u ocupado. + Los bloques del mapa no son libres, pero los sistemas de ficheros actuales + como Ext2, Ext3, Ext4 o NTFS lo usan porque permite buscar de forma sencilla + grupos de bloques libres consecutivos. +\end_layout + +\begin_layout Subsection +Ficheros compartidos +\end_layout + +\begin_layout Standard +Un fichero es compartido si puede aparecer en varios directorios con el + mismo o distinto nombre, o en un mismo directorio con nombres distintos. + La conexión entre un directorio y un fichero se llama +\series bold +enlace +\series default +, y si existe, el sistema de ficheros pasa de ser un árbol a ser simplemente + un grafo acíclico dirigido. +\end_layout + +\begin_layout Itemize + +\series bold +Enlace físico +\series default + o +\emph on +hard link +\emph default +: Los datos relativos a un fichero se guardan en una estructura de datos + y las entradas de directorio correspondientes apuntan a esta. + Es necesario que entre los datos del fichero exista un contador de enlaces, + pues el nodo solo debe liberarse cuando se borra un fichero y no quedan + más enlaces. +\end_layout + +\begin_layout Itemize + +\series bold +Enlace simbólico +\series default + o +\emph on +soft link +\emph default +: Se usa un tipo de fichero especial que contiene una ruta de acceso al + fichero al que se enlaza. + Cuando el fichero original se borra, el enlace simbólico queda invalidado + salvo que se cree un fichero con la misma ruta. +\end_layout + +\begin_layout Standard +UNIX implementa ambos. + Los enlaces simbólicos tienen más coste, pero presentan menos problemas, + con lo que UNIX permite enlaces simbólicos de directorios e incluso a otros + sistemas de ficheros pero no permite hacer lo mismo con enlaces físicos. + Un programa de copias de seguridad puede duplicar datos al copiar un fichero + compartido si no usa alguna forma de detectar los enlaces para evitar esta + duplicación. +\end_layout + +\begin_layout Subsection +Directorios +\end_layout + +\begin_layout Standard +En MS-DOS, los directorios son ficheros salvo el directorio raíz que ocupa + unos bloques fijos en disco, por lo que tiene un tamaño máximo preestablecido. + Estos almacenan una lista desordenada de entradas o registros de 32 bytes, + una por fichero, con los siguientes campos, en orden: +\end_layout + +\begin_layout Enumerate +8 bytes para el nombre del fichero y 3 para la extensión. +\end_layout + +\begin_layout Enumerate +Un byte para atributos donde los bits se usan como banderas. + Uno de ellos distingue a un directorio de un fichero normal. +\end_layout + +\begin_layout Enumerate +Un campo de 10 bytes reservado para futuros usos. +\end_layout + +\begin_layout Enumerate +2 bytes para la hora de última modificación: 5 bits para la hora (0–23), + 6 para el minuto (0–59) y 5 para el segundo, que debe ser par (0–58). +\end_layout + +\begin_layout Enumerate +2 bytes para la fecha de última modificación: 7 bits para el año (correspondiend +o el valor 0 al 1980), 4 para el mes (1–12) y 5 para el día del mes (1–31). +\end_layout + +\begin_layout Enumerate +2 bytes para la dirección del primer bloque. +\end_layout + +\begin_layout Enumerate +4 bytes para el tamaño del fichero, en bytes. +\end_layout + +\begin_layout Standard +En la mayoría de sistemas de ficheros en sistemas UNIX, los atributos se + almacenan en los nodos-i y el directorio raíz no tiene tratamiento especial. + En el de los primeros UNIX, las entradas de un directorio eran de 16 bytes, + siendo 2 bytes para el número de nodo-i del fichero y otros 14 bytes para + el nombre, que tenía pues un máximo de 14 caracteres. + Posteriormente se crearon sistemas de ficheros para sistemas UNIX que soportaba +n nombres de hasta 255 caracteres, con entradas con los siguientes campos, + en orden: +\end_layout + +\begin_layout Enumerate +4 bytes para el número de nodo-i. +\end_layout + +\begin_layout Enumerate +2 bytes para la longitud del registro. +\end_layout + +\begin_layout Enumerate +1 byte para la longitud del nombre. +\end_layout + +\begin_layout Enumerate +1 byte para el tipo de fichero (regular, de caracteres, de bloques o directorio). +\end_layout + +\begin_layout Enumerate +Hasta 255 bytes para el nombre. +\end_layout + +\begin_layout Standard +Una entrada no puede estar entre dos bloques, y el total de registros de + un bloque debe cubrirlo enteramente; de ahí que se permita que la longitud + de un registro sea mayor a la estrictamente necesaria. + Siempre que se crea un directorio se añaden dos entradas, +\family typewriter +. + +\family default + y +\family typewriter +.. +\family default +. + Para añadir una nueva entrada, se elige una existente, se disminuye su + tamaño y se añade la nueva en el hueco, o se añade un nuevo bloque al directori +o si esto no es posible. + Para eliminarla se añade su espacio al de la entrada anterior, o si esto + no es posible se marca el registro como libre utilizando un número de nodo-i + inválido. +\end_layout + +\begin_layout Subsection +Estructura general +\end_layout + +\begin_layout Standard +En general el bloque 0 del almacenamiento es el +\series bold +bloque de arranque +\series default + y puede contener código de arranque del sistema operativo que se encuentra + en la partición. + El bloque 1 suele ser el +\series bold +superbloque +\series default +, que contiene información crítica del sistema de ficheros como el total + de bloques lógicos, tamaño de los mapas de bits, etc., por lo que algunos + sistemas de ficheros tienen varias copias de este en otras zonas del disco. + En otros, el superbloque es parte del bloque de arranque. +\end_layout + +\begin_layout Standard +A partir de entonces hay mucha variación, pero en los primeros sistemas + de ficheros en UNIX encontramos el mapa de bits de bloques, el de nodos-i, + la tabla de nodos-i y, finalmente, el resto de bloques, para ficheros y + bloques indirectos. +\end_layout + +\begin_layout Section +Cachés +\end_layout + +\begin_layout Standard +Una +\series bold +caché de disco +\series default +, +\series bold +bloques +\series default + o +\series bold +\emph on +buffers +\series default +\emph default + es una colección de bloques del almacenamiento secundario que se mantienen + temporalmente en memoria principal por rendimiento. + La política de sustitución podría ser LRU mediante colas, pero el LRU puro + no es recomendable si se quiere mantener la consistencia del sistema de + ficheros ante posibles fallos del sistema, pues por ejemplo un bloque que + contiene nodos-i se usará mucho y si se modifica en caché y no se vuelve + a escribir en disco el sistema de ficheros quedará inconsistente ante un + fallo del sistema. +\end_layout + +\begin_layout Standard +Por ello se suele usar un LRU modificado, en el que los bloques que por + su tipo probablemente no se vuelvan a utilizar pronto pasan directamente + al frente de la cola y los bloques esenciales para la consistencia se escriben + directamente en disco sin esperar a ser expulsados. + Tampoco es recomendable mantener mucho tiempo los bloques de datos modificados + en caché por riesgo de perder los cambios. + Así, en muchos UNIX los bloques de datos se escriben en disco como tarde + a los 30 segundos de ser modificados, mientras que los de metadatos se + escriben como tarde a los 5 segundos. + También existe la orden +\family typewriter +sync +\family default +, que al ejecutarse fuerza la escritura de todos los bloques modificados. +\end_layout + +\begin_layout Standard +Por su parte, como las resoluciones de ruta (localizar un fichero a través + de una ruta) son algo muy frecuente y una misma ruta puede resolverse muchas + veces en poco tiempo, el sistema operativo suele mantener en memoria informació +n sobre las últimas resoluciones en otra caché, que en Linux se llama +\emph on +dentry cache +\emph default + o +\series bold +caché de entradas de directorio +\series default +. +\end_layout + +\begin_layout Section +Particiones +\end_layout + +\begin_layout Standard +Son porciones de bloques consecutivos de un disco, manejadas por el sistema + operativo y tratadas de por sí como listas de bloques sobre las que se + puede implementar un sistema de ficheros. + Tradicionalmente la información de las particiones, como sus bloques de + inicio y fin, se guarda en la +\series bold +tabla de particiones +\series default + del bloque +\series bold +MBR +\series default + ( +\emph on +Master Boot Record +\emph default +, registro de arranque maestro), el primer bloque del disco, que además + contiene una pequeña porción de código de arranque que la BIOS carga en + memoria y ejecuta para, tras una serie de pasos, arrancar un sistema operativo. + En general lo que hace este código es buscar una partición activa y cargar + el código de arranque en esta. +\end_layout + +\begin_layout Standard +Las particiones permiten tener distintos sistemas de ficheros en un mismo + disco, o incluso sistemas operativos distintos. + Por ejemplo, en Linux conviene tener al menos una partición para datos + con Ext4 y una +\series bold +partición de intercambio +\series default + usada para la memoria virtual. + También permite dar a cada partición un uso distinto, de modo que si hay + un error grave en el sistema de ficheros de una partición el resto siguen + siendo usables. +\end_layout + +\end_body +\end_document diff --git a/iso/n5.lyx b/iso/n5.lyx new file mode 100644 index 0000000..50cbe03 --- /dev/null +++ b/iso/n5.lyx @@ -0,0 +1,879 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +El +\series bold +administrador de memoria +\series default + del sistema operativo se encarga de abstraer y administrar la jerarquía + de memoria. +\end_layout + +\begin_layout Section +Sin memoria virtual +\end_layout + +\begin_layout Standard +En la +\series bold +multiprogramación con particiones fijas +\series default +, se asigna una zona de tamaño fijo al sistema operativo y el resto se dividen + en +\series bold +particiones +\series default + de igual o distinto tamaño. + Podemos tener una cola por partición y colocar cada trabajo en la cola + de la partición más pequeña en que quepa, pero si hay pocas particiones + pequeñas sus colas serán largas porque la mayoría de procesos son pequeños + y si hay muchas puede no quedar espacio para trabajos grandes. + También se puede tener una cola para todas las particiones y, cuando queda + una partición libre, darla a la primera tarea de la cola que quepa, lo + que hace que las tareas pequeñas desperdicien espacio, o darla a la tarea + más grande que quepa, lo que discrimina a las tareas pequeñas. + Soluciones a este último problema son tener una partición pequeña o establecer + un máximo de veces que se puede excluir una tarea. +\end_layout + +\begin_layout Standard +Esto limita el +\series bold +grado de multiprogramación +\series default +, el total de procesos que puede haber a la vez en memoria compartiendo + CPU, además de producir fragmentación interna sobre todo en procesos pequeños + y fragmentación externa si hay particiones libres con tamaño total suficiente + para un proceso pero ninguna es lo bastante grande. +\end_layout + +\begin_layout Standard +La +\series bold +multiprogramación con particiones variables +\series default + soluciona el problema asignando a cada proceso una partición del tamaño + exacto que necesita, con lo que las particiones se crean, desaparecen o + intercambian según se necesita. + +\series bold +Políticas de asignación de huecos +\series default +: +\end_layout + +\begin_layout Itemize + +\series bold +Primero en ajustarse +\series default +: Se busca el primer hueco lo suficientemente grande desde el principio + de la memoria, dividiendo el hueco en una parte para el proceso y un hueco + libre (salvo si hay ajuste perfecto), y es rápido. +\end_layout + +\begin_layout Itemize + +\series bold +Siguiente en ajustarse +\series default +: Igual pero se empieza a buscar por donde se quedó la anterior búsqueda. +\end_layout + +\begin_layout Itemize + +\series bold +Mejor en ajustarse +\series default +: Busca el hueco más pequeño en el que quepa el proceso, es lenta y desperdicia + más memoria por fragmentación externa. +\end_layout + +\begin_layout Itemize + +\series bold +Peor en ajustarse +\series default +: Toma el hueco libre más grande, y es lenta pero aprovecha bien la memoria. +\end_layout + +\begin_layout Standard +La +\series bold +compactación +\series default + consiste en mover procesos en memoria para juntar los huecos y reducir + la fragmentación externa. + No se suele usar porque consume mucho tiempo, proporcional a la cantidad + de información a mover, si bien ordenadores como el CDC CYBERS tenían hardware + especial para esto. + Para la +\series bold +administración de memoria libre +\series default +: +\end_layout + +\begin_layout Itemize + +\series bold +Mapas de bits +\series default +: Se divide la memoria en unidades de asignación del mismo tamaño, y a cada + una le corresponde un bit que indica si está libre o no. + Si la unidad de asignación es pequeña, el mapa de bits será grande y las + búsquedas lentas, pero si es grande habrá fragmentación interna. +\end_layout + +\begin_layout Itemize + +\series bold +Listas ligadas +\series default +: Lista de segmentos de memoria, que pueden ser procesos o huecos. + Cuando un proceso termina, debe fusionar el hueco con los adyacentes, lo + que es sencillo si la lista está ordenada por direcciones. + Si hay una lista para procesos y otra para huecos, las operaciones serán + más rápidas por no tener que ordenar la lista de procesos. + Si la de huecos se ordena por tamaño decreciente, la política de peor ajuste + es +\begin_inset Formula $O(1)$ +\end_inset + +, pero la fusión de huecos es cara. + En general se accede a la información de memoria asignada a un proceso + desde su bloque de control. +\end_layout + +\begin_layout Standard +La asignación de hueco en la zona de intercambio del disco puede hacerse + cuando el proceso deba intercambiarse o cuando se cree. + Los algoritmos de asignación y registro de estos huecos son los mismos + que en memoria principal, salvo que el tamaño de un hueco en disco es múltiplo + del tamaño de bloque. +\end_layout + +\begin_layout Standard +La +\series bold +reubicación +\series default + o +\series bold +relocalización +\series default + consiste en que, cuando un programa se ejecuta, puede ir a cualquier partición, + por lo que el programa debe usar +\series bold +código relocalizable +\series default +, que pueda ejecutarse correctamente independientemente de dónde se sitúe. +\end_layout + +\begin_layout Standard +Para la protección de memoria puede haber un +\series bold +registro base +\series default + con la dirección de memoria donde comienza la partición de un proceso y + un +\series bold +registro límite +\series default + con su tamaño, de modo que el proceso puede generar cualquier +\series bold +dirección lógica +\series default + en un +\series bold +espacio de direcciones lógicas +\series default + de 0 a su tamaño menos 1 que se traducen a +\series bold +direcciones físicas +\series default +, y si genera una dirección mayor se produce una excepción. +\end_layout + +\begin_layout Section +Paginación +\end_layout + +\begin_layout Standard +El esquema de +\series bold +memoria virtual +\series default + permite ejecutar procesos con tamaño total mayor al de la memoria física, + para lo que guarda en esta sólo las partes del proceso que se están usando + y el resto lo guarda en disco. + Cada proceso posee un espacio de direcciones virtuales, de tamaño normalmente + limitado por CPU, que van a la +\series bold +unidad de administración de memoria +\series default + ( +\series bold +MMU +\series default +) normalmente integrada en el chip de la CPU para que las traduzca a direcciones + físicas. +\end_layout + +\begin_layout Standard +El espacio de direcciones virtuales se divide en +\series bold +páginas +\series default + y el de memoria física en +\series bold +marcos de página +\series default +, del mismo tamaño, normalmente potencias de 2 entre +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + y +\begin_inset Formula $\unit[8]{KiB}$ +\end_inset + +, aunque pueden ser bastante más grandes, y las transferencias entre memoria + y disco son siempre en unidades de página. +\end_layout + +\begin_layout Standard +Una +\series bold +tabla de páginas +\series default + tiene tantas entradas como páginas y en cada una indica el marco en que + se almacena junto a algunos bits: +\end_layout + +\begin_layout Itemize + +\series bold +Bit presente/ausente +\series default +: Indica si la página está asociada o no. + Si se accede a una página no asociada, la MMU genera una excepción llamada + +\series bold +fallo de página +\series default + a tratar por el sistema operativo. + Este selecciona un marco, escribe su contenido en disco (si estaba ocupado + y se había escrito algo), lo marca como ausente en su tabla de páginas + y asigna el marco a la página que provocó el fallo, que lee del disco si + es necesario. +\end_layout + +\begin_layout Itemize + +\series bold +Bits de protección +\series default +: Tipo de acceso permitido (lectura, escritura, ejecución...). + Las páginas con código suelen tener permisos de lectura y ejecución pero + no de escritura, mientras que las de datos suelen tener de lectura y escritura. +\end_layout + +\begin_layout Itemize + +\series bold +Modificado +\series default +: Indica si se ha modificado o no el contenido del marco. +\end_layout + +\begin_layout Itemize + +\series bold +Referenciado +\series default +: Se establece al hacer referencia a una página, y se usa en algoritmos + de reemplazo. +\end_layout + +\begin_layout Itemize + +\series bold +Caché +\series default +: En las máquinas con E/S mapeada a memoria, evita que el contenido de la + página se almacene en caché. +\end_layout + +\begin_layout Itemize + +\series bold +Visible en modo núcleo +\series default +: Evita que se pueda acceder a la página en modo usuario. +\end_layout + +\begin_layout Standard +Las direcciones virtuales se dividen en un +\series bold +número de página +\series default +, usado como índice en la tabla de páginas, y un +\series bold +ajuste +\series default + o +\series bold +desplazamiento +\series default + dentro de ella. +\end_layout + +\begin_layout Standard +La traducción de páginas debe ser rápida, por lo que se usa un +\series bold +TLB +\series default + ( +\emph on +Translation Look-aside Buffer +\emph default +), una caché totalmente asociativa generalmente en la MMU que contiene entradas + de la tabla de páginas. + El hardware verifica si el número de página está en el TLB comparando todas + las entradas en paralelo (por lo que número de entradas suele ser muy pequeño). + Si coincide alguna, se toma la entrada del TLB (incluyendo bits de protección, + etc.). + Si no está, se lee la entrada de memoria principal y, bien se elimina una + entrada del TLB escribiendo sus bits de modificado y uso en la principal + y se reemplaza por la nueva, o se produce un fallo de página. +\end_layout + +\begin_layout Standard +Al cambiar de proceso se puede invalidar el contenido del TLB, borrando + todos los bits de validez mediante una instrucción especial, o añadir un + nuevo campo a cada entrada del TLB con el identificador del proceso y un + registro con el del proceso activo, requiriendo hardware adicional pero + ahorrando tiempo en los cambios de proceso y dando lugar a encontrar entradas + en el TLB del propio proceso tras volver a tomar la CPU. +\end_layout + +\begin_layout Standard +Como una tabla de páginas global puede ser muy grande, en la práctica se + divide el número de página en varias partes y se usan tablas de páginas + de varios niveles, de modo que la de primer nivel se indexa según la primera + parte del número de página e indica la dirección de las tablas de segundo + nivel, etc., y las tablas que no son necesarias no se tienen. + Los Intel Pentium Pro tienen 3 niveles, los procesadores de Intel y AMD + de 64 bits tienen 4, y Linux soporta hasta 5 desde la versión 4.14, permitiendo + gestionar hasta +\begin_inset Formula $\unit[128]{PiB}$ +\end_inset + + de memoria virtual y hasta +\begin_inset Formula $\unit[4]{PiB}$ +\end_inset + + de RAM. +\end_layout + +\begin_layout Standard +Una +\series bold +tabla de páginas invertida +\series default + contiene una entrada por cada marco de página con el número de la página + que almacena, el PID, una serie de bits como en una entrada de tabla de + páginas normal y un puntero para encadenamiento en una tabla de dispersión + abierta usada para acelerar las traducciones, que usa como clave el PID + y el número de página y devuelve el número de una entrada de la tabla. +\end_layout + +\begin_layout Standard +El +\series bold +mapa de memoria +\series default + de un proceso es la estructura de su espacio de direcciones lógicas, en + zonas contiguas de memoria virtual llamadas +\series bold +regiones +\series default + como las de código, datos con valor inicial, datos sin valor inicial y + pila de cada hilo, con características como: +\end_layout + +\begin_layout Itemize + +\series bold +Soporte +\series default +: De dónde se obtienen los datos que contiene la región; normalmente un + fichero o parte de este, como un ejecutable en el caso del código. + También hay regiones sin soporte como la pila, cuyas páginas, si se modifican + y son expulsadas, se guardan en la zona de intercambio del disco. +\end_layout + +\begin_layout Itemize + +\series bold +Tipo de compartición +\series default +: Si las modificaciones que haga un proceso son visibles por otros o no. +\end_layout + +\begin_layout Itemize + +\series bold +Protección +\series default +: Permisos de lectura, escritura y ejecución. +\end_layout + +\begin_layout Itemize + +\series bold +Tamaño fijo +\series default + o +\series bold +variable +\series default +: Si es variable, se indica si crece hacia direcciones mayores, como la + memoria montón o +\emph on +heap +\emph default + usada para la memoria dinámica, o menores, como la pila. + En UNIX, la memoria montón no tiene soporte, está inicialmente a 0 y crece + conforme el proceso necesita memoria mediante las llamadas +\family typewriter +brk +\family default + y +\family typewriter +sbrk +\family default +. +\end_layout + +\begin_layout Standard +El sistema operativo suele estar mapeado en todos los procesos, con el bit + de visible en modo núcleo activado, por eficiencia en las transferencias + de datos entre usuario y núcleo +\begin_inset Foot +status open + +\begin_layout Plain Layout +En procesadores como Intel, esto ya no se hace debido a Meltdown. +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +En Linux, al hacer la llamada al sistema +\family typewriter +fork +\family default +, se usa +\series bold +copia en escritura +\series default + ( +\emph on +copy on write +\emph default +, COW), consistente en desactivar el permiso de escritura de las páginas + y dar al proceso hijo una copia de la tabla de páginas del padre, de modo + que si uno de los dos intenta escribir en una región en la que tendría + permiso, el sistema operativo hace una copia de la página que provocó la + violación, la asigna a la tabla de páginas del proceso que hace la escritura + y activa el permiso de escritura en ambas páginas +\begin_inset Foot +status open + +\begin_layout Plain Layout +Linux usa conteo de referencias para que, si hay varios +\family typewriter +fork +\family default +, no se active la escritura en la página original hasta que el resto de + procesos tenga una copia de la página. + Ver +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://stackoverflow.com/questions/13813636/how-does-copy-on-write-in-fork-handl +e-multiple-fork +\end_layout + +\end_inset + + para más detalles. +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +Algoritmos de reemplazo de páginas: +\end_layout + +\begin_layout Itemize + +\series bold +Algoritmo óptimo +\series default +: Se elimina la página para la que pasará más tiempo antes de ser utilizada. + Modelo teórico imposible de implementar. +\end_layout + +\begin_layout Itemize + +\series bold +NRU +\series default + (no usada recientemente): Se limpia el bit de referenciado periódicamente + en todas las páginas, y al reemplazar se prefieren páginas con este bit + desactivado y, dentro de esto, con el de modificado desactivado. +\end_layout + +\begin_layout Itemize + +\series bold +FIFO +\series default + (primera en enterar, primera en salir): Se elimina la primera página de + una lista y se añade la nueva al final. + El algoritmo es de bajo coste, pero no tiene en cuenta ningún dato adicional + y produce demasiados fallos. +\end_layout + +\begin_layout Itemize + +\series bold +Algoritmo de la segunda oportunidad +\series default +: Como el FIFO pero, si el bit de referenciado de la primera página está + activo, el bit se limpia, la página pasa al final y se comprueba la siguiente. +\end_layout + +\begin_layout Itemize + +\series bold +Algoritmo del reloj +\series default +: Equivalente al anterior pero con una lista circular donde una +\begin_inset Quotes fld +\end_inset + +manecilla +\begin_inset Quotes frd +\end_inset + + (un puntero) apunta a la página más antigua. + Si el bit de referenciado está inactivo, se expulsa y se reemplaza en la + lista la página apuntada y se avanza la manecilla a la siguiente, y de + lo contrario se inactiva el bit, se pasa a la siguiente página y se repite + el proceso. +\end_layout + +\begin_layout Itemize + +\series bold +LRU +\series default + (usada menos recientemente): Se elimina la página no usada desde hace más + tiempo. + Se podría usar una lista ligada de todas las páginas de memoria, pero tendría + que actualizarse en cada acceso a memoria. + También se podría tener un contador hardware que se incrementa en cada + referencia a memoria y un campo en las entradas de la tabla de páginas + y la TLB donde copiarlo. + Otra forma es usar una matriz +\begin_inset Formula $n\times n$ +\end_inset + +, siendo +\begin_inset Formula $n$ +\end_inset + + el total de páginas, inicializada a 0, con lo que al referencial el marco + +\begin_inset Formula $k$ +\end_inset + +, el hardware activa todos los bits de la fila +\begin_inset Formula $k$ +\end_inset + + y después desactiva todos los de la columna, con lo que la fila cuyo valor + en binario sea mínimo es la del marco que se usó hace más tiempo, pero + esto es inviable por el tamaño de la matriz. +\end_layout + +\begin_layout Itemize + +\series bold +Algoritmo de maduración +\series default +: Aproximación software de LRU. + En cada interrupción de reloj, se desplaza un contador en cada entrada + de la tabla de páginas un bit a la derecha y se añade a la izquierda el + bit de referenciado. +\end_layout + +\begin_layout Standard +Se debe decidir también si la página a reemplazar se busca sólo en las del + proceso ( +\series bold +reemplazo local +\series default +) o en todas las de memoria ( +\series bold +reemplazo global +\series default +), y si el número de marcos asignados a un proceso varía ( +\series bold +asignación dinámica +\series default +) o no ( +\series bold +asignación fija +\series default + o +\series bold +estática +\series default +). + No es posible el reemplazo global con asignación fija, pero el reemplazo + local con asignación dinámica puede evitar que un proceso que empieza a + producir fallos de página le quite páginas a otros siendo a la vez más + flexible que una asignación fija. + Llamamos +\series bold +algoritmo de frecuencia de fallos de página +\series default + al consistente en asignar más marcos a los procesos que producen muchos + fallos de página y quitarlos a los que producen pocos. + Otros aspectos son el número mínimo de marcos por proceso, que depende + entre otros del máximo de páginas que puede usar una sola instrucción +\begin_inset Foot +status open + +\begin_layout Plain Layout +Si, por ejemplo, una instrucción debe acceder a 5 páginas incluyendo la + de la propia instrucción pero sólo hay 4 marcos, uno de los accesos provocará + necesariamente un fallo de página que reemplazará otra de las 4 páginas + necesarias y reiniciará la instrucción, que nunca llegará a terminar. +\end_layout + +\end_inset + +, y el reparto de marcos entre distintos procesos (equitativo, proporcional + al tamaño, etc.). +\end_layout + +\begin_layout Standard +Páginas pequeñas producen menos fragmentación interna, pero páginas grandes + aceleran el reemplazo porque las transferencias entre memoria y disco son + normalmente de una página y hay poca diferencia entre el tiempo de transferenci +a de una página pequeña y el de una grande. + Los tamaños más frecuentes son de 4 y +\begin_inset Formula $\unit[8]{KiB}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +La +\series bold +hiperpaginación +\series default + ocurre cuando un proceso emplea más tiempo paginando (esperando a que se + resuelvan sus fallos de página) que ejecutando código porque necesita muchos + más marcos de los que tiene. + En tal caso, aparte de añadir más memoria principal, podemos suspender + temporalmente algunos procesos para liberar memoria y reanudarlos cuando + la tasa de fallos de página decaiga. +\end_layout + +\begin_layout Standard +Políticas de lectura y escritura de páginas: +\end_layout + +\begin_layout Itemize + +\series bold +Paginación por demanda +\series default +: Solo se lee la página que produce el fallo. +\end_layout + +\begin_layout Itemize + +\series bold +Prepaginación +\series default + o +\series bold +paginación anticipada +\series default +: Se leen varias páginas más, normalmente las que se encuentran después + en el espacio de direcciones virtuales. +\end_layout + +\begin_layout Itemize + +\series bold +Escritura por demanda +\series default +: Una página se escribe en disco cuando se expulsa, aumentando el tiempo + de resolución de fallos de página. +\end_layout + +\begin_layout Itemize + +\series bold +Escritura anticipada +\series default +: Un hilo del núcleo, el +\series bold +demonio de paginación +\series default +, cada cierto tiempo escribe en disco las páginas modificadas, aumentando + el rendimiento en discos duros al escribir varias páginas a la vez y acelerando + la resolución de fallos de página. + Muchas escrituras pueden ser inútiles si la páginas se modifican poco después, + por lo que el demonio puede buscar páginas que, según el algoritmo de reemplazo +, podrían expulsarse próximamente y escribirlas en disco si han sido modificadas. + También puede liberar más páginas para tener páginas libres ( +\series bold +caché de páginas +\series default +) y resolver rápidamente cualquier futuro fallo de página, de forma que + si una página liberada se necesita poco después su contenido siga en memoria. +\end_layout + +\begin_layout Section +Segmentación +\end_layout + +\begin_layout Standard +El espacio de direcciones lógicas de un proceso se compone de +\series bold +segmentos +\series default +, zonas contiguas dadas por una +\series bold +base +\series default + (dirección de comienzo) y un +\series bold +límite +\series default + (tamaño), y las direcciones especifican el número de segmento y el desplazamien +to dentro de él, de 0 al tamaño menos 1. + Esto facilita la protección y compartición de información, y se puede acelerar + la traducción con un TLB, pero sufre fragmentación externa, los segmentos + no pueden superar el tamaño de la memoria física y los intercambios con + el disco se hacen siempre moviendo segmentos enteros. +\end_layout + +\begin_layout Standard +En la +\series bold +segmentación paginada +\series default + estos segmentos se paginan, por lo que no hay fragmentación externa ni + hay que buscar un hueco adecuado para cada segmento. + El TLB es direccionable por el número de segmento a usar y el número de + la página dentro del segmento. +\end_layout + +\end_body +\end_document diff --git a/iso/n6.lyx b/iso/n6.lyx new file mode 100644 index 0000000..594ec44 --- /dev/null +++ b/iso/n6.lyx @@ -0,0 +1,826 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Distinguimos: +\end_layout + +\begin_layout Itemize + +\series bold +Dispositivos de bloques +\series default +: Dispositivos de almacenamiento en general. + Almacenan información en bloques de tamaño fijo que podemos leer y escribir + de forma independiente de los demás. +\end_layout + +\begin_layout Itemize + +\series bold +Dispositivos de caracteres +\series default +: Terminales, impresoras, interfaces de red, ratones, etc. + Envían o reciben un flujo de caracteres. +\end_layout + +\begin_layout Itemize +Otros, como los relojes, que sólo producen interrupciones periódicas, o + las tarjetas gráficas mapeadas a memoria en las que la memoria de vídeo + es parte del espacio de direcciones. +\end_layout + +\begin_layout Section +El software de E/S +\end_layout + +\begin_layout Standard +Objetivos: +\end_layout + +\begin_layout Itemize +Crear conceptos generales que no dependan de las características específicas + de cada dispositivo. + Por ejemplo, podemos acceder a un dispositivo de bloques sin importar si + es un CD-ROM en el que el lector tiene un motor que se debe arrancar y + parar o un disco duro que está girando continuamente. +\end_layout + +\begin_layout Itemize +Dar a los dispositivos nombres uniformes sin importar sus características. + En UNIX esto se hace mediante ficheros especiales. +\end_layout + +\begin_layout Itemize +Manejar los errores lo más cerca posible del hardware. + Si el controlador descubre un error, debe intentar corregirlo. + Si no puede, debe notificarlo para que lo intente el manejador de dispositivo. + Si tampoco puede, debe notificarlo al software independiente de E/S. +\end_layout + +\begin_layout Itemize +Convertir las transferencias asíncronas, en que la CPU inicia una transferencia + y hace otras cosas hasta recibir una interrupción indicando que esta ha + terminado, en síncronas, más fáciles de programar, en que el programa se + bloquea hasta que los datos están disponibles +\begin_inset Foot +status open + +\begin_layout Plain Layout +Muchos programas usan hilos para volverlas a convertir en asíncronas. +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Itemize +Permitir la compartición de recursos para lo que esto es posible (como discos) + y asignar los de uso exclusivo (como impresoras). +\end_layout + +\begin_layout Subsection +Manejadores de interrupciones +\end_layout + +\begin_layout Standard +Cuando un proceso inicia una operación de E/S, se bloquea hasta que esta + termine mediante una llamada al sistema específica o, en el caso de UNIX, + de forma automática, cediendo la CPU a otro proceso. + Cuando la operación termina, el controlador envía una interrupción que + atiende el manejador de interrupciones del sistema operativo, el cual identific +a la interrupción y avisa al manejador de dispositivo correspondiente para + que elimine el bloqueo del proceso. + En UNIX, el proceso continuará en su parte de núcleo para terminar la operación. +\end_layout + +\begin_layout Subsection +Manejadores de dispositivo o +\emph on +drivers +\end_layout + +\begin_layout Standard +Contienen el código que depende del funcionamiento concreto de los dispositivos, + con lo que cada uno controla solo un tipo de dispositivo o varios similares. + En los sistemas monolíticos, para acceder a los registros de las controladoras, + necesitan ejecutarse en modo núcleo, por lo que se les considera parte + del núcleo. +\end_layout + +\begin_layout Standard +Un manejador recibe solicitudes abstractas que le hace el software independiente + de dis +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +po +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +si +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ti +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +vo y verifica la ejecución de estas solicitudes. + Tras enviar la orden (u órdenes) al dispositivo, el controlador puede tener + que bloquearse hasta que ocurra una interrupción, o puede que no sea necesario + porque la operación no conlleve retraso. + Tras terminar la operación, el manejador debe verificar los errores corrigiendo + los que pueda e informar al software independiente de dispositivo, y selecciona +r e iniciar alguna solicitud pendiente si tiene o, según el sistema operativo, + bloquearse en espera de una solicitud. +\end_layout + +\begin_layout Standard +El sistema operativo define una interfaz, una serie de funciones genéricas, + a la que se deben adaptar todos los manejadores. + Implementar un manejador supone conocer el funcionamiento del sistema operativo + y el del dispositivo. + Además muchos manejadores deben ser +\series bold +reentrantes +\series default +: capaces de ser interrumpidos a mitad de atender una petición de un proceso + y recibir otra petición sin haber terminado de atender la primera. +\end_layout + +\begin_layout Subsection +Software de E/S independiente de dispositivo +\end_layout + +\begin_layout Standard +Sus funciones suelen ser: +\end_layout + +\begin_layout Itemize +Proporcionar una interfaz uniforme al usuario, seleccionando el manejador + adecuado en cada caso. +\end_layout + +\begin_layout Itemize +Dar nombre a los dispositivos. + En Linux cada uno tiene un +\series bold +número mayor +\series default +, que identifica al manejador, y un +\series bold +número menor +\series default +, que usa el manejador para identificar el dispositivo concreto. +\end_layout + +\begin_layout Itemize +Evitar accesos no autorizados. +\end_layout + +\begin_layout Itemize +Proporcionar un tamaño de bloque independiente del dispositivo, agrupando + o dividiendo sectores, si bien esto también lo puede hacer el manejador + de dispositivo. +\end_layout + +\begin_layout Itemize +Proporcionar +\emph on +buffers +\emph default + para: +\end_layout + +\begin_deeper +\begin_layout Itemize +Dispositivos de entrada como el teclado que no son capaces de almacenar + información o la envían antes de que ningún proceso la solicite, en cuyo + caso el sistema operativo debe guardar la información enviada (en este + caso, códigos de teclas). +\end_layout + +\begin_layout Itemize +Dispositivos de salida como impresoras que no son capaces de procesar informació +n a la velocidad a la que un proceso puede enviarla, por lo que se debe + ir enviando poco a poco. +\end_layout + +\begin_layout Itemize +Dispositivos de bloques, en los que conviene guardar temporalmente en memoria + ciertos bloques para acelerar su funcionamiento y permitir a los procesos + leer o escribir una cantidad arbitraria de bytes. +\end_layout + +\end_deeper +\begin_layout Itemize +Asignar y liberar dispositivos de uso exclusivo, aceptando o rechazando + solicitudes según disponibilidad. +\end_layout + +\begin_layout Itemize +Informar de los errores cuando el manejador de dispositivo no los puede + solucionar. +\end_layout + +\begin_layout Standard +Los sistemas de fichero son independientes de dispositivo y trabajan sobre + dispositivos de bloques abstractos. + También hay software de E/S independiente de dispositivo en el espacio + de usuario: +\end_layout + +\begin_layout Itemize +Bibliotecas de E/S, que llevan a cabo las llamadas al sistema. +\end_layout + +\begin_layout Itemize +Sistema de +\emph on +spooling +\emph default + para dispositivos de uso exclusivo. + Por ejemplo, el +\series bold +demonio +\series default + de impresión comprueba periódicamente si hay ficheros en el +\series bold +directorio de +\emph on +spooling +\series default +\emph default + y, si es así, los imprime, de modo que el resto de procesos pueden imprimir + un fichero situándolo (en el formato apropiado) en el directorio de +\emph on +spooling +\emph default +. + Esto impide que un proceso mantenga abierto un dispositivo de uso exclusivo + sin hacer nada con él mientras el resto de procesos esperan, y permite + eliminar un trabajo antes de que sea procesado, cambiar el orden en que + se deben tratar los trabajos, etc. +\end_layout + +\begin_layout Section +Discos +\end_layout + +\begin_layout Standard +Los discos duros están formados por una serie de discos o platos magnéticos + conectados a un eje común que gira a gran velocidad (por ejemplo, +\begin_inset Formula $\unit[5400]{RPM}$ +\end_inset + +) y una serie de cabezas de lectura/escritura, una por cada superficie de + disco, que pueden leer o escribir sobre la porción de la superficie de + los platos que está justo debajo o encima de estas, y que están todas conectada +s mediante brazos a un mismo soporte que puede girar en un cierto arco haciendo + que las cabezas se muevan hacia dentro o fuera sobre la superficie de los + discos. +\end_layout + +\begin_layout Standard +Llamamos +\series bold +cilindro +\series default + al conjunto de posiciones del disco accesibles en una cierta posición de + las cabezas, +\series bold +pista +\series default + ( +\series bold +circular +\series default +) al subconjunto de estas posiciones sobre una misma superficie de disco + y +\series bold +sector +\series default + a la unidad mínima de lectura y escritura soportada por la controladora, + con tamaños típicos de entre +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + y +\begin_inset Formula $\unit[4]{KiB}$ +\end_inset + + (siempre potencias de 2), y que corresponde a una porción de pista. +\end_layout + +\begin_layout Standard +Cada sector se identifica por la terna de los números de cilindro, cabeza + y sector dentro de la pista, numerados desde 0, donde los cilindros más + externos (más alejados del eje) tienen menor número. + El +\series bold +tiempo de servicio +\series default + o +\series bold +de acceso +\series default + a un sector es la suma de: +\end_layout + +\begin_layout Enumerate + +\series bold +Tiempo de búsqueda +\series default +, para colocar las cabezas en el cilindro adecuado. + El más largo. +\end_layout + +\begin_layout Enumerate +Tiempo para activar la cabeza adecuada, despreciable. +\end_layout + +\begin_layout Enumerate + +\series bold +Tiempo de latencia +\series default +, hasta que los sectores a leer o escribir pasen junto a la cabeza. +\end_layout + +\begin_layout Enumerate + +\series bold +Tiempo de transmisión +\series default +, de leer o escribir los sectores en sí según van pasando por la cabeza. +\end_layout + +\begin_layout Standard +Hoy en día las pistas exteriores de los discos son más largas que las interiores + y por tanto contienen más sectores, dividiéndose el disco en zonas (anillos + circulares) en las que cada pista contiene el mismo número de sectores. + Para que el manejador de disco no tenga que conocer su estructura interna, + la controladora de disco expone una interfaz a modo de lista contigua de + bloques. +\end_layout + +\begin_layout Standard +Debemos planificar el orden en que se atienden las solicitudes de la cola + de solicitudes a disco pendientes para reducir el movimiento de las cabezas. + Como el manejador no conoce la geometría del disco, en vez de la distancia + entre cilindros se tiene en cuenta la distancia entre direcciones de bloque. +\end_layout + +\begin_layout Itemize + +\series bold +FCFS +\series default + ( +\emph on +First Come, First Served +\emph default +): Por orden de llegada, da tiempos de servicio grandes. +\end_layout + +\begin_layout Itemize + +\series bold +SSF +\series default + ( +\emph on +Shortest Seek First +\emph default +): Atiende la solicitud del bloque más cercano al actual. + No es equitativo, pues atiende enseguida solicitudes de cilindros próximos + al actual y no otras solicitudes que llegaron antes, y tampoco es óptimo. +\end_layout + +\begin_layout Itemize + +\series bold +SCAN +\series default + o +\series bold +algoritmo del ascensor +\series default +: En un sentido, atiende la solicitud del bloque con el mayor número que + sea menor al del actual. + En el otro, la del menor número que sea mayor al del actual. + Cuando no quedan peticiones en un sentido, cambia al otro. + Dada cualquier colección de solicitudes, el máximo de movimientos es el + doble del número de cilindros, evitando la localidad. +\end_layout + +\begin_layout Itemize + +\series bold +C-SCAN +\series default + o +\series bold +SCAN circular +\series default +: En SCAN, cuando las cabezas llegan a un extremo e inviertan el sentido, + habrá pocas solicitudes en la zona próxima, mientras que en la otra habrá + muchas y llevarán más tiempo. + El C-SCAN modifica este algoritmo de modo que, si el sentido es de mayor + a menor bloque y no hay ninguna solicitud de bloque de número menor, se + toma el bloque de mayor número y se sigue en el mismo sentido, y lo mismo + ocurre al revés si el sentido es el otro. +\end_layout + +\begin_layout Standard +Si la tecnología cambia, pueden ser necesarios nuevos algoritmos. + Los discos duros actuales suelen tener una pequeña caché en la controladora + para leer por adelantado pistas enteras o partes de ellas, por lo que se + prefiere atender una solicitud que acaba de llegar pero está próxima a + la última servida antes de otra que lleva más esperando, aunque si lleva + mucho tiempo esperando se atiende de inmediato. +\end_layout + +\begin_layout Standard +La implementación del sistema de ficheros puede tener gran influencia sobre + las solicitudes, pues no es lo mismo si estos están en un área contigua + en disco (requiriendo pocos movimientos de las cabezas) o dispersos (muchos + movimientos), en cuyo caso se podría defragmentar el disco colocando los + bloques de cada fichero contiguos o próximos. + También podemos colocar los bloques de datos de directorios próximos a + los bloques de nodos-i de sus ficheros, como hacen ext2/3/4, XFS o JFS. +\end_layout + +\begin_layout Standard +Un +\series bold +disco RAM +\series default + es un dispositivo de bloques en que los bloques se almacenan en memoria + principal, permitiendo acceso instantáneo, con lo que cuando el manejador + recibe un mensaje para lectura o escritura de un bloque, basta que calcule + el lugar de la memoria del disco RAM donde se encuentra. +\end_layout + +\begin_layout Section +Relojes +\end_layout + +\begin_layout Standard +Los relojes más sencillos están sujetos a la línea de corriente alterna + y provocan una in +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +te +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rrup +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ción por cada ciclo de voltaje (a 50 o +\begin_inset Formula $\unit[60]{Hz}$ +\end_inset + +). + Los +\series bold +relojes programables +\series default + constan de un oscilador de cristal de cuarzo que genera una señal periódica + de 5 a +\begin_inset Formula $\unit[100]{MHz}$ +\end_inset + + o más de muy alta precisión; un contador que a partir de esta señal cuenta + de forma decreciente hasta 0 y, cuando llega, provoca una interrupción, + y un registro de carga para actualizar el contador. +\end_layout + +\begin_layout Standard +En +\series bold +modo de disparo único +\series default +, el reloj copia al iniciarse el valor del registro de carga en el contador + y, cuando este llega a 0, se detiene hasta ser iniciado de nuevo por el + software, mientras que en +\series bold +modo de onda cuadrada +\series default +, cuando llega a 0, el registro de carga se copia automáticamente al contador, + generando interrupciones periódicas llamadas +\series bold +marcas +\series default + o +\series bold +tics de reloj +\series default +. + Los chips suelen contener 2 o 3 relojes programables independientes, así + como otras opciones como contar en forma ascendente o desactivar las interrupci +ones. +\end_layout + +\begin_layout Standard +El +\series bold +manejador del reloj +\series default + se encarga de: +\end_layout + +\begin_layout Itemize +Controlar la hora del día, incrementando un contador en cada marca del reloj + registrando el tiempo transcurrido desde, por ejemplo, el inicio del año + 1970 como se hace en UNIX, momento conocido como +\emph on +The Epoch +\emph default + (La Época +\begin_inset Foot +status open + +\begin_layout Plain Layout +¿A que al traducirlo pierde toda la gracia? +\end_layout + +\end_inset + +). + El contador se puede implementar, por ejemplo, como: +\end_layout + +\begin_deeper +\begin_layout Itemize +Contador de marcas. + Si es de +\begin_inset Formula $\unit[64]{bits}$ +\end_inset + + a +\begin_inset Formula $\unit[60]{Hz}$ +\end_inset + +, puede registrar más de +\begin_inset Formula $\unit[9800]{m.a.}$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +Contador de segundos y otro de marcas hasta llegar al segundo. + Si son de +\begin_inset Formula $\unit[32]{bits}$ +\end_inset + + desde +\emph on +The Epoch +\emph default +, el desbordamiento ocurre en 2106 si se guarda como entero sin signo o + 2038 si se guarda con signo. +\end_layout + +\begin_layout Itemize +Instante de arranque en segundos y contador de marcas desde el arranque. + Si el contador es de +\begin_inset Formula $\unit[32]{bits}$ +\end_inset + + a +\begin_inset Formula $\unit[60]{Hz}$ +\end_inset + +, habrá que reiniciar tras algo más de 2 años y 3 meses. +\end_layout + +\begin_layout Standard +Para obtener la fecha al arrancar, el sistema operativo puede pedirla al + usuario o tomarla del +\series bold +reloj de tiempo real +\series default + de la placa base, un pequeño circuito integrado con una pequeña batería + que mantiene la hora incluso con la máquina apagada. +\end_layout + +\end_deeper +\begin_layout Itemize +Controlar el tiempo de ejecución de los procesos, con un contador con el + valor del +\emph on +quantum +\emph default + del proceso en marcas del reloj para llamar al planificador cuando el contador + llegue a 0. +\end_layout + +\begin_layout Itemize +Contabilizar el uso de CPU. + Una forma es iniciar un segundo reloj cada vez que se asigne la CPU a un + proceso y leer el valor del contador cuando el proceso deje la CPU para + añadir el tiempo a un campo en la entrada de la tabla de procesos. + El reloj debe parar cuando la CPU atienda una interrupción. + Otra forma más sencilla es incrementar un campo en la tabla de procesos + por cada marca de reloj, pero esta es menos exacta porque, por ejemplo, + un proceso puede pasar a usar la CPU justo tras producirse una marca y + dejarla justo antes de la siguiente y esto no contaría. +\end_layout + +\begin_layout Itemize + +\series bold +Alarmas +\series default +. + Un proceso en UNIX puede ejecutar la llamada +\family typewriter +alarm +\family default + para pedir al sistema operativo que le avise tras un cierto tiempo enviándole + una señal +\family typewriter +SIGALRM +\family default +. + Si el manejador de reloj tiene relojes físicos suficientes, se puede usar + uno para cada solicitud, pero como esto es improbable se simular relojes + virtuales. +\begin_inset Newline newline +\end_inset + +Una forma es tener una tabla con el tiempo de señalización de cada alarma + y una variable que indica el tiempo en marcas hasta la próxima señal, de + modo que al actualizar la hora del día se decrementa esta variable y, si + llega a 0, se envía la señal al proceso, se busca la siguiente alarma y + se actualiza la variable. + Otra forma es tener una lista ligada de alarmas según tiempo de ocurrencias + en que cada elemento indica el número de marcas de reloj a esperar tras + la siguiente señal. +\end_layout + +\begin_layout Itemize + +\series bold +Cronómetros guardianes +\series default +. + Son alarmas establecidas por el propio sistema operativo. + Por ejemplo, para acceder a un DVD hay que activar el motor del lector + y esperar a la velocidad adecuada, por lo que es buena idea dejar el motor + encendido por un tiempo por si hay más operaciones de E/S y detenerlo si + pasa un tiempo sin que haya. + Funcionan como alarmas pero, en vez de provocar una señal, llaman a un + procedimiento proporcionado por quien hizo la llamada dado que en el núcleo + no hay señales. +\end_layout + +\end_body +\end_document diff --git a/iso/na.lyx b/iso/na.lyx new file mode 100644 index 0000000..bbe948a --- /dev/null +++ b/iso/na.lyx @@ -0,0 +1,7090 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En UNIX/Linux existen tres grandes familias de intérpretes de órdenes o + +\emph on +shells +\emph default +: +\family typewriter +sh +\family default +, +\family typewriter +csh +\family default + y +\family typewriter +ksh +\family default +. + Nos centraremos en +\family typewriter +bash +\family default +, el Bourne-Again Shell, un +\emph on +shell +\emph default + libre de la familia de +\family typewriter +sh +\family default +. + Podemos acceder a este: +\end_layout + +\begin_layout Itemize +Directamente, si el sistema arranca en modo texto. +\end_layout + +\begin_layout Itemize +El sistema suele tener 12 terminales virtuales. + El modo gráfico suele usar las dos primeras, por lo que podemos acceder + a modo texto pulsando +\family typewriter +C-M-F +\emph on + +\begin_inset Formula $i$ +\end_inset + + +\family default +\emph default + con +\begin_inset Formula $i=3,\dots,12$ +\end_inset + + y volver al modo gráfico con +\family typewriter +C-M-F1 +\family default + o +\family typewriter +C-M-F2 +\family default + dependiendo del sistema. +\end_layout + +\begin_layout Itemize +También, desde el modo gráfico, podemos usar un programa de simulación del + terminal, que permite ejecutar órdenes desde el entorno de ventanas. + Destacan +\family typewriter +konsole +\family default + de KDE y +\family typewriter +gnome-terminal +\family default + de GNOME. +\end_layout + +\begin_layout Standard + +\family typewriter +bash +\family default + es programable a partir de ficheros de texto con listas de órdenes, llamados + +\series bold +guiones +\emph on +shell +\series default +\emph default + ( +\emph on +shell scripts +\emph default +) o +\series bold +\emph on +scripts +\series default +\emph default +. +\end_layout + +\begin_layout Standard +En general, las órdenes que aceptan varias opciones a la vez de una sola + letra permiten escribir, por ejemplo, +\family typewriter +-abcd +\family default + en vez de +\family typewriter +-a -b -c -d +\family default +, y esto también vale si la última orden requiere un argumento. + Todos los procesos, cuando finalizan, devuelven un +\series bold +código de salida +\series default + ( +\emph on +exit code +\emph default +) o +\series bold +estado de salida +\series default + ( +\emph on +exit status +\emph default +) al proceso padre, que generalmente es 0 cuando la ejecución es correcta + y un valor entre 1 y 255 cuando hay un error. + +\end_layout + +\begin_layout Standard +Ejecutar +\family typewriter +\emph on +comando +\emph default + --help +\family default + en general muestra una breve ayuda sobre una orden externa. + Otras fuentes son la ayuda de +\family typewriter +bash +\family default +, la de +\family typewriter +man +\family default +, la documentación de las distribuciones, sitios como FAQs, foros, etc., + y proyectos de documentación libre como TLDP. +\begin_inset Foot +status open + +\begin_layout Plain Layout +De aquí en adelante buscad en todos estos sitios antes de preguntarme a + mí. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Las órdenes se ejecutan siempre desde el +\series bold +directorio actual +\series default + en el que nos encontremos. + Cada usuario tiene un +\series bold +directorio personal +\series default +, que suele ser +\family typewriter +/home/ +\emph on +usuario +\family default +\emph default +, siendo +\family typewriter +\emph on +usuario +\family default +\emph default + el nombre del usuario. +\end_layout + +\begin_layout Standard +Los ficheros y directorios tienen una serie de permisos para el propietario + (o usuario), el grupo y el resto de usuarios. + Para cada uno de estos se definen los siguientes permisos: +\end_layout + +\begin_layout Standard +\align center +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="3"> +<features tabularvalignment="middle"> +<column alignment="center" valignment="top" width="20text%"> +<column alignment="center" valignment="top" width="30text%"> +<column alignment="center" valignment="top" width="40text%"> +<row> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Permiso +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Fichero +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Directorio +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Lectura ( +\family typewriter +r +\family default +) +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Leer el contenido. +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Obtener la lista de entradas. + No es necesario para acceder a ellas si conocemos su nombre. +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Escritura ( +\family typewriter +w +\family default +) +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Modificar el contenido. +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Crear, borrar o modificar entradas. +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Ejecución ( +\family typewriter +x +\family default +) +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Ejecutar el fichero. +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Acceder al nodo-i de las entradas para acceder a subdirectorios o ficheros + u obtener los metadatos de estos. +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Además de los permisos especiales: +\end_layout + +\begin_layout Itemize + +\family typewriter +t +\family default + ( +\emph on +sticky bit +\emph default +): En un directorio, un usuario con permiso de lectura puede crear ficheros, + pero sólo puede borrar los que le pertenecen. +\end_layout + +\begin_layout Itemize + +\family typewriter +u+s +\family default + (suid): En un ejecutable, el UID cambia al del propietario al ejecutarlo. +\end_layout + +\begin_layout Itemize + +\family typewriter +g+s +\family default + (sgid): En un ejecutable, el GID cambia al del grupo del fichero al ejecutarlo. + En un directorio, los ficheros creados dentro pertenecen al grupo del directori +o, y no (ne +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ce +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +sa +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ria +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +men +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +te) al grupo activo de quien lo crea. +\end_layout + +\begin_layout Standard +Los permisos se representan en notación estándar como la cadena +\family typewriter +rwxrwxrwx +\family default +, con 3 grupos para usuario, grupo y otros, respectivamente, donde se sustituyen + los caracteres de los permisos que no están por +\family typewriter +- +\family default +. + La +\family typewriter +x +\family default + de usuario o grupo, respectivamente, cambia a una +\family typewriter +s +\family default + si está activo el suid o el sgid. + La +\family typewriter +x +\family default + de otros cambia a una +\family typewriter +t +\family default + si está activo el +\emph on +sticky bit +\emph default +. + También se puede representar en octal, considerando en esta cadena que + un permiso que se da es un 1 y uno que no es un 0, y convirtiendo el número + binario resultante a octal. +\end_layout + +\begin_layout Standard +A continuación vemos versiones reducidas y traducidas de las páginas +\family typewriter +man +\family default + (del manual) de los principales comandos, que definen un subconjunto de + la funcionalidad de estos en la implementación de GNU. +\end_layout + +\begin_layout Section + +\family typewriter +bash +\end_layout + +\begin_layout Standard +Si bien veremos que el +\emph on +shell +\emph default + permite crear variables, estas son variables locales, que son heredadas + por los hijos del +\emph on +shell +\emph default + (si bien al modificarlas estos no se actualizan en el proceso padre ni + al revés) pero desaparecen en cuanto estos llaman a +\family typewriter +exec +\family default +. + No obstante, cada proceso en UNIX incluye un +\series bold +entorno +\series default + con una serie de +\series bold +variables de entorno +\series default +, que se heredan de padres a hijos en +\family typewriter +fork +\family default +, no se borran al usar +\family typewriter +exec +\family default + y los procesos pueden crear, modificar o borrar. + Por ejemplo, +\family typewriter +LOGNAME +\family default + contiene el nombre del usuario que ha iniciado sesión. +\end_layout + +\begin_layout Standard +Los procesos disponen por defecto de tres descriptores de fichero: +\end_layout + +\begin_layout Itemize + +\series bold +Entrada estándar +\series default + (0): Para recibir datos de entrada. + Normalmente es el teclado. +\end_layout + +\begin_layout Itemize + +\series bold +Salida estándar +\series default + (1): Para mostrar resultados. + Normalmente la pantalla. +\end_layout + +\begin_layout Itemize + +\series bold +Salida estándar de error +\series default + (2): Para mostrar mensajes de error. + Normalmente la pantalla. +\end_layout + +\begin_layout Standard +Estos se pueden redireccionar para almacenar datos de salida o recibir datos + de entrada de un fichero, o comunicar unos procesos con otros +\end_layout + +\begin_layout Subsection* + +\family typewriter +bash +\family default + — +\emph on +GNU Bourne-Again SHell +\end_layout + +\begin_layout Subsubsection* +SINOPSIS +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +bash +\series default + [opciones] [comando | archivo] +\end_layout + +\begin_layout Subsubsection* +OPCIONES +\end_layout + +\begin_layout Standard +Todas las opciones de un caracter documentadas en la descripción del comando + interno +\family typewriter +\series bold +set +\family default +\series default + pueden usarse como opciones al invocar el +\emph on +shell +\emph default +. +\end_layout + +\begin_layout Subsubsection* +ARGUMENTOS +\end_layout + +\begin_layout Standard +Si quedan argumentos tras las +\family typewriter +\emph on +opciones +\family default +\emph default +, el primero de estos se entiende como el nombre de un fichero con comandos + +\emph on +shell +\emph default +, que guarda en el parámetro +\family typewriter +\series bold +$0 +\family default +\series default +, y el resto de argumentos los guarda en los parámetros posicionales, en + orden creciente. + Entonces +\family typewriter +\series bold +bash +\family default +\series default + lee y ejecuta los comandos de este archivo y termina su ejecución. + El estado de salida de +\family typewriter +\series bold +bash +\family default +\series default + es el del último comando ejecutado en el +\emph on +script +\emph default +. +\end_layout + +\begin_layout Subsubsection* +INVOCACIÓN +\end_layout + +\begin_layout Standard +Cuando +\family typewriter +\series bold +bash +\family default +\series default + se invoca como +\emph on +shell +\emph default + de inicio de sesión interactivo, ejecuta los comandos de +\family typewriter +~/.bash_profile +\family default +, si existe. + Cuando un +\emph on +shell +\emph default + de inicio de sesión interactivo termina, ejecuta los comandos de +\family typewriter +~/.bash_logout +\family default +. + Cuando se inicia un +\emph on +shell +\emph default + interactivo que no es de inicio de sesión, +\family typewriter +\series bold +bash +\family default +\series default + ejecuta los comandos de +\family typewriter +~/.bashrc +\family default +, si existe. +\end_layout + +\begin_layout Subsubsection* +DEFINICIONES +\end_layout + +\begin_layout Description +Blanco Espacio o tabulador. +\end_layout + +\begin_layout Description +Palabra Secuencia de caracteres interpretada como una unidad por el +\emph on +shell +\emph default +. +\end_layout + +\begin_layout Description +Nombre Palabra con solo caracteres alfanuméricos y barras bajas que no comienza + por un número. +\end_layout + +\begin_layout Description +Metacaracter Caracter que, si no está entre comillas, separa palabras. + Uno de +\family typewriter +| +\family default +, +\family typewriter +& +\family default +, +\family typewriter +; +\family default +, +\family typewriter +( +\family default +, +\family typewriter +) +\family default +, +\family typewriter +< +\family default +, +\family typewriter +> +\family default +, espacio, tabulador y salto de línea. +\end_layout + +\begin_layout Description +Operador +\begin_inset space ~ +\end_inset + +de +\begin_inset space ~ +\end_inset + +control Palabra que realiza una función de control. + Una de +\family typewriter +|| +\family default +, +\family typewriter +& +\family default +, +\family typewriter +&& +\family default +, +\family typewriter +; +\family default +, +\family typewriter +;; +\family default +, +\family typewriter +;& +\family default +, +\family typewriter +;;& +\family default +, +\family typewriter +( +\family default +, +\family typewriter +) +\family default +, +\family typewriter +| +\family default +, +\family typewriter +|& +\family default + y salto de línea. +\end_layout + +\begin_layout Subsubsection* +GRAMÁTICA DEL SHELL +\end_layout + +\begin_layout Paragraph* +Comandos simples +\end_layout + +\begin_layout Standard +Secuencia opcional de asignaciones de variables seguida de una lista de + palabras separadas por blancos, seguida de redirecciones, y terminada por + un operador de control. + La primera palabra indica el comando a ejecutar, pasado como argumento + 0, y el resto son los argumentos a dicho comando. +\end_layout + +\begin_layout Paragraph* +Tuberías, +\emph on +pipelines +\emph default + o +\emph on +pipes +\end_layout + +\begin_layout Standard +Formadas por uno o varios comandos simples separados por +\family typewriter +\series bold +| +\family default +\series default +, para conectar la salida estándar del de la izquierda con la entrada estándar + de la siguiente, o por +\family typewriter +|& +\family default +, abreviación para +\family typewriter +2>&1| +\family default +, y que se ejecutan en paralelo en sus respectivos procesos. +\end_layout + +\begin_layout Paragraph* +Listas +\end_layout + +\begin_layout Standard +Formadas por una o más tuberías separadas por +\family typewriter +; +\family default +, +\family typewriter +& +\family default +, +\family typewriter +&& +\family default + o +\family typewriter +|| +\family default +, y terminadas opcionalmente por +\family typewriter +; +\family default +, +\family typewriter +& +\family default + o un salto de línea. + +\family typewriter +\series bold +&& +\family default +\series default + y +\family typewriter +\series bold +|| +\family default +\series default + tienen igual precedencia, seguidos por +\family typewriter +\series bold +; +\family default +\series default + y +\family typewriter +\series bold +& +\family default +\series default +, de igual precedencia. + Una secuencia de uno o más saltos de línea puede aparecer en una lista + en lugar de un +\family typewriter +; +\family default + para delimitar comandos. +\end_layout + +\begin_layout Standard +Si un comando termina con +\family typewriter +\series bold +& +\family default +\series default +, se ejecuta en segundo plano en una +\emph on +subshell +\emph default +. + Comandos separados por +\family typewriter +\series bold +; +\family default +\series default + se ejecutan secuencialmente. +\end_layout + +\begin_layout Standard +Las listas Y (AND) y O (OR) son secuencias de una o más tuberías separadas + por +\family typewriter +\series bold +&& +\family default +\series default + o +\family typewriter +\series bold +|| +\family default +\series default +, respectivamente. + Una lista AND tiene forma +\family typewriter +\emph on +comando1 +\emph default + +\series bold +&& +\series default + +\emph on +comando2 +\family default +\emph default +, y en esta +\family typewriter +\emph on +comando2 +\family default +\emph default + se ejecuta si y sólo si +\family typewriter +\emph on +comando1 +\family default +\emph default + devuelve 0. + Una lista OR tiene forma +\family typewriter +\emph on +comando1 +\emph default + +\series bold +|| +\series default + +\emph on +comando2 +\family default +\emph default +, y en esta +\family typewriter +\emph on +comando2 +\family default +\emph default + se ejecuta si y sólo si +\family typewriter +\emph on +comando1 +\family default +\emph default + devuelve un valor distinto de 0. + El estado de salida de las listas Y y O es el del último comando ejecutado + en la lista. +\end_layout + +\begin_layout Subsubsection* +Comandos compuestos +\end_layout + +\begin_layout Standard +En la mayoría de los siguientes casos los +\family typewriter +; +\family default + pueden sustituirse por uno o más saltos de línea. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +( +\emph on +lista +\emph default +) +\family default + La +\family typewriter +\emph on +lista +\family default +\emph default + se ejecuta en un +\emph on +subshell +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +{ +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + +} +\family default + La +\family typewriter +\emph on +lista +\family default +\emph default + se ejecuta en el +\emph on +shell +\emph default + actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +if +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + + +\series bold +then +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + + +\series bold +elif +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + + +\series bold +then +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + +] +\begin_inset space ~ +\end_inset + +... +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + + +\series bold +else +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default +; +\begin_inset space ~ +\end_inset + +] +\begin_inset space ~ +\end_inset + + +\series bold +fi +\family default +\series default + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + Ejecuta la +\family typewriter +\emph on +lista +\family default +\emph default + en +\family typewriter +\series bold +if +\family default +\series default + y, si devuelve cero, ejecuta la +\family typewriter +\emph on +lista +\family default +\emph default + en +\family typewriter +\series bold +then +\family default +\series default +. + De lo contrario evalúa la +\family typewriter +\emph on +lista +\family default +\emph default + de cada +\family typewriter +\series bold +elif +\family default +\series default + y, si devuelve cero, ejecuta la +\family typewriter +\emph on +lista +\family default +\emph default + en el +\family typewriter +\series bold +then +\family default +\series default + correspondiente y termina el comando, y si esto no ocurre, se ejecuta la + +\family typewriter +\emph on +lista +\family default +\emph default + en +\family typewriter +\series bold +else +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +case +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +palabra +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +in +\series default + +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + + +\emph on +patrón +\emph default + +\begin_inset space ~ +\end_inset + +[ +\begin_inset space ~ +\end_inset + + +\series bold +| +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +patrón +\emph default + +\begin_inset space ~ +\end_inset + +] +\begin_inset space ~ +\end_inset + +... +\begin_inset space ~ +\end_inset + +) +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default + +\begin_inset space ~ +\end_inset + +;; +\begin_inset space ~ +\end_inset + +] +\begin_inset space ~ +\end_inset + +... +\begin_inset space ~ +\end_inset + + +\series bold +esac +\family default +\series default + Busca el primer +\family typewriter +\emph on +patrón +\family default +\emph default + que coincida (según +\begin_inset Quotes fld +\end_inset + +Expansión de nombres de archivo +\begin_inset Quotes frd +\end_inset + + pero sin considerar +\family typewriter +/ +\family default + de manera especial) con el valor de la +\family typewriter +\emph on +palabra +\family default +\emph default + una vez expandida y ejecuta la +\family typewriter +\emph on +lista +\family default +\emph default + correspondiente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +while +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista1 +\emph default +; +\begin_inset space ~ +\end_inset + + +\series bold +do +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista2 +\emph default +; +\begin_inset space ~ +\end_inset + + +\series bold +done +\family default +\series default + Ejecuta +\family typewriter +\emph on +lista1 +\family default +\emph default + y, si devuelve 0, ejecuta +\family typewriter +\emph on +lista2 +\family default +\emph default + y repite esta acción. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +for +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +nombre +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +in +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +palabra +\emph default + +\begin_inset space ~ +\end_inset + +... +\begin_inset space ~ +\end_inset + +; +\begin_inset space ~ +\end_inset + + +\series bold +do +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\emph default + +\begin_inset space ~ +\end_inset + +; +\begin_inset space ~ +\end_inset + + +\series bold +done +\family default +\series default + Una vez expandida la lista de +\family typewriter +\emph on +palabra +\family default +\emph default +s, para cada una, ejecuta +\family typewriter +\emph on +lista +\family default +\emph default + con la variable +\family typewriter +\emph on +nombre +\family default +\emph default + establecida a dicha palabra, en orden. +\end_layout + +\begin_layout Paragraph* +Definiciones de funciones +\end_layout + +\begin_layout Standard +Una función +\emph on +shell +\emph default + es un objeto que se llama como un comando simple y ejecuta un comando compuesto + con un nuevo conjunto de parámetros posicionales. + Se declaran como: +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +function +\series default + +\emph on +nombre +\emph default + +\emph on +comando_compuesto +\end_layout + +\begin_layout Subsubsection* +PARÁMETROS +\end_layout + +\begin_layout Standard +Un parámetro es una entidad que almacena valores, y puede ser un nombre, + un número o uno de los caracteres en +\begin_inset Quotes fld +\end_inset + +Parámetros especiales +\begin_inset Quotes frd +\end_inset + +. + Si es un nombre se le llama +\series bold +variable +\series default +, y puede ser asignado mediante la sentencia +\family typewriter +nombre=[ +\emph on +valor +\emph default +] +\family default +. + No puede haber espacios entre el +\family typewriter +\emph on +nombre +\family default +\emph default +, el signo +\family typewriter += +\family default + y el +\family typewriter +\emph on +valor +\family default +\emph default +. +\end_layout + +\begin_layout Paragraph* +Parámetros posicionales +\end_layout + +\begin_layout Standard +Se denotan por un número positivo distinto de 0 en decimal. +\end_layout + +\begin_layout Paragraph* +Parámetros especiales +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +@ +\family default +\series default + Todos los parámetros posicionales, en orden creciente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +# +\family default +\series default + Número de parámetros posicionales, en decimal. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +? +\family default +\series default + Estado de salida de la tubería ejecutada más recientemente en primer plano. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +$ +\family default +\series default + PID del +\emph on +shell +\emph default + actual. + Si se ejecuta en un +\emph on +subshell +\emph default + con +\family typewriter +() +\family default +, no devuelve el PID del +\emph on +subshell +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +! +\family default +\series default + PID del último trabajo puesto a ejecutar en segundo plano. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +0 +\family default +\series default + Nombre con el que se ha invocado al +\emph on +script +\emph default +. +\end_layout + +\begin_layout Paragraph* +Variables de shell +\end_layout + +\begin_layout Description + +\family typewriter +PWD +\family default + El directorio actual, variable establecida por el +\emph on +shell +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +HOME +\family default +\series default + Directorio personal del usuario actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +PATH +\family default +\series default + Lista de directorios separados por +\family typewriter +: +\family default + en los que el +\emph on +shell +\emph default + busca comandos. +\end_layout + +\begin_layout Subsubsection* +EXPANSIÓN +\end_layout + +\begin_layout Standard +Una barra invertida ( +\family typewriter + +\backslash + +\family default +) anula el significado especial del caracter siguiente. + Encerrar ca +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rac +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +te +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +res entre comillas simples ( +\family typewriter +' +\family default +) preserva el valor literal de todos, incluso de +\family typewriter + +\backslash + +\family default +, anulando la expansión y la separación de palabras. + Encerrarlos entre comillas dobles ( +\family typewriter +" +\family default +) anula toda expansión salvo la expansión de parámetros, la sustitución + de comandos y el significado de +\family typewriter + +\backslash + +\family default + cuando el siguiente caracter es +\family typewriter +$ +\family default +, +\family typewriter +` +\family default +, +\family typewriter +" +\family default + o un salto de línea. +\end_layout + +\begin_layout Paragraph* +Expansión de llaves +\end_layout + +\begin_layout Standard +Una palabra que contenga +\family typewriter +{ +\emph on +arg1 +\emph default +, +\emph on +arg2 +\emph default +, +\family default +... +\family typewriter +} +\family default + es sustituida (recursivamente) por varias palabras resultado de sustituir + dicha expresión por cada una de las palabras entre llaves. +\end_layout + +\begin_layout Paragraph* +Expansión de tilde +\end_layout + +\begin_layout Standard +En una palabra no entrecomillada, si empieza por +\family typewriter +\series bold +~ +\family default +\series default + seguido de +\family typewriter +\series bold +/ +\family default +\series default +, o si este es el único caracter de la palabra, este es sustituido por el + valor del parámetro +\family typewriter +\series bold +HOME +\family default +\series default +. +\end_layout + +\begin_layout Paragraph* +Expansión de parámetros +\end_layout + +\begin_layout Standard + +\family typewriter +${ +\emph on +parámetro +\emph default +} +\family default + es sustituido por el valor del +\family typewriter +\emph on +parámetro +\family default +\emph default +. + Las llaves son opcionales y sirven para delimitar el parámetro (de lo contrario + se considera que es el nombre más largo formado por caracteres consecutivos + después del +\family typewriter +$ +\family default + o, si no hay ninguno, por el primer caracter). + Si el primer caracter del +\family typewriter +\emph on +parámetro +\family default +\emph default + es +\family typewriter +\series bold +! +\family default +\series default +, el valor de la variable formada por el resto del +\family typewriter +\emph on +parámetro +\family default +\emph default + se usa como nombre del parámetro y es expandido en lugar del propio parámetro. +\end_layout + +\begin_layout Paragraph* +Sustitución de comandos +\end_layout + +\begin_layout Standard + +\family typewriter +$( +\emph on +comando +\emph default +) +\family default + o +\family typewriter +` +\emph on +comando +\emph default +` +\family default + ejecuta el +\family typewriter +\emph on +comando +\family default +\emph default + en una +\emph on +subshell +\emph default + y es sustituido por la salida del comando. + Sin comillas, el intérprete entiende los saltos de línea dentro de la salida + como separadores de palabras. +\end_layout + +\begin_layout Subsubsection* +Expansión aritmética +\end_layout + +\begin_layout Standard + +\family typewriter +$(( +\emph on +expresión +\emph default +)) +\family default + se sustituye por el resultado de evaluar la +\family typewriter +\emph on +expresión +\family default +\emph default + aritmética (ver +\begin_inset Quotes fld +\end_inset + +Evaluación aritmética +\begin_inset Quotes frd +\end_inset + +). + +\end_layout + +\begin_layout Paragraph* +División de palabras +\end_layout + +\begin_layout Standard +Se preservan los argumentos nulos +\family typewriter +"" +\family default + y +\family typewriter +'' +\family default +, pero no los que resultan de una expansión de un parámetro sin valor. +\end_layout + +\begin_layout Paragraph* +Expansión de rutas de archivo +\end_layout + +\begin_layout Standard +Cuando una palabra contiene +\family typewriter +* +\family default +, +\family typewriter +? +\family default + o +\family typewriter +[ +\family default +, el intérprete lo sustituye por una lista de nombres de archivo que cumplan + el patrón indicado. + El caracter +\family typewriter +. + +\family default + al principio de un nombre o inmediatamente detrás de una +\family typewriter +/ +\family default + debe reconocerse explícitamente en el patrón. + En este, la mayoria de caracteres se reconocen a sí mismo, +\family typewriter +* +\family default + reconoce cero o más caracteres cualesquiera, +\family typewriter +? +\family default + un caracter cualquiera, y +\family typewriter +[ +\family default +... +\family typewriter +] +\family default + indica cualquiera de los caracteres entre corchetes, salvo porque si el + primer caracter es +\family typewriter +! +\family default +, el significado pasa a ser cualquier caracter no indicado tras el +\family typewriter +! +\family default +, pudiendo en ambos casos indicar rangos como +\family typewriter +\emph on +a +\emph default +- +\emph on +z +\family default +\emph default +, +\end_layout + +\begin_layout Paragraph +Eliminación de comillas +\end_layout + +\begin_layout Standard +Una vez realizadas todas las expansiones se eliminan todas las ocurrencias + no entrecomilladas de los caracteres +\family typewriter + +\backslash + +\family default +, +\family typewriter +' +\family default + y +\family typewriter +" +\family default + que no fueran generadas por dichas expansiones. +\end_layout + +\begin_layout Subsubsection* +REDIRECCIÓN +\end_layout + +\begin_layout Standard +Estos operadores pueden aparecer detrás de un comando para redirigir su + entrada y salida. +\end_layout + +\begin_layout Paragraph* +Redirección de entrada +\end_layout + +\begin_layout Standard +Con +\family typewriter +[ +\emph on +n +\emph default +]< +\emph on +fichero +\family default +\emph default + para redirigir la entrada del descriptor +\family typewriter +\emph on +n +\family default +\emph default + (o 0) desde +\family typewriter +\emph on +fichero +\family default +\emph default +. +\end_layout + +\begin_layout Paragraph* +Redirección de salida +\end_layout + +\begin_layout Standard +Con +\family typewriter +[ +\emph on +n +\emph default +]> +\emph on +fichero +\family default +\emph default + para redirigir la salida del descriptor +\family typewriter +\emph on +n +\family default +\emph default + (o 1) al +\family typewriter +\emph on +fichero +\family default +\emph default +, truncándolo si ya existía. +\end_layout + +\begin_layout Paragraph* +Anexado de salida redirigida +\end_layout + +\begin_layout Standard +Con +\family typewriter +[ +\emph on +n +\emph default +]>> +\emph on +fichero +\family default +\emph default +, similar a lo anterior pero si el +\family typewriter +\emph on +fichero +\family default +\emph default + existe añade los nuevos datos al final. +\end_layout + +\begin_layout Paragraph* +Duplicado de descriptores de archivo +\end_layout + +\begin_layout Standard +Con +\family typewriter +[ +\emph on +n +\emph default +]>& +\emph on +m +\family default +\emph default + para duplicar la salida del descriptor +\family typewriter +\emph on +n +\family default +\emph default + (o 1) al descriptor +\family typewriter +\emph on +m +\family default +\emph default +. +\end_layout + +\begin_layout Subsubsection* +ALIAS +\end_layout + +\begin_layout Standard +Permiten que una cadena sea sustituida por una palabra cuando se usa como + la primera de un comando simple. + Si esta primera palabra no está entre comillas, se comprueba para ver si + es un alias, en cuyo caso se reemplaza por el texto del alias. +\end_layout + +\begin_layout Subsubsection* +EVALUACIÓN ARITMÉTICA +\end_layout + +\begin_layout Standard +Las expresiones entre paréntesis (que no tienen que ir precedidos por +\family typewriter + +\backslash + +\family default +) se evalúan primero. + De mayor a menor prioridad: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +- +\begin_inset space ~ +\end_inset + ++ +\family default + Menos y más unarios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +** +\family default + Exponencial. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +* +\begin_inset space ~ +\end_inset + +/ +\begin_inset space ~ +\end_inset + +% +\family default + Multiplicación, división y resto. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter ++ +\begin_inset space ~ +\end_inset + +- +\family default + Suma y resta. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter += +\family default + Asignación (a la izquierda está el nombre de una variable). +\end_layout + +\begin_layout Standard +La expansión de parámetros se realiza antes de evaluar la expresión, y los + valores de parámetros se fuerzan a un entero. + Las constantes que empiezan por +\family typewriter +0 +\family default + se interpretan en octal, mientras que las que empiezan por +\family typewriter +0x +\family default + o +\family typewriter +0X +\family default + se interpretan como hexadecimal. + No debe haber espacio entre operandos y operadores. +\end_layout + +\begin_layout Subsubsection* +EJECUCIÓN DE COMANDOS +\end_layout + +\begin_layout Standard +Si el nombre del comando no contiene +\family typewriter +/ +\family default +, si es el nombre de una función la ejecuta, o si es el nombre de un comando + interno, y de lo contrario busca en los directorios en +\family typewriter +\series bold +PATH +\family default +\series default + uno que contenga un ejecutable con el nombre del comando. + Si contiene +\family typewriter +/ +\family default +, lo interpreta como una ruta a un ejecutable. + La ejecución de un fichero ejecutable se realiza mediante un +\family typewriter +fork +\family default + tras el cual el proceso hijo hace un +\family typewriter +exec +\family default + y el padre, salvo que el proceso se deba ejecutar en segundo plano, espera + a que termine el hijo con +\family typewriter +wait +\family default +. +\end_layout + +\begin_layout Subsubsection* +PROMPTS +\end_layout + +\begin_layout Standard +El intérprete suele mostrar un prompt como +\family typewriter +[ +\emph on +usuario +\emph default +@ +\emph on +nombremáquina +\emph default + +\emph on +directorio +\emph default +] $ +\family default +, donde +\family typewriter +\emph on +usuario +\family default +\emph default + es el nombre del usuario conectado al sistema, +\family typewriter +\emph on +nombremáquina +\family default +\emph default + es el nombre de la máquina y +\family typewriter +\emph on +directorio +\family default +\emph default + es el nombre del directorio actual, o +\family typewriter +~ +\family default + para el directorio personal del usuario. +\end_layout + +\begin_layout Subsubsection* +COMANDOS INTERNOS DEL SHELL +\end_layout + +\begin_layout Standard +Muchos de estos también son externos pero han sido incorporados al código + de +\family typewriter +bash +\family default + para acelerar su ejecución. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +alias +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +nombre +\emph default += +\emph on +valor +\family default +\emph default + Establece un alias con el +\family typewriter +\emph on +nombre +\family default +\emph default + y +\family typewriter +\emph on +valor +\family default +\emph default + dados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +break +\family default +\series default + Sale de un bucle +\family typewriter +\series bold +for +\family default +\series default + o +\family typewriter +\series bold +while +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +cd +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +dir +\emph default +] +\series bold + +\family default +\series default +Cambia el directorio actual al último en que habíamos estado si +\family typewriter +\emph on +dir +\family default +\emph default + es +\family typewriter +- +\family default +, al directorio +\family typewriter +\emph on +dir +\family default +\emph default + en caso contrario, o al directorio personal si +\family typewriter +\emph on +dir +\family default +\emph default + no se especifica. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +continue +\family default +\series default + Continúa un bucle +\family typewriter +\series bold +for +\family default +\series default + o +\family typewriter +\series bold +while +\family default +\series default + por la siguiente iteración. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +echo +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +opción +\emph default +]... + [ +\emph on +arg +\emph default +]... + +\family default + Imprime los +\family typewriter +\emph on +arg +\family default +\emph default +umentos por la salida estándar, separados por espacio y seguidos de un salto + de línea. + Con +\family typewriter +\series bold +-n +\family default +\series default +, no se imprime el salto de línea al final. + Con +\family typewriter +\series bold +-e +\family default +\series default +, interpreta las secuencias: +\end_layout + +\begin_deeper +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold + +\backslash +b +\family default +\series default + Retrocede una posición. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold + +\backslash +f +\family default +\series default + Alimentación de página. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold + +\backslash +n +\family default +\series default + Salto de línea. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold + +\backslash +t +\family default +\series default + Tabulador horizontal. +\end_layout + +\end_deeper +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +exit +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\family default +\emph default + Provoca que el +\emph on +shell +\emph default + termine su ejecución con un estado de salida de +\family typewriter +\emph on +n +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +export +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +nombre +\emph default +[= +\emph on +palabra +\emph default +]] +\family default + El +\family typewriter +\emph on +nombre +\family default +\emph default + dado se convierte en variable de entorno. + Si se proporciona una +\family typewriter +\emph on +palabra +\family default +\emph default +, se asigna como valor a la variable. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +help +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +comando +\family default +\emph default + Muestra ayuda detallada de un +\family typewriter +\emph on +comando +\family default +\emph default + interno. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +let +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +expr +\emph default +... + +\family default + Evalúa una lista de +\family typewriter +\emph on +expr +\family default +\emph default +esiones aritméticas. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +printf +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +formato +\emph default + +\begin_inset space ~ +\end_inset + +[ +\emph on +arg +\emph default +]... + +\family default + Imprime los +\family typewriter +\emph on +arg +\family default +\emph default +umentos por la salida estándar según un +\family typewriter +\emph on +formato +\family default +\emph default +, al estilo de C. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +pwd +\family default +\series default + Imprime la ruta absoluta del directorio actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +read +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +nombre +\emph default +] +\family default + Lee una línea de la entrada estándar y la asigna como valor de +\family typewriter +\emph on +nombre +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +set +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +opción +\emph default +]... + +\family default + Sin opciones, imprime el nombre y el valor de todas las variables del +\emph on +shell +\emph default + (incluyendo las de entorno). + Opciones: +\end_layout + +\begin_deeper +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-u +\family default +\series default + Trata las variables no asignadas como errores en la expansión, mostrando + un mensaje de error. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Muestra las líneas de entrada de órdenes conforme se leen. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-x +\family default +\series default + Tras expandir cada comando simple, +\family typewriter +\series bold +for +\family default +\series default + o +\family typewriter +\series bold +case +\family default +\series default +, muestra el comando y sus argumentos expandidos. +\end_layout + +\end_deeper +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +shift +\family default +\series default + Los parámetros posicionales desde el 2 cambian su número a uno menos, y + el re +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pre +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +sen +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ta +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +do por el número +\family typewriter +$# +\family default + se desestablece. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +test +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +expr +\family default +\emph default + Funciona como la orden externa +\family typewriter +test +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +[ +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +expr +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +] +\family default +\series default + Ídem. +\end_layout + +\begin_layout Subsection* + +\family typewriter +env +\end_layout + +\begin_layout Standard +Imprime el nombre y el valor de las variables de entorno. +\end_layout + +\begin_layout Section +Ficheros y directorios +\end_layout + +\begin_layout Subsection* + +\family typewriter +ls [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Lista información sobre los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s (por defecto, el directorio actual). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Lista en formato largo. + Cada línea se corresponde con una entrada. + El primer ca +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rac +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ter es +\family typewriter +d +\family default + para un directorio, +\family typewriter +- +\family default + para un fichero regular, +\family typewriter +l +\family default + para un enlace simbólico, +\family typewriter +b +\family default + para un fichero especial de bloques, etc. + A continuación, los permisos en notación estándar, el número de enlaces + físicos que tiene la entrada, el usuario y el grupo al que pertenece, el + tamaño del fichero en bytes, su fecha y hora de última modificación y finalment +e su nombre. + Si no se especifica se usa el formato corto, que solo muestra el nombre. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-R +\family default +\series default + Lista también los subdirectorios de forma recursiva. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + No omite los ficheros y directorios +\begin_inset Quotes fld +\end_inset + +ocultos +\begin_inset Quotes frd +\end_inset + + (los que empiezan por +\family typewriter +. +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-S +\family default +\series default + Ordena por tamaño, empezando por el fichero más grande. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\family default +\series default + Ordena por tiempo de modificación, empezando por la entrada modificada + más recientemente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Invierte el orden del listado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\family default +\series default + Lista los directorios que se pasan como parámetros y no su contenido. +\end_layout + +\begin_layout Standard +Si hay dos opciones contradictorias, predomina la última. +\end_layout + +\begin_layout Subsection* + +\family typewriter +touch [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +FICHERO +\emph default +... +\end_layout + +\begin_layout Standard +Cambia el tiempo de modificación de cada +\family typewriter +\emph on +FICHERO +\family default +\emph default + al actual. + Un +\family typewriter +\emph on +FICHERO +\family default +\emph default + que no existe es creado vacío. +\end_layout + +\begin_layout Subsection* + +\family typewriter +cp +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +cp +\series default + [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +-T +\emph default +] +\emph on +ORIGEN DESTINO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +cp +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +ORIGEN +\emph default +... + +\emph on +DIRECTORIO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +cp +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +-t DIRECTORIO ORIGEN +\emph default +... +\end_layout + +\begin_layout Standard +Copia +\family typewriter +\emph on +ORIGEN +\family default +\emph default + a +\family typewriter +\emph on +DESTINO +\family default +\emph default +, o múltiples +\family typewriter +\emph on +ORÍGEN +\family default +\emph default +es a un +\family typewriter +\emph on +DIRECTORIO +\family default +\emph default + existente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Copia directorios recursivamente. + Usado para copiar directorios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Pide confirmación antes de sobrescribir. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + Equivale a +\family typewriter +-dR --preserve=all +\family default +, que conserva todos los atributos posibles de los +\family typewriter +\emph on +ORÍGEN +\family default +\emph default +es. + Sin esto, los elementos copiados tienen como usuario y grupo a quien hace + la copia, como tiempos asociados los de cuando la copia termina, los permisos + dependen de la configuración del sistema y usuario, etc. +\end_layout + +\begin_layout Subsection* + +\family typewriter +mv +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mv +\series default + [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +-T +\emph default +] +\emph on +ORIGEN DESTINO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mv +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +ORIGEN +\emph default +... + +\emph on +DIRECTORIO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mv +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +-t DIRECTORIO ORIGEN +\emph default +... +\end_layout + +\begin_layout Standard +Cambia el nombre de +\family typewriter +\emph on +ORIGEN +\family default +\emph default + a +\family typewriter +\emph on +DESTINO +\family default +\emph default +, o mueve +\family typewriter +\emph on +ORÍGEN +\family default +\emph default +es a +\family typewriter +\emph on +DIRECTORIO +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Pide confirmación antes de sobrescribir. +\end_layout + +\begin_layout Subsection* + +\family typewriter +rm [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Borra (desenlaza) los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Pide confirmación antes de borrar cada entrada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Elimina directorios y sus contenidos recursivamente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\family default +\series default + Nunca pide confirmación. +\end_layout + +\begin_layout Subsection* + +\family typewriter +mkdir [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DIRECTORIO +\emph default +... +\end_layout + +\begin_layout Standard +Crea los +\family typewriter +\emph on +DIRECTORIO +\family default +\emph default +s, si no existen ya. +\end_layout + +\begin_layout Subsection* + +\family typewriter +rmdir [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DIRECTORIO +\emph default +... +\end_layout + +\begin_layout Standard +Elimina los +\family typewriter +\emph on +DIRECTORIO +\family default +\emph default +s, si están vacíos. +\end_layout + +\begin_layout Subsection* + +\family typewriter +cat [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Concatena +\family typewriter +\emph on +FICHERO +\family default +\emph default +s a la salida estándar. +\end_layout + +\begin_layout Subsection* + +\family typewriter +less [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra el contenido de los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s (o de la entrada estándar) página a página, pudiendo avanzar y retroceder. +\end_layout + +\begin_layout Subsubsection* +COMANDOS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +/ +\emph on +patrón +\family default +\emph default + Busca hacia delante una línea que contenga el +\family typewriter +\emph on +patrón +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +chown [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +PROPIETARIO +\emph default +][ +\emph on +: +\emph default +[ +\emph on +GRUPO +\emph default +]] +\emph on +FICHERO +\emph default +... +\end_layout + +\begin_layout Standard +Cambia el usuario y/o grupo de cada fichero dado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-R +\family default +\series default + Opera en ficheros y directorios recursivamente. +\end_layout + +\begin_layout Subsection* + +\family typewriter +chgrp [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +GRUPO FICHERO +\emph default +... +\end_layout + +\begin_layout Standard +Cambia el grupo de cada +\family typewriter +\emph on +FICHERO +\family default +\emph default + a +\family typewriter +\emph on +GRUPO +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +chmod [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +MODO FICHERO +\emph default +... +\end_layout + +\begin_layout Standard +Establece los permisos de los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s a los indicados en +\family typewriter +\emph on +MODO +\family default +\emph default +, que puede ser una representación simbólica de los cambios o un número + en octal. +\end_layout + +\begin_layout Standard +La representación simbólica tiene formato +\family typewriter +[ +\series bold +ugo +\series default +...][[ +\series bold +-+ +\series default +][ +\emph on +perms +\emph default +...]...] +\family default +, donde +\family typewriter +\emph on +perms +\family default +\emph default + es 0 o más letras de +\family typewriter +\series bold +rwxXst +\family default +\series default + o una sola letra del conjunto +\family typewriter +\series bold +ugo +\family default +\series default +. + La combinación de las letras +\family typewriter +\series bold +ugo +\family default +\series default + controla qué permisos cambian: los de usuario ( +\family typewriter +\series bold +u +\family default +\series default +), grupo ( +\family typewriter +\series bold +g +\family default +\series default +) u otros ( +\family typewriter +\series bold +o +\family default +\series default +). + El operador +\family typewriter +\series bold ++ +\family default +\series default + causa que los bits seleccionados se añadan a los existentes, y +\family typewriter +\series bold +- +\family default +\series default + causa que se eliminen. + Las letras +\family typewriter +\series bold +rwxXst +\family default +\series default + seleccionan los bits de modo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +find [ +\emph on +punto-de-inicio +\emph default +]... + [expresión] +\end_layout + +\begin_layout Standard +Busca en los árboles de directorios a partir de cada +\family typewriter +punto-de-inicio +\family default + dado (por defecto +\family typewriter +. +\family default +) evaluando la +\family typewriter +expresión +\family default +, de izquierda a derecha, de acuerdo a las reglas de precedencia, hasta + que se conoce el resultado. +\end_layout + +\begin_layout Subsubsection* +EXPRESIÓN +\end_layout + +\begin_layout Standard +Está compuesta por una secuencia de: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Tests Devuelven verdadero o falso normalmente según alguna propiedad del + fichero. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Acciones Tienen efectos secundarios y devuelven verdadero o falso normalmente + según si tienen éxito o no. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Opciones +\begin_inset space ~ +\end_inset + +globales Afectan a la operación de los tests y acciones en cualquier parte + de la línea de comandos. + Siempre devuelven verdadero. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +Operadores Unen los otros elementos dentro de la expresión. +\end_layout + +\begin_layout Subsubsection* +OPCIONES GLOBALES +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-depth +\family default +\series default + Procesa el contenido de cada directorio antes del directorio en sí. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-maxdepth +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +N +\family default +\emph default + Desciende un máximo de +\family typewriter +\emph on +N +\family default +\emph default + (entero no negativo) niveles. + Así, si +\family typewriter +\emph on +N +\family default +\emph default + es 0, solo se procesan los +\family typewriter +punto +\family default +s +\family typewriter +-de-inicio +\family default +. +\end_layout + +\begin_layout Subsubsection* +TESTS +\end_layout + +\begin_layout Standard +Los argumentos numéricos (indicados como +\family typewriter +\emph on +n +\family default +\emph default +) pueden ser especificados como +\family typewriter +\emph on ++n +\family default +\emph default + para mayor que +\family typewriter +\emph on +n +\family default +\emph default +, +\family typewriter +\emph on +-n +\family default +\emph default + para menor que +\family typewriter +\emph on +n +\family default +\emph default + o +\family typewriter +\emph on +n +\family default +\emph default + para exactamente +\family typewriter +\emph on +n +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-empty +\family default +\series default + El fichero o directorio es vacío. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-name +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +patrón +\emph default + +\family default +El nombre coincide con el patrón, el cual reconoce +\family typewriter +* +\family default +, +\family typewriter +? +\family default + y +\family typewriter +[ +\family default + igual que +\family typewriter +bash +\family default + pero no excluye del reconocimiento un +\family typewriter +. + +\family default + al comienzo del nombre de archivo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-iname +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +patrón +\family default +\emph default + Como +\family typewriter +-name +\family default +, pero sin distinguir mayúsculas de minúsculas. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-size +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\emph default +[cwbkMG] +\family default +El tamaño del fichero es, redondeando al alza a la unidad especificada, + +\family typewriter +\emph on +n +\family default +\emph default +. + La unidad puede ser: +\family typewriter +c +\family default + para bytes, +\family typewriter +w +\family default + para palabras de 2 bytes, +\family typewriter +b +\family default + para bloques de 512 bytes (por defecto), +\family typewriter +k +\family default + para kiBs, +\family typewriter +M +\family default + para MiBs y +\family typewriter +G +\family default + para GiBs. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-mtime +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\emph default + +\family default +El archivo fue modificado por última vez hace +\family typewriter +\emph on +n +\family default +\emph default + días, redondeando a la baja. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-atime +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\emph default + +\family default +Igual pero para el último acceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-ctime +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\emph default + +\family default +Igual pero para el último cambio de estado (ubicación y metadatos). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-newer +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +fichero +\emph default + +\family default +El fichero ha sido modificado más recientemente que el fichero dado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-type +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +c +\emph default + +\family default +El fichero es de tipo +\family typewriter +\emph on +c +\family default +\emph default +, que es +\family typewriter +d +\family default + para directorios, +\family typewriter +f +\family default + para ficheros ordinarios, +\family typewriter +l +\family default + para enlaces simbólicos, etc. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-perm +\series default + +\begin_inset space ~ +\end_inset + +[-|/] +\emph on +mode +\emph default + +\family default +El fichero tiene los permisos indicados (si no hay un prefijo), al menos + estos permisos ( +\family typewriter +- +\family default +) y alguno de estos ( +\family typewriter +/ +\family default +). +\end_layout + +\begin_layout Subsubsection* +ACCIONES +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-print +\family default +\series default + Imprime la ruta de archivo completa seguida de un salto de línea y devuelve + verdadero. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-exec +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +comando +\emph default + +\family default +Ejecuta un comando, formado por todos los argumentos que siguen a +\family typewriter +-exec +\family default + hasta encontrar un argumento +\begin_inset Quotes fld +\end_inset + + +\family typewriter +; +\family default + +\begin_inset Quotes frd +\end_inset + + (exclusive), sustituyendo en este la cadena +\family typewriter +{} +\family default + por el nombre del archivo. + Devuelve verdadero si y sólo si el comando devuelve 0. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-ok +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +comando +\emph default + +\family default +Como +\family typewriter +-exec +\family default + pero pregunta primero al usuario si desea ejecutar el comando, y si no + acepta, devuelve falso. + La entrada de dicho comando se redirige desde +\family typewriter +/dev/null +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-printf +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +formato +\family default +\emph default + Imprime +\family typewriter +\emph on +formato +\family default +\emph default + interpretando secuencias de escape con +\family typewriter + +\backslash + +\family default + como en C y directivas +\family typewriter +% +\family default +: +\family typewriter +%p +\family default +indica el nombre del fichero, +\family typewriter + %s +\family default + su tamaño, +\family typewriter +%u +\family default + el nombre de su pro +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pie +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ta +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rio, etc. +\end_layout + +\begin_layout Subsubsection* +OPERADORES +\end_layout + +\begin_layout Standard +De mayor a menor prioridad: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +( +\begin_inset space ~ +\end_inset + + +\emph on +expr +\emph default + +\begin_inset space ~ +\end_inset + +) +\family default + Fuerza prioridad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +! +\begin_inset space ~ +\end_inset + + +\emph on +expr +\family default +\emph default + Cierto si +\family typewriter +\emph on +expr +\family default +\emph default + es falso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +expr1 +\begin_inset space ~ +\end_inset + +expr2 +\family default +\emph default + Conjunción. + +\family typewriter +\emph on +expr2 +\family default +\emph default + no es evaluada si +\family typewriter +\emph on +expr1 +\family default +\emph default + devuelve falso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +expr1 +\emph default + +\begin_inset space ~ +\end_inset + +-a +\begin_inset space ~ +\end_inset + + +\emph on +expr2 +\family default +\emph default + Igual que +\family typewriter +\emph on +expr1 expr2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +expr1 +\emph default + +\begin_inset space ~ +\end_inset + +-o +\begin_inset space ~ +\end_inset + + +\emph on +expr2 +\family default +\emph default + Disyunción. + +\family typewriter +\emph on +expr2 +\family default +\emph default + no es evaluada si +\family typewriter +\emph on +expr1 +\family default +\emph default + devuelve verdadero. +\end_layout + +\begin_layout Subsection* + +\family typewriter +mktemp +\end_layout + +\begin_layout Standard +Crea un fichero temporal de forma segura e imprime su nombre. +\end_layout + +\begin_layout Subsection* + +\family typewriter +dd [ +\emph on +OPERANDO +\emph default +]... +\end_layout + +\begin_layout Standard +Copia un fichero, convirtiendo y formateando según los operandos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +bs= +\series default +\emph on +BYTES +\family default +\emph default + Lee y escribe hasta +\family typewriter +\emph on +BYTES +\family default +\emph default + bytes a la vez. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +count +\series default += +\emph on +N +\family default +\emph default + Copia sólo +\family typewriter +\emph on +N +\family default +\emph default + bloques de la entrada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +if= +\series default +\emph on +FICHERO +\family default +\emph default + Lee del +\family typewriter +\emph on +FICHERO +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +of= +\series default +\emph on +FICHERO +\family default +\emph default + Escribe al +\family typewriter +\emph on +FICHERO +\family default +\emph default +. +\end_layout + +\begin_layout Standard + +\family typewriter +\emph on +BYTES +\family default +\emph default + y +\family typewriter +\emph on +N +\family default +\emph default + pueden ir seguidos de sufijos multiplicativos: +\begin_inset Formula $\mathtt{M}=1024\cdot1024$ +\end_inset + +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/dev/zero +\end_layout + +\begin_layout Standard +Las lecturas desde este fichero especial siempre devuelven bytes que contienen + 0. +\end_layout + +\begin_layout Section +Ayuda +\end_layout + +\begin_layout Subsection* + +\family typewriter +apropos [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +palabra-clave +\emph default +... +\end_layout + +\begin_layout Standard +Busca la +\family typewriter +\emph on +palabra-clave +\family default +\emph default + en las descripciones de las páginas del manual. +\end_layout + +\begin_layout Subsection* + +\family typewriter +whatis [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +nombre +\emph default +... +\end_layout + +\begin_layout Standard +Busca entre los nombres de las páginas del manual aquellos que se asemejen + al +\family typewriter +\emph on +nombre +\family default +\emph default + dado. +\end_layout + +\begin_layout Subsection* + +\family typewriter +man +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +man +\series default + [ +\series bold +-a +\series default +] [ +\series bold +-S +\series default + +\emph on +lista +\emph default +] [[ +\emph on +sección +\emph default +] +\emph on +página +\emph default +... + ]... +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +man -k +\series default + +\emph on +palabra-clave +\emph default +... +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +man -f +\series default + +\emph on +página +\emph default +... +\end_layout + +\begin_layout Subsubsection* +DESCRIPCIÓN +\end_layout + +\begin_layout Standard +Muestra la +\family typewriter +\emph on +página +\family default +\emph default + indicada en la +\family typewriter +\emph on +sección +\family default +\emph default + indicada (si no se especifica, va buscándola en las secciones en un cierto + orden) dentro del manual del sistema. + Las +\family typewriter +\emph on +página +\family default +\emph default +s están ordenadas en +\family typewriter +\emph on +seccion +\family default +\emph default +es para programación, administración del sistema, funciones de biblioteca + de C, ficheros de configuración, etc. + El número de +\family typewriter +\emph on +sección +\family default +\emph default + aparece, junto con el nombre de la +\family typewriter +\emph on +página +\family default +\emph default +, en la primera línea de esta. +\end_layout + +\begin_layout Subsubsection* +OPCIONES +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + No termina la búsqueda en la primera página, sino que muestra todas las + coincidentes. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-S +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +lista +\family default +\emph default + +\family typewriter +\emph on +lista +\family default +\emph default + es una lista de números de sección separadas por +\family typewriter +: +\family default + que sobrescribe el orden en que se buscan las páginas (puede especificarse + una sola sección). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-k +\family default +\series default + Equivale a +\family typewriter +apropos +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\family default +\series default + Equivale a +\family typewriter +whatis +\family default +. +\end_layout + +\begin_layout Subsubsection* +FICHEROS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +/etc/man.db.conf +\family default + Configuración de +\family typewriter +man +\family default +. +\end_layout + +\begin_layout Section +Filtros +\end_layout + +\begin_layout Standard +Son programas que reciben información por la entrada estándar, la procesan + y muestran el resultado por su salida estándar. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grep [ +\emph on +OPCIÓN +\emph default +]... + PATRÓN [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Busca un +\family typewriter +\emph on +PATRÓN +\family default +\emph default + en cada +\family typewriter +\emph on +FICHERO +\family default +\emph default + (o en la entrada estándar). +\end_layout + +\begin_layout Paragraph* +Control de reconocimiento +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Ignora diferencias entre mayúsculas y minúsculas +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Invierte el sentido del reconocimiento, seleccionando sólo las líneas que + no coinciden. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-w +\family default +\series default + Selecciona solo las líneas que contienen el patrón como palabra completa, + esto es, al principio de la línea o precedido por un caracter no alfabético, + y al final de la línea o seguido de un caracter no alfabético. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-x +\family default +\series default + Selecciona sólo las líneas que coinciden completamente con el patrón. +\end_layout + +\begin_layout Subsubsection* +Control de salida general +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\family default +\series default + No muestra las líneas coincidentes sino su número. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + No muestras las líneas coincidentes sino los archivos en los que hay alguna. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-o +\family default +\series default + Muestra solo las partes coincidentes no vacías de cada línea, con cada + parte en una línea separada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-q +\family default +\series default + No imprime nada a la salida estándar. +\end_layout + +\begin_layout Paragraph +Control de los prefijos de línea en la salida +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Suprime el nombre de archivo como prefijo de cada línea. + Esto es por defecto cuando sólo hay un +\family typewriter +\emph on +FICHERO +\family default +\emph default + (o sólo la entrada estándar). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\family default +\series default + Prefija cada línea con su número dentro del fichero, siendo la primera + la 1. +\end_layout + +\begin_layout Subsubsection* +EXPRESIONES REGULARES +\end_layout + +\begin_layout Standard +Una expresión regular es un patrón que describe un conjunto de cadenas de + caracteres. + La mayoría de caracteres son expresiones que se reconocen a sí mismas. + Un caracter con significado especial debe ser precedido por +\family typewriter + +\backslash + +\family default + para que tenga este comportamiento. + El +\family typewriter +. + +\family default + reconoce un único caracter cualquiera. +\end_layout + +\begin_layout Paragraph* +Clases de caracteres y expresiones entre corchetes +\end_layout + +\begin_layout Standard +La sintaxis +\family typewriter +[ +\family default +... +\family typewriter +] +\family default + indica un caracter cualquiera entre los corchetes, salvo si el primero + es ^, que entonces es un caracter cualquiera que no este entre dicho +\family typewriter +^ +\family default + y el +\family typewriter +] +\family default +, exclusive. + En ambos casos se pueden usar rangos como +\family typewriter +\emph on +a +\emph default +- +\emph on +z +\family default +\emph default +, que indican todos los caracteres entre +\family typewriter +\emph on +a +\family default +\emph default + y +\family typewriter +\emph on +z +\family default +\emph default +, inclusive. +\end_layout + +\begin_layout Paragraph* +Posicionamiento +\end_layout + +\begin_layout Standard + +\family typewriter +^ +\family default + y +\family typewriter +$ +\family default + se refieren respectivamente a una cadena vacía al principio o al final + de una línea. +\end_layout + +\begin_layout Paragraph +Repetición +\end_layout + +\begin_layout Standard +Una expresión puede ir seguida por +\family typewriter +* +\family default + para indicar que esta se puede repetir cero o más veces, por +\family typewriter + +\backslash ++ +\family default + indicando que se puede repetir una o más veces o por +\family typewriter + +\backslash +{ +\emph on +n +\emph default +, +\emph on +m +\emph default +} +\family default + para indicar que se puede repetir entre +\family typewriter +\emph on +n +\family default +\emph default + y +\family typewriter +\emph on +m +\family default +\emph default + veces, inclusive. +\end_layout + +\begin_layout Subsubsection* +Concatenación +\end_layout + +\begin_layout Standard +Dos expresiones regulares se pueden concatenar para formar una expresión + que reconoce a cualquier cadena formada por la concatenación de dos subcadenas + reconocidas respectivamente por estas subexpresiones. +\end_layout + +\begin_layout Subsubsection* +ESTADO DE SALIDA +\end_layout + +\begin_layout Standard +0 si alguna línea coincide, 1 si no coincide, y 2 si hay un error y no se + ha especificado +\family typewriter +-q +\family default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +sort [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Concatena los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s (o lee de la entrada estándar) e imprime por la salida estándar el resultado + de ordenarlos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\family default +\series default + Ordena numéricamente (por defecto lo hace alfabéticamente), incluyendo + números negativos y con decimales, considerando que un número termina cuando + aparece el primer caracter no numérico, incluyendo espacios. + El separador decimal es +\family typewriter +. + +\family default + en inglés y +\family typewriter +, +\family default + en español. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Invierte el resultado de las comparaciones. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-k +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +KEYDEF +\family default +\emph default + Ordena según una clave dada por +\family typewriter +\emph on +KEYDEF +\family default +\emph default +. + Se puede especificar varias veces para indicar una lista de claves de las + que cada una se comprueba en caso de empate en la anterior. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +SEP +\family default +\emph default + Usa el caracter +\family typewriter +\emph on +SEP +\family default +\emph default + como separador de campos. +\end_layout + +\begin_layout Standard + +\family typewriter +\emph on +KEYDEF +\family default +\emph default + tiene formato +\family typewriter +F[.C][OPTS][,F[.C][OPTS]] +\family default + para las posiciones de inicio y final, donde +\family typewriter +F +\family default + es un número de campo y +\family typewriter +C +\family default + una posición de caracter en el campo, ambos empezando por 1, y la posición + de final por defecto es el final de línea. + Si no se ha especificado +\family typewriter +-t +\family default +, los caracteres de un campo se cuentan desde el principio del espacio en + blanco precedente, y +\family typewriter +OPTS +\family default + es una o más +\family typewriter +\emph on +OPCION +\family default +\emph default +es de una letra que sobrescriben las opciones de orden global para dicha + clave. +\end_layout + +\begin_layout Subsection* + +\family typewriter +tr [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +CONJUNTO1 +\emph default + [ +\emph on +CONJUNTO2 +\emph default +] +\end_layout + +\begin_layout Standard +Sustituye, elimina repeticiones o elimina caracteres de la entrada estándar, + escribiendo a la salida estándar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\family default +\series default + Usa el complemento de +\family typewriter +\emph on +CONJUNTO1 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\family default +\series default + Elimina caracteres de +\family typewriter +\emph on +CONJUNTO1 +\family default +\emph default +, no sustituye. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\family default +\series default + Reemplaza secuencias de caracteres que aparecen en el último +\family typewriter +\emph on +CONJUNTO +\family default +\emph default + dado por una sola ocurrencia. +\end_layout + +\begin_layout Standard +Los +\family typewriter +\emph on +CONJUNTO +\family default +\emph default +s se especifican como secuencias de caracteres. + La mayoría se representan a sí mismos. + Secuencias interpretadas: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter + +\backslash +n +\family default + Salto de línea. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter + +\backslash +t +\family default + Tabulador. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +a +\emph default +- +\emph on +z +\family default +\emph default + Todos los caracteres desde +\family typewriter +\emph on +a +\family default +\emph default + hasta +\family typewriter +\emph on +z +\family default +\emph default + en orden ascendente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +[ +\emph on +c +\emph default +* +\emph on +n +\emph default +] +\emph on +n +\family default +\emph default + copias de +\family typewriter +\emph on +c +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +[:alnum:] +\family default + Todas las letras y dígitos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +[:blank:] +\family default + Todos los caracteres de espaciado horizontal. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +[:digit:] +\family default + Todos los dígitos. +\end_layout + +\begin_layout Subsection* + +\family typewriter +cut +\emph on +OPCIÓN +\emph default +... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Imprime las partes seleccionadas de líneas de cada +\family typewriter +\emph on +FICHERO +\family default +\emph default +, o de la entrada estándar, a la salida estándar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\series default +\emph on + +\begin_inset space ~ +\end_inset + +LISTA +\family default +\emph default + Selecciona solo estos caracteres. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +DELIM +\family default +\emph default + Usa +\family typewriter +\emph on +DELIM +\family default +\emph default + en vez de el tabulador como delimitador de campos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\series default +\emph on + +\begin_inset space ~ +\end_inset + +LISTA +\family default +\emph default + Selecciona sólo estos campos; imprimiendo también por defecto cualquier + línea que no contenga delimitador. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--complement +\family default +\series default + Imprime el complemento de los caracteres o campos seleccionados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\family default +\series default + No imprime líneas que no contengan delimitadores. +\end_layout + +\begin_layout Standard +Usar +\family typewriter +-c +\family default + o +\family typewriter +-f +\family default +, pero no ambos. + Cada +\family typewriter +\emph on +LISTA +\family default +\emph default + contiene un rango, o varios separados por comas. + Cada rango puede ser: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +n +\family default +\emph default + Caracter o campo +\family typewriter +\emph on +n +\family default +\emph default +-ésimo, contando desde 1. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +n +\family default +\emph default +- +\family typewriter +\emph on +m +\family default +\emph default + Del caracter o campo +\family typewriter +\emph on +n +\family default +\emph default +-ésimo al +\family typewriter +\emph on +m +\family default +\emph default +-ésimo, inclusive. +\end_layout + +\begin_layout Standard +Nótese que los campos vacíos también cuentan, por lo que a veces es necesario + usar +\family typewriter +tr +\family default + para eliminar repeticiones de +\family typewriter +\emph on +DELIM +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +uniq [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +ENTRADA +\emph default + [ +\emph on +SALIDA +\emph default +]] +\end_layout + +\begin_layout Standard +Filtra lineas adyacentes coincidentes de +\family typewriter +\emph on +ENTRADA +\family default +\emph default + (o la entrada estándar), escribiendo a +\family typewriter +\emph on +SALIDA +\family default +\emph default + (o la salida estándar). + Sin opciones, las líneas coincidentes (iguales) se eliminan a partir de + la segunda. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\family default +\series default + Añade antes de cada línea el número de ocurrencias. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\family default +\series default + Sólo imprime líneas duplicadas, una por grupo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-D +\family default +\series default + Imprime todas las líneas duplicadas. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + No distingue mayúsculas de minúsculas al comparar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\begin_inset space ~ +\end_inset + + +\series default +\emph on +n +\family default +\emph default + No compara los +\family typewriter +\emph on +n +\family default +\emph default + primeros caracteres. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-w +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +n +\family default +\emph default + Sólo compara los +\family typewriter +\emph on +n +\family default +\emph default + primeros caracteres. +\end_layout + +\begin_layout Subsection* + +\family typewriter +head [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Imprime las primeras 10 líneas del +\family typewriter +\emph on +FICHERO +\family default +\emph default + (o la entrada estándar) a la salida estándar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +- +\series default +\emph on +n +\family default +\emph default + Imprime las primeras +\family typewriter +\emph on +n +\family default +\emph default + líneas en vez de las primeras 10. +\end_layout + +\begin_layout Subsection* + +\family typewriter +tail [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Imprime las últimas 10 líneas del +\family typewriter +\emph on +FICHERO +\family default +\emph default + (o la entrada estándar) a la salida estándar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default +\emph on ++n +\family default +\emph default + Imprime empezando por la línea +\family typewriter +\emph on +n +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +column [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Formatea su entrada en múltiples columnas. + Modos: +\end_layout + +\begin_layout Paragraph* +Tabla +\end_layout + +\begin_layout Standard +Determina el número de columnas de la entrada y crea una tabla. + Este modo se activa con la opción +\family typewriter +\series bold +-t +\family default +\series default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +wc [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Imprime el número de saltos de línea, palabras y bytes del +\family typewriter +\emph on +FICHERO +\family default +\emph default + (o la salida estándar). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Imprime el número de saltos de línea. +\end_layout + +\begin_layout Subsection* + +\family typewriter +tee [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Copia la entrada estándar a cada +\family typewriter +\emph on +FICHERO +\family default +\emph default +, y también a la salida estándar. +\end_layout + +\begin_layout Section + +\emph on +Scripting +\end_layout + +\begin_layout Subsection* + +\family typewriter +seq +\emph on +PRIMERO INCREMENTO ÚLTIMO +\end_layout + +\begin_layout Standard +Imprime los números de +\family typewriter +\emph on +PRIMERO +\family default +\emph default + a +\family typewriter +\emph on +ÚLTIMO +\family default +\emph default +, inclusive, en pasos de +\family typewriter +\emph on +INCREMENTO +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +echo [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +CADENA +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra las +\family typewriter +\emph on +CADENA +\family default +\emph default +s de caracteres por la salida estándar. +\end_layout + +\begin_layout Subsection* + +\family typewriter +test +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +test +\series default + +\emph on +EXPRESIÓN +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +[ +\series default + +\emph on +EXPRESIÓN +\emph default + ] +\end_layout + +\begin_layout Standard +Termina con el estado determinado por la +\family typewriter +\emph on +EXPRESIÓN +\family default +\emph default +, devolviendo 0 si esta es verdadera y 1 si es falsa. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +( +\begin_inset space ~ +\end_inset + + +\emph on +EXPR +\emph default + +\begin_inset space ~ +\end_inset + +) +\family default + Fuerza precedencia. + Devuelve lo que devuelva la expresión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +! +\begin_inset space ~ +\end_inset + + +\emph on +EXPR +\family default +\emph default + +\begin_inset Quotes fld +\end_inset + +No +\begin_inset Quotes frd +\end_inset + + lógico. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +EXPR1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-a +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +EXPR2 +\family default +\emph default + +\begin_inset Quotes fld +\end_inset + +Y +\begin_inset Quotes frd +\end_inset + + lógico. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +EXPR1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-o +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +EXPR2 +\family default +\emph default + +\begin_inset Quotes fld +\end_inset + +O +\begin_inset Quotes frd +\end_inset + + lógico. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-eq +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + Los enteros son iguales. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-ne +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + Los enteros son distintos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-lt +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + +\family typewriter +\emph on +INT1 +\family default +\emph default + +\begin_inset Formula $<$ +\end_inset + + +\family typewriter +\emph on +INT2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-le +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + +\family typewriter +\emph on +INT1 +\family default +\emph default + +\begin_inset Formula $\leq$ +\end_inset + + +\family typewriter +\emph on +INT2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-gt +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + +\family typewriter +\emph on +INT1 +\family default +\emph default + +\begin_inset Formula $>$ +\end_inset + + +\family typewriter +\emph on +INT2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +INT1 +\emph default + +\begin_inset space ~ +\end_inset + + +\series bold +-ge +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +INT2 +\family default +\emph default + +\family typewriter +\emph on +INT1 +\family default +\emph default + +\begin_inset Formula $\geq$ +\end_inset + + +\family typewriter +\emph on +INT2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-z +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +STR +\family default +\emph default + La cadena es vacía. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +STR +\family default +\emph default + La cadena no es vacía. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +STR1 +\emph default + +\begin_inset space ~ +\end_inset + += +\begin_inset space ~ +\end_inset + + +\emph on +STR2 +\family default +\emph default + Las cadenas son iguales. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +STR1 +\emph default + +\begin_inset space ~ +\end_inset + +!= +\begin_inset space ~ +\end_inset + + +\emph on +STR2 +\family default +\emph default + Las cadenas son distintas. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +STR1 +\emph default + +\begin_inset space ~ +\end_inset + +< +\begin_inset space ~ +\end_inset + + +\emph on +STR2 +\family default +\emph default + +\family typewriter +\emph on +STR1 +\family default +\emph default + +\begin_inset Formula $<$ +\end_inset + + +\family typewriter +\emph on +STR2 +\family default +\emph default +, en orden lexicográfico. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +STR1 +\emph default + +\begin_inset space ~ +\end_inset + +> +\begin_inset space ~ +\end_inset + + +\emph on +STR2 +\family default +\emph default + +\family typewriter +\emph on +STR1 +\family default +\emph default + +\begin_inset Formula $>$ +\end_inset + + +\family typewriter +\emph on +STR2 +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-e +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + El +\family typewriter +\emph on +FICHERO +\family default +\emph default + existe. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y se tiene permiso de lectura. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-w +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y se tiene permiso de escritura. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-x +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y se tiene permiso de ejecución. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y es regular. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y es un directorio. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Existe y no es vacío. +\end_layout + +\begin_layout Subsection* + +\family typewriter +true +\end_layout + +\begin_layout Standard +Devuelve 0. +\end_layout + +\begin_layout Subsection* + +\family typewriter +false +\end_layout + +\begin_layout Standard +Devuelve 1. +\end_layout + +\end_body +\end_document diff --git a/iso/nb.lyx b/iso/nb.lyx new file mode 100644 index 0000000..e73ce7c --- /dev/null +++ b/iso/nb.lyx @@ -0,0 +1,1092 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Administración de paquetes +\end_layout + +\begin_layout Standard +Muchos programas Linux se distribuyen como código fuente, que el usuario + construye, junto con las páginas de manual, ficheros de configuración, + etc., si bien la mayoría del software se distribuye en +\series bold +paquetes +\series default + precompilados y listos para instalar. +\end_layout + +\begin_layout Standard +El sistema de paquetes de Fedora es RPM ( +\emph on +Red Hat Package Manager +\emph default +), en el que los paquetes se llaman como +\family typewriter +\emph on +nombre +\emph default +- +\emph on +versión +\emph default +- +\emph on +revisión +\emph default +.[ +\emph on +arquitectura +\emph default +| +\series bold +src +\series default +| +\series bold +noarch +\series default +].rpm +\family default +. + La arquitectura es +\family typewriter +i386 +\family default + para Intel x86 (IA-32) y compatibles, +\family typewriter +i586 +\family default + para Pentium y posteriores, +\family typewriter +i686 +\family default + para Pentium II y posteriores, +\family typewriter +x86_64 +\family default + para IA-64 (Intel/AMD de 64 bits), etc. + Los paquetes +\family typewriter +src +\family default + son los fuentes, a compilar por +\family typewriter +rpmbuild +\family default +, y los +\family typewriter +noarch +\family default + son independientes de la arquitectura. + El sistema gestiona una base de datos de paquetes instalados con información + de su estado y ficheros. + Podemos referirnos a paquetes instalados simplemente por su +\family typewriter +\emph on +nombre +\family default +\emph default +. + Puede haber dependencias entre paquetes, de modo que para instalar uno + sea necesario tener otro, que no se puede desinstalar sin desinstalar el + primero (ni causar errores). +\end_layout + +\begin_layout Standard +Podemos usar +\family typewriter +rpm +\family default +, que da error al instalar o eliminar si las dependencias no se satisfacen, + o +\family typewriter +dnf +\family default +, que resuelve automáticamente las dependencias y descarga los paquetes + de repositorios. +\end_layout + +\begin_layout Subsection* + +\family typewriter +rpm +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE INSTALACIÓN Y ACTUALIZACIÓN +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +rpm -i +\series default + +\emph on +FICHERO +\family default +\emph default + instala un paquete. +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +rpm -U +\series default + +\emph on +FICHERO +\family default +\emph default + actualiza a una nueva versión (los ficheros de configuración modificados + de la versión anterior se guardan como +\family typewriter +\emph on +nombre_fichero +\emph default +.rpmsave +\family default +, y si el fichero ha cambiado de formato y no puede ser adaptado a partir + de las modificaciones del anterior, se deja el fichero antiguo y se crea + uno nuevo +\family typewriter +\emph on +nombre_fichero +\emph default +.rpmnew +\family default +). +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE ELIMINACIÓN +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +rpm -e +\series default + +\emph on +NOMBRE +\family default +\emph default + elimina un paquete. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE CONSULTA +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +rpm -q +\series default + {[ +\emph on +OPCIÓN_SELECCIÓN +\emph default +]...|[ +\emph on +OPCIÓN_CONSULTA +\emph default +]... + +\emph on +PAQUETE +\emph default +...} +\end_layout + +\begin_layout Paragraph* +Opciones de selección +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Paquete al que pertenece el +\family typewriter +\emph on +FICHERO +\family default +\emph default +. +\end_layout + +\begin_layout Paragraph* +Opciones de consulta +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Información del paquete. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Listado de ficheros en el paquete. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE VERIFICACIÓN +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +rpm -V +\series default + +\emph on +PAQUETE +\end_layout + +\begin_layout Subsection* + +\family typewriter +dnf [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +COMANDO +\emph default +] [ +\emph on +ARGUMENTO +\emph default +]... +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Muestra la ayuda. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +check-update +\family default +\series default + Comprueba si hay actualizaciones. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +download +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PAQUETE +\emph default +... + +\family default + Descarga la última versión de los paquetes indicados, sin llegar a instalarlos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +erase +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PAQUETE +\emph default +... + +\family default + Alias obsoleto para +\family typewriter +\series bold +remove +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +install +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PAQUETE +\emph default +... + +\family default + Se asegura de que los paquetes dados y sus dependencias están ins +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ta +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +la +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dos. + (Para instalar el repositorio +\family typewriter +rpmfusion +\family default +, parte libre pero con más paquetes que la instalación por defecto, usar + +\family typewriter +dnf install http://download1.rpmfusion. +\begin_inset Newline newline +\end_inset + +org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm +\family default +. + +\begin_inset Newline newline +\end_inset + +También se pueden instalar paquetes de los repositorios y paquetes previamente + descargados.) +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +remove +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PAQUETE +\emph default +... + +\family default + Elimina los paquetes indicados junto con cualquiera que dependa de estos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +update +\family default +\series default + Alias obsoleto para +\family typewriter +\series bold +upgrade +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +upgrade +\family default +\series default + Actualiza cada paquete a la última versión disponible y resoluble. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dnf +\begin_inset space ~ +\end_inset + +upgrade +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PAQUETE +\emph default +... + +\family default + Actualiza cada paquete indicado a la última versión. + Actualiza dependencias según sea necesario. +\end_layout + +\begin_layout Subsubsection* +FICHEROS +\end_layout + +\begin_layout Paragraph* +Configuración principal +\end_layout + +\begin_layout Standard + +\family typewriter +/etc/dnf/dnf.conf +\end_layout + +\begin_layout Paragraph* +Repositorio +\end_layout + +\begin_layout Standard + +\family typewriter +/etc/yum.repos.d/ +\family default + (Contiene ficheros +\family typewriter +.repo +\family default +, que se dividen en tres secciones: una para paquetes normales, otra para + paquetes de depuración y otra para paquetes fuentes, y que informa a +\family typewriter +dnf +\family default + de dónde encontrar la lista de espejos para cada sección, de donde descargar + los paquetes. + +\family typewriter +fedora.repo +\family default + contiene información para la instalación base, y +\begin_inset Newline newline +\end_inset + + +\family typewriter +fedora-updates.repo +\family default + contiene la información para localizar los paquetes a actualizar.) +\end_layout + +\begin_layout Section +Módulos del núcleo +\end_layout + +\begin_layout Standard +Aunque Linux tiene una arquitectura monolítica, su diseño es modular, y + hay porciones ( +\series bold +módulos +\series default +) que se pueden cargar o descargar en caliente, que proporcionan soporte + para distintos sistemas de ficheros, periféricos y protocolos de red, y + que se suelen guardar con extensión +\family typewriter +.ko.xz +\family default + en +\family typewriter +/lib/modules/ +\emph on +versión +\family default +\emph default +, según la +\family typewriter +\emph on +versión +\family default +\emph default + de Linux, con los siguientes subdirectorios entre otros: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +drivers +\family default +\series default + Gestión de dispositivos hardware. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +fs +\family default +\series default + Sistemas de ficheros. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +net +\family default +\series default + Protocolos de red. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +sound +\family default +\series default + Tarjetas de sonido. +\end_layout + +\begin_layout Standard +Para que un módulo se pueda usar, el núcleo debe tener exportadas todas + las funciones que este usa. + Algunas están en otros módulos, por lo que existen dependencias entre módulos + descritas en +\family typewriter +/lib/modules/ +\emph on +versión +\emph default +/modules.dep +\family default +. + Los módulos se pueden cargar en cualquier momento, aunque suelen cargarlos + el +\emph on +script +\emph default + +\family typewriter +init +\family default + del disco RAM (para acceder al sistema de ficheros raíz), los servicios + de +\family typewriter +systemd +\family default + al iniciarse o +\family typewriter +udev +\family default + al detectar un nuevo dispositivo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lsmod +\end_layout + +\begin_layout Standard +Formatea el contenido de +\family typewriter +/proc/modules +\family default +, mostrando los módulos del núcleo cargados (nombre, tamaño, contador de + usos y módulos que lo usan). +\end_layout + +\begin_layout Subsection* + +\family typewriter +modinfo +\emph on +NOMBRE_MÓDULO +\emph default +... +\end_layout + +\begin_layout Standard +Extrae información sobre los módulos dados (fichero, autor, descripción, + licencia, dependencias, parámetros, etc.) +\end_layout + +\begin_layout Subsection* + +\family typewriter +insmod +\emph on +FICHERO_MÓDULO +\end_layout + +\begin_layout Standard +Inserta un módulo en el núcleo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +rmmod +\emph on +NOMBRE_MÓDULO +\end_layout + +\begin_layout Standard +Elimina un módulo del núcleo (si no se está usando). +\end_layout + +\begin_layout Subsection* + +\family typewriter +modprobe +\emph on +NOMBRE_MÓDULO +\end_layout + +\begin_layout Standard +Añade o elimina un módulo del núcleo (junto a los módulos de los que depende). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Elimina en vez de insertar. + Si los módulos de los que este depende tampoco se están usando, +\family typewriter +\series bold +modprobe +\family default +\series default + intentará eliminarlos también. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--show-depends +\family default +\series default + Lista las dependencias de un módulo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/modprobe.d/ +\end_layout + +\begin_layout Standard +Configuración para +\family typewriter +modprobe +\family default +. + Los ficheros bajo el directorio con extensión +\family typewriter +.conf +\family default + especifican opciones. +\end_layout + +\begin_layout Subsubsection* +COMANDOS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +alias +\begin_inset space ~ +\end_inset + + +\emph on +alias +\begin_inset space ~ +\end_inset + +nombre_módulo +\family default +\emph default + Da un nombre alternativo a un módulo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +blacklist +\begin_inset space ~ +\end_inset + + +\emph on +nombre-módulo +\family default +\emph default + Los módulos pueden contener sus propios alias. + +\family typewriter +\series bold +blacklist +\family default +\series default + indica que todos los alias internos del módulo deben ser ignorados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +install +\begin_inset space ~ +\end_inset + + +\emph on +nombre_módulo +\begin_inset space ~ +\end_inset + +comando +\emph default +... + +\family default + Ejecuta un comando en vez de insertar el módulo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +options +\begin_inset space ~ +\end_inset + + +\emph on +nombre_módulo +\begin_inset space ~ +\end_inset + +opción +\emph default +... + +\family default + Añade opciones al módulo cada vez que se inserta en el núcleo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +remove +\begin_inset space ~ +\end_inset + + +\emph on +nombre_módulo +\begin_inset space ~ +\end_inset + +comando +\emph default +... + +\family default + Como +\family typewriter +\series bold +install +\family default +\series default + pero se invoca al ejecutar +\family typewriter +modprobe -r +\family default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +depmod +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Crea una lista de dependencias entre módulos bajo +\family typewriter +/lib/modules/ +\emph on +versión +\family default +\emph default + (la versión del núcleo actual). + Esta lista es escrita a +\family typewriter +modules.dep +\family default +. + Finalmente, genera un fichero +\family typewriter +modules. +\emph on +dispositivo +\family default +\emph default + si los módulos proporcionan nombres de dispositivo que deben añadirse a + +\family typewriter +/dev +\family default + en el arranque ( +\family typewriter +modules.usbmap +\family default +, +\family typewriter +modules.pcimap +\family default +, etc., que sirven para indicar los módulos a cargar cuando se conecta un + dispositivo, pero que no se usan actualmente). +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/iso/nc.lyx b/iso/nc.lyx new file mode 100644 index 0000000..24c6cfc --- /dev/null +++ b/iso/nc.lyx @@ -0,0 +1,1408 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Internamente los usuarios se identifican por un número, el UID, que es 0 + para el su +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +per +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +u +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +sua +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rio, y que en general está en el rango 1–999 para las cuentas del sistema + y es mayor o igual a 1000 para usuarios normales. + Una cuenta del sistema ejecuta programas o posee ficheros para ciertos + servicios, pero no está asociada a una persona. + Por ejemplo, la cuenta +\family typewriter +apache +\family default + ejecuta servicios para un servidor Web, el demonio +\family typewriter +httpd +\family default + de Apache. +\end_layout + +\begin_layout Standard +Los usuarios también tienen un nombre de usuario, contraseña, un directorio + personal y una +\emph on +shell +\emph default +, programa que se ejecuta al iniciar sesión. + Se puede indicar que esta sea un ejecutable específico, no necesariamente + una +\emph on +shell +\emph default +, convirtiendo la cuenta en una +\series bold +cuenta restringida +\series default +, pues el usuario solo puede ejecutar este fichero y al finalizar su ejecución + sale del sistema. +\end_layout + +\begin_layout Standard +Cuando un usuario crea un fichero, su grupo propietario es el grupo activo + del usuario (generalmente su grupo primario), pero al determinar los permisos + que tiene un usuario sobre un fichero, se usan todos los grupos a los que + pertenece. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/passwd +\end_layout + +\begin_layout Standard +Fichero de texto que describe las cuentas de usuario del sistema. + Debe ser legible por todos los usuarios pero escribible sólo para el superusuar +io. + +\end_layout + +\begin_layout Standard +Tradicionalmente no había problema con este permiso general de lectura. + Hoy en día se usa el caracter +\family typewriter +x +\family default + en la celda de contraseña para indicar que las contraseñas están en +\family typewriter +/etc/shadow +\family default +, que sólo puede ser leída por el superusuario. + +\end_layout + +\begin_layout Standard +Cada línea del fichero describe un sólo usuario, y contiene los siguientes + campos: +\end_layout + +\begin_layout Quotation + +\family typewriter +nombre:contraseña:UID:GID:GECOS:directorio:shell +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +nombre +\family default +\emph default + Nombre de usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +contraseña +\family default +\emph default + Contraseña encriptada del usuario, +\family typewriter +* +\family default + o +\family typewriter +x +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +UID +\family default +\emph default + El UID. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +GID +\family default +\emph default + ID numérico del grupo primario del usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +GECOS +\family default +\emph default + Opcional, con propósito informativo. + Normalmente contiene el nombre completo del usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +directorio +\family default +\emph default + Directorio personal del usuario, donde se le posiciona tras iniciar sesión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +shell +\family default +\emph default + Programa a ejecutar al iniciar sesión. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/shells +\end_layout + +\begin_layout Standard +Fichero de texto que contiene las rutas absolutas de los +\emph on +shells +\emph default + de inicio de sesión válidos. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/shadow +\end_layout + +\begin_layout Standard +Fichero que contiene la información de las contraseñas de los usuarios e + información opcional de caducidad. + Debe no ser legible para usuarios normales por seguridad. + Hay una entrada por línea, con formato: +\end_layout + +\begin_layout Quotation + +\family typewriter +nombre:contraseña:último_cambio:vida_mínima:vida_máxima:periodo_alerta: +\begin_inset Newline newline +\end_inset + +periodo_inactividad:fecha_expiración:reservado +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +nombre +\family default +\emph default + Nombre de usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +contraseña +\family default +\emph default + Contraseña encriptada. + Si contiene algo que no es una contraseña encriptada válida, como +\family typewriter +!! +\family default + o +\family typewriter +* +\family default +, el usuario no podrá usar una contraseña Unix para iniciar sesión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +último_cambio +\family default +\emph default + Fecha del último cambio de contraseña. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +vida_mínima +\family default +\emph default + Número de días que el usuario debe esperar antes de poder cambiar nuevamente + su contraseña. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +vida_máxima +\family default +\emph default + Número de días tras el cual el usuario deberá cambiar su contraseña. + Tras esto la contraseña podría seguir siendo válida, pero se pedirá al + usuario una nueva contraseña la próxima vez que inicie sesión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +periodo_alerta +\family default +\emph default + Número de días antes de que la contraseña expire durante los cuales se + avisará al usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +periodo_inactividad +\family default +\emph default + Número de días después de que la contraseña expire durante los que esta + seguirá siendo válida. + Tras este tiempo el usuario no podrá iniciar sesión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +fecha_expiración +\family default +\emph default + Fecha en la que la cuenta expira, tras la cual el usuario no podrá iniciar + sesión. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/group +\end_layout + +\begin_layout Standard +Fichero de texto que define los grupos del sistema. + Hay una entrada por línea, con formato: +\end_layout + +\begin_layout Quotation + +\family typewriter +nombre:contraseña:GID:lista_de_usuarios +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/gshadow +\end_layout + +\begin_layout Standard +Información de seguridad de los grupos. + Debe no ser legible por usuarios normales por seguridad. + Hay una entrada por línea, con formato: +\end_layout + +\begin_layout Quotation + +\family typewriter +nombre:contraseña:administradores:miembros +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/issue +\end_layout + +\begin_layout Standard +Fichero de texto con un mensaje a imprimir antes de pedir el nombre de usuario + en un inicio de sesión por terminal. + Puede contener secuencias +\family typewriter +\series bold +@ +\series default +\emph on +caracter +\family default +\emph default + o +\family typewriter +\series bold + +\backslash + +\series default +\emph on +caracter +\family default +\emph default + si la terminal lo soporta (por ejemplo, +\family typewriter + +\backslash +l +\family default + se sustituye po el nombre de la terminal: +\family typewriter +tty1 +\family default +, +\family typewriter +tty2 +\family default +, etc.). +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/motd +\end_layout + +\begin_layout Standard +Fichero de texto a mostrar tras un inicio de sesión por terminal exitoso + y antes de ejecutar el +\emph on +shell +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +nologin +\end_layout + +\begin_layout Standard +Muestra un mensaje de que una cuenta no está disponible y termina. + Usado como campo +\family typewriter +\emph on +shell +\family default +\emph default + en +\family typewriter +/etc/passwd +\family default + para denegar el inicio de sesión a una cuenta. +\end_layout + +\begin_layout Subsection* + +\family typewriter +id +\emph on +USUARIO +\end_layout + +\begin_layout Standard +Muestra la información de usuario y grupos para el +\family typewriter +\emph on +USUARIO +\family default +\emph default + indicado. +\end_layout + +\begin_layout Subsection* + +\family typewriter +groups +\emph on +USUARIO +\emph default +... +\end_layout + +\begin_layout Standard +Muestra los grupos a los que pertenece cada +\family typewriter +\emph on +USUARIO +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +newgrp +\emph on +GRUPO +\end_layout + +\begin_layout Standard +Inicia sesión en un nuevo grupo. + Si el usuario no es +\family typewriter +root +\family default +, se le pedirá una contraseña si este no tiene o no es miembro del grupo + y el grupo tiene contraseña. + Al usuario se le denegará el acceso si la contraseña de grupo es vacía + y el usuario no es miembro. +\end_layout + +\begin_layout Subsection* + +\family typewriter +who +\end_layout + +\begin_layout Standard +Muestra información sobre los usuarios con sesiones abiertas. +\end_layout + +\begin_layout Subsection* + +\family typewriter +su [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +USUARIO +\emph default +] +\end_layout + +\begin_layout Standard +Ejecuta un nuevo +\emph on +shell +\emph default + con los ID de usuario y grupo indicados (por defecto +\family typewriter +root +\family default +). + Cambia las variables de entorno +\family typewriter +\series bold +HOME +\family default +\series default + y +\family typewriter +\series bold +SHELL +\family default +\series default + (más +\family typewriter +\series bold +USER +\family default +\series default + y +\family typewriter +\series bold +LOGNAME +\family default +\series default + si el +\family typewriter +\emph on +USUARIO +\family default +\emph default + no es +\family typewriter +root +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +- +\family default +\series default +, +\begin_inset space ~ +\end_inset + + +\family typewriter +\series bold +-l +\family default +\series default + Inicia el +\emph on +shell +\emph default + como uno de inicio de sesión con un entorno similar a un inicio de sesión + real. +\end_layout + +\begin_layout Subsection* + +\family typewriter +whoami +\end_layout + +\begin_layout Standard +Imprime el nombre de usuario asociado con el ID efectivo de usuario (EUID) + actual. +\end_layout + +\begin_layout Subsection* + +\family typewriter +useradd [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +USUARIO +\end_layout + +\begin_layout Standard +Crea una nueva cuenta de usuario usando los valores especificados más los + valores por defecto del sistema. + Por defecto la contraseña de este está desactivada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +DIRECTORIO +\family default +\emph default + Indica el +\family typewriter +\emph on +DIRECTORIO +\family default +\emph default + personal del usuario. + Por defecto, aunque depende de la configuración, se crea un directorio + con ruta +\family typewriter +/home/ +\emph on +USUARIO +\family default +\emph default + y se copia dentro de este el contenido de +\family typewriter +/etc/skel +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-g +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +GRUPO +\family default +\emph default + El nombre o número del grupo primario del usuario, que debe existir. + Si no se especifica, dependiendo de la configuración, se creará un nuevo + grupo con el mismo nombre que el usuario o se le asignará un grupo por + defecto. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-G +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +GRUPO1 +\emph default +[ +\emph on +,GRUPO2,... +\emph default +[ +\emph on +,GRUPON +\emph default +]]] +\family default + Lista de grupos adicionales de los que el usuario también es miembro. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-m +\family default +\series default + Crea el directorio personal del usuario si no existe ya. + Por defecto, la creación de este depende de la configuración. +\end_layout + +\begin_layout Subsubsection* +FICHEROS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +/etc/default/useradd +\family default + Valores por defecto para la nueva cuenta. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +/etc/login.defs +\family default + Configuración adicional. +\end_layout + +\begin_layout Subsection* + +\family typewriter +usermod [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +USUARIO +\end_layout + +\begin_layout Standard +Modifica los ficheros de la cuenta del +\family typewriter +\emph on +USUARIO +\family default +\emph default + para reflejar los cambios especificados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +COMENTARIO +\family default +\emph default + El nuevo valor del campo de comentario del fichero de contraseña para el + usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-g +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +GRUPO +\family default +\emph default + Nombre o número del nuevo grupo primario del usuario, que debe existir. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-G +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +GRUPO1 +\emph default +[ +\emph on +,GRUPO2,... +\emph default +[ +\emph on +,GRUPON +\emph default +]]] +\family default + Lista de grupos adicionales del que el usuario también es miembro. + Si el usuario es miembro del algún grupo que no está en la lista, será + eliminado del grupo, salvo si se añade la opción +\family typewriter +\series bold +-a +\family default +\series default + que añade al usuario esta lista en vez de sustituir. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +SHELL +\family default +\emph default + El nombre de la nueva +\emph on +shell +\emph default + inicial del usuario. +\end_layout + +\begin_layout Subsection* + +\family typewriter +userdel +\emph on +USUARIO +\end_layout + +\begin_layout Standard +Borra del sistema todas las entradas de usuario que hacen referencia al + +\family typewriter +\emph on +USUARIO +\family default +\emph default + dado, que debe existir. + Por defecto no borra el directorio personal. +\end_layout + +\begin_layout Subsection* + +\family typewriter +groupadd +\emph on +GRUPO +\end_layout + +\begin_layout Standard +Crea un nuevo grupo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +groupdel +\emph on +GRUPO +\end_layout + +\begin_layout Standard +Borra del sistema todas las entradas de grupo que hacen referencia al +\family typewriter +\emph on +GRUPO +\family default +\emph default + dado, que debe existir. +\end_layout + +\begin_layout Subsection* + +\family typewriter +gpasswd [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +GRUPO +\end_layout + +\begin_layout Standard +Administra +\family typewriter +/etc/group +\family default + y +\family typewriter +/etc/gshadow +\family default +. + Cada grupo puede tener administradores, miembros y una contraseña. +\end_layout + +\begin_layout Standard +Salvo por las opciones +\family typewriter +\series bold +-A +\family default +\series default + y +\family typewriter +\series bold +-M +\family default +\series default +, las opciones no pueden combinarse. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +USUARIO +\family default +\emph default + Añade el +\family typewriter +\emph on +USUARIO +\family default +\emph default + al +\family typewriter +\emph on +GRUPO +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +USUARIO +\family default +\emph default + Elimina al +\family typewriter +\emph on +USUARIO +\family default +\emph default + del +\family typewriter +\emph on +GRUPO +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-A +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +USUARIO +\emph default +,... + +\family default + Establece la lista de administradores. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-M +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +USUARIO +\emph default +,... + +\family default + Establece la lista de miembros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +passwd [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +USUARIO +\emph default +] +\end_layout + +\begin_layout Standard +Actualiza la información de autenticación del +\family typewriter +\emph on +USUARIO +\family default +\emph default +. + Por defecto cambia su contraseña. + Sólo +\family typewriter +root +\family default + puede especificar el +\family typewriter +\emph on +USUARIO +\family default +\emph default +; si no se especifica, se cambia la contraseña propia. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Bloquea la contraseña del usuario. + Sólo para +\family typewriter +root +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--stdin +\family default +\series default + La contraseña se lee de la entrada estándar, que puede ser una tubería. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-u +\family default +\series default + Desbloquea la contraseña del usuario. + Sólo para +\family typewriter +root +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-e +\family default +\series default + El usuario será forzado a cambiar la contraseñá en el siguiente intento + de inicio de sesión. + Sólo para +\family typewriter +root +\family default +. +\end_layout + +\begin_layout Standard +Este comando fuerza algunos requisitos de seguridad en la nueva contraseña + (longitud mínima, etc.). +\end_layout + +\begin_layout Subsection* + +\family typewriter +chage [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +USUARIO +\end_layout + +\begin_layout Standard +Cambia el número de días entre cambios de contraseña y la fecha de último + cambio para el +\family typewriter +\emph on +USUARIO +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-E +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FECHA +\family default +\emph default + Establece la fecha de expiración de la cuenta, con formato +\family typewriter +YYYY-MM-DD +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-I +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +DÍAS +\family default +\emph default + Establece el número de días de inactividad tras la expiración de una contraseña + durante los cuales el usuario todavía puede iniciar sesión. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-M +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +DÍAS +\family default +\emph default + Establece el máximo de días durante los que una contraseña es válida. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-W +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +DÍAS +\family default +\emph default + Establece el número de días antes de la expiración de una contraseña en + los que el usuario es avisado de ello. +\end_layout + +\begin_layout Subsubsection* +NOTA +\end_layout + +\begin_layout Standard +Este programa requiere de un fichero +\family typewriter +/etc/shadow +\family default +, y sólo puede usarlo +\family typewriter +root +\family default +s. +\end_layout + +\end_body +\end_document diff --git a/iso/nd.lyx b/iso/nd.lyx new file mode 100644 index 0000000..e9870bb --- /dev/null +++ b/iso/nd.lyx @@ -0,0 +1,4024 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Particionamiento estándar +\end_layout + +\begin_layout Standard +Existen dos formatos principales para el particionamiento de discos: +\end_layout + +\begin_layout Itemize + +\series bold +Particionamiento DOS +\series default + o +\series bold +MBR +\series default +: El formato original de MS-DOS. + Permite hasta 4 +\series bold +particiones principales +\series default + definidas en el primer sector del disco, el MBR ( +\emph on +Master Boot Record +\emph default +), junto con el código de arranque. + Una de estas puede ser una +\series bold +partición extendida +\series default +, dentro de la cual podemos crear +\series bold +particiones lógicas +\series default + o +\series bold +secundarias +\series default +. + En Linux, las particiones primarias tienen números del 1 al 4 y las lógicas + comienzan por el 5. +\begin_inset Newline newline +\end_inset + +Los números de los sectores en el disco, llamados +\series bold +LBA +\series default + ( +\emph on +Logical Block Address +\emph default +), se almacenan en 32 bytes, por lo que si los sectores son de +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + (lo normal), el tamaño máximo particionable es de +\begin_inset Formula $\unit[2]{TiB}$ +\end_inset + +. +\begin_inset Newline newline +\end_inset + +Las particiones tienen un tipo que indica qué va a contener o para qué se + va a usar, con propósito únicamente informativo. + Algunos tipos son +\family typewriter +0x82 +\family default + (Linux swap), +\family typewriter +0x83 +\family default + (Linux) o +\family typewriter +0x8e +\family default + (Linux LVM). +\end_layout + +\begin_layout Itemize + +\series bold +Particionamiento GPT +\series default + ( +\emph on +GUID Partition Table +\emph default +): Usa LBAs de 64 bits, luego el tamaño máximo con bloques de +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + es de +\begin_inset Formula $\unit[8]{ZiB}$ +\end_inset + +. + Permite un número prácticamente ilimitado de particiones, aunque los sistemas + operativos suelen limitarlo a 128 para mantener la tabla de particiones + de un tamaño razonable ( +\begin_inset Formula $\unit[16]{KiB}$ +\end_inset + +). + Esta tabla abarca el sector 1 del disco y sucesivos y tiene una suma de + verificación CRC32 para verificar su integridad y una copia de respaldo + en los últimos sectores del disco. + Por compatibilidad, el sector 0 almacena una tabla de particiones DOS con + una única partición de tipo +\family typewriter +0xEE +\family default + (GPT) llamada +\series bold + partición MBR de protección +\series default +, tan grande como sea posible para intentar cubrir todo el disco. +\begin_inset Newline newline +\end_inset + +Cada partición disco y cada partición tiene un +\series bold +GUID +\series default + ( +\emph on +Globally Unique Identifier +\emph default +), un número de 128 bits con formato +\family typewriter +XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +\family default + (cada +\family typewriter +X +\family default + es una cifra hexadecimal) que lo identifica unívocamente. + Desaparece la distinción entre particiones primarias, lógicas y extendidas. +\end_layout + +\begin_layout Standard +Normalmente la primera partición comienza en el sector 2048, usando el hueco + que queda para el gestor de arranque. +\end_layout + +\begin_layout Subsection* + +\family typewriter +fdisk +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +fdisk +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DISPOSITIVO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +fdisk -l +\series default + [ +\emph on +DISPOSITIVO +\emph default +]... +\end_layout + +\begin_layout Standard +Programa interactivo para la creación y manipulación de tablas de particiones + que entiende, entre otros, los formatos MBR y GPT. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Lista las tablas de particiones para los +\family typewriter +\emph on +DISPOSITIVO +\family default +\emph default +s especificados y termina. +\end_layout + +\begin_layout Subsubsection* +ÓRDENES +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +p +\family default +\series default + Muestra la tabla de particiones. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +n +\family default +\series default + Crea una nueva partición. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +d +\family default +\series default + Elimina una partición. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +w +\family default +\series default + Guarda en disco la tabla de particiones resultante. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +q +\family default +\series default + Sale sin guardar los cambios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +m +\family default +\series default + Muestra una ayuda con todas las órdenes. +\end_layout + +\begin_layout Subsubsection* +TAMAÑOS +\end_layout + +\begin_layout Standard +El diálogo de último sector acepta un tamaño de partición según el número + de sectores o la notación +\family typewriter ++<TAMAÑO>{K,B,M,G,...} +\family default +. + Si el tamaño lleva delante +\family typewriter ++ +\family default + se interpreta como relativo al primer sector de la partición. + En este caso el tamaño se espera en bytes y puede ir seguido de sufijos + multiplicativos +\begin_inset Formula $\mathtt{K}=1024$ +\end_inset + +, +\begin_inset Formula $\mathtt{M}=1024^{2}$ +\end_inset + +, etc. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lsblk [ +\emph on +OPCIÓN +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra información de todos los dispositivos de bloques disponibles en + forma de árbol por defecto. + La salida está sujeta a cambios, pero actualmente muestra las columnas + +\family typewriter +NAME +\family default + (nombre), +\family typewriter +SIZE +\family default + (tamaño) y +\family typewriter +TYPE +\family default + (tipo: disco, partición o volumen lógico), entre otras. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\family default +\series default + Muestra información sobre los sistemas de ficheros: columnas +\family typewriter +NAME +\family default +, +\family typewriter +FSTYPE +\family default + (tipo de sistema de ficheros), +\family typewriter +LABEL +\family default + (etiqueta), +\family typewriter +UUID +\family default + (identificador) y +\family typewriter +MOUNTPOINT +\family default + (punto de montaje). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-p +\family default +\series default + Muestra rutas de fichero (absolutas) completas. +\end_layout + +\begin_layout Section +LVM +\end_layout + +\begin_layout Standard +Un +\series bold +gestor de volúmenes lógicos +\series default + (LVM, +\emph on +Logical Volume Manager +\emph default +) es un sistema que +\begin_inset Quotes fld +\end_inset + +virtualiza +\begin_inset Quotes frd +\end_inset + + el almacenamiento para crear discos lógicos y proporcionar métodos de asignació +n de espacio más flexibles que las particiones. +\end_layout + +\begin_layout Standard +Nos centraremos en el LVM de Linux, llamado LVM. + Este parte de +\series bold +volúmenes físicos +\series default + (PVs, +\emph on +physical volumes +\emph default +), que pueden ser cualquier dispositivo de bloques y se dividen en +\series bold +extensiones físicas +\series default + (PEs, +\emph on +physical extents +\emph default +) de un tamaño fijo, que en Linux por omisión es de +\begin_inset Formula $\unit[4]{MiB}$ +\end_inset + +. + Estos se agrupan en +\series bold +grupos de volúmenes +\series default + (VGs, +\emph on +volume groups +\emph default +), que agrupan las extensiones físicas para crear encima +\series bold +volúmenes lógicos +\series default + (LVs, +\emph on +logical volumes +\emph default +), que se dividen en +\series bold +extensiones lógicas +\series default + (LEs, +\emph on +logical extents +\emph default +) del mismo tamaño que las extensiones físicas y actúan como cualquier otro + dispositivo de bloques. + Algunos tipos de volúmenes lógicos: +\end_layout + +\begin_layout Itemize + +\series bold +Lineales +\series default +: A cada extensión lógica le corresponde una única extensión física, en + orden lineal. +\end_layout + +\begin_layout Itemize + +\series bold +Repartidos +\series default +: El volumen se divide en porciones fijas con un +\series bold +tamaño de porción +\series default + ( +\emph on +stripe size +\emph default +) generalmente menor que una extensión lógica (por defecto +\begin_inset Formula $\unit[64]{KiB}$ +\end_inset + +), con lo que porciones consecutivas se almacenan en volúmenes físicos de + discos diferentes de forma cíclica. + Esto hace que el rendimiento de E/S sea mayor que el de un único disco + al poder operar en paralelo pero disminuyendo su fiabilidad, pues la probabilid +ad de que falle un volumen repartido es mayor que la de que falle un disco + individual. +\end_layout + +\begin_layout Itemize + +\series bold +Reflejados +\series default +: A cada extensión lógica le corresponde una extensión física en cada uno + de dos o más volúmenes físicos determinados, consiguiendo tolerancia a + fallos en caso de que un volumen físico falle. + En general, las escrituras tardan lo mismo que en un disco físico individual + pero se mejora el rendimiento de lectura. + Esto se implementa mediante volúmenes lógicos internos lineales. +\end_layout + +\begin_layout Itemize + +\series bold +RAID 5 +\series default +: Funcionan como un volumen lógico repartido al que se le añade un volumen + físico adicional, de modo que si tomamos una porción de un volumen físico + y la co +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rres +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pon +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dien +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +te del resto, una de ellas lo que contiene es el resultado de aplicar una + función de paridad sobre el resto. + Esto permite que no se pierdan datos si un volumen físico deja de funcionar, + y al mismo tiempo proporciona un mejor rendimiento. +\end_layout + +\begin_layout Standard +Los volúmenes lógicos pueden aumentar de tamaño aun con sistemas de ficheros + montados, en cuyo caso, si el sistema de ficheros lo permite, se puede + aumentar el tamaño de este. + También pueden reducir su tamaño (salvo los reflejados o RAID 5 en la implement +ación actual), pero en este caso los sistemas de ficheros no pueden reducirse + estando montados. +\end_layout + +\begin_layout Standard +También se pueden añadir volúmenes físicos a un grupo de volúmenes, o eliminarlo +s si no se están usando, en vivo, así como mover extensiones físicas de + un volumen a otro, de modo que si el hardware permite cambiar discos en + caliente, podemos actualizar o reemplazar dispositivos de almacenamiento + sin parar el sistema. +\end_layout + +\begin_layout Subsection* + +\family typewriter +pvcreate +\emph on +VOLUMEN +\emph default +... +\end_layout + +\begin_layout Standard +Inicializa un volumen físico para su uso por LVM. +\end_layout + +\begin_layout Subsection* + +\family typewriter +pvdisplay [ +\emph on +VOLUMEN +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra las propiedades de los volúmenes físicos indicados, o de todos si + no se indica ninguno. +\end_layout + +\begin_layout Subsection* + +\family typewriter +vgcreate +\emph on +NOMBRE_GRUPO VOLUMEN +\emph default +... +\end_layout + +\begin_layout Standard +Crea un nuevo grupo de volúmenes sobre dispositivos de bloques. + Si los dispositivos no habían sido inicializados por +\family typewriter +\series bold +pvcreate +\family default +\series default +, +\family typewriter +vgcreate +\family default + los inicializa. +\end_layout + +\begin_layout Subsection* + +\family typewriter +vgdisplay +\emph on +NOMBRE_GRUPO +\emph default +... +\end_layout + +\begin_layout Standard +Muestra las propiedades de los grupos de volúmenes indicados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--verbose +\family default +\series default + Incrementa la cantidad de salida por cada aparición. + Con una ya muestra los volúmenes físicos que forman parte de cada grupo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lvcreate [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +GRUPO +\end_layout + +\begin_layout Standard +Crea un nuevo volumen lógico en un grupo de volúmenes. + Por defecto crea un LV lineal ( +\family typewriter +linear +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--type +\begin_inset space ~ +\end_inset + +raid5 +\family default +\series default + Crea un volumen RAID 5. + Se debe indicar también la opción +\family typewriter +-i +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +N +\family default +\emph default + Crea un volumen, por defecto repartido ( +\family typewriter +striped +\family default +), entre +\family typewriter +\emph on +N +\family default +\emph default + volúmenes físicos. + Si se crea un volumen RAID 5, este número no incluye el volumen extra requerido + para la paridad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-m +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--mirrors +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +N +\family default +\emph default + Crea un volumen físico reflejado ( +\family typewriter +raid1 +\family default +| +\family typewriter +mirror +\family default +) entre +\family typewriter +\emph on +N +\family default +\emph default + volúmenes físicos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-L +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +tamaño +\emph default +[ +\emph on +UNIDAD +\emph default +] +\family default + Obligatorio; tamaño de la nueva unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-I +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +tamaño +\emph default +[ +\emph on +UNIDAD +\emph default +] +\family default + Tamaño de porción en un volumen lógico repartido o RAID 5. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +Nombre +\family default +\emph default + Nombre del nuevo volumen. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lvdisplay [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +VOLUMEN +\emph default +... +\end_layout + +\begin_layout Standard +Muestra las propiedades de los volúmenes lógicos indicados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-m +\family default +\series default +, +\begin_inset space ~ +\end_inset + + +\family typewriter +\series bold +--maps +\family default +\series default + Muestra la correspondencia de extensiones lógicas a volúmenes y extensiones + físicas. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lvextend [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +VOLUMEN +\end_layout + +\begin_layout Standard +Extiende un volumen lógico al tamaño especificado. + Debe indicarse una, y sólo una, de entre +\family typewriter +-l +\family default + y +\family typewriter +-L +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\series default + +\begin_inset space ~ +\end_inset + +[ +\series bold ++ +\series default +] +\emph on +Número +\emph default +[ +\emph on +PORCENTAJE +\emph default +] +\family default + Nuevo tamaño del volumen en extensiones lógicas. + El total de extensiones lógicas será mayor cuando se necesiten datos redundante +s. + El tamaño también se puede indicar como porcentaje. + El sufijo +\family typewriter +\series bold +%VG +\family default +\series default + denota el tamaño total del grupo de volúmenes, y +\family typewriter +\series bold +%FREE +\family default +\series default + el espacio libre en este. + Si se usa el prefijo +\family typewriter +\series bold ++ +\family default +\series default +, el valor no es absoluto sino relativo, y se añade al tamaño actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-L +\series default + +\begin_inset space ~ +\end_inset + +[ +\series bold ++ +\series default +] +\emph on +Tamaño +\emph default +[ +\emph on +UNIDAD +\emph default +] +\family default + Nuevo tamaño del volumen. + Si se usa el prefijo +\family typewriter +\series bold ++ +\family default +\series default +, el valor no es absoluto sino relativo, y se añade al tamaño actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--resizefs +\family default +\series default + Cambia el tamaño del sistema de ficheros subyacente junto al del volumen. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lvreduce [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +VOLUMEN +\end_layout + +\begin_layout Standard +Reduce el tamaño de un volumen lógico. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-L +\series default + +\begin_inset space ~ +\end_inset + +[ +\series bold +- +\series default +] +\emph on +Tamaño +\emph default +[ +\emph on +UNIDAD +\emph default +] +\family default + Nuevo tamaño del volumen. + Si se usa el prefijo +\family typewriter +\series bold +- +\family default +\series default +, el valor no es absoluto sino relativo, y se reduce del tamaño actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--resizefs +\family default +\series default + Cambia el tamaño del sistema de ficheros subyacente junto al del volumen. +\end_layout + +\begin_layout Subsection* + +\family typewriter +vgextend +\end_layout + +\begin_layout Standard +Añade uno o más volúmenes físicos a un grupo de volúmenes. +\end_layout + +\begin_layout Subsection* + +\family typewriter +vgreduce +\end_layout + +\begin_layout Standard +Elimina uno o más volúmenes físicos sin usar de un grupo de volúmenes. +\end_layout + +\begin_layout Subsection* + +\family typewriter +pvmove +\end_layout + +\begin_layout Standard +Mueve extensiones físicas de un volumen físico fuente a uno o más volúmenes + físicos destino. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lvremove +\emph on +VOLUMEN +\emph default +... +\end_layout + +\begin_layout Standard +Elimina uno o más volúmenes lógicos. +\end_layout + +\begin_layout Subsection* + +\family typewriter +vgremove +\emph on +GRUPO +\emph default +... +\end_layout + +\begin_layout Standard +Elimina uno o más grupos de volúmenes. +\end_layout + +\begin_layout Subsection* + +\family typewriter +pvremove +\emph on +VOLUMEN +\emph default +... +\end_layout + +\begin_layout Standard +Borra la etiqueta de un dispositivo para que LVM deje de reconocerlo como + volumen físico. +\end_layout + +\begin_layout Section +Dispositivos de bucle +\end_layout + +\begin_layout Standard +En Linux solo podemos montar dispositivos de bloques, pero existen dispositivos + de bloques llamados +\series bold +\emph on +loop +\series default +\emph default +, normalmente llamados +\family typewriter +/dev/loop0 +\family default +– +\family typewriter +7 +\family default + que representan ficheros regulares, que a su vez suelen crearse como un + fichero grande inicialmente lleno de ceros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +losetup +\end_layout + +\begin_layout Paragraph* +Obtener información +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +losetup +\series default + [ +\emph on +DISPOSITIVO +\emph default +] +\end_layout + +\begin_layout Paragraph* +Desasociar un dispositivo +\emph on +loop +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +losetup -d +\series default + +\emph on +DISPOSITIVO +\emph default +... +\end_layout + +\begin_layout Paragraph* +Desasociar todos los dispositivos +\emph on +loop +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +losetup -D +\end_layout + +\begin_layout Paragraph* +Asociar un dispositivo +\emph on +loop +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +losetup +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\series bold +-f +\series default +| +\emph on +DISPOSITIVO FICHERO +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + Muestra el estado de todos los dispositivos +\emph on +loop +\emph default +. + No toda la información está disponible si no se es superusuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\family default +\series default + Encuentra el primer dispositivo +\emph on +loop +\emph default + sin usar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-P +\family default +\series default + Fuerza al núcleo a escanear la tabla de particiones del dispositivo +\emph on +loop +\emph default + recién creado. +\end_layout + +\begin_layout Section +Sistemas de ficheros +\end_layout + +\begin_layout Standard +El sistema de ficheros ext2 fue el principal en Linux hasta que apareció + ext3 que, al contrario que ext2, es +\series bold +transaccional +\series default +: añade un registro o +\emph on +journal +\emph default + que permite recuperar rápidamente la consistencia tras una caída del sistema, + algo que en ext2 llevaba mucho tiempo al tener que analizar el sistema + de ficheros por completo. + Actualmente se usa ext4, muy similar a ext3 pero con mejoras que permiten + un menor uso de CPU y mayor rapidez de lectura y escritura. +\end_layout + +\begin_layout Standard +FAT es una familia de sistemas de ficheros introducida a finales de los + 70 por Microsoft. + La versión inicial era muy básica y dio paso a FAT12, ideada para su uso + en disquetes y reemplazada posteriormente por FAT16 para soportar discos + duros de mayor tamaño. + Con Windows 95 surge VFAT, una extensión opcional que permite almacenar + nombres de fichero de hasta 255 caracteres en vez de los 8 para nombre + y 3 de extensión que se permiten desde FAT12. + Una revisión de Windows 95 introduce FAT32, con mayor soporte para discos + duros más grandes, por lo que actualmente este sistema es una de las formas + más sencillas (y limitadas) de compartir ficheros entre Linux y Windows. + El manejador de FAT para Linux más adecuado (en general) es +\family typewriter +vfat +\family default +, que soporta FAT32 con VFAT. + Los ficheros en FAT no tienen propietario, grupo ni permisos asociados. +\end_layout + +\begin_layout Standard +XFS fue creado por Silicon Graphics para IRIX, su implementación de UNIX, + liberado en el año 2000 bajo licencia GPL y posteriormente soportado por + Linux. + NTFS apareció en Windows NT y es el sistema de ficheros por defecto de + esta familia de sistemas operativos. +\end_layout + +\begin_layout Standard +En Linux hay una única jerarquía de directorios, y cada sistema de ficheros + se +\series bold +monta +\series default + en un directorio llamado +\series bold +punto de montaje +\series default +, de forma que, hasta que este se +\series bold +desmonte +\series default +, podemos acceder a los ficheros que contiene a partir de este directorio. + El sistema de ficheros raíz es el que se monta en +\family typewriter +\series bold +/ +\family default +\series default +, el primero en montarse durante el arranque, y no se puede desmontar. + Normalmente solo el superusuario puede montar un sistema de ficheros. + +\end_layout + +\begin_layout Standard +En ocasiones también puede montarlo un usuario normal, pero sin indicar + opciones extra. + Tras montar un sistema de ficheros, el punto de montaje toma los permisos, + propietario y grupo del directorio raíz del sistema de ficheros que se + monta. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/fstab +\end_layout + +\begin_layout Standard +Contiene información sobre sistemas de ficheros a montar. + Cada sistema de ficheros se des +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +cri +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +be en una línea separada. + Los campos en cada línea se separan con tabulaciones o espacios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +dispositivo +\family default +\emph default + Dispositivo de bloques a montar. + Se puede usar +\family typewriter +LABEL=<label> +\family default + o +\family typewriter +UUID=<uuid> +\family default + en vez de un nombre de fichero. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +punto_de_montaje +\family default +\emph default + Punto de montaje para el sistema de ficheros. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +tipo +\family default +\emph default + Tipo de sistema de ficheros. + Linux soporta muchos tipos: +\family typewriter +ext3 +\family default +, +\family typewriter +ext4 +\family default +, +\family typewriter +vfat +\family default +, +\family typewriter +iso9660 +\family default +, +\family typewriter +swap +\family default + y muchos más. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +opciones +\family default +\emph default + Opciones de montaje asociadas al sistema de ficheros. + Lista separada por comas. + Contiene al menos el tipo de montaje ( +\family typewriter +\series bold +ro +\family default +\series default + o +\family typewriter +\series bold +rw +\family default +\series default +, que puede estar dentro de +\family typewriter +\series bold +defaults +\family default +\series default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +frecuencia_copia +\family default +\emph default + Usada por +\family typewriter +\series bold +dump +\family default +\series default + para determinar los sistemas de ficheros a los que hacer copia de seguridad. + Por defecto es 0 (no hacer copia). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +comprobación +\family default +\emph default + Usada por +\family typewriter +\series bold +fsck +\family default +\series default + para determinar el orden de comprobación de los sistemas de ficheros al + arrancar (se comprueban primero los que tengan valor 1, después 2, etc.). + El sistema raíz debería indicarse con un valor de 1. + Otros sistemas deberían tener un valor de 2. + Por defecto es 0 (no comprobar). +\end_layout + +\begin_layout Subsection* + +\family typewriter +mkfs [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DISPOSITIVO +\end_layout + +\begin_layout Standard +Crea un sistema de ficheros Linux en un dispositivo, normalmente una partición + de disco duro. + Actualmente +\family typewriter +\series bold +mkfs +\family default +\series default + es sólo una fachada sobre los creadores de sistemas de ficheros ( +\family typewriter +\series bold +mkfs. +\series default +\emph on +tipo +\family default +\emph default +) disponibles en Linux. + El creador específico al sistema de ficheros se busca solo mediante la + variable de entorno +\family typewriter +PATH +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +tipo +\family default +\emph default + Especifica el +\family typewriter +\emph on +tipo +\family default +\emph default + del sistema de ficheros a crear. +\end_layout + +\begin_layout Subsection* + +\family typewriter +mke2fs [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DISPOSITIVO +\end_layout + +\begin_layout Standard +Crea un sistema de ficheros ext2, ext3 o ext4. + Si se ejecuta como +\family typewriter +\series bold +mkfs.XXX +\family default +\series default +, se entiende que el tipo concreto es +\family typewriter +\emph on +XXX +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +e2label +\emph on +DISPOSITIVO +\emph default + [ +\emph on +ETIQUETA +\emph default +] +\end_layout + +\begin_layout Standard +Cambia la etiqueta de un sistema de ficheros ext2, ext3 o ext4. +\end_layout + +\begin_layout Subsection* + +\family typewriter +fatlabel +\end_layout + +\begin_layout Standard +Establece u obtiene la etiqueta de un sistema de ficheros MS-DOS. +\end_layout + +\begin_layout Subsection* + +\family typewriter +blkid +\end_layout + +\begin_layout Standard +Determina el tipo de contenido de un dispositivo de bloques, así como los + atributos a partir de los metadatos de contenido (como celdas +\family typewriter +LABEL +\family default + o +\family typewriter +UUID +\family default +). +\end_layout + +\begin_layout Subsection* + +\family typewriter +mount +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mount +\series default + [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DISPOSITIVO +\emph default +| +\emph on +DIRECTORIO +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mount +\series default + [ +\series bold +-t +\series default + +\emph on +tipo +\emph default +] [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +DISPOSITIVO DIRECTORIO +\end_layout + +\begin_layout Standard +Monta un sistema de ficheros. + Si solo se indica el directorio o el dispositivo, +\family typewriter +\series bold +mount +\family default +\series default + busca un punto de montaje (y si no lo encuentra, un dispositivo) en el + fichero +\family typewriter +/etc/fstab +\family default +. +\end_layout + +\begin_layout Paragraph* +Listado de montajes +\end_layout + +\begin_layout Standard +El siguiente comando lista todos los sistemas de ficheros montados (o de + tipo +\family typewriter +\emph on +tipo +\family default +\emph default +): +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +mount +\series default + [ +\series bold +-l +\series default +] [ +\series bold +-t +\series default + +\emph on +tipo +\emph default +] +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE LÍNEA DE COMANDOS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-o +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +opciones +\family default +\emph default + Opciones de montaje, lista separada por comas. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Sinónimo de +\family typewriter +\series bold +-o ro +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +tipo +\family default +\emph default + Tipo del sistema de ficheros. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE MONTAJE INDEPENDIENTES DEL SISTEMA DE FICHEROS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +auto +\family default +\series default + Puede ser montado con la opción +\family typewriter +\series bold +-a +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +noauto +\family default +\series default + Sólo puede ser montado de forma explícita. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +defaults +\family default +\series default + Usa las opciones por defecto: +\family typewriter +\series bold +rw +\family default +\series default +, +\family typewriter +\series bold +suid +\family default +\series default +, +\family typewriter +\series bold +dev +\family default +\series default +, +\family typewriter +\series bold +exec +\family default +\series default +, +\family typewriter +\series bold +auto +\family default +\series default +, +\family typewriter +\series bold +nouser +\family default +\series default + y +\family typewriter +\series bold +async +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +nodev +\family default +\series default + No interpreta los dispositivos especiales de caracteres y bloques en el + sistema de ficheros. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +exec +\family default +\series default + Permite la ejecución de ficheros. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +noexec +\family default +\series default + No la permite. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +remount +\family default +\series default + Intenta volver a montar un sistema de ficheros ya montado. + Se usa normalmente para cambiar las opciones de montaje. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +ro +\family default +\series default + Monta el sistema de ficheros para solo lectura. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +rw +\family default +\series default + Monta el sistema de ficheros para lectura y escritura. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +users +\family default +\series default + Permite a cualquier usuario montar y desmontar el sistema de ficheros. + Implica +\family typewriter +\series bold +noexec +\family default +\series default +, +\family typewriter +\series bold +nosuid +\family default +\series default + y +\family typewriter +\series bold +nodev +\family default +\series default + (salvo que lo sobrescriban opciones posteriores). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +suid +\family default +\series default + Permitir el efecto de los bits SUID o SGID. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +nosuid +\family default +\series default + No permitirlo. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE MONTAJE ESPECÍFICAS AL SISTEMA DE FICHEROS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +grpquota +\series default +| +\series bold +usrquota +\family default +\series default + Aceptadas pero ignoradas. + (Las utilidades de cuotas podrían reaccionar a estas cadenas en +\family typewriter +\emph on +/etc/fstab +\family default +\emph default +. + Concretamente, activan las cuotas de grupo y usuario, respectivamente, + si el sistema de ficheros soporta un mecanismo de cuotas.) +\end_layout + +\begin_layout Paragraph* +Opciones de montaje para FAT +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +uid= +\series default +\emph on +valor +\family default +\emph default + +\begin_inset space ~ +\end_inset + +y +\begin_inset space ~ +\end_inset + + +\family typewriter +\series bold +gid= +\series default +\emph on +valor +\family default +\emph default + Establecen el propietario y grupo de todos los ficheros. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +umask= +\series default +\emph on +valor +\family default +\emph default + Establece la máscara-u (máscara de permisos que +\series bold +no +\series default + están presentes). + El valor se da en octal. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +dmask= +\series default +\emph on +valor +\family default +\emph default + Establece una máscara-u solo en directorios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +fmask= +\series default +\emph on +valor +\family default +\emph default + Establece una máscara-u solo en ficheros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +umount { +\emph on +DIRECTORIO +\emph default +| +\emph on +DISPOSITIVO +\emph default +} +\end_layout + +\begin_layout Standard +Desmonta un sistema de ficheros. + No se puede desmontar cuando está +\begin_inset Quotes fld +\end_inset + +ocupado +\begin_inset Quotes frd +\end_inset + + ( +\emph on +busy +\emph default +). +\end_layout + +\begin_layout Subsection* + +\family typewriter +findmnt [ +\emph on +PUNTO_MONTAJE +\emph default +] +\end_layout + +\begin_layout Standard +Lista todos los sistemas de ficheros o busca uno. + Por defecto imprime todos los sistemas de ficheros en formato similar a + un árbol. +\end_layout + +\begin_layout Subsection* + +\family typewriter +fuser [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +NOMBRE +\emph default +... +\end_layout + +\begin_layout Standard +Muestra los PIDs de procesos que usan los ficheros o sistemas de ficheros + especificados. + En el modo por defecto, a cada nombre de fichero le sigue una letra indicando + cada tipo de acceso: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +c +\family default +\series default + Directorio actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +e +\family default +\series default + Ejecutable siendo ejecutado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +f +\family default +\series default + Fichero abierto. +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-m +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +NOMBRE +\family default +\emph default + +\family typewriter +\emph on +NOMBRE +\family default +\emph default + especifica un fichero montado en un sistema de ficheros o dispositivo de + bloques montado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Muestra una salida detallada. + Los campos +\family typewriter +PID +\family default +, +\family typewriter +USER +\family default + y +\family typewriter +COMMAND +\family default + son similares a los de +\family typewriter +\series bold +ps +\family default +\series default +. + +\family typewriter +ACCESS +\family default + muestra cómo el proceso accede al fichero. + También se muestra cuándo un fichero particular es accedido como punto + de montaje. +\end_layout + +\begin_layout Subsection* + +\family typewriter +df [ +\emph on +OPCIÓN +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra el espacio disponible en todos los sistemas de ficheros actualmente + montados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Muestra los tamaños en potencias de 1024 (p. + ej., +\family typewriter +1023M +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Muestra información de uso sobre los nodos-i en vez de sobre los bloques. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-T +\family default +\series default + Imprime el tipo del sistema de ficheros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +du [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +FICHERO +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra un resumen de uso de disco en los +\family typewriter +\emph on +FICHERO +\family default +\emph default +s, recursivamente en caso de directorios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + Muestra el uso de espacio para todos los ficheros, no solo directorios. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Mostrar los tamaños en formato legible para humanos (p. + ej., +\family typewriter +1K +\family default +, +\family typewriter +234M +\family default +, +\family typewriter +2G +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\family default +\series default + Mostrar sólo el total para cada argumento. +\end_layout + +\begin_layout Standard +Los valores mostrados están en unidades de 1024 bytes (o 512 si se establece + +\family typewriter +POSIXLY_CORRECT +\family default +). +\end_layout + +\begin_layout Section +Cuotas de disco +\end_layout + +\begin_layout Standard +Algunos sistemas de ficheros soportan +\series bold +cuotas +\series default +, permitiendo establecer límites sobre la cantidad de espacio que puede + usar cada usuario. + En el caso de ext2, ext3 y ext4, cada usuario tiene límites en el número + de bloques y el de nodos-i, de dos tipos: +\end_layout + +\begin_layout Itemize + +\series bold +Límite duro +\series default + ( +\emph on +hard limit +\emph default +): No se puede sobrepasar. +\end_layout + +\begin_layout Itemize + +\series bold +Límite blando +\series default + ( +\emph on +soft limit +\emph default +): Inferior al duro, se puede sobrepasar durante cierto +\series bold +periodo de gracia +\series default +, en el que se informa al usuario. +\end_layout + +\begin_layout Standard +En Linux, las cuotas se deben activar explícitamente. +\end_layout + +\begin_layout Subsection* + +\family typewriter +quotacheck -nm +\emph on +SISTEMA_DE_FICHEROS +\emph default +... +\end_layout + +\begin_layout Standard +Examina cada sistema de ficheros (indicado por el punto de montaje), crea + una tabla con el uso de disco actual y la compara con la contenida en el + fichero de cuotas de disco del sistema de ficheros. + Si se encuentran inconsistencias, tanto el fichero como la copia en el + sistema de las cuotas incorrectas se actualizan. + +\family typewriter +\series bold +quotacheck +\family default +\series default + espera que cada sistema de ficheros a comprobar tenga ficheros de cuota + llamados +\family typewriter +[a]quota.user +\family default + y +\family typewriter +[a]quota.group +\family default + en la raíz. + Si un fichero no está presente, +\family typewriter +\series bold +quotacheck +\family default +\series default + lo crea. +\end_layout + +\begin_layout Subsection* + +\family typewriter +quotaon +\emph on +SISTEMA_FICHEROS +\emph default +... +\end_layout + +\begin_layout Standard +Anuncia al sistema que las cuotas de disco deben ser activadas en uno o + más sistemas de ficheros (indicados por el punto de montaje). + Los ficheros de cuota deben estar presentes en el directorio raíz del sistema + de ficheros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +setquota +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +setquota +\series default + +\series bold +-u +\series default + +\emph on +NOMBRE LÍMITE_BLANDO_BLOQUES LÍMITE_DURO_BLOQUES LÍMITE_BLANDO_NODOS_I LÍMITE_DU +RO_NODOS_I SISTEMA_DE_FICHEROS +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +setquota -t +\series default + +\emph on +PERIODO_GRACIA_BLOQUES PERIODO_GRACIA_NODOS_I SISTEMA_DE_FICHEROS +\end_layout + +\begin_layout Standard +Editor de cuotas. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-u +\family default +\series default + Establece cuotas para el usuario nombrado. +\end_layout + +\begin_layout Subsection* + +\family typewriter +repquota +\emph on +SISTEMA_DE_FICHEROS +\end_layout + +\begin_layout Standard +Imprime un resumen de los usos de disco y las cuotas para los sistemas de + ficheros indicados. +\end_layout + +\begin_layout Subsection* + +\family typewriter +quota +\end_layout + +\begin_layout Standard +Imprime el uso de disco y los límites del usuario. +\end_layout + +\begin_layout Section +Copias de seguridad +\end_layout + +\begin_layout Standard +Es responsabilidad del administrador que las copias de seguridad de los + sistemas de ficheros se hagan en el momento oportuno y estén en un lugar + seguro, para evitar la posible pérdida de datos. + Tipos de copia: +\end_layout + +\begin_layout Itemize + +\series bold +Completa +\series default +: Tardan mucho en realizarse y la recuperación de un único fichero puede + no ser inmediata, por lo que sólo están justificadas si los ficheros cambian + mucho y son vitales para el trabajo de mucha gente o ante grandes cambios + como nuevo software, sistema operativo, etc. +\end_layout + +\begin_layout Itemize + +\series bold +Diferencial +\series default +: Sólo se copian los ficheros creados o modificados después de la última + copia completa. +\end_layout + +\begin_layout Itemize + +\series bold +Incremental +\series default +: Sólo se copian los ficheros creados o modificados desde la última copia + de seguridad, por lo que ocupan menos que las diferenciales. + Muchas veces se hace una copia completa con poca frecuencia seguida de + copias incrementales con mucha frecuencia, incluso a diario. +\end_layout + +\begin_layout Subsection* + +\family typewriter +tar +\emph on +OPCIÓN +\emph default +... + [ +\emph on +ARGUMENTO +\emph default +]... +\end_layout + +\begin_layout Standard +Almacena múltiples ficheros en uno solo (un +\series bold +archivo +\series default +), y manipula dichos archivos. +\end_layout + +\begin_layout Standard +En +\series bold +estilo tradicional +\series default +, el primer argumento es un clúster de opciones y el resto son argumentos + a aquellas opciones que lo requieran. + En +\series bold +estilo UNIX +\series default +, a cada opción le precede un guión. + Si una opción toma un argumento, este lo sigue, bien como palabra separada + en la línea del comando o inmediatamente detrás de la opción. + Cualquier número de parámetros que no tome argumentos puede juntarse tras + un solo guión. + En +\series bold +estilo GNU +\series default +, cada opción comienza con dos guiones y tiene un nombre descriptivo. + Los tres estilos pueden mezclarse. +\end_layout + +\begin_layout Subsubsection* +OPCIONES +\end_layout + +\begin_layout Paragraph* +Modo de operación +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\family default +\series default + Crea un nuevo archivo. + Los argumentos indican los nombres de los ficheros a archivar. + Los directorios se archivan recursivamente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Añade fichero al final de un archivo. + Los argumentos tienen el mismo significado que para +\family typewriter +\series bold +-c +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\family default +\series default + Lista el contenido de un archivo. + Los argumentos son opcionales. + Cuando aparecen, son los nombres de los miembros a listar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-x +\family default +\series default + Extrae ficheros de un archivo. + Los argumentos son opcionales. + Cuando aparecen, son los nombres de los miembros del archivo a extraer. +\end_layout + +\begin_layout Paragraph* +Tratamiento de atributos de fichero +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-p +\family default +\series default + Extrae información sobre permisos de fichero. +\end_layout + +\begin_layout Paragraph* +Selección y cambio de dispositivo +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-f +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +ARCHIVO +\family default +\emph default + Usa el fichero o dispositivo de archivo indicado. +\end_layout + +\begin_layout Subsubsection* +Opciones de compresión +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-z +\family default +\series default + Filtra el archivo a través de +\family typewriter +\series bold +gzip +\family default +\series default +. +\end_layout + +\begin_layout Paragraph* +Selección de ficheros local +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Sigue enlaces simbólicos; archiva los ficheros a los que apuntan. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-N +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--after-date +\series default += +\emph on +FECHA +\family default +\emph default + Sólo almacena ficheros posteriores a +\family typewriter +\emph on +FECHA +\family default +\emph default +. + Si +\family typewriter +\emph on +FECHA +\family default +\emph default + empieza por +\family typewriter +\series bold +/ +\family default +\series default + o +\family typewriter +\series bold +. + +\family default +\series default + se toma como un nombre de fichero; la fecha de creación de este fichero + se usa como fecha. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-P +\family default +\series default + No elimina las barras al principio de nombres de fichero al crear archivos + (los guarda con ruta absoluta). +\end_layout + +\begin_layout Paragraph* +Salida informativa +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Lista los ficheros procesados. +\end_layout + +\begin_layout Subsection* + +\family typewriter +cpio +\end_layout + +\begin_layout Standard +En modo copia hacia fuera, lee una lista de nombres de fichero, uno por + línea, de la entrada estándar, y escribe el archivo en la salida estándar. + En modo copia hacia dentro, lee un archivo de la entrada estándar. +\end_layout + +\begin_layout Paragraph* +Modo principal de operación +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-i +\family default +\series default + Extrae ficheros de un archivo (copia hacia dentro). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-o +\family default +\series default + Crea un archivo (copia hacia fuera). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\family default +\series default + Imprime una tabla de contenidos de la entrada. +\end_layout + +\begin_layout Subsubsection* +Modificadores de operación para ambos modos +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Lista los ficheros procesados, o con +\family typewriter +\series bold +-t +\family default +\series default +, proporciona un listado estilo +\family typewriter +\series bold +ls -l +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-F +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +ARCHIVO +\family default +\emph default + Usa este +\family typewriter +\emph on +ARCHIVO +\family default +\emph default + en vez de la entrada o salida estándar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--no-absolute-filenames +\family default +\series default + Crea todos los ficheros relativos al directorio actual. +\end_layout + +\begin_layout Paragraph* +Modificadores de operación para copia hacia fuera +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + Resetea los tiempos de acceso de los ficheros tras leerlos. +\end_layout + +\begin_layout Paragraph* +Modificadores de operación para copia hacia dentro +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\family default +\series default + Crea directorios cuando se necesite. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-m +\family default +\series default + Presenta las fechas de modificación previas al crear ficheros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +rsync [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +FUENTE +\emph default + +\emph on +DESTINO +\end_layout + +\begin_layout Standard +Puede copiar localmente o hacia/desde otro ordenador sobre una +\emph on +shell +\emph default + remota (demonio +\family typewriter +sshd +\family default +). + Usa un algoritmo que reduce la cantidad de datos enviados por red enviando + solo la diferencia entre los archivos fuente y los existentes en el destino. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Un solo +\family typewriter +\series bold +-v +\family default +\series default + te dará información sobre qué ficheros están siendo transferidos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-a +\family default +\series default + Recursión y preservar casi todo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--backup +\family default +\series default + Los ficheros de destino preexistentes cambian de nombre. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--backup-dir= +\series default +\emph on +DIR +\family default +\emph default + Combinado con +\family typewriter +\series bold +--backup +\family default +\series default +, guarda las copias de seguridad en el directorio especificado del destino. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\family default +\series default + Ejecución de prueba que no realiza ningún cambio (y produce en general + la misma salida que una ejecución real). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--delete +\family default +\series default + Borrar ficheros del lado receptor que no están en la fuente. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-z +\family default +\series default + Comprime los datos de los ficheros conforme se envían al destino, reduciendo + la cantidad de datos transmitidos. +\end_layout + +\begin_layout Section + +\family typewriter +proc +\family default + y +\family typewriter +sysfs +\end_layout + +\begin_layout Standard + +\family typewriter +proc +\family default + (montado en +\family typewriter +/proc +\family default +) y +\family typewriter +sysfs +\family default + (montado en +\family typewriter +/sys +\family default +) +\family typewriter + +\family default +son sistemas de ficheros virtuales (no se almacenan en ningún disco) que + nos permiten acceder a la información del núcleo sobre dispositivos hardware + disponibles, buses, módulos, etc. + En +\family typewriter +/proc +\family default +, tenemos: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +devices +\family default + Dispositivos de bloques y caracteres actualmente configurados (cuyos módulos + están cargados). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +interrupts +\family default + Interrupciones tratadas y dispositivos asociados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +iomem +\family default + Rangos de memoria para E/S mapeada a memoria. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +ioports +\family default + Puertos registrados para E/S no mapeada a memoria. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +modules +\family default + Lista de módulos del núcleo cargados. +\end_layout + +\begin_layout Standard +La información más completa se encuentra en +\family typewriter +/sys +\family default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lshw +\end_layout + +\begin_layout Standard +Extrae información detallada sobre la configuración hardware. + Configuración de memoria, versión de CPU, configuración de caché, buses, + etc. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lsusb +\end_layout + +\begin_layout Standard +Muestra información sobre los buses USB y dispositivos conectados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Muestra información detallada sobre los dispositivos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-d +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FABRICANTE +\emph default +: +\emph on +PRODUCTO +\family default +\emph default + Sólo muestra el dispositivo con el ID de fabricante y de producto indicados + en hexadecimal. +\end_layout + +\begin_layout Subsection* + +\family typewriter +lspci +\end_layout + +\begin_layout Standard +Muestra información sobre los buses PCI y dispositivos conectados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-v +\family default +\series default + Muestra información detallada. +\end_layout + +\begin_layout Section +Planificación de E/S en discos +\end_layout + +\begin_layout Standard +La escritura a disco pasa por una +\series bold +caché de disco +\series default + en RAM, y los bloques modificados son realmente escritos por demonios del + núcleo. + Para bloques que no están en la caché, existen 3 planificadores: +\end_layout + +\begin_layout Itemize + +\series bold +CFQ +\series default + ( +\emph on +Completely Fair Queuing +\emph default +): Va asignando el disco a cada proceso durante cierto tiempo, en el cual + solo se sirven peticiones de este proceso, siguiendo básicamente un algoritmo + SCAN. +\end_layout + +\begin_layout Itemize + +\series bold +\emph on +Deadline +\series default +\emph default +: Asigna plazos de tiempo a cada petición, de forma que si hay peticiones + con plazos incumplidos, estas son atendidas mediante FCFS y, de lo contrario, + aplica un algoritmo SCAN. +\end_layout + +\begin_layout Itemize + +\series bold +NOOP +\series default + ( +\emph on +no-operation +\emph default +): FCFS. +\end_layout + +\begin_layout Standard +Para discos duros, CFQ proporciona mejor rendimiento en general, por lo + que es el +\series bold +planificador por omisión +\series default +; +\emph on +deadline +\emph default + funciona mejor para bases de datos, y NOOP es el peor. + Para SSDs y ciertos dispositivos inteligentes como sistemas RAID por hardware, + el mejor es NOOP, pues el resto introducen pequeños retrasos que sólo tienen + sentido para discos duros. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Podemos obtener el planificador para un disco leyendo de +\family typewriter +/sys/block/ +\emph on +nombre_disco +\emph default +/queue/scheduler +\family default + (siendo +\family typewriter +\emph on +nombre_disco +\family default +\emph default +, por ejemplo, +\family typewriter +sda +\family default +), que nos muestra todos los planificadores con el actual entre corchetes, + y podemos cambiarlo +\begin_inset Quotes fld +\end_inset + +sobreescribiéndolo +\begin_inset Quotes frd +\end_inset + + con el nombre del planificador que queremos ( +\family typewriter +noop +\family default +, +\family typewriter +deadline +\family default + o +\family typewriter +cfq +\family default +). + El parámetro del núcleo +\family typewriter +elevator= +\emph on +planificador +\family default +\emph default + establece el planificador por omisión. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +En CFQ, los procesos tienen prioridades de E/S. +\end_layout + +\begin_layout Subsection* + +\family typewriter +ionice [ +\emph on +OPCIÓN +\emph default +]... + [-p +\begin_inset space ~ +\end_inset + + +\emph on +PID +\emph default +| +\emph on +COMANDO +\emph default +...] +\end_layout + +\begin_layout Standard +Establece u obtiene la clase de E/S y prioridad para un proceso. + Sin parámetros o sólo con +\family typewriter +\series bold +-p +\family default +\series default +, obtiene la clase de planificación y prioridad de E/S para el proceso. + Si se da un +\family typewriter +\emph on +COMANDO +\family default +\emph default +, ejecuta el comando con los parámetros dados. + Si no se especifica una +\family typewriter +\emph on +clase +\family default +\emph default +, se ejecuta con clase de prioridad +\begin_inset Quotes fld +\end_inset + +mejor esfuerzo +\begin_inset Quotes frd +\end_inset + +. + El nivel de prioridad por defecto es 4. +\end_layout + +\begin_layout Standard +Un proceso puede estar en tres clases de planificación E/S: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +Desocupado +\series default + +\begin_inset space ~ +\end_inset + +( +\emph on +idle +\emph default +) Sólo obtiene el disco cuando ningún otro programa lo ha pedido durante + un cierto periodo de gracia. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +Mejor +\begin_inset space ~ +\end_inset + +esfuerzo +\series default + +\begin_inset space ~ +\end_inset + +( +\emph on +best-effort +\emph default +) Toma un argumento de prioridad de 0–7, con menor número para mayor prioridad. + Los procesos con igual prioridad se sirven en +\emph on +round-robin +\emph default +. + Un proceso que no ha pedido una prioridad de E/S hereda su clase de planificaci +ón de CPU. + Su prioridad se deriva del nivel +\emph on +nice +\emph default + de CPU ( +\begin_inset Formula $\left\lfloor \frac{\text{valor nice}+20}{5}\right\rfloor $ +\end_inset + +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +Tiempo +\begin_inset space ~ +\end_inset + +real +\series default + +\begin_inset space ~ +\end_inset + +( +\emph on +realtime +\emph default +) Se le da primer acceso al disco, independientemente del resto del sistema. + Se definen 8 niveles de prioridad (0–7) según lo grande que es la porción + de tiempo que recibirá un proceso. + No permitida para usuarios no +\family typewriter +root +\family default +. +\end_layout + +\begin_layout Standard +\begin_inset Separator plain +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--class +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +CLASE +\family default +\emph default + Número de la clase; +\family typewriter +\series bold +0 +\family default +\series default + para ninguna, +\family typewriter +\series bold +1 +\family default +\series default + para tiempo real, +\family typewriter +\series bold +2 +\family default +\series default + para mejor esfuerzo, +\family typewriter +\series bold +3 +\family default +\series default + para desocupado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--classdata +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +NIVEL +\family default +\emph default + Para tiempo real y mejor esfuerzo, nivel de prioridad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-p +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--pid +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +PID +\family default +\emph default + ID del proceso del que obtener o establecer los parámetros. +\end_layout + +\begin_layout Subsection* + +\family typewriter +iotop +\end_layout + +\begin_layout Standard +Muestra una tabla de uso de E/S actual de los procesos o hilos. + (Las columnas son: identificador de hilo +\family typewriter +TID +\family default +, clase/nivel de prioridad +\family typewriter +PRIO +\family default +, propietario +\family typewriter +USER +\family default +, tasa de transferencia de lectura +\family typewriter +DISK READ +\family default +, de escritura +\family typewriter +DISK WRITE +\family default +, porcentaje de tiempo de espera en fallos de página +\family typewriter +SWAPIN +\family default +, porcentaje de tiempo de espera a peticiones de E/S a disco +\family typewriter +IO +\family default + y línea de órdenes +\family typewriter +COMMAND +\family default +.) +\end_layout + +\begin_layout Standard +Use las flechas izquierda y derecha para cambiar la ordenación, +\family typewriter +r +\family default + para invertir el orden (se indica +\family typewriter +< +\family default + o +\family typewriter +> +\family default + en la columna en la que se ordena para orden ascendente o descendente, + respectivamente). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-P +\family default +\series default + Solo muestra procesos. +\end_layout + +\begin_layout Subsection* + +\family typewriter +sync +\end_layout + +\begin_layout Standard +Sincroniza las escrituras a caché a almacenamiento permanente. +\end_layout + +\end_body +\end_document diff --git a/iso/ne.lyx b/iso/ne.lyx new file mode 100644 index 0000000..7cfa928 --- /dev/null +++ b/iso/ne.lyx @@ -0,0 +1,1997 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Gestión de procesos +\end_layout + +\begin_layout Standard +Linux realiza planificación por prioridades dinámicas, con una +\series bold +prioridad base +\series default + o valor +\emph on +nice +\emph default + que va de +\begin_inset Formula $-20$ +\end_inset + + (máxima) a 20 (mínima), donde 19 o 20 indica que al proceso solo se le + da la CPU cuando nadie más la quiera. + Por defecto cada proceso hereda la prioridad base de su padre, y sólo +\family typewriter +root +\family default + puede aumentar la prioridad e un proceso. + La prioridad dinámica se calcula según la prioridad base dependiendo del + consumo de CPU realizado, ejecución de código en el núcleo, etc. +\end_layout + +\begin_layout Standard +Un proceso pueden recibir señales como STOP (19) que lo detiene, CONT (18) + que lo reanuda, KILL (9) que lo elimina (salvo si es zombie o bloqueado + por E/S) o TERM (15) que le notifica de que debe terminar. + Los procesos pueden +\series bold +capturar +\series default + algunas señales, como TERM pero no KILL, cambiando su comportamiento por + defecto al recibirlas. +\end_layout + +\begin_layout Subsection* + +\family typewriter +ps +\end_layout + +\begin_layout Standard +Muestra información sobre procesos activos. + Acepta varios tipos de opciones: +\end_layout + +\begin_layout Enumerate +Opciones UNIX, que pueden ser agrupadas y deben ser precedidas por un guion. +\end_layout + +\begin_layout Enumerate +Opciones BSD, que pueden ser agrupadas y no deben ser usadas con guion. +\end_layout + +\begin_layout Enumerate +Opciones largas GNU, precedidas por dos guiones. +\end_layout + +\begin_layout Standard +Pueden mezclarse opciones de distintos tipos, pero puede haber conflictos. + Por defecto, +\family typewriter +\series bold +ps +\family default +\series default + selecciona los procesos con igual EUID que el usuario actual y asociados + a terminal. +\end_layout + +\begin_layout Subsubsection* +SELECCIÓN SIMPLE DE PROCESOS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +a +\family default +\series default + Quita la restricción +\begin_inset Quotes fld +\end_inset + +sólo tus procesos +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +x +\family default +\series default + Quita la restricción +\begin_inset Quotes fld +\end_inset + +debe tener una terminal +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Subsubsection* +CONTROL DE FORMATO DE SALIDA +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +l +\family default +\series default + Formato largo de BSD (con campos como +\family typewriter +ppid +\family default +, +\family typewriter +uid +\family default +, +\family typewriter +pri +\family default +, +\family typewriter +ni +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +o +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +formato +\family default +\emph default + Idéntico a +\family typewriter +\series bold +-o +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-o +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +formato +\family default +\emph default + Formato definido por el usuario en forma de lista separada por comas, una + forma de especificar columnas de salida (ver +\family typewriter +\series bold +ESPECIFICADORES DE FORMATO ESTÁNDARES +\family default +\series default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +u +\family default +\series default + Formato orientado a usuario ( +\family typewriter +user,pid,%cpu,%mem,vsz,rss,stat,tty +\family default +). +\end_layout + +\begin_layout Subsubsection* +CÓDIGOS DE ESTADO DE PROCESOS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +D +\family default + Bloqueo ininterrumpible (normalmente E/S). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +R +\family default + En cola de ejecución. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +S +\family default + Bloqueo interrumpible (esperando un evento). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +T +\family default + Parado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +Z +\family default + Zombie, terminado pero no recogido por su padre. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +< +\family default + Alta prioridad ( +\emph on +not nice +\emph default +, +\begin_inset Formula $<0$ +\end_inset + +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +N +\family default + Baja prioridad ( +\emph on +nice +\emph default +, +\begin_inset Formula $>0$ +\end_inset + +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +s +\family default + Líder de sesión. + (Una sesión está asociada a un grupo de procesos y el primero de ellos + es el líder. + Por ejemplo, si se crean desde una terminal, el líder es el de la terminal + en sí misma.) +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter ++ +\family default + En primer plano. +\end_layout + +\begin_layout Subsubsection* +ESPECIFICADORES DE FORMATO ESTÁNDARES +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +%cpu +\family default +\series default + Tiempo de CPU usado entre tiempo de ejecución del proceso como porcentaje. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +%mem +\family default +\series default + Tamaño del conjunto residente del proceso entre memoria física, como porcentaje. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +euid +\family default +\series default + ID efectivo de usuario (alias +\family typewriter +\series bold +uid +\family default +\series default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +euser +\family default +\series default + Nombre de usuario efectivo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +ni +\family default +\series default + Valor +\emph on +nice +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +pid +\family default +\series default + ID del proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +ppid +\family default +\series default + ID del proceso padre. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +pri +\family default +\series default + Prioridad del proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +rss +\family default +\series default + Tamaño del conjunto residente, la memoria física usada (en KiB). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +stat +\family default +\series default + Estado del proceso. + Ver +\family typewriter +\series bold +CÓDIGOS DE ESTADO DE PROCESOS +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +time +\family default +\series default + Tiempo acumulativo de CPU en segundos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +tty +\family default +\series default + Terminal. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +uid +\family default +\series default + Ver +\family typewriter +\series bold +euid +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +user +\family default +\series default + Ver +\family typewriter +\series bold +euser +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +vsz +\family default +\series default + Tamaño de memoria virtual en kiB. +\end_layout + +\begin_layout Subsection* + +\family typewriter +pstree +\end_layout + +\begin_layout Standard +Muestra los procesos en ejecución como un árbol. + La raíz del árbol es +\family typewriter +\series bold +init +\family default +\series default +. + +\family typewriter +\series bold +pstree +\family default +\series default + une ramas idénticas poniéndolas entre corchetes y añadiendo un prefijo + con el número de repeticiones. + Los hilos hijos de un proceso se encuentran bajo el proceso padre con el + nombre del proceso entre llaves. +\end_layout + +\begin_layout Subsection* + +\family typewriter +top +\begin_inset Foot +status open + +\begin_layout Plain Layout +Debido a la complejidad de la página +\family typewriter +man +\family default +, se ha optado por no basarse en ella. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Muestra la actividad del procesador y procesos con una interfaz interactiva + que se actualiza cada cierto tiempo (normalmente cada 3 segundos). + Las 5 primeras líneas contienen: +\end_layout + +\begin_layout Enumerate + +\family typewriter +top - +\emph on +hh +\emph default +: +\emph on +mm +\emph default +: +\emph on +ss +\emph default + up +\emph on +DD +\emph default + days, +\emph on +HH +\emph default +: +\emph on +MM +\emph default +, +\emph on +N +\emph default + users, load average: +\emph on +l1 l5 l15 +\family default +\emph default + +\begin_inset Newline newline +\end_inset + +Hora actual, tiempo en marcha del sistema, número de terminales de usuario + abiertas y carga en los 1, 5 y 15 últimos minutos en tanto por 1, con máximo + igual al número de núcleos de CPU. +\end_layout + +\begin_layout Enumerate + +\family typewriter +Tasks: +\emph on +K +\emph default + total, +\emph on +R +\emph default + running, +\emph on +S +\emph default + sleeping, +\emph on +P +\emph default + stopped, +\emph on +Z +\emph default + zombie +\family default + +\begin_inset Newline newline +\end_inset + +Número de procesos total, en ejecución, durmiendo, parados y zombis. +\end_layout + +\begin_layout Enumerate + +\family typewriter +%Cpu(s): +\emph on +U +\emph default + us, +\emph on +S +\emph default + sy, +\emph on +C +\emph default + ni, +\emph on +I +\emph default + id, +\emph on +W +\emph default + wa, +\emph on +H +\emph default + hi, +\emph on +E +\emph default + si, +\emph on +T +\emph default + st +\family default + +\begin_inset Newline newline +\end_inset + +Porcentaje de CPU para modo usuario, modo núcleo (no incluye tratamiento + de interrupciones), usuario +\emph on +not nice +\emph default + (prioridad +\begin_inset Formula $>0$ +\end_inset + +), ociosa ( +\emph on +idle +\emph default +), ociosa esperando E/S, tratando interrupciones hardware, tratando interrupcion +es software y espera involuntaria ( +\emph on +stolen +\emph default +; en una máquina virtual, el tiempo usado por la máquina real u otras virtuales + que no dependen de esta; en una máquina real debería ser 0). +\end_layout + +\begin_layout Enumerate + +\family typewriter +KiB Mem : +\emph on +t +\emph default + total, +\emph on +f +\emph default + free, +\emph on +u +\emph default + used, +\emph on +b +\emph default + buff/cache +\family default + +\begin_inset Newline newline +\end_inset + +Memoria total disponible, usada, totalmente libre y usada en +\emph on +buffers +\emph default +/cachés. +\end_layout + +\begin_layout Enumerate + +\family typewriter +KiB Swap: +\emph on +T +\emph default + total, +\emph on +F +\emph default + free, +\emph on +U +\emph default + used. + +\emph on +A +\emph default + avail Mem +\family default + +\begin_inset Newline newline +\end_inset + +Memoria de intercambio total disponible, usada, libre y estimación de la + que se podría usar (incluyendo la libre, que no se usa en absoluto). +\end_layout + +\begin_layout Standard +A continuación una lista de procesos, con las siguientes columnas: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +PID +\family default + ID del proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +USER +\family default + Usuario. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +PR +\family default + Prioridad dinámica. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +NI +\family default + Prioridad base ( +\emph on +nice +\emph default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +VIRT +\family default + +\family typewriter +VSZ +\family default + de +\family typewriter +ps +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +RES +\family default + +\family typewriter +RSS +\family default + de +\family typewriter +ps +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +SHR +\family default + Memoria que podría ser compartida con otros procesos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +S +\family default + Estado del proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +%CPU +\family default + Porcentaje de CPU usado en el intervalo de actualización. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +%MEM +\family default + Porcentaje de RAM usado. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +TIME+ +\family default + +\family typewriter +TIME +\family default + de +\family typewriter +ps +\family default +. +\end_layout + +\begin_layout Standard +Comandos interactivos: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +k +\family default + Envía una señal a un proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +n +\family default + Cambia el número de procesos mostrados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +q +\family default + Sale. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +r +\family default + Cambia la prioridad de un proceso. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +M +\family default + Ordena según +\family typewriter +%MEM +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +N +\family default + Según +\family typewriter +PID +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +P +\family default + Según +\family typewriter +%CPU +\family default + (por defecto). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +T +\family default + Según tiempo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +nice [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +COMANDO +\emph default +... +\end_layout + +\begin_layout Standard +Ejecuta el +\family typewriter +\emph on +COMANDO +\family default +\emph default + con el valor +\emph on +nice +\emph default + ajustado. + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +N +\family default +\emph default + Añade +\family typewriter +\emph on +N +\family default +\emph default + al valor +\emph on +nice +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +renice +\emph on +PRIORIDAD PID +\end_layout + +\begin_layout Standard +Altera la prioridad de un proceso. +\end_layout + +\begin_layout Subsection* + +\family typewriter +kill [- +\emph on +SEÑAL +\emph default +] +\emph on +PID +\emph default +... +\end_layout + +\begin_layout Standard +Envía la +\family typewriter +\emph on +SEÑAL +\family default +\emph default + indicada a los procesos. + Si no se especifica la señal, se envía TERM. +\end_layout + +\begin_layout Subsection* + +\family typewriter +killall [- +\emph on +SEÑAL +\emph default +] +\emph on +NOMBRE +\end_layout + +\begin_layout Standard +Envía una señal a todos los procesos ejecutando el comando especificado. + Si no se especifica la señal, se envía TERM. +\end_layout + +\begin_layout Section +Programación de tareas +\end_layout + +\begin_layout Subsection* + +\family typewriter +at [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +TIEMPO +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +at +\family default +\series default + ejecuta comandos en una fecha especificada (de esto se encarga +\family typewriter +atd.service +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +atq +\family default +\series default + lista los trabajos pendientes. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +atrm +\family default +\series default + elimina trabajos. +\end_layout + +\begin_layout Standard +Acepta tiempos de la forma +\family typewriter +\series bold +HH:MM +\family default +\series default + para ejecutar un trabajo a un tiempo específico del día. + Los comandos se leen de la entrada estándar o del fichero especificado. +\end_layout + +\begin_layout Subsection* + +\family typewriter +cron +\end_layout + +\begin_layout Standard +Demonio para ejecutar comandos programados ( +\family typewriter +crond.service +\family default +). +\end_layout + +\begin_layout Subsubsection* +FICHEROS +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +/etc/cron.d/ +\family default + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Directorio con ficheros +\family typewriter +cronjob +\family default + para distintos usuarios. + (El fichero +\family typewriter +crontab +\family default + +\family typewriter +/etc/cron.d/0hourly +\family default + está preparado para ejecutar cada hora las tareas en +\family typewriter +/etc/cron.hourly/ +\family default +, de las que ejecuta +\family typewriter +anacron +\family default +.) +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection* + +\family typewriter +crontab(5) +\end_layout + +\begin_layout Standard +Un fichero +\family typewriter +crontab +\family default + contiene instrucciones para el demonio +\family typewriter +\series bold +cron +\family default +\series default +. + Cada línea tiene cinco celdas de fecha y hora seguidas de un comando. + Los comandos se ejecutan cuando las celdas +\begin_inset Quotes fld +\end_inset + +minuto +\begin_inset Quotes frd +\end_inset + +, +\begin_inset Quotes fld +\end_inset + +hora +\begin_inset Quotes frd +\end_inset + + y +\begin_inset Quotes fld +\end_inset + +mes +\begin_inset Quotes frd +\end_inset + + coinciden con la fecha actual +\series bold +y +\series default + al menos +\begin_inset Quotes fld +\end_inset + +día del mes +\begin_inset Quotes frd +\end_inset + + o +\begin_inset Quotes fld +\end_inset + +día de la semana +\begin_inset Quotes frd +\end_inset + + coinciden con la fecha actual. + Las celdas son: +\end_layout + +\begin_layout Standard +\begin_inset Tabular +<lyxtabular version="3" rows="5" columns="2"> +<features tabularvalignment="middle"> +<column alignment="center" valignment="top"> +<column alignment="center" valignment="top"> +<row> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Minuto +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +0–59 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Hora +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +0–23 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Día del mes +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +1–31 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Mes +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +1–12 (o nombres) +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +Día de la semana +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\begin_layout Plain Layout +0–7 (0 o 7 es domingo, o nombres) +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Una celda puede contener un asterisco ( +\family typewriter +* +\family default +), que siempre significa +\family typewriter +\emph on +primero +\emph default +- +\emph on +último +\family default +\emph default +. + Se permiten rangos de números. + Los rangos son dos números separados por un guion. + El rango es inclusive. +\end_layout + +\begin_layout Standard +Se permiten conjuntos de números (o rangos) separados por comas. + Añadir +\begin_inset Quotes fld +\end_inset + + +\family typewriter +/ +\emph on +número +\family default +\emph default + +\begin_inset Quotes frd +\end_inset + + detrás de un rango especifica saltos del valor del número. +\end_layout + +\begin_layout Subsection* + +\family typewriter +crontab [ +\emph on +OPCIÓN +\emph default +]... +\end_layout + +\begin_layout Standard +Mantiene ficheros +\family typewriter +crontab +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-l +\family default +\series default + Muestra el +\family typewriter +crontab +\family default + actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Elimina el +\family typewriter +crontab +\family default + actual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-e +\family default +\series default + Edita el +\family typewriter +crontab +\family default + actual usando el editor. +\end_layout + +\begin_layout Subsection* + +\family typewriter +anacron +\end_layout + +\begin_layout Standard +Ejecuta comandos periódicamente. + No asume que la máquina se ejecute continuamente. + (Por defecto está configurado para ejecutar, diaria, semanal y mensualmente, + respectivamente, los trabajos en +\family typewriter +/etc/cron.daily/ +\family default +, +\family typewriter +/etc/cron.weekly/ +\family default + y +\family typewriter +/etc/cron.monthly/ +\family default +.) Si un trabajo no se ha ejecutado en +\family typewriter +\series bold +n +\family default +\series default + días (el periodo) o más, +\family typewriter +\series bold +anacron +\family default +\series default + ejecuta el trabajo. +\end_layout + +\begin_layout Section +Memoria virtual +\end_layout + +\begin_layout Standard +Linux puede usar un +\series bold +fichero de paginación +\series default + o una +\series bold +partición de intercambio +\series default + ( +\emph on +swap +\emph default +) para la memoria virtual, que funciona por paginación, si bien se prefiere + una partición porque no sufre fragmentación y se puede situar en la parte + más rápida de un disco duro (los cilindros exteriores). + El tamaño de la partición depende de factores como la memoria requerida + por los trabajos, tamaño de los programas, número de trabajos simultáneos, + demanda del sistema, etc. + Además, para hibernar se necesita tanto espacio de intercambio como total + de memoria usada. + Al montar un espacio de intercambio, la opción +\family typewriter +pri= +\emph on +valor +\family default +\emph default +, que podemos poner en +\family typewriter +/etc/fstab +\family default +, establece la prioridad, siendo mayor cuanto mayor es el número. +\end_layout + +\begin_layout Subsection* + +\family typewriter +free +\end_layout + +\begin_layout Standard +Muestra el total de memoria física y de intercambio libre y usada en el + sistema. + Las columnas son: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +total +\family default +\series default + Total de memoria instalada (física y de intercambio). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +used +\family default +\series default + Memoria usada (física y de intercambio, +\begin_inset Formula $\mathtt{total}-\mathtt{free}-\mathtt{buff/cache}$ +\end_inset + +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +free +\family default +\series default + Memoria no usada (física y de intercambio). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +shared +\family default +\series default + (Física) +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +buff/cache +\family default +\series default + Suma de +\family typewriter +\series bold +buffers +\family default +\series default + y +\family typewriter +\series bold +cache +\family default +\series default + (física). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +available +\family default +\series default + Estimación de memoria disponible para nuevos procesos (física). +\end_layout + +\begin_layout Subsection* + +\family typewriter +vmstat [ +\emph on +PERIODO +\emph default + [ +\emph on +NÚMERO +\emph default +]] +\end_layout + +\begin_layout Standard +Muestra estadísticas de memoria virtual. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +PERIODO +\family default +\emph default + El periodo entre actualizaciones en segundos. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\emph on +NÚMERO +\family default +\emph default + Número de actualizaciones. +\end_layout + +\begin_layout Subsubsection* +DESCRIPCIÓN DE LAS CELDAS +\end_layout + +\begin_layout Paragraph* +Memoria (en KiBs) +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +swpd +\family default + Memoria virtual usada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +free +\family default + Memoria sin usar. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +buff +\family default + Memoria usada como +\emph on +buffers +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +cache +\family default + Memoria usada como caché. +\end_layout + +\begin_layout Paragraph* +Espacio de intercambio ( +\emph on +swap +\emph default +) +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +si +\family default + Memoria traída del disco (/s). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +so +\family default + Memoria llevada al disco (/s). +\end_layout + +\begin_layout Paragraph* +E/S +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +bi +\family default + Bloques recibidos de un dispositivo de bloques (bloques/s). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +bo +\family default + Bloques enviados a un dispositivo de bloques (bloques/s). +\end_layout + +\begin_layout Paragraph* +Sistema +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +in +\family default + Interrupciones por segundo, incluyendo el reloj. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +cs +\family default + Cambios de contexto por segundo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +mkswap +\emph on +FICHERO +\end_layout + +\begin_layout Standard +Crea un área de intercambio Linux en un dispositivo o fichero. +\end_layout + +\begin_layout Subsection* + +\family typewriter +swapon +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +swapon +\series default + +\emph on +FICHERO +\emph default +... +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +swapoff +\series default + +\emph on +FICHERO +\emph default +... +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +swapon +\family default +\series default + especifica un dispositivo (o fichero) para intercambio. + +\family typewriter +\series bold +swapoff +\family default +\series default + desactiva el uso como área de intercambio. +\end_layout + +\end_body +\end_document diff --git a/iso/nf.lyx b/iso/nf.lyx new file mode 100644 index 0000000..995eae4 --- /dev/null +++ b/iso/nf.lyx @@ -0,0 +1,2949 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +El +\emph on +firmware +\end_layout + +\begin_layout Standard +Cuando se pulsa el botón de encendido, se generan señales eléctricas que + hacen que en los registros del procesador y de otros componentes se carguen + valores predeterminados. + En el procesador, el contador de programa se carga con la dirección del + +\series bold +\emph on +firmware +\series default +\emph default +, un trozo de código almacenado normalmente en memoria no volátil de lectura + y escritura (EEPROM, flash, etc.) que se encarga, entre otras cosas, de + preparar el hardware. +\begin_inset Foot +status open + +\begin_layout Plain Layout +También suelen ocurrir más cosas, como un +\emph on +Baseboard Management Controller +\emph default + (BMC) o un +\emph on +Intel Management Engine +\emph default + (IME). + Este último componente se encarga (v. + CVE-2017-5689 y otros) de que la NSA (que lo tiene desactivado por petición + especial) y otros puedan espiarte. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Los principales tipos de +\emph on +firmware +\emph default + son BIOS, que suele aparecer en ordenadores anteriores a 2010, y UEFI, + que aparece en los más recientes +\begin_inset Foot +status open + +\begin_layout Plain Layout +Y lo jode todo. +\end_layout + +\end_inset + +. + Este busca en los dispositivos de almacenamiento un +\series bold +cargador +\series default + o +\series bold +gestor de arranque +\series default +. + Si no lo encuentra, muestra un error. + Si lo encuentra, lo copia en memoria y lo ejecuta, y este pasa a leer de + disco el sistema operativo y, posiblemente, otros componentes necesarios + para que este arranque, para finalmente pasarle el control. +\end_layout + +\begin_layout Standard +En los sistemas BIOS, el +\emph on +firmware +\emph default + detecta los dispositivos de almacenamiento y toma el primero según una + secuencia de arranque dada, copia su sector 0 (el MBR) a disco y pasa el + control a lo que acaba de leer. + Si este no tiene código de arranque, toma elfich +\end_layout + +\begin_layout Standard +En los UEFI se usa particionamiento GPT, y la +\series bold +partición del sistema de UEFI +\series default +, que en Linux suele montarse en +\family typewriter +/boot/efi +\family default + y que contiene un sistema de ficheros FAT y GUID +\family typewriter +C12A7328-F81F-11D2-BA4B-00A0C93EC93B +\family default +, contiene directorios por cada sistema operativo con todo lo necesario + para la puesta en marcha: Windows usa +\family typewriter +/EFI/Microsoft +\family default + y Fedora usa +\family typewriter +/EFI/fedora +\family default +. + También suele haber un +\series bold +módulo de soporte de compatibilidad +\series default + ( +\emph on +Compatibility Support Module +\emph default +, CSM), que simula un entorno BIOS para poder arrancar sistemas operativos + sin soporte UEFI. + El +\emph on +firmware +\emph default + almacena una entrada apuntando a cada fichero de arranque. + El +\emph on +firmware +\emph default + busca en cada sistema de almacenamiento disponible con partición del sistema + UEFI, en orden configurable, un gestor de arranque funcional, de entre + los dados por una lista ordenada. +\end_layout + +\begin_layout Standard +En 2011, con la versión 2.3.1 de la especificación UEFI aparece +\emph on +Secure Boot +\emph default +, que sólo permite arrancar a software firmado con una clave reconocida + por el +\emph on +firmware +\emph default +. + En los equipos certificados para Windows 8, las claves son proporcionadas + por Microsoft y no son públicas. + Dos opciones son desactivar +\emph on +Secure Boot +\emph default + en la configuración o usar un cargador firmado con una clave de Microsoft. +\end_layout + +\begin_layout Section +GRUB 2 +\end_layout + +\begin_layout Standard +El +\emph on +GRand Unified Bootloader +\emph default + versión 2 es un gestor de arranque que normalmente se usa para cargar el + núcleo de Linux, si bien puede cargar otros sistemas operativos. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +En BIOS, consta de 3 fases dadas por +\series bold +imágenes +\series default +, que en Fedora se almacenan en +\family typewriter +/usr/lib/grub/i386-pc +\family default + y en +\family typewriter +/boot/grub2/i386-pc +\family default +. + Algunas son: +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +boot.img +\family default +\series default + Se escribe en el MBR, ocupa +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + y se encarga de cargar y ejecutar la segunda fase. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +diskboot.img +\family default +\series default + Segunda fase y primer sector de la imagen +\emph on +core +\emph default +, se encarga de cargar y ejecutar el resto de la imagen +\emph on +core +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +cdboot.img +\family default +\series default + Como +\family typewriter +diskboot.img +\family default + pero para CD/DVD. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +kernel.img +\family default +\series default + Contiene utilidades en tiempo de ejecución básicas de GRUB 2, y en general + se integra en la imagen +\emph on +core +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +core.img +\family default +\series default + Imagen principal, construida dinámicamente a partir de +\family typewriter +diskboot.img +\family default +/ +\family typewriter +cdboot.img +\family default +, +\family typewriter +kernel.img +\family default + y una lista de módulos. + Normalmente contiene módulos suficientes para acceder a la configuración + y el resto de módulos (ficheros +\family typewriter +.mod +\family default +) en el sistema de ficheros. +\end_layout + +\begin_layout Standard +Las imágenes +\family typewriter +*boot.img +\family default + no entienden ningún sistema de ficheros, por lo que las dos últimas fases + se copian a la zona del disco detrás del MBR y antes de la primera partición, + y se almacena el sector de comienzo de cada imagen y su tamaño. +\end_layout + +\begin_layout Standard +En UEFI, el código de GRUB 2 se encuentra en +\family typewriter +grubx64.efi +\family default +, con formato Windows PE, y generalmente contiene todo lo necesario, si + bien sigue siendo posible cargar módulos dinámicamente. + Fedora usa el fichero +\family typewriter +sham.efi +\family default +, firmado por Microsoft, que se encarga de instalar una clave propia y ejecutar + GRUB 2, que, al igual que el núcleo de Linux, estará firmado por esta clave. +\end_layout + +\begin_layout Standard +GRUB 2 tiene 3 interfaces: +\end_layout + +\begin_layout Itemize +Menú: Permite elegir el sistema operativo entre varias opciones. +\end_layout + +\begin_layout Itemize +Editor: Permite editar una entrada de menú, y se accede seleccionando la + entrada y pulsando +\family typewriter +e +\family default +. + Podemos usar +\family typewriter +F10 +\family default + para arrancar con los cambios o +\family typewriter +Esc +\family default + para descartarlos y volver al menú. +\end_layout + +\begin_layout Itemize +Línea de órdenes: Permite ejecutar órdenes de GRUB 2, y se accede pulsando + +\family typewriter +c +\family default + desde el menú o +\family typewriter +F2 +\family default + desde el editor. +\end_layout + +\begin_layout Standard +Los dispositivos se identifican como +\end_layout + +\begin_layout Quotation +{ +\family typewriter +\emph on +tipo de dispositivo +\family default +\emph default +}{ +\family typewriter +\emph on +número de dispositivo BIOS +\family default +} +\family typewriter +\emph default +, +\family default +[ +\family typewriter +\emph on +particionamiento +\family default +\emph default +] +\begin_inset Newline newline +\end_inset + +{ +\family typewriter +\emph on +número de partición +\family default +\emph default +} +\end_layout + +\begin_layout Standard +Los números de dispositivo empiezan por 0 y los de partición por 1, y los + discos duros se denotan +\family typewriter +hd +\family default +. + Por ejemplo, +\family typewriter +hd0,1 +\family default + es la primera partición del primer disco duro, y escribimos +\family typewriter +hd0,msdos1 +\family default + si queremos indicar además que el tipo de particiones es MS-DOS. + También podemos especificar un fichero como +\family typewriter +\emph on +dispositivo +\emph default +/ +\emph on +ruta +\family default +\emph default +, donde la +\family typewriter +\emph on +ruta +\family default +\emph default + parte de la raíz del +\family typewriter +\emph on +dispositivo +\family default +\emph default +. +\end_layout + +\begin_layout Standard +Fedora almacena la configuración de GRUB 2 en +\family typewriter +/boot/grub2/grub.cfg +\family default +. + Esta se genera a partir de ficheros en +\family typewriter +/etc/grub.d +\family default +, que se ejecutan en orden alfabético si tienen permisos de ejecución, y + en Fedora son: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +00_header +\family default +\series default + Configura el modo gráfico, la entrada por defecto, la pausa antes de arrancar + esta, etc., configuración que normalmente procede de +\family typewriter +/etc/default/grub +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +10_linux +\family default +\series default + Identifica los núcleos de Linux instalados en el dispositivo de arranque + (normalmente montado en +\family typewriter +/boot +\family default +) y les crea entradas. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +30_os-prober +\family default +\series default + Usa +\family typewriter +os-probler +\family default + para buscar e instalar otras distribuciones de Linux y otros sistemas operativo +s, y se puede deshabilitar en +\family typewriter +/etc/default/grub +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +40_custom +\family default +\series default + Se usa para añadir entradas personalizadas, pues su segunda línea es +\family typewriter +exec tail -n +3 $0 +\family default +. +\end_layout + +\begin_layout Standard +Los ejecutables, normalmente guiones +\emph on +shell +\emph default +, imprimen su trozo de configuración en la salida estándar, y +\family typewriter +grub2-mkconfig +\family default + añade +\family typewriter +### BEGIN +\emph on +ruta +\emph default + ### +\family default + antes de la salida del guión con la +\family typewriter +\emph on +ruta +\family default +\emph default + dada y +\family typewriter +### END +\emph on +ruta +\emph default + ### +\family default + al final. +\end_layout + +\begin_layout Standard + +\family typewriter +/etc/default/grub +\family default + especifica opciones, en formato +\family typewriter +\emph on +CLAVE +\emph default += +\emph on +valor +\family default +\emph default +, que establecen cómo estos guiones generan las entradas de menú: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +GRUB_DEFAULT +\family default +\series default + Fija la entrada por defecto: un número (empezando por 0), el nombre de + la entrada entre comillas o +\family typewriter +saved +\family default +, que permite que +\family typewriter +grub2-set-default +\family default + y +\family typewriter +grub2-reboot +\family default + establezcan la entrada por defecto. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +GRUB_SAVEDEFAULT +\family default +\series default + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Si está definida y vale +\family typewriter +true +\family default +, cada vez que se seleccione una entrada del menú, se convierte en la entrada + por defecto. + Para que funcione debe ser +\family typewriter +GRUB_DEFAULT=saved +\family default +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +GRUB_TIMEOUT +\family default +\series default + Plazo en segundos para seleccionar una entrada de menú antes de arrancar + la entrada por defecto. + Si vale +\family typewriter +-1 +\family default +, el plazo nunca expira. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +GRUB_CMDLINE_LINUX +\family default +\series default + El contenido de esta opción se añade al final de los parámetros del núcleo + de Linux. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +GRUB_DISABLE_RECOVERY +\family default +\series default + Si vale +\family typewriter +true +\family default +, evita que, para cada núcleo de Linux instalado, aparezca una segunda entrada + en la que al núcleo se le pasan parámetros para una posible recuperación + del sistema. +\end_layout + +\begin_layout Standard +En +\family typewriter +grub.cfg +\family default +, las entradas tienen la forma +\family typewriter +menuentry ' +\emph on +Nombre +\emph default +' [ +\emph on +OPCIÓN +\emph default +]... + { +\emph on +COMANDO +\emph default +... + } +\family default +, donde algunas opciones son: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--class +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +clase +\family default +\emph default + Permite agrupar las entradas en clases. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--unrestricted +\family default +\series default + Cuando la seguridad está activada, esta opción se puede arrancar sin restriccio +nes. +\end_layout + +\begin_layout Standard +Los comandos se separan por saltos de línea: +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +insmod +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +módulo +\family default +\emph default + Carga un módulo de GRUB 2, para ampliar su seguridad. + Algunos son +\family typewriter +gzio +\family default + (para descomprimir +\family typewriter +gzip +\family default +), +\family typewriter +part_msdos +\family default + (para acceder a particiones MS-DOS), +\family typewriter +ext2 +\family default + (para leer sistemas de ficheros ext2/3/4), +\family typewriter +chain +\family default + (para cargar otros gestores de arranque, +\emph on +Chain-loading +\emph default +), +\family typewriter +ntfs +\family default + y otros para entender XFS, FAT, etc. + Si GRUB 2 puede acceder al fichero de configuración, muy probablemente + ya tenga cargados +\family typewriter +part_msdos +\family default + y +\family typewriter +ext2 +\family default +, necesarios para acceder al fichero. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +set +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +nombre +\emph default +=' +\emph on +valor +\emph default +' +\family default + Establece una opción. + La opción +\family typewriter +root +\family default + indica la partición con los ficheros de arranque: el núcleo de Linux ( +\family typewriter +vmlinuz +\family default +) y su disco RAM ( +\family typewriter +initramfs +\family default +). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +search +\begin_inset space ~ +\end_inset + +--no-floppy +\begin_inset space ~ +\end_inset + +--fs-uuid +\begin_inset space ~ +\end_inset + +--set=root +\series default + +\begin_inset space ~ +\end_inset + +... + +\family default + Busca en todos los discos, salvo disquetes, una partición con un sistema + de ficheros con cierto UUID, y si la encuentra la establece como de arranque. + Se usa ante posible fallo de la anterior, pues la partición de arranque + puede cambiar de nombre, por ejemplo, si se inserta un nuevo disco. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +linux +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +linux16 +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +linuxefi +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +RUTA +\emph default + +\begin_inset space ~ +\end_inset + +[ +\emph on +OPCIÓN +\emph default +]... + +\family default + Indica la ruta del núcleo de Linux en la partición +\family typewriter +root +\family default + y las opciones que se le pasarán para el arranque. + Por ejemplo, +\family typewriter +mem= +\emph on +N +\family default +\emph default + indica al núcleo que sólo ha de usar cierta cantidad de RAM, donde +\family typewriter +\emph on +N +\family default +\emph default + puede tener prefijos como +\family typewriter +G +\family default + para GiB. + Otros parámetros son para el proceso de inicio (el primero en ejecutarse), + que los recibe a través del núcleo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +initrd +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +initrd16 +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +initrdefi +\family default +\series default + Indica la ruta del disco RAM de Linux en la partición +\family typewriter +root +\family default +, un disco que se carga en RAM y que Linux monta tras inicializarse a sí + mismo, y es de donde obtiene lo necesario para montar el sistema de ficheros + raíz. + Una vez este se monta, el disco RAM no es necesario y se elimina. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +chainloader +\begin_inset space ~ +\end_inset + ++1 +\family default +\series default + Carga y ejecuta el primer sector de una partición; usado normalmente para + cargar Windows, el cual no reconoce otros sistemas operativos instalados + y al ins +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ta +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +lar +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +se en sistemas BIOS, modificará el MBR con su propio gestor de arranque + que no da opción a arrancar Linux. +\end_layout + +\begin_layout Standard +La seguridad de GRUB 2 se activa con +\family typewriter +grub2-setpassword +\family default +, que pide una contraseña y hace que, a partir del siguiente arranque, para + modificar una entrada sea necesario introducir el nombre de usuario +\family typewriter +root +\family default + y la contraseña dada. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grub2-install +\emph on +DISPOSITIVO +\end_layout + +\begin_layout Standard +Instala GRUB en un dispositivo. + Esto incluye copiar las imágenes de GRUB en el directorio destino (en Fedora, + +\family typewriter +/boot/grub2 +\family default +) e instalar GRUB en un sector de arranque. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grub2-mkconfig +\end_layout + +\begin_layout Standard +Genera un fichero de configuración de GRUB. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-o +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +FICHERO +\family default +\emph default + Escribe la salida generada al +\family typewriter +\emph on +FICHERO +\family default +\emph default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grub2-set-default +\emph on +ENTRADA +\end_layout + +\begin_layout Standard +Establece la entrada por defecto del menú de GRUB. + Sólo funciona para ficheros de con +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +fi +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +gu +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ra +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ción de GRUB creados con +\family typewriter +GRUB_DEFAULT=saved +\family default + en +\family typewriter +/etc/default/grub +\family default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grub2-reboot +\emph on +ENTRADA +\end_layout + +\begin_layout Standard +Como +\family typewriter +grub2-set-default +\family default +, pero sólo para el siguiente arranque. +\end_layout + +\begin_layout Subsection* + +\family typewriter +grub2-setpassword +\end_layout + +\begin_layout Standard +Genera el fichero con la contraseña cifrada de GRUB. +\end_layout + +\begin_layout Section +Parámetros del núcleo de Linux +\end_layout + +\begin_layout Subsection* + +\family typewriter +kernel-command-line +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +root= +\family default +\series default + Sistema de ficheros raíz. +\end_layout + +\begin_layout Subsection* + +\family typewriter +dracut.cmdline +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +init= +\family default +\series default + Ruta del programa de inicio a ejecutar tras terminar con el disco RAM. +\end_layout + +\begin_layout Section +Arranque de Linux +\end_layout + +\begin_layout Standard +En Fedora y otras muchas distribuciones, el arranque y parada lo realiza + +\family typewriter +systemd +\family default +, el primer proceso en modo usuario tras terminar con el disco RAM, y que + tiene PID 1. +\end_layout + +\begin_layout Standard +Reemplaza al demonio +\family typewriter +init +\family default + de los sistemas UNIX System V, que se basaba en guiones +\emph on +shell +\emph default +, y aprovecha muchas características de Linux como +\emph on +cgroups +\emph default +, +\emph on +namespaces +\emph default +, etc. + Fedora 15 fue una de las primeras distribuciones en usar +\family typewriter +systemd +\family default +, que por entonces convivía con un gran número de guiones de System V. + Ventajas de +\family typewriter +systemd +\family default +: +\end_layout + +\begin_layout Itemize +El arranque y parada pasa a ser en paralelo, aprovechando los sistemas multinúcl +eo. +\end_layout + +\begin_layout Itemize +La mayoría de dependencias pasan a establecerse automáticamente. +\end_layout + +\begin_layout Itemize +Los +\emph on +cgroups +\emph default + ( +\emph on +control groups +\emph default +, grupos de control) permiten limitar, contabilizar y aislar el uso de recursos + por parte de un grupo de procesos. + Como un proceso hijo pertenece obligatoriamente al mismo +\emph on +cgroup +\emph default + que su proceso padre (salvo procesos privilegiados), es posible usar esto + para asegurarse de que los servicios realmente terminan. +\end_layout + +\begin_layout Itemize +Permite ejecutar servicios bajo demanda (cuando se necesiten), si bien algunos + servicios están activos siempre para dar una respuesta rápida. +\end_layout + +\begin_layout Itemize +Permite montar sistemas de ficheros solo cuando se necesitan, comprobar + su consistencia y activar sus cuotas de disco. + Para ello usa +\family typewriter +autofs +\family default +, que permite montar sistemas de ficheros bajo demanda (por ejemplo, al + acceder a un CD, DVD, +\emph on +pendrive +\emph default + o sistema de ficheros remoto) y desmontarlo si lleva un tiempo sin usarse. + Se debe añadir +\family typewriter +x-systemd.automount +\family default + en las opciones de +\family typewriter +/etc/fstab +\family default + (y generalmente también +\family typewriter +noauto +\family default +) para activar esta opción. +\end_layout + +\begin_layout Standard +Para más información, ver +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +http:// 0pointer.de/blog/projects/systemd.html +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemd +\end_layout + +\begin_layout Standard +Proporciona un sistema de dependencias entre +\series bold +unidades +\series default + de 11 tipos: +\end_layout + +\begin_layout Enumerate + +\series bold +Unidades de servicio +\series default + ( +\emph on +service +\emph default +), que comienzan y controlan los demonios y procesos de los que consisten. + +\family typewriter +cups.service +\family default + controla el demonio de impresión, y +\family typewriter +avahi.service +\family default + permite el acceso a ciertos servicios de red. +\end_layout + +\begin_layout Enumerate + +\series bold +Unidades de objetivo +\series default + o +\series bold +destino +\series default + ( +\emph on +target +\emph default +): Para agrupar unidades, o proveer puntos de sincronización durante el + arranque y parada, incluyendo el estado final. + Cuando se llega a +\family typewriter +graphical.target +\family default +, el objetivo por defecto en Fedora, el sistema queda en modo multiusuario + con entorno gráfico. +\end_layout + +\begin_layout Standard +La mayoría de dependencias las crea y mantiene +\family typewriter +systemd +\family default + automáticamente. +\end_layout + +\begin_layout Subsubsection* +LÍNEA DE COMANDO DEL NÚCLEO +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +systemd.unit= +\series default +\emph on +UNIDAD +\family default +\emph default + Para arrancar a una unidad distinta. +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemd.unit +\end_layout + +\begin_layout Standard + +\family typewriter +/etc/systemd/system/* +\end_layout + +\begin_layout Standard + +\family typewriter +/lib/systemd/system/* +\end_layout + +\begin_layout Standard +Esta página lista las opciones de configuración comunes a todos los tipos + de unidades. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE SECCIÓN +\family typewriter +[UNIT] +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +Requires= +\family default +\series default + Si esta unidad se activa, las unidades listadas aquí se activarán también. + Si una de las otras falla, y hay una dependencia de orden +\family typewriter +After= +\family default + en la unidad fallida, esta unidad no se iniciará. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +Wants= +\family default +\series default + Las unidades listadas en esta opción se iniciarán si se inicia esta. + Su inverso es +\family typewriter +\series bold +WantedBy= +\family default +\series default +. + Si una unidad +\family typewriter +foo +\family default + contiene una opción +\family typewriter +WantedBy=bar +\family default +, activar +\family typewriter +foo +\family default + creará un enlace simbólico en el directorio +\family typewriter +bar.wants +\family default + para expresar esta dependencia. + Si contiene +\family typewriter +Wants=bar +\family default +, el enlace se crea en +\family typewriter +foo.wants +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +Conflicts= +\family default +\series default + Configura dependencias negativas. + Si una unidad tiene +\family typewriter +Conflicts= +\family default + sobre otra, empezar la primera detendrá la segunda y viceversa. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +Before= +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +After= +\family default +\series default + Si una unidad +\family typewriter +foo +\family default + contiene una opción +\family typewriter +Before=bar +\family default + y ambas se inician, el inicio de +\family typewriter +bar +\family default + esperará a que +\family typewriter +foo +\family default + haya terminado de iniciarse. + +\family typewriter +After= +\family default + es el inverso de +\family typewriter +Before= +\family default +. +\end_layout + +\begin_layout Subsubsection* +OPCIONES DE SECCIÓN +\family typewriter +[INSTALL] +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +WantedBy= +\family default +\series default + Se crea un enlace simbólico en el directorio +\family typewriter +.wants/ +\family default + de cada unidad listada. + Esto crea una dependencia de tipo +\family typewriter +Wants= +\family default + de la unidad listada a la actual. +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemd.service +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Unidad de servicio. + Las siguientes dependencias se añaden salvo que se establezca +\family typewriter +\series bold +DefaultDependencies=no +\family default +\series default +: +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize +Dependencia de tipo +\family typewriter +After= +\family default + con +\family typewriter +basic.target +\family default +, así como de tipo +\family typewriter +Conflicts= +\family default + y +\family typewriter +Before= +\family default + con +\family typewriter +shutdown.target +\family default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemd.special +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +default.target +\family default + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +El que se inicia en el arranque. + Normalmente un enlace simbólico a +\family typewriter +multi-user.target +\family default + o +\family typewriter +graphical.target +\family default +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +emergency.target +\family default + Inicia una +\emph on +shell +\emph default + de emergencia. + No toma ningún servicio o punto de montaje ( +\family typewriter +/ +\family default + está en sólo lectura). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +graphical.target +\family default + Inicio de sesión gráfico. + Toma +\family typewriter +multi-user.target +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +multi-user.target +\family default + Establece un sistema multiusuario (no gráfico). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +poweroff.target +\family default + Apaga el sistema. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +reboot.target +\family default + Reinicia el sistema. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +rescue.target +\family default + Toma el sistema base (incluyendo puntos de montaje) y lanza una +\emph on +shell +\emph default + de rescate. + Para administrar el sistema en modo de un usuario sin servicios en ejecución, + salvo los más básicos (tampoco la conexión de red). +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemd-analyze +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +systemd-analyze critical-chain +\family default +\series default + imprime un árbol de la cadena de unidades con tiempo crítico. + El tiempo tras el cual la unidad está activa se imprime tras el caracter + +\begin_inset Quotes fld +\end_inset + + +\family typewriter +@ +\family default + +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +systemd-analyze plot +\family default +\series default + imprime un gráfico SVG con detalles de qué servicios se han i +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ni +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +cia +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +do en qué tiempo. +\end_layout + +\begin_layout Subsection* + +\family typewriter +systemctl [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +COMANDO +\emph default +] [ +\emph on +UNIDAD +\emph default +]... +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-t +\series default +, +\begin_inset space ~ +\end_inset + + +\series bold +--type= +\series default +\emph on +TIPO +\family default +\emph default + Al listar las unidades, limitarse a ciertos tipos de unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-p +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +Propiedad +\family default +\emph default + Al mostrar las propiedades de una unidad con +\family typewriter +\series bold +show +\family default +\series default +, limitarse a la indicada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--kill-who= +\series default +\emph on +PROCESO +\family default +\emph default + Al usarse con +\family typewriter +\series bold +kill +\family default +\series default +, elige a qué procesos enviar una señal. + +\family typewriter +\series bold +main +\family default +\series default + la envía sólo al proceso principal. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-s +\family default +\series default + Al usarse con +\family typewriter +\series bold +kill +\family default +\series default +, elige la señal a enviar a los procesos. + Por defecto es +\family typewriter +\series bold +SIGTERM +\family default +\series default +, que avisa a los procesos de que deben terminar. + +\family typewriter +\series bold +SIGKILL +\family default +\series default + fuerza la terminación. + +\family typewriter +\series bold +SIGHUP +\family default +\series default + (o +\family typewriter +\series bold +HUP +\family default +\series default +), al enviarse a +\family typewriter +crond.service +\family default +, le indica que debe releer su configuración. +\end_layout + +\begin_layout Subsubsection* +COMANDOS +\end_layout + +\begin_layout Paragraph* +Comandos de unidad +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +list-units +\family default +\series default + Lista las unidades que tiene +\family typewriter +systemd +\family default + en memoria. + Comando por defecto. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +start +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Inicia una unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +stop +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Detiene una unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +isolate +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Inicia la unidad especificada y sus dependencias y detiene todas las demás. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +kill +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Envía una señal a procesos de una unidad (por defecto a todos). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +status +\series default + +\begin_inset space ~ +\end_inset + +[ +\emph on +UNIDAD +\emph default +] +\family default + Muestra información de estado resumida sobre una unidad, o sobre el sistema + si no especifica la unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +show +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Muestra las propiedades de una unidad. +\end_layout + +\begin_layout Paragraph* +Comandos de ficheros de unidad +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +enable +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Habilita una unidad. + La añade en varios sitios sugeridos (por ejemplo, para que se inicie al + arrancar). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +disable +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Deshabilita una unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +is-enabled +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Comprueba si una unidad está habilitada. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +mask +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Enmascara una unidad, haciendo imposible iniciarla. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +unmask +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\family default +\emph default + Desenmascara una unidad. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +get-default +\family default +\series default + Devuelve el objetivo de arranque por defecto. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +set-default +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +OBJETIVO +\family default +\emph default + Establece el objetivo de arranque por defecto. +\end_layout + +\begin_layout Paragraph* +Comandos de sistema +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +rescue +\family default +\series default + Entra en modo rescate. + Equivale a +\family typewriter +\series bold +systemctl isolate rescue.target +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +halt +\family default +\series default + Para el sistema. + Es casi equivalente a +\family typewriter +\series bold +systemctl start halt.target +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +poweroff +\family default +\series default + Apaga el sistema. + Es casi equivalente a +\family typewriter +\series bold +systemctl start poweroff.target +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +reboot +\family default +\series default + Reinicia el sistema. + Es casi equivalente a +\family typewriter +\series bold +systemctl start reboot.target +\family default +\series default +. +\end_layout + +\begin_layout Subsection* + +\family typewriter +/etc/nologin +\end_layout + +\begin_layout Standard +Si existe y es legible, +\family typewriter +\series bold +login +\family default +\series default + solo permitirá el acceso a +\family typewriter +root +\family default +. + Se borra automáticamente al reiniciar el sistema. +\end_layout + +\begin_layout Subsection* + +\family typewriter +journalctl [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +PATRÓN +\emph default +]... +\end_layout + +\begin_layout Standard +Muestra el contenido del registro de +\family typewriter +\series bold +systemd +\family default +\series default +. + Sin parámetros, muestra todo el registro, empezando por la entrada más + antigua (cuando se arrancó por primera vez, si bien la cantidad de mensajes + que se pueden guardar está limitada para no ocupar mucho espacio). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-n +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +N +\family default +\emph default + Muestra los eventos más recientes y limita el número de eventos mostrados. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-b +\begin_inset space ~ +\end_inset + +[ +\series default +\emph on +ID +\emph default +] +\series bold +[ +\series default +\emph on +±desplazamiento +\emph default +] +\family default + Muestra los mensajes de un arranque específico. + Si se omite el ID, un +\family typewriter +\emph on +desplazamiento +\family default +\emph default + menor o igual a 0 mostrará los arranques desde el final del registro. + Si se indica el +\family typewriter +\emph on +ID +\family default +\emph default +, puede ser seguido opcionalmente por el +\family typewriter +\emph on +desplazamiento +\family default +\emph default +. + Valores negativos significan arranques anteriores y positivos significan + posteriores. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +--list-boots +\family default +\series default + Muestra una lista de todos los arranques (relativo al actual), sus IDs + y las fechas del primer y último mensaje del arranque. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-k +\family default +\series default + Muestra sólo mensajes del núcleo. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-u +\series default + +\begin_inset space ~ +\end_inset + + +\emph on +UNIDAD +\emph default +| +\emph on +PATRÓN +\family default +\emph default + Muestra los mensajes para la +\family typewriter +\emph on +UNIDAD +\family default +\emph default + dado, o para cada unidad que coincide con el +\family typewriter +\emph on +PATRÓN +\family default +\emph default +. +\end_layout + +\begin_layout Section +Dependencias automáticas +\end_layout + +\begin_layout Standard +Hay varias formas de establecer dependencias entre unidades aparte de las + descritas: +\end_layout + +\begin_layout Itemize +Un +\emph on +socket +\emph default + tipo UNIX es un canal de comunicación entre dos procesos en el que un proceso + envía información por un extremo y el otro la extrae por el otro. + Al igual que una tubería, tiene una capacidad máxima, con lo que si un + proceso intenta leer de un +\emph on +socket +\emph default + vacío o escribe en uno lleno, se bloquea. + Si dos servicios se comunican por un +\emph on +socket +\emph default +, +\family typewriter +systemd +\family default + crea el +\emph on +socket +\emph default + y luego lanza los dos servicios en paralelo, pasándoles como parámetro + el +\emph on +socket +\emph default + creado a través del cual se sincronizarán. +\end_layout + +\begin_layout Itemize +La sincronización por mensajes de D-Bus funciona de forma similar, pero + el servicio que depende de otro espera a que en el bus aparezca el proveedor + que necesita, que será ofrecido por el otro servicio, y D-Bus proporciona + la funcionalidad necesaria para esto. +\end_layout + +\begin_layout Section + +\family typewriter +udev +\end_layout + +\begin_layout Standard +El +\emph on +userspace device manager +\emph default + es un servicio (demonio +\family typewriter +systemd-udevd +\family default +) que, cuando se conecta o desconecta un dispositivo, recibe un evento del + núcleo, usa información de +\family typewriter +/sys +\family default + para ver si el +\emph on +driver +\emph default + proporciona un fichero +\family typewriter +dev +\family default + con los números mayor y menor del fichero especial a crear y usa +\series bold +ficheros de reglas +\series default + ( +\emph on +rules +\emph default +) en +\family typewriter +/lib/udev/rules.d/ +\family default + y +\family typewriter +/etc/udev/rules.d/ +\family default + para: +\end_layout + +\begin_layout Itemize +Crear el fichero especial de dispositivo en +\family typewriter +/dev +\family default + y los enlaces simbólicos al mismo. +\end_layout + +\begin_layout Itemize +Establecer los permisos y propietarios de este fichero. +\end_layout + +\begin_layout Itemize +Si es necesario, cargar los módulos y +\emph on +firmware +\emph default + para poder usarlo. +\end_layout + +\begin_layout Itemize +Si alguna regla lo indica, ejecutar los programas especificados para inicializar + el dispositivo. +\end_layout + +\begin_layout Section +Parada de Linux +\end_layout + +\begin_layout Standard +Se notifica a los usuarios, se envía la señal +\family typewriter +SIGTERM +\family default + a los procesos, se paran los demonios, se echa del sistema a los usuarios + que quedan conectados, se envía la señal +\family typewriter +KILL +\family default + a los procesos que queden en ejecución, se sincronizan los discos, se desmontan + los sistemas de ficheros y, según el tipo de parada, se apaga o se reinicia + el sistema. +\end_layout + +\begin_layout Subsection* + +\family typewriter +halt +\end_layout + +\begin_layout Standard + +\family typewriter +\series bold +halt +\family default +\series default +, +\family typewriter +\series bold +poweroff +\family default +\series default +, +\family typewriter +\series bold +reboot +\family default +\series default + pueden usarse para detener, apagar o reiniciar la máquina (respectivamente). +\end_layout + +\begin_layout Subsection* + +\family typewriter +shutdown [ +\emph on +OPCIÓN +\emph default +]... + [ +\emph on +TIEMPO +\emph default +] [ +\emph on +MENSAJE +\emph default +]... +\end_layout + +\begin_layout Standard +Detiene, apaga o reinicia la máquina. +\end_layout + +\begin_layout Standard +El tiempo puede estar en formato +\family typewriter +\emph on +hh +\emph default +: +\emph on +mm +\family default +\emph default + indicando el tiempo en el que ejecutar el apagado, en formato de 24 horas. + La sintaxis +\family typewriter ++ +\emph on +m +\family default +\emph default + se refiere al número indicado de minutos desde ahora. + +\family typewriter +now +\family default + es un alias para +\family typewriter ++0 +\family default +. + Si no especifica el tiempo, se usa +\family typewriter ++1 +\family default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-H +\family default +\series default + Detiene la máquina. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-P +\family default +\series default + Apaga (por defecto). +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-r +\family default +\series default + Reinicia. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-h +\family default +\series default + Equivale a +\family typewriter +\series bold +-P +\family default +\series default + salvo que se indique +\family typewriter +\series bold +-h +\family default +\series default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-k +\family default +\series default + Sólo escribe el +\family typewriter +\emph on +MENSAJE +\family default +\emph default +. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\family typewriter +\series bold +-c +\family default +\series default + Cancela un apagado en curso (sólo si no ha empezado). +\end_layout + +\end_body +\end_document diff --git a/iso/pegado1.png b/iso/pegado1.png Binary files differnew file mode 100644 index 0000000..9777ab4 --- /dev/null +++ b/iso/pegado1.png diff --git a/iso/pegado2.png b/iso/pegado2.png Binary files differnew file mode 100644 index 0000000..102d7ff --- /dev/null +++ b/iso/pegado2.png diff --git a/iso/pegado3.png b/iso/pegado3.png Binary files differnew file mode 100644 index 0000000..7a56db9 --- /dev/null +++ b/iso/pegado3.png diff --git a/iso/pegado4.png b/iso/pegado4.png Binary files differnew file mode 100644 index 0000000..def351a --- /dev/null +++ b/iso/pegado4.png diff --git a/iso/pegado5.png b/iso/pegado5.png Binary files differnew file mode 100644 index 0000000..90b02cf --- /dev/null +++ b/iso/pegado5.png diff --git a/iso/pegado6.png b/iso/pegado6.png Binary files differnew file mode 100644 index 0000000..080769f --- /dev/null +++ b/iso/pegado6.png diff --git a/license.lyx b/license.lyx index 4288ef3..d1dfd8d 100644 --- a/license.lyx +++ b/license.lyx @@ -147,6 +147,19 @@ begin{sloppypar} Esta obra está bajo la licencia Reconocimiento-CompartirIgual 4.0 Internacional de Creative Commons (CC-BY-SA 4.0). Para ver una copia de esta licencia, visite +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +mbox{ +\end_layout + +\end_inset + + \begin_inset Flex URL status open @@ -157,6 +170,17 @@ https://creativecommons.org/licenses/by-sa/4.0/ \end_inset + +\begin_inset ERT +status open + +\begin_layout Plain Layout + +} +\end_layout + +\end_inset + . \begin_inset ERT status open diff --git a/poo/n.lyx b/poo/n.lyx new file mode 100644 index 0000000..ff15b9e --- /dev/null +++ b/poo/n.lyx @@ -0,0 +1,266 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Programación Orientada a Objetos +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2018} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Programación Orientada a Objetos, anónimo (Curso 2018–2019). +\end_layout + +\begin_layout Itemize +Java™ Platform, Standard Edition 8, API Specification ( +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://docs.oracle.com/javase/8/docs/api/ +\end_layout + +\end_inset + +). +\end_layout + +\begin_layout Chapter +Introducción +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Clases y objetos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Herencia +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n3.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Genericidad +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n4.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Programación funcional +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n5.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Excepciones +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n6.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +\start_of_appendix +Algo más de la API +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "na.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Despliegue de software Java +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nb.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/poo/n1.lyx b/poo/n1.lyx new file mode 100644 index 0000000..4ab7e7c --- /dev/null +++ b/poo/n1.lyx @@ -0,0 +1,235 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La evolución de los lenguajes de programación va ligada al crecimiento de + la complejidad en aplicaciones y a la mejora de la capacidad del hardware, + y busca acercarse a los conceptos del dominio de la aplicación ( +\series bold +abstracción +\series default +). + Un +\series bold +paradigma de programación +\series default + es una serie de conceptos que guían la forma de pensar acerca de los programas, + construirlos y estructurarlos. + Los lenguajes de programación reflejan uno o varios de estos paradigmas. +\end_layout + +\begin_layout Standard +El paradigma +\series bold +orientado a objetos +\series default + organiza el software como una colección de objetos que se relacionan y + proveen la funcionalidad de un sistema. + Este paradigma nos permite: +\end_layout + +\begin_layout Itemize + +\series bold +Abstracción +\series default +: Centrarse en las propiedades de los tipos y no en la implementación. +\end_layout + +\begin_layout Itemize + +\series bold +Modularidad +\series default +: Descomponer el software en componentes que se combinan entre sí. +\end_layout + +\begin_layout Itemize + +\series bold +Encapsulación +\series default +: Juntar la estructura de un tipo de datos con sus operaciones. +\end_layout + +\begin_layout Itemize + +\series bold +Ocultación de información +\series default +: Diferenciar la parte pública de un módulo de la privada. +\end_layout + +\begin_layout Itemize + +\series bold +Herencia +\series default +: Definir clases a partir de otras. +\end_layout + +\begin_layout Itemize + +\series bold +Polimorfismo +\series default +: Permitir que una entidad haga referencia a objetos de distintos tipos. +\end_layout + +\begin_layout Standard +En 1985 se crean el +\series bold +C++ +\series default +, extensión orientada a objetos de C muy popular que ayudó a difundir el + paradigma, y +\series bold +Eiffel +\series default +, creado por Bertrand Meyer tras un profundo estudio del paradigma pero + considerado +\begin_inset Quotes fld +\end_inset + +teórico +\begin_inset Quotes frd +\end_inset + + y poco usado. +\end_layout + +\begin_layout Standard +En 1995, Sun Microsystems (adquirido por Oracle en 2009) crea +\series bold +Java +\series default +, un lenguaje OO puro popularizado por su uso en la web y con numerosas + bibliotecas de código, y en el año 2000 Microsoft crea +\series bold +C# +\series default +, que combina C++ y Java, junto con su plataforma +\series bold +.NET +\series default +. +\end_layout + +\begin_layout Standard +El compilador de Java genera un +\series bold +código intermedio +\series default + o +\emph on +bytecode +\emph default +, independiente de la plataforma, e interpretado o compilado en el momento + (compilación +\series bold +JIT +\series default +, +\emph on +Just In Time +\emph default +) por la máquina virtual de Java (JVM), con lo que el código se puede ejecutar + en cualquier máquina que tenga instalado el entorno de ejecución de Java + y la máquina virtual, independientemente de la arquitectura del procesador + y el sistema operativo. +\end_layout + +\begin_layout Standard +Java presenta una sintaxis sencilla, parecida a C++ pero eliminando las + características complejas, y es robusto al ser fuertemente tipado (el compilado +r detecta muchos problemas del código), soportar excepciones (para gestión + de errores en tiempo de ejecución) y proveer +\begin_inset Quotes fld +\end_inset + +recogida de basura +\begin_inset Quotes frd +\end_inset + + (hace innecesaria la gestión de punteros). + Aprenderemos Java 1.8. +\end_layout + +\end_body +\end_document diff --git a/poo/n2.lyx b/poo/n2.lyx new file mode 100644 index 0000000..e22fece --- /dev/null +++ b/poo/n2.lyx @@ -0,0 +1,1168 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Java los tipos de datos se implementan como +\series bold +clases +\series default +, cada una dentro de un fichero y con nombre normalmente en +\emph on +CamelCase +\emph default +, que a su vez se organizan en +\series bold +paquetes +\series default + que agrupan código relacionado +\emph on +, +\emph default + con nombres en +\emph on +lowerCamelCase +\emph default + +\begin_inset Foot +status open + +\begin_layout Plain Layout +Ese término me lo he inventado. +\end_layout + +\end_inset + +, que pueden a su vez estar en otros. + Los elementos de la ruta de un paquete, clase, etc. + se separan con +\begin_inset Quotes fld +\end_inset + + +\family typewriter +. +\family default + +\begin_inset Quotes frd +\end_inset + +. + Los ficheros de clase contienen: +\end_layout + +\begin_layout Itemize +Declaración del paquete en el que está la clase: +\family typewriter +package +\emph on +ruta.del.paquete +\emph default +; +\family default +. +\end_layout + +\begin_layout Itemize +Importación de clases de paquetes distintos al de la clase o a +\family typewriter +java.lang +\family default +, para poder referirnos a ellas sin indicar la ruta completa: +\family typewriter +import +\emph on +ruta.de.Clase +\emph default +; +\family default +. + También se pueden importar constantes +\begin_inset Newline newline +\end_inset + +definidas en clases con +\family typewriter +import static ruta.de.Clase. +\family default +[ +\family typewriter +CONSTANTE +\family default +| +\family typewriter +* +\family default +] +\family typewriter +; +\family default +. +\end_layout + +\begin_layout Itemize +Definición de la clase: [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter +class +\emph on +NombreClase +\family default +\emph default +[ +\family typewriter +< +\family default +... +\family typewriter +> +\family default +] [ +\family typewriter +extends +\emph on +Clase +\family default +\emph default +] [ +\family typewriter +implements +\emph on +Interfaz1 +\emph default +, +\family default +...] +\family typewriter +{ +\family default +... + +\family typewriter + } +\family default +, donde se define la clase. + La visibilidad es +\family typewriter +public +\family default + para que la clase sea visible fuera del paquete; por defecto solo lo es + dentro de este. +\end_layout + +\begin_layout Standard +Los elementos de una clase (dentro de +\family typewriter +{ +\family default +... + +\family typewriter + } +\family default +) pueden tener visibilidad pública ( +\family typewriter +public +\family default +, accesible fuera del paquete), privada ( +\family typewriter +private +\family default +, accesible solo dentro la clase) o a nivel de paquete (por defecto, accesible + solo dentro del paquete). + Estos son: +\end_layout + +\begin_layout Itemize + +\series bold +Atributos +\series default +: Los campos de la estructura: [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter +\emph on +Tipo nombre +\emph default + +\family default +[ +\family typewriter += +\emph on +expr +\family default +\emph default +] +\family typewriter +; +\family default +. + Siempre privados según las buenas prácticas. + Cuando una clase +\begin_inset Formula $A$ +\end_inset + + declara un atributo cuyo tipo es otra clase +\begin_inset Formula $B$ +\end_inset + +, decimos que +\begin_inset Formula $A$ +\end_inset + + es +\series bold +cliente +\series default + de +\begin_inset Formula $B$ +\end_inset + + ( +\series bold +relación de clientela +\series default +). +\end_layout + +\begin_layout Itemize + +\series bold +Métodos +\series default +: Operaciones aplicables sobre los objetos: +\begin_inset Newline newline +\end_inset + +[ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] [ +\family typewriter +\emph on +TipoDevuelto +\family default +\emph default +| +\family typewriter +void +\family default +] +\family typewriter +\emph on + nombre +\emph default +( +\family default +[ +\family typewriter +final +\family default +] +\family typewriter +\emph on +Tipo parámetro +\emph default +, +\family default +... + [ +\family typewriter +, +\family default +[ +\family typewriter +final +\family default +] +\family typewriter + +\emph on +Tipo +\emph default +... + +\emph on +array +\family default +\emph default +] +\family typewriter +) +\family default +[ +\family typewriter +throws +\emph on +Excepción1 +\emph default +, +\family default +...] +\family typewriter + { +\family default +(implementación) +\family typewriter + } +\family default +. + Si se incluye el parámetro +\family typewriter +\emph on +array +\family default +\emph default +, su tipo es +\family typewriter +\emph on +Tipo +\emph default +[] +\family default + (ver abajo), y recibe la lista de todos los parámetros después de los obligator +ios si son de tipo +\family typewriter +\emph on +Tipo +\family default +\emph default +, o el (único) parámetro des +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pués de los obligatorios si es de tipo +\family typewriter +\emph on +Tipo +\emph default +[] +\family default +. + Puede haber varios métodos con el mismo nombre, siempre que tengan distinto + número de parámetros o alguno tenga distinto tipo y estos sean disjuntos + ( +\series bold +sobrecarga de métodos +\series default + u +\series bold +\emph on + +\series default +overloading +\emph default +). +\begin_inset Newline newline +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{IP} +\end_layout + +\end_inset + +Llamamos +\series bold +parámetros formales +\series default + a los parámetros de una acción ( +\begin_inset Formula $par_{1},\dots,par_{n}$ +\end_inset + +) y +\series bold +argumentos +\series default + o +\series bold +parámetros reales +\series default + a los valores con los que se invoca la acción, mediante la notación +\begin_inset Quotes cld +\end_inset + + +\emph on +nombre +\emph default +( +\begin_inset Formula $expr_{1},\dots,expr_{n}$ +\end_inset + +) +\begin_inset Quotes crd +\end_inset + +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember{} +\end_layout + +\end_inset + + +\end_layout + +\end_inset + +Para acceder a los atributos se pueden usar +\series bold +métodos de acceso +\series default + ( +\emph on +getters +\emph default +, normalmente +\family typewriter +public +\emph on +Tipo +\emph default + get +\emph on +Atributo +\emph default +() +\family default +) y +\series bold +métodos de modificación +\series default + ( +\emph on +setters +\emph default +, normalmente +\family typewriter +public void set +\emph on +Atributo +\emph default +( +\emph on +Tipo atributo +\emph default +) +\family default +), lo que permite más tarde cambiar la estructura manteniendo la interfaz + compatible. + Otras veces se accede a los atributos de otras formas más apropiadas para + su significado concreto, o se añaden métodos de acceso para propiedades + calculadas. +\end_layout + +\begin_layout Itemize + +\series bold +Constructores +\series default +: Operaciones encargadas de inicializar correctamente un objeto. + Se definen como los métodos pero sin el tipo devuelto, y el nombre es el + de la clase. + Si no se define ninguno se crea un +\series bold +constructor por defecto +\series default +, que no toma ningún parámetro y deja todos los atributos con su valor por + defecto. +\end_layout + +\begin_layout Standard +Los modificadores ( +\family typewriter +\emph on +mods +\family default +\emph default +) son: +\end_layout + +\begin_layout Itemize + +\family typewriter +static +\family default +: Indica que un atributo es global para todos los objetos de la clase (atributo + +\series bold +de clase +\series default +), o que un método es de clase, y por tanto no se llama a través de un objeto + y en principio solo puede acceder a atributos de clase. +\end_layout + +\begin_layout Itemize + +\family typewriter +final +\family default +: Indica que el valor de un atributo (o variable local) solo puede ser estableci +do en su declaración o, en su caso, en un constructor. + No se les asigna un valor por defecto. + Puede combinarse con +\family typewriter +static +\family default + para definir constantes, que no hace falta hacerlas privadas. + +\end_layout + +\begin_layout Standard +Tipos de datos en Java: +\end_layout + +\begin_layout Itemize +Primitivos. +\end_layout + +\begin_deeper +\begin_layout Itemize +Enteros con signo: +\family typewriter +byte +\family default + (8 bits), +\family typewriter +short +\family default + (16), +\family typewriter +int +\family default + (32), +\family typewriter +long +\family default + (64). + Por defecto: +\family typewriter +0 +\family default +. +\end_layout + +\begin_layout Itemize +Reales: +\family typewriter +float +\family default + (IEEE-854, 32 bits), +\family typewriter +double +\family default + (64). + Por defecto: +\family typewriter +0 +\family default +. +\end_layout + +\begin_layout Itemize +Caracteres: +\family typewriter +char +\family default +. + Por defecto: +\family typewriter +' +\backslash +u000' +\family default +. +\end_layout + +\begin_layout Itemize +Booleano: +\family typewriter +boolean +\family default +. + Valores +\family typewriter +false +\family default + (por defecto) y +\family typewriter +true +\family default +. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Objetos +\series default +. + +\series bold +Instancias +\series default + de una clase, representadas por una estructura en memoria con un campo + por cada atributo, que para tipos primitivos contiene el valor y para el + resto contiene un identificador de objeto ( +\emph on +oid +\emph default +), o el valor +\family typewriter +null +\family default +, su valor por defecto, que no indica ningún objeto. + El +\series bold +estado +\series default + de un objeto es el valor de estos campos. +\begin_inset Newline newline +\end_inset + +Los objetos en Java se manejan por referencia (a través del +\emph on +oid +\emph default +). + Esto permite la compartición de objetos con integridad referencial, es + más eficiente para objetos complejos, permite estructuras recursivas e + implica que los objetos se crean cuando se construyen y no en su declaración. + El inconveniente es el +\series bold +\emph on +aliasing +\series default +\emph default +, pues al asignar el valor de una variable a otra no se copia el objeto + sino su identificador, lo cual es importante tener en cuenta en métodos + de acceso a atributos mutables para no comprometer la integridad del objeto. +\end_layout + +\begin_deeper +\begin_layout Itemize +Las cadenas de caracteres son objetos inmutables de clase +\family typewriter +String +\family default +. +\end_layout + +\begin_layout Itemize +Los +\series bold +enumerados +\series default + son clases definidas de forma especial, con la sintaxis [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] +\family typewriter +enum +\emph on +Nombre +\emph default + { +\emph on +VALOR_1 +\emph default +, +\emph on +VALOR_2 +\emph default +, +\family default +... + +\family typewriter + } +\family default +. + Incluyen una constante del propio tipo para cada valor, y estas definen + el dominio de valores de la clase, así como métodos +\family typewriter +public int ordinal() +\family default + que devuelve el índice del valor y +\family typewriter +public static +\emph on +Tipo +\emph default +[] values() +\family default + que devuelve una lista con todas los valores posibles. +\end_layout + +\begin_layout Itemize +Los +\series bold +\emph on +arrays +\series default +\emph default + son objetos que contienen un número fijo de elementos de otro tipo. + Su tipo es +\family typewriter +\emph on +TipoElemento +\emph default +[] +\family default +... +\family typewriter +[] +\family default + (pueden tener varias dimensiones). + Su tamaño puede consultarse mediante el atributo +\family typewriter +public final int length +\family default +. +\end_layout + +\end_deeper +\begin_layout Standard +El operador +\family typewriter +== +\family default + comprueba si dos elementos de un tipo primitivo son iguales o si dos referencia +s apuntan al mismo objeto (igual +\emph on +oid +\emph default +), y en particular si dos elementos de un tipo enumerado tienen el mismo + valor (devuelve un booleano). +\end_layout + +\begin_layout Standard +Los objetos se comunican entre sí mediante +\series bold +mensajes +\series default +, formados por un +\series bold +objeto receptor +\series default + (si no es un método de clase), un +\series bold +identificador de método +\series default + y los +\series bold +argumentos +\series default +. + Enviar un mensaje es llamar al método, definido en la clase del objeto, + con la sintaxis +\family typewriter +\emph on +objeto +\emph default +. +\emph on +método +\emph default +( +\emph on +args +\emph default +, +\family default +... +\family typewriter +) +\family default + o, si es un método de clase, con +\family typewriter +\emph on +Clase +\emph default +. +\emph on +método +\emph default +( +\emph on +args +\emph default +, +\family default +... +\family typewriter +) +\family default +. + Los argumentos se pasan por valor. + Este método (si no es de clase) puede acceder al objeto sobre el que se + llama (la +\series bold +instancia actual +\series default +) por la palabra reservada +\family typewriter +this +\family default +. + Además, puede referirse a los métodos y atributos de la instancia actual + (si no es un método de clase) o de la propia clase sin especificar la instancia + actual o la clase, siempre que no haya un parámetro o variable local del + mismo nombre. + Un constructor puede invocar a otro mediante +\family typewriter +this( +\emph on +args +\emph default +, +\family default +... +\family typewriter +); +\family default +. +\end_layout + +\begin_layout Standard +Dentro de un método, la sentencia +\family typewriter +\emph on +Tipo var +\emph default + +\family default +[ +\family typewriter += +\emph on +expr +\family default +\emph default +] +\family typewriter +; +\family default + declara una variable local y le asigna opcionalmente un valor, y la expresión + +\family typewriter +new +\emph on +Clase +\emph default +( +\emph on +arg +\emph default +, +\family default +... +\family typewriter +) +\family default + asigna el espacio para la estructura de un objeto, le asigna un identificador, + inicializa los campos con su valor por defecto, llama al constructor corrspondi +ente y devuelve dicho objeto. + Para crear un +\emph on +array +\emph default + se usa +\family typewriter +new +\emph on +TipoElemento +\emph default +[ +\emph on +t1 +\emph default +] +\family default +... +\family typewriter +[ +\emph on +tn +\emph default +] +\family default +[ +\family typewriter +{ +\family default +\emph on +... +\family typewriter +\emph default +{ +\emph on +valor11 +\emph default +, +\family default +... +\family typewriter +}, +\family default +... +\family typewriter +} +\family default +], con el número de elementos en cada dimensión, lo que asigna el espacio + necesario al +\emph on +array +\emph default +, le asigna un identificador e inicializa cada elemento con su valor por + defecto o con los valores indicados entre llaves. + La destrucción de los objetos no es explícita, sino que el +\series bold +recolector de basura +\series default + ( +\emph on +garbage collector +\emph default +) periódicamente libera los objetos que no son referenciados. + Un objeto puede ser notificado antes de ser eliminado implementando el + método +\family typewriter +finalize() +\family default +, lo que interesa cuando este hace uso de recursos externos. + Estructuras de control: +\end_layout + +\begin_layout Itemize +Sentencias condicionales: +\family typewriter +if ( +\emph on +cond-expr +\emph default +) +\emph on +then-stmt +\emph default + +\family default +[ +\family typewriter +else +\emph on +else-stmt +\family default +\emph default +] ( +\family typewriter +\emph on +cond-expr +\family default +\emph default + debe evaluar a booleano); +\family typewriter +switch ( +\emph on +expr +\emph default +) { +\family default +... + +\family typewriter + } +\family default + ( +\family typewriter +\emph on +expr +\family default +\emph default + debe evaluar a entero, valor de enumerado o cadena, y es necesario usar + +\family typewriter +break; +\family default + para evitar que la ejecución continúe con el caso siguiente). +\end_layout + +\begin_layout Itemize +Bucles: +\family typewriter +while +\family default +, +\family typewriter +for +\family default +. +\end_layout + +\begin_layout Standard +Una aplicación OO se organiza como un conjunto de clases relacionadas, siendo + una de ellas la +\series bold +raíz de la aplicación +\series default +, que contiene un método (en Java, +\family typewriter +public static void main(String[] args) +\family default +) encargado de poner en marcha la aplicación. + El flujo de ejecución siempre se encuentra aplicando un método sobre un + objeto o ejecutando alguna instrucción imperativa, si bien en una aplicación + concurrente puede haber varios flujos de ejecución. +\end_layout + +\begin_layout Standard +Si una clase tiene muchos atributos de tipo primitivo, suele ser necesario + separar la funcionalidad definiendo clases con parte de estos atributos. + Se usa el patrón +\series bold +experto en información +\series default +: asignar una funcionalidad a la clase que tiene la información necesaria + para llevarla a cabo. +\end_layout + +\end_body +\end_document diff --git a/poo/n3.lyx b/poo/n3.lyx new file mode 100644 index 0000000..1c193b3 --- /dev/null +++ b/poo/n3.lyx @@ -0,0 +1,959 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La +\series bold +herencia +\series default + es un mecanismo para definir y utilizar relaciones conceptuales entre clases + como de extensión, especialización y combinación, que permite definir una + clase a partir de otra, organizando las clases en una +\series bold +jerarquía +\series default + consistente con el sistema de tipos. + La +\series bold +especialización +\series default + ocurre cuando una clase es un caso especial o un tipo de otra, mientras + que la +\series bold +generalización +\series default +, muy relacionada, ocurre cuando se detectan clases con características + en común. +\end_layout + +\begin_layout Standard +Cuando una clase +\begin_inset Formula $B$ +\end_inset + + +\series bold +hereda +\series default + de una clase +\begin_inset Formula $A$ +\end_inset + +, incorpora automáticamente los atributos y métodos de +\begin_inset Formula $A$ +\end_inset + + (en Java, no incorpora los constructores), pero puede añadir nuevos atributos + y métodos y redefinir métodos heredados. + Decimos que +\begin_inset Formula $A$ +\end_inset + + es la +\series bold +superclase +\series default + o clase padre de +\begin_inset Formula $B$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + es una +\series bold +subclase +\series default + o clase hija de +\begin_inset Formula $A$ +\end_inset + +. + Si +\begin_inset Formula $C$ +\end_inset + + hereda a su vez de +\begin_inset Formula $B$ +\end_inset + +, también hereda de +\begin_inset Formula $A$ +\end_inset + +, pero +\begin_inset Formula $B$ +\end_inset + + es un +\series bold +descendiente directo +\series default + y +\begin_inset Formula $C$ +\end_inset + + es un +\series bold +descendiente indirecto +\series default + de +\begin_inset Formula $A$ +\end_inset + +. + Decimos que +\begin_inset Formula $A$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + son +\series bold +ascendientes +\series default + de +\begin_inset Formula $C$ +\end_inset + +. + Algunos lenguajes como C++ o Python permiten +\series bold +herencia múltiple +\series default +, de modo que una clase puede heredar directamente de varias, mientras que + otros, como Java o C#, solo permiten +\series bold +herencia simple +\series default +. +\end_layout + +\begin_layout Standard +En Java se indica que una clase deriva de otra indicando +\family typewriter +extends +\emph on +Superclase +\family default +\emph default + detrás del nombre de la clase en su definición. + Los descendientes de una clase no pueden ver sus atributos y métodos privados, + sino que se proporciona el nivel de visibilidad +\family typewriter +protected +\family default +, útil para métodos, que da visibilidad a nivel de paquete y a descendientes + de la clase. +\end_layout + +\begin_layout Standard +La primera sentencia de un constructor debe ser una llamada a un constructor + de la clase padre, que se hace con +\family typewriter +super( +\family default +... +\family typewriter +); +\family default + o a otro constructor de la propia clase, y si se omite el compilador inserta + una llamada +\family typewriter +super(); +\family default + al constructor vacío, dando error si este no existe. +\end_layout + +\begin_layout Standard +El modificador +\family typewriter +final +\family default + se puede añadir a un método para impedir que sea redefinido en clases descendie +ntes, y en una clase para impedir que se pueda heredar de ella. +\end_layout + +\begin_layout Section +Polimorfismo +\end_layout + +\begin_layout Standard +Un método es una +\series bold +redefinición +\series default + si tiene la misma signatura (nombre, parámetros y tipo de retorno) que + un método de la clase padre. + En Java se indica con la +\series bold +anotación +\series default + +\family typewriter +@Override +\family default + encima de la definición de la función, que es opcional pero señala un fallo + si el método no es realmente una redefinición, útil para detectar errores. + Esta puede ser de +\series bold +reemplazo +\series default + si se sustituye completamente la implementación o de +\series bold +refinamiento +\series default + si simplemente se añade nueva funcionalidad, en cuyo caso la sintaxis +\family typewriter +super. +\emph on +método +\emph default +( +\family default +... +\family typewriter +) +\family default + sirve para llamar a la versión del padre de un método redefinido. +\end_layout + +\begin_layout Standard +El +\series bold +polimorfismo +\series default + es la capacidad de una entidad de referenciar en tiempo de ejecución a + objetos de distintas clases, y en lenguajes como Java significa que toda + entidad tiene un +\series bold +tipo estático +\series default + ( +\emph on +te +\emph default +), asociado a su declaración, y uno +\series bold +dinámico +\series default +, que corresponde al objeto al que hace referencia y puede variar. + A cada entidad le corresponde un +\series bold +conjunto de tipos dinámicos +\series default + ( +\emph on +ctd +\emph default +), el de los posibles tipos dinámicos a los que puede hacer referencia y + que viene dado por el conjunto de tipos +\series bold +compatibles +\series default + con el tipo estático, es decir, los descendientes de este tipo incluyéndose + a sí mismo. +\end_layout + +\begin_layout Standard +Una asignación polimórfica es válida si el tipo estático de la parte derecha + es compatible con el de la parte izquierda. + Un paso de parámetros es válido si el tipo estático del parámetro real + es compatible con el del parámetro formal. + La +\series bold +ligadura dinámica +\series default + significa que la versión de un método que se llama al pasar un mensaje + es la asociada al tipo dinámico, que puede ser la del tipo estático o haber + sido redefinida. +\end_layout + +\begin_layout Standard +En Java, la sintaxis +\family typewriter +( +\emph on +Tipo +\emph default +) +\emph on +variable +\family default +\emph default + permite hacer un +\emph on +casting +\emph default + a uno de los +\family typewriter +\emph on +Tipo +\family default +\emph default +s dinámicos que puede tener la +\family typewriter +\emph on +variable +\family default +\emph default +, permitiendo tratar la variable como si este fuese su tipo estático y pudiendo + acceder a los métodos de este, si bien esto dará un error en tiempo de + ejecución si el tipo dinámico de la variable no es compatible con el que + se especifica al hacer el +\emph on +casting +\emph default +. + La expresión +\family typewriter +\emph on +variable +\emph default + instanceof +\emph on +Tipo +\family default +\emph default + devuelve verdadero si el tipo dinámico de la +\family typewriter +\emph on +variable +\family default +\emph default + es compatible con el del +\family typewriter +\emph on +Tipo +\family default +\emph default + y falso en caso contrario. +\end_layout + +\begin_layout Standard +Al redefinir un método (al que se tenga acceso desde la clase descendiente) + se puede cambiar el tipo de retorno a un tipo descendiente ( +\series bold +regla covariante +\series default +) o incrementar su nivel de visibilidad. +\end_layout + +\begin_layout Standard +Se recomienda situar los atributos y métodos comunes en clases altas de + la jerarquía, aplicando herencia si tiene sentido decir que todos los objetos + de una clase +\begin_inset Quotes fld +\end_inset + +lo son +\begin_inset Quotes frd +\end_inset + + también de otra, usando polimorfismo y ligadura dinámica para evitar análisis + de casos. + No debe usarse herencia si un método heredado no tiene sentido en la clase + hija, y no se debe cambiar la semántica de un método en la clase hija. +\end_layout + +\begin_layout Section +Clases abstractas +\end_layout + +\begin_layout Standard +Una +\series bold +clase abstracta +\series default + es una que no se puede instanciar, no puede ser +\family typewriter +final +\family default + y permite definir +\series bold +métodos abstractos +\series default +, sin código, con +\family typewriter +; +\family default + en vez de la implementación ( +\family typewriter +{ +\family default +... +\family typewriter +} +\family default +), y que no pueden ser +\family typewriter +static +\family default + ni +\family typewriter +final +\family default +. + Las clases y métodos abstractos se deben indicar con el modificador +\family typewriter +abstract +\family default +, y una clase +\series bold +efectiva +\series default + (no abstracta) debe implementar todos los métodos abstractos que hereda. + Una clase abstracta puede implementar constructores, pero estos sólo son + útiles para su uso por las clases hijas, por lo que se declaran +\family typewriter +protected +\family default +. +\end_layout + +\begin_layout Standard +Un +\series bold +método plantilla +\series default + es un método ordinario de una clase abstracta que usa uno o más métodos + abstractos, normalmente +\family typewriter +protected +\family default +, con el fin de evitar repetición de código en las clases descendientes. + La generalización por clases abstractas se aplica muchas veces tras la + implementación ( +\series bold +refactorización +\series default +). +\end_layout + +\begin_layout Section +Interfaces +\end_layout + +\begin_layout Standard +Una +\series bold +interfaz +\series default + es la definición de un tipo sin la implementación, como una clase totalmente + abstracta, y se definen con [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter + interface +\emph on +Nombre +\family default +\emph default + [ +\family typewriter +extends +\emph on +Interfaz1 +\emph default +, +\family default +...] +\family typewriter + { +\family default +... + +\family typewriter + } +\family default +. + Las interfaces no tienen constructores, sus métodos son +\family typewriter +public abstract +\family default + por defecto (aunque puede haber métodos no abstractos) y sus atributos + son +\family typewriter +public static final +\family default +, y no es necesario indicar estos modificadores. + +\end_layout + +\begin_layout Standard +Una interfaz puede heredar de varias interfaces con +\family typewriter +extends +\family default +. + Una clase puede heredar de varias interfaces (se dice que las +\series bold +implementa +\series default +), y se indica con +\family typewriter +implements +\emph on +Interfaz1 +\emph default +, +\family default +.... +\end_layout + +\begin_layout Standard +Las interfaces pueden incluir +\series bold +métodos por defecto +\series default +, con el modificador +\family typewriter +default +\family default +, que no son abstractos. + Una clase puede implementar varias interfaces con distintos métodos por + defecto con la misma signatura, en cuyo caso para que una clase compile + debe reimplementar este método. + La sintaxis +\family typewriter +\emph on +Interfaz +\emph default +.super. +\emph on +método +\emph default +( +\family default +.\SpecialChar endofsentence +. +\family typewriter +) +\family default + permite llamar al método por defecto de una interfaz +\begin_inset Quotes fld +\end_inset + +padre +\begin_inset Quotes frd +\end_inset + + cuando hay ambigüedad. + Las interfaces también pueden incluir métodos +\family typewriter +static +\family default +. +\end_layout + +\begin_layout Section +La clase +\family typewriter +Object +\end_layout + +\begin_layout Standard +Cuando una clase no hereda de ninguna, realmente hereda de +\family typewriter +Object +\family default +. + Métodos de +\family typewriter +Object +\family default +: +\end_layout + +\begin_layout Enumerate + +\family typewriter +public final Class +\series bold +getClass +\series default +() +\family default +. + Devuelve la clase de la instancia actual. + Se recomienda usar +\family typewriter +instanceof +\family default + en vez de esto en caso de duda para comprobar compatibilidad. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public boolean +\series bold +equals +\series default +(Object) +\family default +. + Indica si un objeto es igual a otro. +\begin_inset Newline newline +\end_inset + +Tipos de igualdad: +\series bold +superficial +\series default +, que compara la igualdad de los campos primitivos y el +\emph on +oid +\emph default + de las referencias; +\series bold +profunda +\series default +, que usa +\family typewriter +equals +\family default + recursivamente, o adaptada a las necesidades de la aplicación. + Por defecto la comparación es superficial. +\begin_inset Newline newline +\end_inset + +Es necesario redefinir el método en las clases donde necesitemos igualdad, + pero hay que elegir la semántica de igualdad más adecuada. + El método heredado en una subclase es correcto si no tiene nuevos atributos + o estos no se tienen en cuenta en la igualdad, y en caso contrario, salvo + que la versión heredada sea la de +\family typewriter +Object +\family default +, hay que reutilizarla. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public int +\series bold +hashCode +\series default +() +\family default +. + Devuelve el resultado de aplicar alguna función +\emph on +hash +\emph default + al objeto; usado en tablas de dispersión. + Si +\family typewriter +\emph on +o1 +\emph default +.equals( +\emph on +o2 +\emph default +) +\family default +, debe ser +\family typewriter +\emph on +o1 +\emph default +.hashCode() == +\emph on +o2 +\emph default +.hashCode() +\family default +. + Por defecto se compara la dirección de memoria del objeto. + Si se redefine el método +\family typewriter +equals +\family default + también debe redefinirse +\family typewriter +hashCode +\family default +. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public String +\series bold +toString +\series default +() +\family default +. + Devuelve una representación textual de un objeto. + Por defecto se imprime el nombre de la clase y el +\emph on +oid +\emph default +. + Se recomienda usar +\family typewriter +getClass().getName() +\family default +, que devuelve la clase de la instancia actual, permitiendo que la implementació +n sea he +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +re +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +da +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ble. + Debe ser redefinido en una subclase si añade nuevos atributos. +\end_layout + +\begin_layout Enumerate + +\family typewriter +protected Object +\series bold +clone +\series default +() throws CloneNotSupportedException +\family default +. + Devuelve una +\begin_inset Newline newline +\end_inset + +copia del objeto. +\begin_inset Newline newline +\end_inset + +Tipos de copia: +\series bold +superficial +\series default +, que copia los campos primitivos y los +\emph on +oid +\emph default +; +\series bold +profunda +\series default +, que aplica +\family typewriter +clone +\family default + recursivamente, y adaptada a las necesidades de la aplicación. + Por defecto la copia es superficial. +\begin_inset Newline newline +\end_inset + +Al redefinir el método, hay que cambiar la visibilidad a +\family typewriter +public +\family default +, cambiar el tipo de retorno al tipo propio y ocultar la excepción (el +\family typewriter +throws +\family default +...). + Esta excepción se lanza si la clase del objeto no implementa la interfaz + +\family typewriter +Cloneable +\family default +, que no implementa ningún método pero marca que los objetos de una clase + (y todas las clases descendientes) pueden ser clonadas. +\begin_inset Newline newline +\end_inset + +Al redefinir este método, para que funcione con la herencia, es conveniente + llamar a la versión heredada y, si el tipo padre no es +\family typewriter +Cloneable +\family default +, manejar la excepción mediante +\family typewriter +try { +\family default +(código que llame a +\family typewriter +super.clone() +\family default +) +\family typewriter + } catch (CloneNotSupportedException e) { +\family default +(manejo del error) +\family typewriter + } +\family default + de modo que si salta la excepción se salte directamente al código de manejo + del error, lo que no debería ocurrir. +\end_layout + +\begin_layout Standard +Además, para cada tipo primitivo existe una clase ( +\family typewriter +Integer +\family default +, +\family typewriter +Float +\family default +, +\family typewriter +Double +\family default +, +\family typewriter +Character +\family default +, +\family typewriter +Boolean +\family default +, etc.) correspondiente que actúa como +\series bold +objeto envoltorio +\series default + y hereda de +\family typewriter +Object +\family default +. + Java permite convertir automáticamente entre el tipo primitivo y el envoltorio + ( +\series bold +\emph on +autoboxing +\series default +\emph default +). +\end_layout + +\end_body +\end_document diff --git a/poo/n4.lyx b/poo/n4.lyx new file mode 100644 index 0000000..dce5506 --- /dev/null +++ b/poo/n4.lyx @@ -0,0 +1,3827 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Una +\series bold +clase genérica +\series default + es aquella que en su declaración tiene uno o varios tipos variables ( +\series bold +parámetros +\series default +). + Se indican como +\family typewriter +\emph on +NombreClase +\emph default +< +\emph on +T +\begin_inset Formula $_{1}$ +\end_inset + + +\family default +\emph default + [ +\family typewriter +extends +\emph on +K +\emph default + +\begin_inset Formula $_{11}$ +\end_inset + +[& +\family default +...]][ +\family typewriter +, +\family default +...] +\family typewriter +> +\family default +, y dentro de la clase se pueden usar los tipos +\family typewriter +T +\family default + +\begin_inset Formula $_{i}$ +\end_inset + + como otros tipos cualesquiera, sobre los que se pueden usar los métodos + de los tipos no primitivos +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default +, o de +\family typewriter +Object +\family default + si no se especifican, salvo constructores. + El uso de tipos +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default + permite +\series bold +genericidad restringida +\series default +. +\end_layout + +\begin_layout Standard +También existen las interfaces genéricas, con la misma sintaxis. + Una clase genérica puede heredar de otra e implementar interfaces genéricas. + En la herencia se establecen los parámetros de la clase padre e interfaces + implementadas, que pueden ser parámetros de la propia clase hija o tipos + concretos. +\end_layout + +\begin_layout Standard +La parametrización de una clase genérica se realiza en la declaración de + una variable (incluyendo parámetro, etc.) y en la construcción de objetos, + con la forma +\family typewriter +\emph on +NombreClase +\emph default +< +\emph on +T +\begin_inset Formula $_{1}$ +\end_inset + + +\emph default +, +\family default +... +\family typewriter +> +\family default +, donde los +\family typewriter +T +\begin_inset Formula $_{i}$ +\end_inset + + +\family default + son los tipos parámetros y deben ser compatibles con todos los +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default +, si bien en la construcción se pueden omitir los parámetros con la sintaxis + +\family typewriter +\emph on +NombreClase +\emph default +<> +\family default +. + En la declaración de variables los +\family typewriter +\emph on +T +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + se pueden cambiar por +\family typewriter +? extends +\emph on +E +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + ( +\series bold +tipo comodín +\series default +) para indicar que se permite cualquier tipo compatible con +\family typewriter +\emph on +E +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default +, o +\family typewriter +? super +\emph on +S +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + para cualquier tipo con el que +\family typewriter +\emph on +S +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + sea compatible. +\end_layout + +\begin_layout Standard +También podemos declarar un tipo genérico sin especificar +\begin_inset Quotes cld +\end_inset + + +\family typewriter +< +\family default +... +\family typewriter +> +\family default + +\begin_inset Quotes crd +\end_inset + + con los parámetros de tipo ( +\series bold +tipo puro +\series default +), en cuyo caso equivale a parametrizarlo a +\family typewriter +Object +\family default + (salvo genericidad restringida), si bien esto no es recomendable y el compilado +r lo marca como un aviso. + La información de los tipos parámetro se pierde en tiempo de ejecución, + pues no se almacenan en el código compilado, por lo que solo podemos comprobar + si el tipo dinámico de una variable es o no del tipo puro (o compatible). + El compilador marca una conversión a un tipo genérico como un +\emph on +warning +\emph default +, pues no se puede comprobar el tipo utilizado en la parametrización, pero + podemos suprimirlo escribiendo la línea +\family typewriter +@SuppressWarnings("unchecked") +\family default + encima de la sentencia que realiza la conversión. +\end_layout + +\begin_layout Standard +Un +\series bold +método genérico +\series default + es el que en su declaración acepta uno o varios parámetros de tipo, independien +tes de los de la clase (si los hay), que pueden aparecer en la signatura + y el cuerpo del método y que se indican poniendo +\family typewriter +< +\family default +... +\family typewriter +> +\family default + (sintaxis como en las clases genéricas) antes del tipo de retorno (o de + +\family typewriter +void +\family default +). + Se llaman como un método normal, y los tipos se infieren a partir de sus + parámetros o la variable a la que se asigna el resultado. +\end_layout + +\begin_layout Section +Ordenación +\end_layout + +\begin_layout Standard +Las clases e interfaces que se definen a continuación están todas en +\family typewriter +java.util +\family default +, salvo si se indica lo contrario. + Se omite cualquier declaración, o parte de declaración, que no es relevante. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.lang.Comparable<T> +\family default + Una clase es +\series bold +comparable +\series default + si implementa esta interfaz, y si dice que tiene un +\series bold +orden natural +\series default +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +compareTo(T) +\family default + Devuelve un entero positivo si el objeto receptor es mayor, negativo si + es menor y 0 si es igual al parámetro. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Comparator<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +compare(T, +\begin_inset space ~ +\end_inset + +T) +\family default + Devuelve un entero positivo si el primer parámetro es mayor, ne +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ga +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ti +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +vo si es menor y 0 si es igual al segundo. +\end_layout + +\end_deeper +\begin_layout Section +Iteradores +\end_layout + +\begin_layout Standard +Permiten recorrer una secuencia de elementos. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Iterator<E> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +hasNext() +\family default +\series default + Indica si quedan elementos en la iteración. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +next() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve (y +\begin_inset Quotes fld +\end_inset + +consume +\begin_inset Quotes frd +\end_inset + +) el siguiente elemento en la iteración. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +default +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +remove() +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, IllegalStateException +\end_layout + +\end_inset + +Elimina de la colección el último elemento devuelto por el ite +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ra +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dor, y sólo puede ser llamado una vez después de cada llamada a +\family typewriter +next() +\family default +. + Si la colección se modifica mientras el iterador está en progreso, su comportam +iento es no especificado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.lang.Iterable<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +Iterator<T> +\begin_inset space ~ +\end_inset + +iterator() +\family default + Devuelve un iterador sobre elementos de tipo +\family typewriter +T +\family default +. +\end_layout + +\end_deeper +\begin_layout Standard +Dado un objeto +\family typewriter +\emph on +c +\family default +\emph default + que implementa la interfaz +\family typewriter +Iterable< +\emph on +T +\emph default +> +\family default +, la sintaxis +\family typewriter +for ( +\emph on +T +\emph default + +\emph on +e +\emph default + : +\emph on +c +\emph default +) +\emph on +stmt +\family default +\emph default + equivale a: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +Iterator _it = +\emph on +c +\emph default +.iterator(); +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Extra indentation is because this'll typically be inside a method inside + a class, not (just) for centering. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +while (_it.hasNext()) { +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\emph on +T e +\emph default + = _it.next(); +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\emph on +stmt +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Esto también se puede hacer si +\family typewriter +\emph on +c +\family default +\emph default + es de tipo +\family typewriter +\emph on +T +\emph default +[] +\family default +, en cuyo caso se hace recorrido secuencial. +\end_layout + +\begin_layout Section +Colecciones +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Collection<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Iterable<E> +\family default +\series default + Colección de elementos. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +boolean containsAll(Collection<?>) throws ClassCastException, NullPointerExcepti +on +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean removeAll(Collection<?>) throws UnsupportedOperationException, ClassCast +Exception, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean retainAll(Collection<?>) throws UnsupportedOperationException, ClassCast +Exception, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Object[] toArray() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<T> T[] toArray(T[]) throws ArrayStoreException, NullPointerException +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +int +\begin_inset space ~ +\end_inset + +size() +\family default +\series default + Devuelve el número de elementos en la colección, si cabe en un entero. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + Si contiene más que +\family typewriter +Integer.MAX_VALUE +\family default +, devuelve +\family typewriter +Integer.MAX_VALUE +\family default +. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +isEmpty() +\family default +\series default + Indica si la colección está vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +contains(Object) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si la colección contiene el elemento dado. + Es un error común pasar un elemento de tipo no compatible con +\family typewriter +E +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IllegalStateException +\end_layout + +\end_inset + +Se asegura de que la colección contenga el elemento especificado, indicando + si la colección ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +remove(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina una única instancia del elemento especificado de la colección, si + esta presente, indicando si la colección ha cambiado como resultado de + la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +addAll(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IllegalStateException +\end_layout + +\end_inset + +Añade a esta colección todos los elementos de otra, indicando si ha cambiado + como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +removeAll(Collection<?>) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina de essta colección todos los elementos en común con otra, indicando + si ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +clear() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException +\end_layout + +\end_inset + +Elimina todos los elementos de la colección, que quedará vacía. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +Stream<E> +\begin_inset space ~ +\end_inset + +stream() +\family default + Devuelve un flujo secuencial con esta colección como fuente. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractCollection<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Collection<E> +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract Iterator<E> iterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +public abstract int size() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +toString() +\family default + Devuelve una representación como cadena de caracteres de la colección como + una lista de sus elementos. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +List<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Collection<E> +\family default +\series default + Lista, colección ordenada o secuencia. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +int indexOf(Object) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int lastIndexOf(Object) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ListIterator<E> listIterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ListIterator<E> listIterator(int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +List<E> subList(int, int) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Añade un elemento al final de la lista y devuelve +\family typewriter +true +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +E>) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, UnsupportedOperationException, IllegalArgumentExcepti +on +\end_layout + +\end_inset + +Ordena una lista de acuerdo a un comparador. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +equals(Object) +\family default + Indica si el otro objeto es una lista del mismo tamaño y con los mismos + elementos en las mismas posiciones. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +get(int) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IndexOutOfBoundsException +\end_layout + +\end_inset + +Devuelve el elemento en una determinada posición en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +E +\begin_inset space ~ +\end_inset + +set(int, +\begin_inset space ~ +\end_inset + +E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Sustituye el elemento en la posición dada, en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +, por el elemento dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +add(int, +\begin_inset space ~ +\end_inset + +E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Inserta el elemento dado en la posición dada, en el rango +\begin_inset Formula $[0,\mathtt{size()}]$ +\end_inset + +, moviendo todos los elementos posteriores una posición a la derecha. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +E +\begin_inset space ~ +\end_inset + +remove(int) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Elimina el elemento en la posición especificada, en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +, moviendo todos los elementos posteriores una posición a la izquierda. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public abstract class AbstractList<E> extends AbstractCollection<E> implements + List<E> +\end_layout + +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract E get(int) +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractSequentialList<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +AbstractList<E> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract ListIterator<E> listIterator(int) +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class LinkedList<E> extends AbstractSequentialList<E> implements + List<E>, Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Lista doblemente enlazada, con la que podemos gestionar pilas y colas. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +LinkedList() +\family default +\series default + Construye una lista vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +LinkedList(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye una lista con los elementos de la colección dada, en el orden + en que los devuelve el iterador. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +getFirst() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Devuelve el primer elemento. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +getLast() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Devuelve el último elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +removeFirst() +\series default + +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Elimina y devuelve el primer elemento. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +removeLast() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default +Elimina y devuelve el último elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +addFirst(E) +\family default +\series default + Inserta un elemento al principio. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +addLast(E) +\family default + Inserta un elemento al final. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +ArrayList<E> +\begin_inset space ~ +\end_inset + +expands +\begin_inset space ~ +\end_inset + +AbstractList<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +List<E>, +\begin_inset space ~ +\end_inset + +Cloneable +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, RandomAccess, Serializable +\end_layout + +\end_inset + +Lista contigua redimensionable. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +ArrayList() +\family default +\series default + Construye una lista vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +ArrayList(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye una lista con los elementos de la colección dada, en el orden + en que los devuelve el iterador. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Set<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Collection<E> +\family default +\series default + Conjunto o colección sin elementos duplicados. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Añade un elemento si no estaba ya presente, indicando si se ha añadido (si + no estaba ya presente). +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +equals(Object) +\family default +\series default + Indica si el objeto dado es un conjunto de igual longitud que este y todos + los miembros del conjunto dado están contenidos en este (o, equivalentemente, + todos los de este están en el otro). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract class AbstractSet<E> extends AbstractCollection<E> implements + Set<E> +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +HashSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +AbstractSet<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Set<E>, +\begin_inset space ~ +\end_inset + +Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Conjunto implementado por tabla de dispersión. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +HashSet() +\family default +\series default + Construye un conjunto vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +HashSet(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto con los elementos de la colección dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +SortedSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Set<E> +\family default + Conjunto totalmente ordenado, por el orden natural de +\family typewriter +E +\family default + o por un +\family typewriter +Comparator<? super E> +\family default +. + El iterador devuelve los elementos en orden ascendente. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Comparator<? super E> comparator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedSet<E> subSet(E, E) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +SortedSet<E> +\begin_inset space ~ +\end_inset + +headSet(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException, IllegalArgumentException +\end_layout + +\end_inset + +Devuelve una vista de los elementos estrictamente menores que el dado, y + que depende del original. + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Y que lanzará un +\family typewriter +IllegalArgumentException +\family default + si se intenta insertar un elemento fuera del rango. +\end_layout + +\end_inset + +Una vista es un objeto que permite acceder a otro con una interfaz algo + distinta. +\end_layout + +\begin_layout Description + +\family typewriter +SortedSet<E> +\begin_inset space ~ +\end_inset + +tailSet(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException, IllegalArgumentException +\end_layout + +\end_inset + +Devuelve una vista de los elementos estrictamente mayores que el dado, y + que depende del original. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Y que lanzará un +\family typewriter +IllegalArgumentException +\family default + si se intenta insertar un elemento fuera del rango. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +first() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve el menor elemento del conjunto. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +last() +\family default +\series bold + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve el mayor elemento del conjunto. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +NavigableSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +SortedSet<E> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +E ceiling(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Iterator<E> descendingIterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<E> descendingSet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E floor(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<E> headSet(E, boolean) throws ClassCastException, NullPointerExcept +ion, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E higher(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E lower(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E pollFirst() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E pollLast() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E subset(E, boolean, E, boolean) throws ClassCastException, NullPointerException +, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E tailSet(E, boolean) throws ClassCastException, NullPointerException, IllegalAr +gumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, + Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + + Conjunto implementado por árbol rojo-negro. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +TreeSet() +\family default +\series default + Construye un conjunto vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeSet(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto con los elementos de la colección dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeSet(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto vacío con el comparador dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Collections +\family default + Utilidades estáticas para colecciones. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Comparable<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>> +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(List<T>) +\end_layout + +\end_inset + + +\family default +\series default + Ordena una lista según el orden natural de sus elementos. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(List<T>, +\begin_inset space ~ +\end_inset + +Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\end_layout + +\end_inset + + +\family default +\series default + Ordena una lista según un comparador. +\end_layout + +\begin_layout Description + +\family typewriter +@SafeVarargs +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +addAll(Collection<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>, +\begin_inset space ~ +\end_inset + +T...) +\family default + Añade todos los elementos a la colección dada, indicando si la colección + ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +Set<T> +\begin_inset space ~ +\end_inset + +unmodifiableSet(Set<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +T>) +\family default +\series default + Devuelve una vista no modificable del conjunto dado. + Para dar acceso de solo lectura a un conjunto interno a una clase sin necesidad + de hacer una copia. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +List<T> +\begin_inset space ~ +\end_inset + +unmodifiableList(List<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve una vista no modificable de la lista dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<K,V> +\begin_inset space ~ +\end_inset + +Map<K,V> +\begin_inset space ~ +\end_inset + +unmodifiableMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Devuelve una copia no modificable del mapa dado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Arrays +\family default + Utilidades estáticas para +\emph on +arrays +\emph default +. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +@SafeVarargs +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +List<T> +\begin_inset space ~ +\end_inset + +asList(T...) +\family default + Devuelve una vista de un +\emph on +array +\emph default + como lista de tamaño fijo. +\end_layout + +\end_deeper +\begin_layout Section +Mapas +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default + Mapa o diccionario clave-valor. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +static interface Map.Entry<K,V> +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +K getKey() throws IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +V getValue() throws IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +V setValue(V) throws UnsupportedOperationException, ClassCastException, + NullPointerException, IllegalArgumentException, IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Set<Map.Entry<K,V>> entrySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +size() +\family default + Devuelve el total de asociaciones clave-valor. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +isEmpty() +\family default +\series default + Indica si el mapa es vacío. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +containsKey(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si el mapa contiene una asociación para la clave dada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +containsValue(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si el mapa contiene una asociación con el valor dado. +\end_layout + +\begin_layout Description + +\family typewriter +V +\begin_inset space ~ +\end_inset + +get(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Obtiene el valor asociado a la clave dada, o +\family typewriter +null +\family default + si el mapa no tiene asociación para la clave. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +V +\begin_inset space ~ +\end_inset + +put(K, +\begin_inset space ~ +\end_inset + +V) +\family default +\series medium + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + + +\series medium +Asocia el valor dado a la clave dada, sustituyendo la asociación anterior + para esta clave de haber alguna. +\end_layout + +\begin_layout Description + +\family typewriter +V +\begin_inset space ~ +\end_inset + +remove(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina la asociación para la clave dada, si existe. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +putAll(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K, +\begin_inset space ~ +\end_inset + +? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Copia todas las asociaciones del mapa dado al objeto receptor. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +clear() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException +\end_layout + +\end_inset + +Elimina todas las asociaciones del mapa, dejándolo vacío. +\end_layout + +\begin_layout Description + +\family typewriter +Set<K> +\begin_inset space ~ +\end_inset + +keySet() +\family default + Devuelve una vista de las claves del mapa, que depende de este. + Si el mapa se modifica mientras se itera la vista, el comportamiento es + no especificado. + Eliminar un elemento del conjunto elimina la asociación correspondiente + del mapa. +\end_layout + +\begin_layout Description + +\family typewriter +Collection<V> +\begin_inset space ~ +\end_inset + +values() +\family default + Devuelve una vista de los valores del mapa, que depende de este. + Si el mapa se modifica mientras se itera la vista, el comportamiento es + no especificado. + Eliminar un elemento de la colección elimina la asociación correspondiente + del mapa. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +default +\begin_inset space ~ +\end_inset + +V +\begin_inset space ~ +\end_inset + +getOrDefault(Object, +\begin_inset space ~ +\end_inset + +V) +\family default +\series default + Devuelve el valor asociado a la clave dada, o el que se le pasa como parámetro + si no hay ninguno asociado. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +V +\begin_inset space ~ +\end_inset + +putIfAbsent(K, +\begin_inset space ~ +\end_inset + +V) +\family default + Si la clave dada no está asociada ningún valor (o está asociada a +\family typewriter +null +\family default +), la asocia al valor dado, devolviendo +\family typewriter +null +\family default + si este es el caso o su valor actual en caso contrario. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractMap<K,V> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract Set<Map.Entry<K,V>> entrySet() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, + Cloneable +\end_layout + +\end_inset + + +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Diccionario implementado por tabla de dispersión. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +HashMap() +\family default +\series default + Construye un mapa vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +HashMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Construye un mapa con las asociaciones del mapa dado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +SortedMap<K,V> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default + El iterador de +\family typewriter +keySet() +\family default + devuelve las claves en orden ascendente. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Comparator<? super K> comparator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K firstKey() throws NoSuchElementException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> headMap(K) throws ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K lastKey() throws NoSuchelementException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> subMap(K, K) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> tailMap(K) throws ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +NavigableMap<K,V> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +SortedMap<K,V> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> ceilingEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K ceilingKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<K> descendingKeySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> descendingMap() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> firstEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> floorEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K floorKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> headMap(K, boolean) throws ClassCastException, NullPointerExce +ption, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> higherEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K higherKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> lastEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> lowerEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K lowerKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<K> navigableKeySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> pollFirstEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> pollLastEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> subMap(K, boolean, K, boolean) throws ClassCastException, + NullPointerException, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> tailMap(K, boolean) throws ClassCastException, NullPointerExce +ption, IllegalArgumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, + Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Diccionario implementado por árbol rojo-negro. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +TreeMap() +\family default +\series default + Construye un mapa vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Construye un mapa con las asociaciones del mapa dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeMap(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +K>) +\family default +\series default + Construye un mapa vacío con el comparador dado. +\end_layout + +\end_deeper +\begin_layout Section +Recomendaciones +\end_layout + +\begin_layout Enumerate +En constructores y métodos públicos, especificar el tipo de retorno y tipo + de los pa +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rá +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +me +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +tros mediante la interfaz, y no la clase. +\end_layout + +\begin_layout Enumerate +Evitar el uso de +\emph on +arrays +\emph default +, pues tienen tamaño fijo, no definen las operaciones fundamentales de +\family typewriter +Object +\family default + y es necesario usar +\family typewriter +java.util.Arrays +\family default + para estas. +\end_layout + +\end_body +\end_document diff --git a/poo/n5.lyx b/poo/n5.lyx new file mode 100644 index 0000000..bcf7598 --- /dev/null +++ b/poo/n5.lyx @@ -0,0 +1,926 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Java, la sintaxis +\family typewriter +new +\emph on +Clase +\family default +\emph default +[ +\family typewriter +\emph on +<T1 +\emph default +, +\family default +... +\family typewriter +> +\family default +] +\family typewriter +( +\emph on +Arg1 +\emph default +, +\family default +... +\family typewriter +) { +\family default + ... + +\family typewriter +} +\family default + se puede usar para crear una clase anónima que herede de +\family typewriter +\emph on +Clase +\family default +\emph default +. + Una +\series bold +interfaz funcional +\series default + es una que se declara con la anotación (opcional) +\family typewriter +@FunctionalInterface +\family default + encima de la definición y que contienen un sólo método abstracto. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Las +\series bold +expresiones lambda +\series default + tienen sintaxis ( +\family typewriter +( +\family default +[ +\family typewriter +\emph on +Tipo +\family default +\emph default +] +\family typewriter + +\emph on +var +\emph default +, +\family default +... +\family typewriter +) +\family default +| +\family typewriter +\emph on +var +\family default +\emph default +) +\family typewriter + -> +\family default +( +\family typewriter +{ +\emph on +cuerpo +\emph default + } +\family default +| +\family typewriter +\emph on +expresión +\family default +\emph default +), donde +\family typewriter +\emph on +cuerpo +\family default +\emph default + es el cuerpo de una función, +\family typewriter +\emph on +expresión +\family default +\emph default + es una única expresión que equivale a +\family typewriter +{ return +\emph on +expresión +\emph default +; } +\family default + y el +\family typewriter +\emph on +Tipo +\family default +\emph default + de los argumentos normalmente se puede inferir. + Internamente son clases compatibles con las interfaces funcionales que + se requieran siempre que su signatura sea compatible con la de su único + método abstracto. + Si la expresión lambda se refiere a variables de su entorno léxico (variables + locales o elementos de la clase), las instancias de su clase asociada se + denominan +\series bold +clausuras +\series default + ( +\emph on +closures +\emph default +). +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Salvo que se indique lo contrario, las siguientes interfaces se definen + en +\family typewriter +java.util.function +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Predicate<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +test(T) +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Function<T,R> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +R +\begin_inset space ~ +\end_inset + +apply(T) +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +@FunctionalInterface +\series default + +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Supplier<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +T +\begin_inset space ~ +\end_inset + +get() +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Consumer<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +accept(T) +\end_layout + +\end_deeper +\begin_layout Standard +El paquete +\family typewriter +java.util.stream +\family default + contiene clases para soportar operaciones funcionales en flujos de elementos. + Las operaciones con flujos se dividen en operaciones +\series bold +intermedias +\series default + y +\series bold +terminales +\series default +. + Las operaciones intermedias devuelven un nuevo flujo. + Las operaciones terminales pueden atravesar el flujo para producir un resultado + o un efecto colateral. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\series default + +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.util.stream.Stream<T> +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends BaseStream<T,Stream<T>> +\end_layout + +\end_inset + +Secuencia de elementos que soporta o +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pe +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ra +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +cio +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +nes secuenciales y paralelas en agregado. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +<R,A> R collect(Collector<? super T,A,R>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<R> R collect(Supplier<R>, BiConsumer<R, ? super T>, BiConsumer<R,R>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> distinct() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> findAny() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> findFirst() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +DoubleStream flatMapToDouble(Function<? super T,? extends DoubleStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +IntStream flatMapToInt(Function<? super T,? extends IntStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +LongStream flatMapToLong(Function<? super T,? extends LongStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +void forEachOrdered(Consumer<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> limit(long) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +DoubleStream mapToDouble(ToDoubleFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +IntStream mapToInt(ToIntFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +LongStream mapToLong(ToLongFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> max(Comparator<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> min(Comparator<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean noneMatch(Predicate<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> peek(Consumer<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> reduce(BinaryOperator<T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +T reduce(T, BinaryOperator<T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<U> U reduce(U, BiFunction<U,? super T,U>, BinaryOperator<U>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> skip(long) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Object[] toArray() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<A> A[] toArray(IntFunction<A[]>) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +Stream<T> +\series default + +\begin_inset space ~ +\end_inset + +filter(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve un flujo con los elementos de este para los que se cumple el predicado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +<R> +\series default + +\begin_inset space ~ +\end_inset + +Stream<R> +\begin_inset space ~ +\end_inset + +map(Function<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +R>) +\family default + Devuelve un flujo con el resultado de aplicar la función dada a los elementos + de este. +\end_layout + +\begin_layout Description + +\family typewriter +Stream<T> +\begin_inset space ~ +\end_inset + +sorted() +\family default + Devuelve un flujo con los elementos de este, ordenados según su orden natural. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +Stream<T> +\series default + +\begin_inset space ~ +\end_inset + +sorted(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve un flujo con los elementos de este, ordenados según el comparador + dado. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +forEach(Consumer<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Realiza una acción en cada elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +long +\series default + +\begin_inset space ~ +\end_inset + +count() +\family default + Devuelve el número de elementos en el flujo. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +anyMatch(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Indica si algún elemento de este flujo cum +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ple el predicado. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +allMatch(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Indica si todos los elementos de este flujo cumplen el predicado. +\end_layout + +\end_deeper +\begin_layout Standard +Donde sea aceptable una expresión lambda también es aceptable una referencia + a un método: +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +:: +\emph on +métodoDeClase +\family default +\emph default + equivale a +\family typewriter +e -> +\emph on +Clase +\emph default +. +\emph on +métodoDeClase +\emph default +(e) +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +:: +\emph on +métodoDeInstancia +\family default +\emph default + equivale a +\family typewriter +( +\emph on +Clase +\emph default + e) -> e. +\emph on +métodoDeInstancia +\emph default +() +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +objeto +\emph default +:: +\emph on +método +\family default +\emph default + equivale a +\family typewriter +e -> +\emph on +objeto +\emph default +. +\emph on +método +\emph default +(e) +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +::new +\family default + equivale a +\family typewriter +e -> new +\emph on +Clase +\emph default +(e) +\family default +. +\end_layout + +\end_body +\end_document diff --git a/poo/n6.lyx b/poo/n6.lyx new file mode 100644 index 0000000..7a65f35 --- /dev/null +++ b/poo/n6.lyx @@ -0,0 +1,771 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La +\series bold +corrección +\series default + es la capacidad del software de cumplir con su especificación, de modo + que el incumplimiento de los requisitos de uso implica la finalización + de la ejecución. + La +\series bold +robustez +\series default + es la capacidad del software de reaccionar adecuadamente a situaciones + excepcionales (fallos de disco, red, etc.). + En Java, para esto se usan excepciones. +\end_layout + +\begin_layout Standard +Una excepción es un objeto de clase compatible con +\family typewriter +java.lang.Exception +\family default +, que podemos lanzar con la cláusula +\family typewriter +throw +\emph on +objeto +\emph default +; +\family default +. + Para capturar una excepción usamos la construcción +\family typewriter +try +\family default +– +\family typewriter +catch +\family default +, con la sintaxis: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +try { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\end_layout + +\begin_layout Plain Layout + +\family typewriter +catch ( +\emph on +Tipo var +\emph default +) { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\family default +... +\end_layout + +\begin_layout Plain Layout +[ +\family typewriter +finally { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\family default +] +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Si se lanza una excepción en el bloque +\family typewriter +try +\family default +, se comprueba el +\family typewriter +\emph on +Tipo +\family default +\emph default + en cada bloque +\family typewriter +catch +\family default + (que debería ser compatible con +\family typewriter +java.lang.Exception +\family default +) en orden y, si se encuentra uno compatible con el tipo dinámico de la + excepción, se ejecuta el interior de dicho bloque con la variable +\family typewriter +\emph on +var +\family default +\emph default + (de tipo estático +\family typewriter +\emph on +Tipo +\family default +\emph default +) asociada al objeto excepción, y decimos que la excepción ha sido capturada. + El bloque +\family typewriter +finally +\family default +, si existe, se ejecuta tanto si la excepción es capturada como si no. + Finalmente, si la excepción no es capturada, el resultado es como si la + propia construcción lanzara la excepción. +\end_layout + +\begin_layout Standard +Las siguientes clases se definen en +\family typewriter +java.lang +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Throwable +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Superclase de todos los errores y excepciones en el lenguaje. + Sólo instancias de esta clase (o compatibles) son lanzadas por la máquina + virtual de Java o la cláusula +\family typewriter +throw +\family default +. + Solo esta clase o compatibles pueden ser el tipo de argumento de una cláusula + +\family typewriter +catch +\family default +. + +\family typewriter +Throwable +\family default + y cualquier clase compatible con +\family typewriter +Throwable +\family default + que no lo es también con +\family typewriter +RuntimeException +\family default + o +\family typewriter +Error +\family default + se consideran excepciones comprobadas. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +getMessage() +\family default + Deuvuelve la cadena de mensaje de este lanzable. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +printStackTrace() +\family default + Imprime este lanzable y su +\emph on +backtrace +\emph default + (estado de la pila de llamadas en el momento de crear la excepción) al + flujo de error estándar. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Exception +\family default + Forma de +\family typewriter +Throwable +\family default + que indica condiciones que una aplicación razonable querría capturar. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +Exception(String) +\family default + Construye una excepción con el mensaje especificado. +\end_layout + +\end_deeper +\begin_layout Standard +Si se lanza una excepción fuera de un bloque +\family typewriter +try +\family default +, se termina la ejecución del método y el resultado es como si la llamada + a dicho método lanzara la excepción, y decimos que el método produce la + excepción. + Si un método puede producir una excepción comprobada, debemos escribir + +\family typewriter +throws +\emph on +Tipo1 +\emph default +, +\family default +... + detrás de la lista de parámetros ( +\family typewriter +( +\family default +... +\family typewriter +) +\family default +) y antes de la implementación ( +\family typewriter +{ +\family default +... +\family typewriter +} +\family default +) o el +\family typewriter +; +\family default + para métodos abstractos, siendo +\family typewriter +\emph on +Tipo1 +\emph default +, +\family default +... + una lista de excepciones tales que cualquier excepción comprobada que pueda + producir el método sea de tipo compatible con uno de la lista. + Entonces se considera que el método puede producir un error de cualquier + tipo de la lista. + Si el método +\family typewriter +\series bold +main +\family default +\series default + de la aplicación produce una excepción, el programa termina con error. +\end_layout + +\begin_layout Standard +Si bien las excepciones permiten aportar robustez, también permiten controlar + el uso correcto de operaciones, notificando de errores de programación. + Para ello se usan las +\series bold +excepciones en tiempo de ejecución +\series default +, compatibles con +\family typewriter +java.lang.RuntimeException +\family default +, y que en general no se tratan. + La máquina virtual también puede lanzar excepciones de este tipo. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +RuntimeException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Exception +\family default +\series default + Superclase de las excepciones que pue +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +den ser lanzadas durante la operación normal de la máquina virtual de Java. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +NullPointerException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada cuando una a +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pli +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ca +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ción intenta usar +\family typewriter +null +\family default + cuando se requiere un objeto. + Las aplicaciones deberían lanzar instancias de esta clase para otros usos + no permitidos de +\family typewriter +null +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IllegalArgumentException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada para in +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +di +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +car que a un método se le ha pasado un argumento inapropiado. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IllegalStateException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Señala que el entorno o la aplicación no está en un estado apropiado para + la operación solicitada. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +NoSuchElementException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada por algunos métodos accesores para indicar que el elemento solicitado + no existe. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +ClassCastException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada para indicar que el código ha intentado hacer +\emph on +casting +\emph default + a un objeto hacia una subclase a la que no pertenece. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IndexOutOfBoundsException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException +\end_layout + +\end_inset + + +\family default +\series default + Lanzada para indicar que se ha accedido a un +\emph on +array +\emph default + con un índice no permitido. +\end_layout + +\begin_layout Standard +El +\series bold +diseño por contrato +\series default + es un modo de proceder ante los errores de programación basado en que las + operaciones tienen requisitos de uso o +\series bold +precondiciones +\series default + con los que se considera un error no cumplir, y si no se cumplen el programa + no debe continuar. +\end_layout + +\end_body +\end_document diff --git a/poo/na.lyx b/poo/na.lyx new file mode 100644 index 0000000..9b4af57 --- /dev/null +++ b/poo/na.lyx @@ -0,0 +1,1500 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section* + +\family typewriter +java.io +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Closeable +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends AutoCloseable +\end_layout + +\end_inset + + Fuente o destino de datos que puede ser cerrado. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +close() +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IOException +\end_layout + +\end_inset + +Cierra este flujo y libera cualquier recurso asociado con él. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +FileNotFoundException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Indica que ha fallado un intento de abrir el fichero con nombre especificado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IOException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Exception +\family default +\series default + Señaliza una excepción de E/S. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +IOException(String) +\family default + Construye una +\family typewriter +IOException +\family default + con el mensaje especificado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + + +\series default +implements +\begin_inset space ~ +\end_inset + +Closeable +\family default + Representa un flujo de entrada de bytes. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract int read() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +PrintStream +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends FilterOutputStream +\end_layout + +\end_inset + + +\family default + Añade a otro flujo de salida la habilidad de imprimir representaciones + de datos convenientemente. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +println(String) +\family default + Imprime una cadena y termina la línea. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +PrintWriter +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends Writer +\end_layout + +\end_inset + +Imprime representaciones de objetos con formato a un flujo de salida de + texto. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract class Writer() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void close() throws IOException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void flush() throws IOException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void write(char[],int,int) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +PrintWriter(String) +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +FileNotFoundException +\family default +\series default + Construye un nuevo +\family typewriter +PrintWriter +\family default + con el nombre de fichero indicado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +checkError() +\family default +\series default + Comprueba su estado de error. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +println(String) +\family default + Imprime una cadena y termina la línea. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.lang +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Integer +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +toHexString(int) +\family default + Devuelve una representación textual del argumento entero como entero sin + signo en base 16, una cadena de dígitos ASCII en hexadecimal sin +\family typewriter +0 +\family default +s extra a la izquierda. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Math +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +PI +\family default +\series default + El valor de doble precisión más cerca que cualquier otro a +\begin_inset Formula $\pi$ +\end_inset + +. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +sqrt(double) +\family default + Devuelve la raíz cuadrada positiva de un valor correctamente redondeada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +pow(double, +\begin_inset space ~ +\end_inset + +double) +\family default +\series default + Devuelve el primer argumento elevado a la potencia del segundo. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +CharSequence +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable, Comparable<String> +\end_layout + +\end_inset + +Representa cadenas inmutables de caracteres. + Todos los literales de cadena en programas Java, como +\family typewriter +" +\emph on +abc +\emph default +" +\family default +, son instancias de esta clase. + El lenguaje proporciona soporte especial para el operador de concatenación + ( +\family typewriter ++ +\family default +), y para conversión de otros objetos a cadenas al concatenar. + Las conversiones se implementan mediante el método +\family typewriter +toString +\family default +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public interface CharSequence +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +char charAt(int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +int length() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +CharSequence subSequence(int, int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +String toString() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +contains(CharSequence) +\family default + Indica si esta cadena contiene la secuencia de caracteres especificada. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +int +\begin_inset space ~ +\end_inset + +length() +\family default + Devuelve el número de unidades de código Unicode en la cadena. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +System +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + +in +\family default +\series default + El flujo de entrada estándar. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +PrintStream +\begin_inset space ~ +\end_inset + +out +\family default + El flujo de salida estándar. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.net +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +MalformedURLException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Indica una URL mal formada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +URL +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Representa una URL. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +URL(String) +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +MalformedURLException +\family default + Construye una URL a partir de su representación como cadena. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + +openStream() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Abre una conexión a la URL y devuelve un +\family typewriter +InputStream +\family default + para leer de esta. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.time +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +LocalTime +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +ChronoLocalDate +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Temporal, TemporalAdjuster, Serializable +\end_layout + +\end_inset + +Fecha sin zona horaria. + Inmutable. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +LocalDate +\begin_inset space ~ +\end_inset + +now() +\family default + Obtiene la fecha actual del reloj del sistema en la zona horaria por defecto. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +LocalDate +\begin_inset space ~ +\end_inset + +of(int, +\begin_inset space ~ +\end_inset + +int, +\begin_inset space ~ +\end_inset + +int) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws DateTimeException +\end_layout + +\end_inset + +Obtiene una instancia de +\family typewriter +LocalDate +\family default + desde un año, mes y día, respectivamente. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.time.chrono +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +ChronoLocalDate +\family default +\series medium + +\begin_inset Note Greyedout +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDate> +\end_layout + +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public interface Temporal extends TemporalAccessor +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +boolean isSupported(TemporalUnit) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +Temporal plus(long,TemporalUnit) throws DateTimeException, UnsupportedTemporalEx +ception, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +long until(Temporal, TemporalUnit) throws DateTimeException, UnsupportedTemporal +TypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +Temporal with(TemporalField, long) throws DateTimeException, UnsupportedTemporal +TypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default boolean isSupported(TemporalUnit) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default Temporal plus(long,TemporalUnit) throws DateTimeException, ArithmeticExc +eption +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default Temporal with(TemporalField, long) throws DateTimeException, Unsupported +TemporalTypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Chronology getChronology() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int lengthOfMonth() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +String toString() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ChronoPeriod until(ChronoLocalDate) throws DateTimeException, ArithmeticExceptio +n +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isAfter(ChronoLocalDate) +\family default + Comprueba si esta fecha es posterior a la especificada. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isBefore(ChronoLocalDate) +\family default + Comprueba si es anterior. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isEqual(ChronoLocalDate) +\family default + Comprueba si es igual. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.util +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Random +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Genera números pseudoaleatorios. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\series default + +\begin_inset space ~ +\end_inset + +Random() +\family default + Construye un generador de números aleatorios. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +int +\begin_inset space ~ +\end_inset + +nextInt(int) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IllegalArgumentException +\end_layout + +\end_inset + +Devuelve un valor entero pseudoaleatorio distribuido uniformemente entre + 0 (inclusive) y el valor especificado (exclusive), extraído de la secuencia + del generador. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Scanner +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Closeable +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Iterator<String> +\end_layout + +\end_inset + +Escáner de texto simple. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +Scanner(InputStream) +\family default + Construye un escáner que produce valores del flujo de entrada especificado. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +nextLine() +\family default + Devuelve el resto de la línea actual, excluyendo cualquier separador de + línea al final. + La posición se establece al principio de la siguiente línea. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +UUID +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable, Comparable<UUID> +\end_layout + +\end_inset + +Representa unn identificador único universal. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +UUID +\begin_inset space ~ +\end_inset + +randomUUID() +\family default + Obtiene un UUID usando un generador de números pseudoaleatorios. +\end_layout + +\end_deeper +\end_body +\end_document diff --git a/poo/nb.lyx b/poo/nb.lyx new file mode 100644 index 0000000..19478fe --- /dev/null +++ b/poo/nb.lyx @@ -0,0 +1,743 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Eclipse, todo el código fuente o compilado se encuentra en un directorio + llamado +\series bold +espacio de trabajo +\series default +. + Para importar un proyecto, movemos su directorio al espacio de trabajo + y, desde Eclipse, usamos +\begin_inset Quotes fld +\end_inset + +Archivo +\begin_inset Formula $\rightarrow$ +\end_inset + +Importar +\begin_inset Formula $\rightarrow$ +\end_inset + +General +\begin_inset Formula $\rightarrow$ +\end_inset + +Proyectos existentes en el espacio de trabajo +\begin_inset Quotes frd +\end_inset + +, donde nos pide el directorio raíz introducimos la ruta del espacio de + trabajo, pulsamos +\begin_inset Quotes fld +\end_inset + +Examinar +\begin_inset Quotes frd +\end_inset + + y, en el panel inferior +\begin_inset Quotes fld +\end_inset + +Proyectos +\begin_inset Quotes frd +\end_inset + +, seleccionamos el que deseamos importar, y pulsamos +\begin_inset Quotes fld +\end_inset + +Finalizar +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +El código fuente Java se guarda en ficheros +\family typewriter +\emph on +Clase +\emph default +.java +\family default + que, al compilarlos, se convierten en ficheros compilados o de +\emph on +bytecode +\emph default + +\family typewriter +\emph on +Clase +\emph default +.class +\family default +, uno por clase. + Para ejecutar un programa usamos el comando +\family typewriter +java [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +CLASE +\family default +\emph default +, donde +\family typewriter +\emph on +CLASE +\family default +\emph default + es la ruta completa de la clase principal. + Las clases se buscan según un +\emph on +classpath +\emph default +, una lista de directorios (o ficheros com +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pri +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +mi +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dos) separados por +\family typewriter +; +\family default +, de forma que en uno de ellos debe haber un fichero de +\emph on +bytecode +\emph default + cuya ruta relativa al directorio debe ser el resultado de cambiar los separador +es +\family typewriter +. + +\family default + en la ruta completa de la clase por +\family typewriter +/ +\family default + y añadir al final la extensión +\family typewriter +.class +\family default +. + El +\emph on +classpath +\emph default + se indica al comando con la opción +\family typewriter +-cp +\emph on +CLASSPATH +\family default +\emph default +; si no aparece, se toma de la variable de entorno +\family typewriter +CLASSPATH +\family default +, y si esta tampoco existe, se asume que es +\begin_inset Quotes fld +\end_inset + + +\family typewriter +. +\family default + +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +Un fichero JAR es un comprimido con extensión (normalmente) +\family typewriter +.jar +\family default + que contiene los ficheros compilados y un +\series bold +manifiesto +\series default + que describe el contenido. + El manifiesto se encuentra en +\family typewriter +META-INF/MANIFEST.MF +\family default + dentro del comprimido, y suele tener el siguiente aspecto: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +Class-Path: +\emph on +ELEMENTO +\emph default + +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Main-Class: +\emph on +RUTA_CLASE +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Donde la entrada +\family typewriter +Class-Path +\family default + indica el +\emph on +classpath +\emph default + como lista separada por espacios en la que +\family typewriter +. + +\family default + indica el propio fichero y las rutas relativas que no comienzan con +\family typewriter +. + +\family default + lo son respecto al directorio donde se encuentra el comprimido. + +\family typewriter +Main-Class +\family default + indica el nombre completo de la clase principal. + Esto permite ejecutar un programa en Java con el comando +\family typewriter +java -jar +\emph on +fichero.jar +\family default +\emph default +, o abriendo el fichero desde un explorador de ficheros. +\end_layout + +\begin_layout Standard +Si tenemos una biblioteca en un fichero JAR que queremos usar en nuestro + proyecto, creamos dentro una carpeta +\family typewriter +lib +\family default +, copiamos el comprimido dentro junto con su documentación JavaDoc (descomprimid +a) y, dentro de Eclipse, pulsamos F5 para actualizar el contenido de +\family typewriter +lib +\family default +. + Pulsamos el fichero de la biblioteca con el botón derecho del ratón, usamos + +\begin_inset Quotes fld +\end_inset + +Vía de acceso de construcción +\begin_inset Formula $\rightarrow$ +\end_inset + +Añadir a la vía de construcción +\begin_inset Quotes frd +\end_inset + + y aparece una sección +\begin_inset Quotes fld +\end_inset + +Li +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +bre +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rí +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +as referidas +\begin_inset Quotes frd +\end_inset + + con la biblioteca añadida. + Pulsamos aquí con el botón derecho del ratón, en +\begin_inset Quotes fld +\end_inset + +Propiedades +\begin_inset Formula $\rightarrow$ +\end_inset + +Ubicación del JavaDoc +\begin_inset Formula $\rightarrow$ +\end_inset + +Vía de acceso de ubicación JavaDoc +\begin_inset Formula $\rightarrow$ +\end_inset + +Examinar +\begin_inset Quotes frd +\end_inset + + seleccionamos el directorio con la documentación, y pulsamos +\begin_inset Quotes fld +\end_inset + +Validar +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +Para generar un archivo JAR de nuestro proyecto, usamos +\begin_inset Quotes fld +\end_inset + +Archivo +\begin_inset Formula $\rightarrow$ +\end_inset + +Exportar +\begin_inset Formula $\rightarrow$ +\end_inset + +Java +\begin_inset Quotes frd +\end_inset + + y podemos elegir +\begin_inset Quotes fld +\end_inset + +Archivo JAR +\begin_inset Quotes frd +\end_inset + + para empaquetar una biblioteca (sin clase principal), +\begin_inset Quotes fld +\end_inset + +Archivo JAR ejecutable +\begin_inset Quotes frd +\end_inset + + para un ejecutable o +\begin_inset Quotes fld +\end_inset + +JavaDoc +\begin_inset Quotes frd +\end_inset + + para extraer la documentación JavaDoc. +\end_layout + +\begin_layout Standard +Si elegimos la segunda opción, tenemos las opciones: +\end_layout + +\begin_layout Itemize + +\emph on +Launch configuration +\emph default +: Para elegir la clase principal de entre las posibles. +\end_layout + +\begin_layout Itemize + +\emph on +Export destination +\emph default +: Dónde queremos que se guarde el fichero JAR. +\end_layout + +\begin_layout Itemize + +\emph on +Library handling +\emph default +: +\begin_inset Quotes fld +\end_inset + + +\emph on +Extract required libraries into generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + descomprime los ficheros JAR de las bibliotecas e introduce las clases + en el JAR de salida. + +\begin_inset Quotes fld +\end_inset + + +\emph on +Package required libraries into generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + guarda los propios ficheros JAR de las bibliotecas dentro del nuestro. + +\begin_inset Quotes fld +\end_inset + + +\emph on +Copy required libraries into a sub-folder next to the generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + crea un directorio junto al fichero JAR donde mete las bibliotecas, que + añade como dependencias en el +\family typewriter +Class-Path +\family default + del manifiesto. +\end_layout + +\begin_layout Standard +JavaDoc es una forma de generar documentación de código Java a partir de + comentarios. + Para ello, encima de cada clase, interfaz, etc., método o incluso paquete, + creamos un comentario como el siguiente: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +/** +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\emph on +Descripción. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @param +\emph on +nombre +\emph default + +\emph on +Descripción del parámetro +\begin_inset Quotes fld +\end_inset + +nombre +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @return +\emph on +Valor devuelto. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @throws +\emph on +Tipo Significado si el método lanza una excepción del Tipo dado. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @seeAlso +\emph on +Clase,método,etc. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +*/ +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Cualquier parte puede omitirse (de hecho muchas son específicas para métodos), + y puede usarse código HTML o marcadores propios de JavaDoc (por ejemplo, + para enlazar a otra clase o método). + Si un método redefine a otro sin cambiar la semántica, podemos usar +\family typewriter +/** {@inheritDoc} */ +\family default + para heredar la documentación. +\end_layout + +\end_body +\end_document |
