<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luiz on Nothing</title>
	<atom:link href="http://blog.cpu.eti.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cpu.eti.br</link>
	<description></description>
	<lastBuildDate>Mon, 28 Dec 2009 21:04:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Os livros de 2009</title>
		<link>http://blog.cpu.eti.br/2009/12/28/os-livros-de-2009/</link>
		<comments>http://blog.cpu.eti.br/2009/12/28/os-livros-de-2009/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 21:04:34 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Livros e autores]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=173</guid>
		<description><![CDATA[Em vários aspectos 2009 foi o meu melhor ano dos últimos 5, mas para a leitura não foi muito bom: li apenas três livros, sendo que um deles foi uma releitura.
Aí vai a lista:

O Castelo (Franz Kafka)
A Morte de Ivan Ilitch (Leon Tolstoi)
The Practice of Programming (releitura)
Constructing Language Processors for Little Languages (interrompido)

O principal motivo [...]]]></description>
			<content:encoded><![CDATA[<p>Em vários aspectos 2009 foi o meu melhor ano dos últimos 5, mas para a leitura não foi muito bom: li apenas três livros, sendo que um deles foi uma releitura.</p>
<p>Aí vai a lista:</p>
<ul>
<li><a href="http://www.americanas.com.br/AcomProd/1472/2573232">O Castelo</a> (Franz Kafka)</li>
<li><a href="http://www.americanas.com.br/AcomProd/1472/142079">A Morte de Ivan Ilitch</a> (Leon Tolstoi)</li>
<li><a href="http://www.amazon.com/Practice-Programming-Brian-W-Kernighan/dp/020161586X/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1261872527&#038;sr=1-1">The Practice of Programming</a> (releitura)</li>
<li><a href="http://www.amazon.com/Constructing-Language-Processors-Little-Languages/dp/0471597538/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1261872441&#038;sr=8-1">Constructing Language Processors for Little Languages</a> (interrompido)</li>
</ul>
<p>O principal motivo para ler tão pouco foi o <a href="http://blog.cpu.eti.br/2009/07/09/finalmente-formado/">término da faculdade</a>. Eu lia muito no ônibus, no intervalo ou quando a aula não valia a pena. Viu como faculdade é importante? :-)</p>
<p>Infelizmente não creio que a situação vai ser muito melhor no próximo ano, 2010 vai ser muito ocupado e vou ter pouco tempo para leituras não relacionadas ao trabalho.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/12/28/os-livros-de-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pizza!!</title>
		<link>http://blog.cpu.eti.br/2009/08/07/pizza/</link>
		<comments>http://blog.cpu.eti.br/2009/08/07/pizza/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 23:44:31 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Culinária]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=144</guid>
		<description><![CDATA[Tudo começou quando vi um programa do Jamie Oliver, no qual ele ensinava para uma platéia como fazer pizza. O processo era simples, memorizei e dias depois tentei fazer.
A cara não ficou ruim (foto aqui) mas o gosto ficou muito estranho, principalmente a massa. Conseguimos comer uns dois pedaços e jogamos o resto fora. Mesmo [...]]]></description>
			<content:encoded><![CDATA[<p>Tudo começou quando vi um programa do <a href="http://en.wikipedia.org/wiki/Naked_chef">Jamie Oliver,</a> no qual ele ensinava para uma platéia como fazer pizza. O processo era simples, memorizei e dias depois tentei fazer.</p>
<p>A cara não ficou ruim (foto <a href="http://twitpic.com/bx4or">aqui</a>) mas o gosto ficou muito estranho, principalmente a massa. Conseguimos comer uns dois pedaços e jogamos o resto fora. Mesmo assim fiquei super empolgado, pois minha experiência na cozinha é praticamente zero e nunca tinha feito uma massa na vida.</p>
<p>Então fui tentar achar o vídeo do programa para ver onde eu tinha errado, mas não consegui encontrá-lo. :(</p>
<p>Encontrei, no entanto, <a href="http://www.youtube.com/watch?v=5PzxEZxTuYc">outro vídeo</a> muito mais completo do próprio Jamie (ele explica até como fazer o molho de tomate). O problema, porém, é que tive dificuldade em entender vários termos, sem falar no sotaque do cara.</p>
<p>Procurei mais e achei a <a href="http://www.jamieoliver.com/recipes/pizza-recipes/pizza-dough">receita escrita</a>, mas ainda assim tive dúvidas (qual tipo de fermento? Tem semolina no Brasil?).</p>
<p>Voltei a pesquisar e encontrei o que faltava: uma <a href="http://nocalordofogao.blogspot.com/2007/06/pizza.html">receita</a> em Português!</p>
<p>Juntei toda informação e percebi que errei feio na massa: não coloquei fermento, coloquei pouco sal, não usei semolina, e muitos outros detalhes&#8230;</p>
<p>No final de semana passado fui tentar fazer novamente e o resultado ficou <strong>PERFEITO</strong>: massa super suave, bem molinha, muito bom de comer. Melhor do que muita pizza que já comi!</p>
<p><img src="http://farm4.static.flickr.com/3510/3798740453_7e6e940a2d.jpg" alt="Pedaço de pizza" /></p>
<p>Todas fotos <a href="http://www.flickr.com/photos/12086747@N00/3787135788/in/photostream/">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/08/07/pizza/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Finalmente formado</title>
		<link>http://blog.cpu.eti.br/2009/07/09/finalmente-formado/</link>
		<comments>http://blog.cpu.eti.br/2009/07/09/finalmente-formado/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 17:19:05 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Genéricos]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=127</guid>
		<description><![CDATA[Foi minha terceira tentativa, e agora foi.
Primeiro foi Física na UFSCAR, larguei o curso antes de completar dois semestres. Depois foi Ciência da Computação na PUC-SP, também larguei.
Não tinha planos de voltar para faculdade, até que meu filho nasceu em 2006. A partir dessa época comecei a me preocupar mais com o futuro e pensei [...]]]></description>
			<content:encoded><![CDATA[<p>Foi minha terceira tentativa, e agora foi.</p>
<p>Primeiro foi Física na <a href="http://www.ufscar.br">UFSCAR</a>, larguei o curso antes de completar dois semestres. Depois foi Ciência da Computação na <a href="http://www.pucsp.br">PUC-SP</a>, também larguei.</p>
<p>Não tinha planos de voltar para faculdade, até que meu filho nasceu em 2006. A partir dessa época comecei a me preocupar mais com o futuro e pensei o quanto um curso superior poderia fazer falta nos anos que estariam por vir.</p>
<p>Então decidi voltar a faculdade, com 26 anos. Das opções que tinha escolhi o curso de Tecnologia em Análise e Desenvolvimento de Sistemas na <a href="http://www.utp.br">UTP</a>, e não me arrependo. Não que o curso tenha sido bom, na verdade a qualidade foi baixa, mas isso eu já esperava antes de fazer o vestibular. Porém, aprendi muito mais do que eu esperava.</p>
<p>Primeiro descobri o óbvio: não sabia o que achava que sabia. Segundo, tive contato com linguagens diferentes que jamais estudaria por conta própria. Tive alguns (poucos) bons professores e sempre que possível eu tentava fazer projetos legais, como meu <a href="http://www.cpu.eti.br/tcc.html">projeto de conclusão de curso</a>.</p>
<p>Não é exatamente o que eu queria, mas estou satisfeito. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/07/09/finalmente-formado/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Beta</title>
		<link>http://blog.cpu.eti.br/2009/01/13/beta/</link>
		<comments>http://blog.cpu.eti.br/2009/01/13/beta/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 00:01:48 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Aquarismo]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[peixes]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=111</guid>
		<description><![CDATA[Quando estava na faixa dos 14 anos eu era fascinado por um peixe de aquário cujo o nome científico é Betta splendens, mas no Brasil ele é conhecido apenas como Beta.

O Beta tem origem tailandesa e é um peixe bem diferente por ser um peixe de &#8220;briga&#8221;. Se você colocar dois machos juntos no mesmo [...]]]></description>
			<content:encoded><![CDATA[<p>Quando estava na faixa dos 14 anos eu era fascinado por um peixe de aquário cujo o nome científico é <a href="http://en.wikipedia.org/wiki/Betta_splendens">Betta splendens</a>, mas no Brasil ele é conhecido apenas como <em>Beta</em>.</p>
<p><center><img src="http://www.cpu.eti.br/images/betta.jpg" alt="Betta splendens macho" /></center></p>
<p>O Beta tem origem tailandesa e é um peixe bem diferente por ser um peixe de &#8220;briga&#8221;. Se você colocar dois machos juntos no mesmo aquário eles vão lutar até que um deles seja morto. Por esse motivo machos vivem isolados e normalmente são colocados em aquários individuais.</p>
<p>As fêmeas vivem bem juntas, mas também não podem ser colocadas com os machos, caso contrário ele irá matá-la. Mas como eles se reproduzem então?</p>
<p>O processo de reprodução do Beta é espetacular em todos os seus acontecimentos, mas seria muito longo descrevê-lo aqui. O que posso dizer é que existe um intervalo de tempo em que macho e fêmea são colocados juntos para haver a fecundação dos ovos e colocação dos mesmos no ninho de bolhas.</p>
<p>Outro detalhe interessante: quem faz o ninho de bolhas e cuida dos óvos e dos filhotes do começo ao fim é o macho, a participação da fêmea na reprodução está em prover os óvos e (algumas vezes) ajudar o macho a colocá-los no ninho.</p>
<p>Se me lembro bem cheguei a ter em torno de doze Betas machos e quatro fêmeas. Tentei reproduzi-los diversas vezes, mas nunca tive sucesso. Desisti da criação do Beta quando cheguei a conclusão que viver num <a href="http://flickr.com/photos/angelasavage/2670395564">potinho de vidro</a> não era uma vida extremamente divertida.</p>
<p>Vendi todos os meus Betas. Como eram lindos e bem desenvolvidos lembro que fiz uma boa grana para a época (e idade).</p>
<p>Ultimamente venho sofrendo quando vejo Betas à venda, pois muitas vezes eles não são bem cuidados. É comum ver machos estressados pela exposição contínua a outros machos ou sofrendo com água muito ácida. Isso acaba com o peixe e ele não se desenvolve.</p>
<p>Esse é um dos motivos que me faz querer criar Betas novamente. Também é encorajador pensar que hoje tenho muito mais condições e informações ao meu alcance. Na época da minha adolescência toda informação que eu tinha era um livrinho de trinta páginas e dicas que conseguia de um amigo que trabalhava em uma loja de peixes.</p>
<p>Hoje tem Internet, posso participar de grupos, ler livros em inglês, comprar aquários maiores e não vai ter minha mãe para ficar buzinando no meu ouvido. ;-)</p>
<p>A idéia está amadurecendo, só preciso me convencer que comigo eles viverão bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/01/13/beta/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Os livros de 2008</title>
		<link>http://blog.cpu.eti.br/2009/01/08/os-livros-de-2008/</link>
		<comments>http://blog.cpu.eti.br/2009/01/08/os-livros-de-2008/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 21:29:43 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Livros e autores]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=110</guid>
		<description><![CDATA[Assim como fiz em 2007, aí vai a lista de livros que li no ano passado. Mas desta vez não coloquei os links, porque estou com preguiça. :)

O cheiro do ralo
Elite da tropa
Fahrenheit 451
O mochileiro das galaxias (releitura)
O restaurante no fim do universo
Pai rico, pai pobre (releitura)
Quem ama, educa!
Rendevouz with Rama
The Hobbit (releitura)

Não consegui a [...]]]></description>
			<content:encoded><![CDATA[<p>Assim como <a href="http://blog.cpu.eti.br/?p=82">fiz em 2007</a>, aí vai a lista de livros que li no ano passado. Mas desta vez não coloquei os links, porque estou com preguiça. :)</p>
<ul>
<li>O cheiro do ralo</li>
<li>Elite da tropa</li>
<li>Fahrenheit 451</li>
<li>O mochileiro das galaxias (releitura)</li>
<li>O restaurante no fim do universo</li>
<li>Pai rico, pai pobre (releitura)</li>
<li>Quem ama, educa!</li>
<li>Rendevouz with Rama</li>
<li>The Hobbit (releitura)</li>
</ul>
<p>Não consegui a meta de doze livros, mas nove está de bom tamanho. Talvez essa seja a quantidade que sou capaz de ler em um ano, considerando que trabalho e (ainda) faço faculdade.</p>
<p>O que me deixou impressionado, no entanto, é que não li <strong>nenhum</strong> livro técnico, eles continuam mofando na estante&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/01/08/os-livros-de-2008/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Re: As barbaridades sobre Gaza</title>
		<link>http://blog.cpu.eti.br/2009/01/07/re-as-barbaridades-sobre-gaza/</link>
		<comments>http://blog.cpu.eti.br/2009/01/07/re-as-barbaridades-sobre-gaza/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 13:59:20 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Genéricos]]></category>
		<category><![CDATA[gaza]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=109</guid>
		<description><![CDATA[Isso aqui vai acabar virando flame mas enfim, também tenho minha opnião e discordo completamente do artigo citado neste post.
Primeiro é necessário não confudir o que é feito pelo Estado de Israel com o seu povo e muito menos com o povo judeu. Embora algumas ações infelizes do governo israelense tem o apoio da população, [...]]]></description>
			<content:encoded><![CDATA[<p>Isso aqui vai acabar virando flame mas enfim, também tenho minha opnião e discordo completamente do artigo citado <a href="http://sulamita.net/2009/01/07/as-barbaridades-sobre-gaza/">neste post</a>.</p>
<p>Primeiro é necessário não confudir o que é feito pelo Estado de Israel com o seu povo e muito menos com o povo judeu. Embora algumas ações infelizes do governo israelense tem o apoio da população, muitas vezes há discordia como em qualquer país.</p>
<p>Outra coisa, dizer que quem discorda das ações de Israel é anti-semita é um preconceito ultra grave, é o mesmo de dizer que você é racista se não concordar com as cotas nas universidades.</p>
<p>Por fim, sobre a guerra em Gaza. Há muito tempo está claro que a resposta para o problema não é militar, o resultado é óbvio: a maioria esmagadora dos mortos são inocentes e os poucos terroristas mortos viram heróis a serem seguidos.</p>
<p>Qual a solução para o Hamas então? Não sei, mas tenho certeza que invadir Gaza cria vários problemas muito piores.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2009/01/07/re-as-barbaridades-sobre-gaza/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Learning Scheme</title>
		<link>http://blog.cpu.eti.br/2008/12/14/learning-scheme/</link>
		<comments>http://blog.cpu.eti.br/2008/12/14/learning-scheme/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 00:11:02 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=108</guid>
		<description><![CDATA[Exercise: Write a function that returns the length of a list (without using the scheme length function).
My try:

(define mylengh
  (lambda (ilist)
    (letrec ((mylengh-rec
               (lambda (rlist nr)
            [...]]]></description>
			<content:encoded><![CDATA[<p>Exercise: Write a function that returns the length of a list (without using the scheme length function).</p>
<p>My try:</p>
<pre>
(define mylengh
  (lambda (ilist)
    (letrec ((mylengh-rec
               (lambda (rlist nr)
                 (if (eqv? rlist '()) nr
                   (mylengh-rec (cdr rlist) (+ nr 1))))))
             (mylengh-rec ilist 0))))
</pre>
<p>Solution:</p>
<pre>
(define (mylength a)
  (if (null? a) 0
      (+ 1 (mylength (cdr a)))))
</pre>
<p>Well&#8230; It is a start. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2008/12/14/learning-scheme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>As últimas Pérolas</title>
		<link>http://blog.cpu.eti.br/2008/12/07/as-ultimas-perolas/</link>
		<comments>http://blog.cpu.eti.br/2008/12/07/as-ultimas-perolas/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 21:15:04 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Genéricos]]></category>
		<category><![CDATA[pérolas]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=107</guid>
		<description><![CDATA[Como parte da comemoração do turbulento hexa campeonato, decidi postar as duas últimas Pérolas que eu tinha anotado este ano, quem sabe um dia eu revele a identidade do &#8216;crânio&#8217; que disse todas essas coisas&#8230;
&#8220;vim é um notepad sem recursos gráficos&#8221;
&#8220;Portabilidade é a capacidade que o programa tem de rodar em máquinas com poder de [...]]]></description>
			<content:encoded><![CDATA[<p>Como parte da comemoração do turbulento <a href="http://www1.folha.uol.com.br/folha/esporte/ult92u476313.shtml">hexa campeonato</a>, decidi postar as duas últimas Pérolas que eu tinha anotado este ano, quem sabe um dia eu revele a identidade do &#8216;crânio&#8217; que disse todas essas coisas&#8230;</p>
<p><em>&#8220;vim é um notepad sem recursos gráficos&#8221;</em></p>
<p><em>&#8220;Portabilidade é a capacidade que o programa tem de rodar em máquinas com poder de processamento diferentes, por exemplo, o mesmo programa que roda em um K6-II roda em um Pentium 4&#8243;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2008/12/07/as-ultimas-perolas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I now walk into the wild</title>
		<link>http://blog.cpu.eti.br/2008/11/09/i-now-walk-into-the-wild/</link>
		<comments>http://blog.cpu.eti.br/2008/11/09/i-now-walk-into-the-wild/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 20:09:24 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[Cinema]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=105</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.intothewild.com"><img src="http://a.abcnews.com/images/Nightline/ht_wild6_071002_ssh.jpg" alt="Into the wild" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2008/11/09/i-now-walk-into-the-wild/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Initial VMA data and vfork()</title>
		<link>http://blog.cpu.eti.br/2008/10/18/initial-vma-data-and-vfork/</link>
		<comments>http://blog.cpu.eti.br/2008/10/18/initial-vma-data-and-vfork/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 23:32:30 +0000</pubDate>
		<dc:creator>Luiz Capitulino</dc:creator>
				<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://blog.cpu.eti.br/?p=104</guid>
		<description><![CDATA[As I am going to play with the VMA code and its main data structure (a red-black tree), I have started to collect some data by using systemtap, and got a bit impressed by the number of times find_vma() is called by some processes, as shows the table below.


PID
exec name
nr calls (5 seconds)
doing&#8230;

21984
cc1
1570
Compiling Linux kernel

11533
X
13252
Switching [...]]]></description>
			<content:encoded><![CDATA[<p>As I am going to play with the VMA code and its main data structure (a red-black tree), I have started to collect some data by using systemtap, and got a bit impressed by the number of times find_vma() is called by some processes, as shows the table below.</p>
<table border="1">
<tr>
<td>PID</td>
<td>exec name</td>
<td>nr calls (5 seconds)</td>
<td>doing&#8230;</td>
<tr>
<td>21984</td>
<td>cc1</td>
<td>1570</td>
<td>Compiling Linux kernel</td>
<tr>
<td>11533</td>
<td>X</td>
<td>13252</td>
<td>Switching work spaces</td>
<tr>
<td>23554</td>
<td>git-index-pack</td>
<td>42213</td>
<td>Resolving deltas</td>
</table>
<p>So, in this specific case gcc has searched its VMA tree 1570 in five seconds while (probably) compiling some C file. Is that a big number? I am not sure but X, for example, is calling find_vma() more than 2600 times in a second if I switch fast between work spaces in Window Maker. I did not expect this.</p>
<p>Git is the winner so far, more than 8000 searches in one second while resolving deltas in a clone operation.</p>
<p>I also wanted to know what are the most called system calls that may search (or change) the VMAs&#8217; tree, and here goes some more numbers:</p>
<table border="1">
<tr>
<td>system call</td>
<td>nr calls (5 seconds)</td>
</tr>
<tr>
<td>sys_mmap2</td>
<td>11039</td>
</tr>
<tr>
<td>sys_munmap</td>
<td>5102</td>
</tr>
<tr>
<td>sys_brk</td>
<td>3574</td>
</tr>
<tr>
<td>sys_execve</td>
<td>392</td>
</tr>
<tr>
<td>sys_clone</td>
<td>255</td>
</tr>
<tr>
<td>sys_vfork</td>
<td>82</td>
</tr>
</table>
<p>This snapshot has been taken while compiling the Linux kernel and while the numbers are of no surprise, there are two interesting functions in that table, brk() and vfork(). I thought that their usage would be very rare these days: users of brk() are now using mmap() and I was wondering whether it makes sense to use vfork() in a modern kernel like Linux, with very fast process creation time and copy on write support.</p>
<p>But a quick look at the code shows that sys_vfork() passes the CLONE_VM flag to do_fork(), this in turn will avoid the creation of a new address space for the child. In other words, they will share the same mm_struct and that makes vfork() faster than regular fork() (threads also share the same mm_struct).</p>
<p>Very cool stuff, I am being good at choosing projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cpu.eti.br/2008/10/18/initial-vma-data-and-vfork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
