<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki2.dcc.uchile.cl/cc3301/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki2.dcc.uchile.cl/cc3301/feed.php">
        <title>Wiki CC3301</title>
        <description></description>
        <link>https://wiki2.dcc.uchile.cl/cc3301/</link>
        <image rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/_media/logo.png" />
       <dc:date>2026-04-04T04:42:56+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/archivos?rev=1567518790&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/arreglos?rev=1474981350&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/bits?rev=1521723470&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/compilacion?rev=1409838128&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/cvsjava?rev=1583711266&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/estructuras?rev=1443643415&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/funciones?rev=1346029297&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/funciones2?rev=1411594583&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/introduccion?rev=1583701507&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/introduccion2?rev=1583797481&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/perl?rev=1354032578&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/principios?rev=1664283683&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/procesos?rev=1531404036&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/punteros?rev=1632341264&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/senales?rev=1479993222&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/setjmp?rev=1479819360&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/shell?rev=1415058711&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/sockets-jo?rev=1534424686&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/sockets-opt?rev=1534424673&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/start?rev=1416055446&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/strings?rev=1427806226&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/temario?rev=1632790863&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/threads-opt?rev=1530021452&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/threads?rev=1530835441&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/tipos?rev=1584488311&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/unix-es?rev=1479215725&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/unix-historia?rev=1411949149&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/varargs?rev=1460639643&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki2.dcc.uchile.cl/cc3301/variables?rev=1407342003&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki2.dcc.uchile.cl/cc3301/_media/logo.png">
        <title>Wiki CC3301</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/</link>
        <url>https://wiki2.dcc.uchile.cl/cc3301/_media/logo.png</url>
    </image>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/archivos?rev=1567518790&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-09-03T13:53:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>archivos</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/archivos?rev=1567518790&amp;do=diff</link>
        <description>Archivos

Todas la funciones de acceso a archivos requieren incluir:
#include &lt;stdio.h&gt;
Para operar con archivos se requiere declarar un puntero a un descriptor de archivo:
FILE *in, *out;  /* file pointer */
Antes de leer o escribir hay que abrir el archivo.  La excepción corresponde a la
entrada estándar, salida estándar y salida estándar de errores que ya están abiertos.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/arreglos?rev=1474981350&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-27T13:02:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>arreglos</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/arreglos?rev=1474981350&amp;do=diff</link>
        <description>Arreglos

En realidad C no posee verdaderos arreglos como los de Java.  En C un arreglo de n elementos de un tipo T corresponde a un puntero al comienzo de un área de memoria que contiene n variables consecutivas de tipo T.  De modo que lo que se vió en el capítulo sobre punteros es el 90% de lo que se puede escribir sobre arreglos.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/bits?rev=1521723470&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-03-22T12:57:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bits</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/bits?rev=1521723470&amp;do=diff</link>
        <description>Operaciones con bits

Operadores de bits
 Símbolo  Función  latencia (ciclos)  significado   &amp;   and   1   y bit a bit   |   or   1   o bit a bit   ^   xor   1   o exclusivo bit a bit   &lt;&lt;   shift left   1   desplazamiento a la izquierda   &gt;&gt;   shift right</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/compilacion?rev=1409838128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-09-04T13:42:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compilacion</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/compilacion?rev=1409838128&amp;do=diff</link>
        <description>Etapas de la Compilación

La compilación de un programa en C pasa por varias etapas desde
que se tienen los fuentes escritos en C hasta generar el archivo
binario directamente ejecutable por la máquina.

Todas estas etapas son gatilladas directamente por el compilador
(por ejemplo gcc), pero algunas de ellas implican lanzar otros
procesos como el preprocesador, el ensamblador o el linker.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/cvsjava?rev=1583711266&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-03-08T23:47:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cvsjava</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/cvsjava?rev=1583711266&amp;do=diff</link>
        <description>Comparación entre C y Java

Generalidades

	*  Los archivos en C llevan las extensión &#039;.c&#039; mientras que en Java &#039;.java&#039;.
	*  El compilador de C (comandos gcc o cc) produce archivos con instrucciones de máquina en binario que son directamente ejecutables por la máquina.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/estructuras?rev=1443643415&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-09-30T20:03:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>estructuras</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/estructuras?rev=1443643415&amp;do=diff</link>
        <description>Estructuras

Una estructura (o record) agrupa a un conjunto de campos.


  #include &lt;stdio.h&gt;
  /* Definición de la estructura */
  struct punto {
    float x;
    float y;
  };

  int main() {       
    /* Declaraciones de variables locales */
    struct punto u, v;
    struct punto z={1.0, -2.5};
        
    /* Acceso a componentes */
    z.x=2.0;
    printf(&quot;z=(%f, %f)\n&quot;, z.x, z.y);
    return 0;
  }</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/funciones?rev=1346029297&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2012-08-27T01:01:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>funciones</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/funciones?rev=1346029297&amp;do=diff</link>
        <description>Punteros a funciones

No existen variables de tipo “función”, pero es posible tener una variable que es un puntero a una función. Esto es especialmente útil como parámetros para funciones.  El siguiente es un ejemplo de un función de ordenamiento genérico,
es decir permite ordenar objetos de acuerdo a un criterio definido por una función que se se recibe como parámetro:</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/funciones2?rev=1411594583&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-09-24T21:36:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>funciones2</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/funciones2?rev=1411594583&amp;do=diff</link>
        <description>Punteros a funciones

No existen variables de tipo “función”, pero es posible tener una variable que es un puntero a una función. Esto es especialmente útil como parámetros para funciones.  El siguiente es un ejemplo de un función de ordenamiento genérico,
es decir permite ordenar objetos de acuerdo a un criterio definido por una función que se se recibe como parámetro:</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/introduccion?rev=1583701507&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-03-08T21:05:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>introduccion</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/introduccion?rev=1583701507&amp;do=diff</link>
        <description>Programa de curso

Programa de curso:

&lt;http://www.dcc.uchile.cl/docs/2010/CC3301_2009-2-ADD_2010.pdf&gt;

Historia

	*  En los 50&#039;s nace Fortran, el primer lenguaje de programación “de alto nivel”.  El objetivo era bastante modesto, ya que solo se buscaba poder escribir fórmulas algebraicas cómodamente sin tener que programarlas en lenguaje ensamblador.  Sin embargo todavía no hay while ni if/else: se usa if</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/introduccion2?rev=1583797481&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-03-09T23:44:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>introduccion2</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/introduccion2?rev=1583797481&amp;do=diff</link>
        <description>Introducción

¿Qué es la programación de software de sistemas? (fuente: wikipedia)

La alternativa es la programación de software de aplicaciones que busca producir programas que proveen servicios al usuario directamente.  Por ejemplo un procesador de texto como word, un navegador para la web como chrome, un editor de fotografías como photoshop, etc.  En cambio el software de sistemas busca producir programas o plataformas que:</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/perl?rev=1354032578&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2012-11-27T16:09:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>perl</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/perl?rev=1354032578&amp;do=diff</link>
        <description>Programación en Perl

Este capítulo está muy bien explicado en este
tutorial de perl.  Sobre este tutorial estarán
basadas las clases de cátedra de Perl.

Si el enlace no está vivo, ésta es una copia local:

	*  Introducción
	*  Tipos de datos
	*  Control de flujo
	*  Perl un poco más a fondo
	*  Objetos en Perl (opcional, no entra en el examen)</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/principios?rev=1664283683&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-27T13:01:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>principios</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/principios?rev=1664283683&amp;do=diff</link>
        <description>Ejemplo de programa en C

El programa de más abajo muestra los primeros n números de la serie de Fibonacci.  El programa se encuentra almacenado en el archivo fib.c:


// fib.c: Calcula los primeros n numeros de fibonacci

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(int argc, char *argv[]) {
  int n= atoi(argv[1]);
  int prev= 0;
  printf(&quot;f0= 0\n&quot;);
  int curr= 1;
  int next;
  printf(&quot;f1= 1\n&quot;);
  for (int i= 2; i&lt;n; i++) {
    next= prev+curr;
    printf(&quot;f%d= %d\n&quot;, i, next);
    prev= …</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/procesos?rev=1531404036&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-12T14:00:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>procesos</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/procesos?rev=1531404036&amp;do=diff</link>
        <description>Procesos

Un proceso se crea con la llamada al sistema fork(2). Esto crea un clon del proceso actual, pero cada proceso resultante sabe si él es el padre o el hijo.

	*  Al hijo se le asigna un pid (process id) único.
	*  La llamada fork() retorna 2 veces: una vez en el padre y otra en el hijo.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/punteros?rev=1632341264&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-22T20:07:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>punteros</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/punteros?rev=1632341264&amp;do=diff</link>
        <description>Punteros

Además del identificador de las variables globales o automáticas, también se puede identificar una variable por su dirección o referencia.  Corresponde a la dirección del primer byte que ocupa en memoria.  Es decir la menor de las direcciones de los bytes que conforman la variable.  En C es posible obtener la dirección de cualquier variable usando el operador unario de prefijo &#039;&amp;&#039;.  Para que sea útil esta dirección, se requiere almacenarla en alguna variable.  Estas variables se denomi…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/senales?rev=1479993222&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-11-24T13:13:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>senales</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/senales?rev=1479993222&amp;do=diff</link>
        <description>Señales

Las señales informan a un proceso cuando ha ocurrido un evento.  Los eventos pueden ser síncronos (p.ej. errores)
o asíncronos (p.ej. terminación de otro proceso).  Un proceso tiene que realizar una acción en respuesta a
la señal.  Durante el tiempo entre que la señal se activa y el proceso la atiende se dice que la señal está pendiente.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/setjmp?rev=1479819360&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-11-22T12:56:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setjmp</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/setjmp?rev=1479819360&amp;do=diff</link>
        <description>setjmp/longjmp

C no posee excepciones como Java (o C++).  Un efecto parecido se
puede lograr con setjmp y longjmp.  La primera función marca
un lugar de retorno.  La segunda función realiza un salto
de una función a otra función más abajo en la pila de llamadas
a funciones.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/shell?rev=1415058711&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-11-03T23:51:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>shell</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/shell?rev=1415058711&amp;do=diff</link>
        <description>Programación en el shell

Este capítulo está excelentemente explicado en los
apuntes de Patricio Poblete en la sección
shell.

A esta sección solo hay que agregar que el shell permite definir
funciones, que en la práctica se comportan como nuevos comandos.
Estos comandos son más eficientes que un nuevo archivo de comandos
porque cuando se lanzan no crean un nuevo proceso, si no que
son interpretados por el mismo shell en donde se lanzan.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/sockets-jo?rev=1534424686&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-16T13:04:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sockets-jo</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/sockets-jo?rev=1534424686&amp;do=diff</link>
        <description>jsockets: clientes/servidores de red

Baje el archivo jsockets4.tgz que contiene
los programas de la primera parte de este capítulo:

	*  jsocket.h
	*  libjsocket.c
	*  server_echo.c
	*  client_echo.c
	*  client_echo2.c
	*  server_echo2.c
	*  server_echo2.5.c
	*</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/sockets-opt?rev=1534424673&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-08-16T13:04:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sockets-opt</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/sockets-opt?rev=1534424673&amp;do=diff</link>
        <description>Proxy genérico

Se trata de escribir un programa que haga de “proxy” de un servidor: se trata de instalar un intermediario que simula ser un servidor, pero que en realidad “representa” a otro servidor que ahora está en otra máquina. Es como un</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/start?rev=1416055446&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-11-15T12:44:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/start?rev=1416055446&amp;do=diff</link>
        <description>CC3301 - Programación de Software de Sistemas

Estos son los apuntes de José Piquer.  Además se encuentran disponibles en youtube
videos de las 23 clases de
José Piquer. Hay un índice del contenido en los comentarios para las clases 2, 3, 4 y 5.  El que vea
los siguientes videos sin el índice agregue un comentario con el contenido por favor.  Observen que el botón que aparece en la esquina de arriba a la izquierda en el video permite seleccionar el número de la clase que desean ver.
Pero cuidado…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/strings?rev=1427806226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-03-31T12:50:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>strings</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/strings?rev=1427806226&amp;do=diff</link>
        <description>Strings

C no posee un tipo de datos para los strings como es el caso de String en Java.  En C los strings corresponden a arreglos de caracteres o punteros a caracteres que por convención deben terminar con un byte en 0.

Por ejemplo:


  char *s= &quot;hola&quot;;
  char r[]= {&#039;h&#039;, &#039;o&#039;, &#039;l&#039;, &#039;a&#039;, 0};
  char t[81]= { 0 };</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/temario?rev=1632790863&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-28T01:01:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>temario</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/temario?rev=1632790863&amp;do=diff</link>
        <description>CC3301 Programación de Software de Sistemas

Apuntes elaborados por Luis Mateu.

Temario

	*  Introducción al curso
	*  El Lenguaje C
		*  Principios básicos
		*  El sistema de tipos
		*  Operaciones con bits
		*  Variables
		*  Punteros
		*  Arreglos
		*  Strings
		*  Estructuras
		*  Punteros a funciones
		*  Archivos
		*  setjmp y longjmp
		*  Funciones con número variable de argumentos
		*  Etapas de la compilación

	*  Obsoleto: Threads (ya no es parte del contenido de PSS)
	*  Sistema Oper…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/threads-opt?rev=1530021452&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-06-26T13:57:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>threads-opt</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/threads-opt?rev=1530021452&amp;do=diff</link>
        <description>Semáforos

Un semáforo es un contenedor de tickets.  En él se pueden depositar un ticket con sem_post y
extraer un ticket con sem_wait.  La garantía es que si sem_wait no encuentra tickets entonces no
retorna hasta que algún thread invoque sem_post para depositar un ticket.</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/threads?rev=1530835441&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-07-06T00:04:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>threads</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/threads?rev=1530835441&amp;do=diff</link>
        <description>Threads

La llamada al sistema fork crea un proceso Unix que posee su propio espacio de direcciones independiente
de los demás procesos.  Los procesos pesados no comparten nada de su memoria.  Solo pueden intercambiar
datos a través de archivos, pipes o sockets.  Se dice que estos procesos son</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/tipos?rev=1584488311&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-03-17T23:38:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tipos</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/tipos?rev=1584488311&amp;do=diff</link>
        <description>El sistema de tipos de C

El sistema de tipos de un lenguaje de programación incluye:

	*  Sus tipos de datos primitivos
	*  Expresiones y operadores
	*  Las reglas de inferencia del tipo de una expresión
	*  Como se definen nuevos tipos de datos</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/unix-es?rev=1479215725&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-11-15T13:15:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>unix-es</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/unix-es?rev=1479215725&amp;do=diff</link>
        <description>Manejo de Archivos en Unix

Unix provee una interfaz uniforme, en que todos los dispositivos se ven como archivos.  Por ejemplo:
/home/lmateu/datos.txt
/bin/ls
/dev/tty1
El primero corresponde a un archivo normal en donde se almacena algún tipo de datos.  El segundo es el
archivo binario ejecutable del comando ls.  El tercero no es realmente un archivo en disco, si no que
representa un terminal conectado a través de una puerta serial.  Escribir un string en /dev/tty1 significa
hacer que se escri…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/unix-historia?rev=1411949149&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-09-29T00:05:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>unix-historia</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/unix-historia?rev=1411949149&amp;do=diff</link>
        <description>Historia de Unix

Una información más completa se encuentra en la
wikipedia.

Fue desarrollado en 1969 por un grupo de empleados de AT&amp;T
en Bell Labs: Ken Thompson, Dennis Ritchie, Doug McIlroy y Brian Kernighan entre otros.
Aunque fue escrito inicialmente en assembler su fortaleza
radicaba en que fue re-escrito en un lenguaje de alto nivel: C.
Esto lo hacía fácilmente portable de una máquina a otra.
Además permitió que se desarrollara más rápido y a menor costo
que otros sistemas operativos que…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/varargs?rev=1460639643&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-04-14T13:14:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>varargs</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/varargs?rev=1460639643&amp;do=diff</link>
        <description>Funciones con un número variable de parámetros

Para ello se requiere incluir el archivo de encabezados stdarg y declarar la función suma
en el siguiente código:


  #include &lt;stdio.h&gt;
  #include &lt;stdarg.h&gt;
 
  int suma(int n, ...) {
    va_list ap; /* argument pointer */
    int s= 0;
    int k;
        
    va_start(ap, n); /* u es el último parámetro de la parte no variable */
    for (k= 0; k&lt;n; k++)
      s += va_arg(ap, int);

    va_end(ap);
    return s;
  }

  int main() {
    int a= 1,…</description>
    </item>
    <item rdf:about="https://wiki2.dcc.uchile.cl/cc3301/variables?rev=1407342003&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2014-08-06T16:20:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>variables</title>
        <link>https://wiki2.dcc.uchile.cl/cc3301/variables?rev=1407342003&amp;do=diff</link>
        <description>Variables

Supongamos que se declara la variable x como se muestra en la figura de abajo a la izquierda.  El diagrama de la derecha nos permite definir los siguientes conceptos: variable, valor, identificador y tipo.



El identificador de una variable x es el nombre que se le da a esa variable, en este caso x.  El</description>
    </item>
</rdf:RDF>
