<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>これで作れる！？ＯＳ開発</title>
<link>https://ameblo.jp/meteor1231/</link>
<atom:link href="https://rssblog.ameba.jp/meteor1231/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>卒研でのテーマである『ＯＳ開発』をできるだけ分かりやすく解説していきます。</description>
<language>ja</language>
<item>
<title>論理回路－第３講（論理ゲート）（作成途中）</title>
<description>
<![CDATA[ <p>今回からは論理ゲートの話です。</p><br><p>論理ゲートとは第２講で説明した式や表の形で表現されていた論理関数を</p><p>結線の図の形で表現するための手段です。</p><br><p>簡単にいえば、トランジスタやダイオードのような<font color="#ff0000">電子回路</font>のことです。</p><br><p>論理変数(A、B)がゲートの入力になり、論理関数 ｆ が出力になります。</p><p><br><br></p><p><a href="http://stat.ameba.jp/user_images/53/b9/10007592924.jpg" target="_blank"><img height="140" src="https://stat.ameba.jp/user_images/53/b9/10007592924_s.jpg" width="220" border="0"></a> </p><br><p>論理積(AND)　f=A・B</p><br>入力は２～８入力が普通です。<br><br><p><a href="http://stat.ameba.jp/user_images/ea/77/10007592936.jpg" target="_blank"><img height="138" src="https://stat.ameba.jp/user_images/ea/77/10007592936_s.jpg" width="220" border="0"></a> </p><p><br>論理和(OR)　f=A+B</p><br><p>入力は２～８入力が普通です。<br><br></p><p><a href="http://stat.ameba.jp/user_images/2c/50/10007592927.jpg" target="_blank"><img height="163" src="https://stat.ameba.jp/user_images/2c/50/10007592927_s.jpg" width="220" border="0"></a> </p>                    _<br><p>否定(NOT)   f=A</p><p><br>インバータまたはインバータ・ゲートとも呼ばれます。</p><p>図の○が否定を表しています。</p><br><br><p><br></p><p><a href="http://stat.ameba.jp/user_images/19/1d/10007593308.jpg" target="_blank"><img height="140" src="https://stat.ameba.jp/user_images/19/1d/10007593308_s.jpg" width="220" border="0"></a> </p><br><p><a href="http://stat.ameba.jp/user_images/70/90/10007593537.jpg" target="_blank"><img height="22" src="https://stat.ameba.jp/user_images/70/90/10007593537_s.jpg" width="157" border="0"></a> <a href="http://stat.ameba.jp/user_images/8c/10/10007593450.jpg" target="_blank"></a></p><p><br></p><p><a href="http://stat.ameba.jp/user_images/74/eb/10007593060.jpg" target="_blank"><img height="138" src="https://stat.ameba.jp/user_images/74/eb/10007593060_s.jpg" width="220" border="0"></a> </p><br><p><a href="http://stat.ameba.jp/user_images/cd/7a/10007593636.jpg" target="_blank"><img height="17" src="https://stat.ameba.jp/user_images/cd/7a/10007593636_s.jpg" width="96" border="0"></a> </p><br><p><a href="http://stat.ameba.jp/user_images/59/42/10007593062.jpg" target="_blank"><img height="140" src="https://stat.ameba.jp/user_images/59/42/10007593062_s.jpg" width="220" border="0"></a> </p><br><p><a href="http://stat.ameba.jp/user_images/6a/e2/10007593683.jpg" target="_blank"><img height="19" src="https://stat.ameba.jp/user_images/6a/e2/10007593683_s.jpg" width="91" border="0"></a> <br><br><br></p><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><p>現在、参考にさせていただいている書籍、サイトは以下になります。</p><p>問題がありましたら、大変申し訳ありませんが、ご指摘ください。</p><p>できる限り迅速に対応させていただきます。</p><p> </p><p>１、基本論理ゲート</p><p><a href="http://www.ie.u-ryukyu.ac.jp/~wada/digital/gate.html">http://www.ie.u-ryukyu.ac.jp/~wada/digital/gate.html</a> <br><br></p><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013939069.html</link>
<pubDate>Fri, 23 Jun 2006 15:15:25 +0900</pubDate>
</item>
<item>
<title>論理回路-第2講(作成途中)</title>
<description>
<![CDATA[ <font size="1"><p><font size="1">続いてベン図です。</font></p><p><font size="1">３つの円が重なったところをそれぞれの領域を１～８に分けます。</font></p><p><font size="2"><a href="http://stat.ameba.jp/user_images/34/c0/10007324440.jpg" target="_blank"><img height="190" src="https://stat.ameba.jp/user_images/34/c0/10007324440_s.jpg" width="220" border="0"></a></font></p><br><p>続いて、<font color="#ff0000">ベイチ図、カルノー図</font><font color="#000000">です。</font></p><p><font size="1">カルノー図とは</font></p><p><font size="1">「論理回路などにおいて論理式を<font color="#0000ff">簡単化</font>するための表の中で</font><font size="1"><font color="#0000ff">正方形で構成された図</font>」</font><font size="1">のことです。</font></p><br><p>ベン図を</p><br><p>・ベイチ図</p><p>・カルノー図</p><br><p>に書き換えると</p><p>以下のようになります。</p><br><p><font size="1">ベイチ図は論理回路で</font>使いずらいので</p><p>カルノー図で今後は説明していきます。<br></p><p><a href="http://stat.ameba.jp/user_images/3f/e9/10007324442.jpg" target="_blank"><img height="164" src="https://stat.ameba.jp/user_images/3f/e9/10007324442_s.jpg" width="209" border="0"></a> </p><br><p>                                     ベイチ図 </p><p><br><a href="http://stat.ameba.jp/user_images/72/64/10007324449.jpg" target="_blank"><img height="159" src="https://stat.ameba.jp/user_images/72/64/10007324449_s.jpg" width="145" border="0"></a> </p><p>                                      カルノー図</p><br><p>カルノー図はベイチ図若干変更して考案されたものです。</p><br><br><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><p>現在、参考にさせていただいている書籍は以下になります。</p><p>問題がありましたら、大変申し訳ありませんが、ご指摘ください。</p><p>できる限り迅速に対応させていただきます。</p><p> </p><p>１、論理回路の基礎</p><p><a href="http://www.amazon.co.jp/gp/product/4769202040/249-1305084-6089106?v=glance&amp;n=465392&amp;camp=2025&amp;dev-t=D3C79EA7EWG0HM&amp;link%5Fcode=sp1">http://www.amazon.co.jp/gp/product/4769202040/249-1305084-6089106?v=glance&amp;n=465392&amp;camp=2025&amp;dev-t=D3C79EA7EWG0HM&amp;link%5Fcode=sp1</a> </p><br><p>２、研究室の資料</p><br><p>３、『ウィキペディア（Wikipedia）』 カルノー図</p><p><a href="http://ja.wikipedia.org/wiki/ã«ã«ãã¼å³">http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%8E%E3%83%BC%E5%9B%B3</a> </p><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p></font>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013605351.html</link>
<pubDate>Wed, 14 Jun 2006 04:47:08 +0900</pubDate>
</item>
<item>
<title>フラクタルのアルゴリズム-２</title>
<description>
<![CDATA[ <p>それでは、</p><p>前回に引き続き、解説していきます。</p><p><a href="http://ameblo.jp/meteor1231/theme-10002209945.html">http://ameblo.jp/meteor1231/theme-10002209945.html</a> </p><br><p><br>import java.awt.*;<br>import java.applet.*;<br>import java.awt.event.*;<br>import java.awt.image.*;</p><p>public class Mandelbrot extends Applet <br>implements Runnable,MouseListener,MouseMotionListener {<br>    static double RAD=6;<br>    <br>    int width,height,length;<br>    int[] pixels;<br>    MemoryImageSource mit;<br>    Image image;<br>    double[] z_re,z_im;<br>    double min_re,max_re;<br>    double min_im,max_im;<br>    double red_re,green_re,blue_re;<br>    double red_im,green_im,blue_im;<br>    int last_x,last_y;<br>    int dx,dy;<br>    boolean running;<br>    <br>    public void init() {<br>        width=getSize().width;<br>        height=getSize().height;<br>        length=width*height;<br>        pixels=new int[length];<br>        mit=new MemoryImageSource(width,height,pixels,0,width);<br>        mit.setAnimated(true);<br>        image=getToolkit().createImage(mit);<br>        z_re=new double[length];<br>        z_im=new double[length];<br>        addMouseListener(this);<br>        addMouseMotionListener(this);<br>        reset();<br>    }<br>    <br>    void reset() {<br>        min_re=-2.0;<br>        max_re=2.0;<br>        min_im=-2.0*height/width;<br>        max_im=2.0*height/width;<br>        red_re=Math.random()*RAD;<br>        green_re=Math.random()*RAD;<br>        blue_re=Math.random()*RAD;<br>        red_im=Math.random()*RAD;<br>        green_im=Math.random()*RAD;<br>        blue_im=Math.random()*RAD;<br>    }<br>    <br>    public void start() {<br>        if (!running) {<br>            running=true;<br>            new Thread(this,"Plotter").start();<br>        }<br>    }<br>    <br>    public void stop() {<br>        running=false;<br>    }<br>    <br>    public void mousePressed(MouseEvent e) {<br>        running=false;<br>        last_x=e.getX();<br>        last_y=e.getY();<br>    }<br>    <br>    public void mouseReleased(MouseEvent e) {<br>        if (dx==0 &amp;&amp; dy==0) {<br>            double range_re=max_re-min_re;<br>            double range_im=max_im-min_im;<br>            double center_re=min_re+range_re*e.getX()/width;<br>            double center_im=min_im+range_im*e.getY()/height;<br>            max_re=center_re+range_re/4;<br>            min_re=center_re-range_re/4;<br>            max_im=center_im+range_im/4;<br>            min_im=center_im-range_im/4;<br>        } else {<br>            double d_re=(max_re-min_re)*dx/width;<br>            double d_im=(max_im-min_im)*dy/height;<br>            max_re-=d_re;<br>            min_re-=d_re;<br>            max_im-=d_im;<br>            min_im-=d_im;<br>            dx=dy=0;<br>        }<br>        running=false;<br>        synchronized (this) {<br>            for (int i=0;i&lt;length;i++) z_re[i]=z_im[i]=0;<br>            start();<br>        }<br>    }<br>    <br>    public void mouseClicked(MouseEvent e) {<br>        if (e.getClickCount()==2) {<br>            running=false;<br>            synchronized(this) {<br>                reset();<br>                for (int i=0;i&lt;length;i++) z_re[i]=z_im[i]=0;<br>                start();<br>            }<br>        }<br>    }<br>    <br>    public void mouseExited(MouseEvent e) {}<br>    <br>    public void mouseEntered(MouseEvent e) {}</p><p>    public void mouseDragged(MouseEvent e) {<br>        dx+=e.getX()-last_x;<br>        dy+=e.getY()-last_y;<br>        last_x=e.getX();<br>        last_y=e.getY();<br>        repaint();<br>    }<br>    <br>    public void mouseMoved(MouseEvent e) {}<br>    <br>    public synchronized void run() {<br>        int x,y,i;<br>        double c_re,c_im;<br>        double d_re=(max_re-min_re)/width;<br>        double d_im=(max_im-min_im)/height;<br>        int T=30;<br>        while (running) {<br>            for (c_im=min_im,y=0,i=0;y&lt;height &amp;&amp; running;c_im+=d_im,y++) <br>                for (c_re=min_re,x=0;x&lt;width;c_re+=d_re,x++,i++) {<br>                    double z_re=this.z_re[i],z_im=this.z_im[i];<br>                    for (int t=0;t&lt;T;t++) {<br>                        double z2_re=z_re*z_re-z_im*z_im;<br>                        double z2_im=2*z_re*z_im;<br>                        z_re=z2_re+c_re;<br>                        z_im=z2_im+c_im;<br>                    }<br>                    int red=(int)((red_re*z_re+red_im*z_im)*128)+128;<br>                    int green=(int)((green_re*z_re+green_im*z_im)*128)+128;<br>                    int blue=(int)((blue_re*z_re+blue_im*z_im)*64)+128;<br>                    if (red&lt;0) red=0; else if (red&gt;255) red=255;<br>                    if (green&lt;0) green=0; else if (green&gt;255) green=255;<br>                    if (blue&lt;0) blue=0; else if (blue&gt;255) blue=255;<br>                    pixels[i]=0xff000000|red&lt;&lt;16|green&lt;&lt;8|blue;<br>                    this.z_re[i]=z_re;<br>                    this.z_im[i]=z_im;<br>                }<br>            mit.newPixels();<br>            if (T&lt;1000) T+=10;<br>        }<br>    }<br>    <br>    public void update(Graphics g) {<br>        paint(g);<br>    }<br>    <br>    public void paint(Graphics g) {<br>        g.drawImage(image,dx,dy,this);<br>        g.setColor(Color.gray);<br>        g.fillRect(0,0,dx,height);<br>        g.fillRect(width+dx,0,width,height);<br>        g.fillRect(0,0,width,dy);<br>        g.fillRect(0,height+dy,width,height);<br>    }<br>}<br></p><br><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><p>現在、参考にさせていただいている書籍は以下になります。</p><p>問題がありましたら、大変申し訳ありませんが、ご指摘ください。</p><p>できる限り迅速に対応させていただきます。</p><p> </p><p>１、ねこいりねこ</p><p><font size="2"><a href="http://homepage.mac.com/catincat/">http://homepage.mac.com/catincat/</a> </font></p><br><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013605304.html</link>
<pubDate>Wed, 14 Jun 2006 04:38:07 +0900</pubDate>
</item>
<item>
<title>フラクタルのアルゴリズム-第１講</title>
<description>
<![CDATA[ <p><font size="1">研究室で</font></p><br><p><font size="1">☆スタックの実装</font></p><p><font size="1">・アセンブラ</font></p><p><font size="1">・ハード</font></p><br><p><font size="1">☆フラクタル描写(マンデルブロ集合)</font></p><p><font size="1">・<font color="#0000ff">アルゴリズム</font></font></p><p><font size="1">・アセンブリおこし</font></p><p><font size="1">・通信：送ったデータの処理(ハード的に実装)</font></p><p><font size="1">・PPM形式調べ</font></p><br><p><font size="1">を課題として与えられたので、私はこの内、</font></p><p><font size="1"><font color="#0000ff">フラクタル(マンデルブロ集合)のアルゴリズム</font>の担当となりました。</font></p><p><font size="1"><br></font></p><br><p><font size="1">まずは、<font color="#ff0000">フラクタル</font>とは何かから解説していきたいと思います。</font></p><br><p><font size="1">フラクタルの具体的な例としては海岸線の形などが挙げられます。</font></p><br><p><font size="1">海岸線は巨視的にみると複雑に入り組んだ形状をしていますが、</font></p><p><font size="1">これを拡大するとさらに細かい形状が見えてくるようになり、</font></p><p><font size="1">結果として拡大しても同じように複雑に入り組んだ形状をしています。</font></p><br><p><font size="1">つまり、フラクタルとは以下の図(海岸線に似てる)のように拡大しても、</font></p><p><font size="1">また同じ図形が現れるもののことを言います(ちなみにコッホ曲線といいます)</font></p><br><p><a href="http://stat.ameba.jp/user_images/4e/99/10007353155.jpg" target="_blank"><font size="1"><img height="123" src="https://stat.ameba.jp/user_images/4e/99/10007353155_s.jpg" width="220" border="0"></font></a> <font size="1"> </font></p><br><p><font size="1">一般的な例としては(リンク付き)</font></p><br><li><a href="http://ja.wikipedia.org/wiki/ã«ã³ãã¼ã«éå" target="_blank">カントール集合</a>  <font size="1"> </font> </li><li target="_blank"><a title="シェルピンスキーのギャスケット" href="http://ja.wikipedia.org/wiki/ã·ã§ã«ãã³ã¹ã­ã¼ã®ã®ã£ã¹ã±ãã"><font size="1">シェルピンスキーのギャスケット</font></a> <font size="1"> </font> </li><li><a title="コッホ曲線" href="http://ja.wikipedia.org/wiki/ã³ããæ²ç·"><font size="1" target="_blank">コッホ曲線</font></a> <font size="1"> </font> </li><li><a title="マンデルブロー集合" href="http://ja.wikipedia.org/wiki/ãã³ãã«ãã­ã¼éå"><font size="1" target="_blank">マンデルブロ集合</font></a> <font size="1"> </font> </li><li target="_blank"><a title="ジュリア集合" href="http://ja.wikipedia.org/wiki/ã¸ã¥ãªã¢éå"><font size="1">ジュリア集合</font></a> <font size="1"> </font> </li><li target="_blank"><a title="メンガーのスポンジ" href="http://ja.wikipedia.org/wiki/ã¡ã³ã¬ã¼ã®ã¹ãã³ã¸"><font size="1">メンガーのスポンジ</font></a> <font size="1"><br></font><p><font size="1">があげられます。</font></p><br><p><font size="1">そのほかには</font></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1"><br></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><a href="http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html"><font size="1">http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html</font></a> <font size="1"> </font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック" color="#0000ff"><font size="1"><br></font></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック"><font color="#000000" size="1">のようなおもしろい例があげられます。</font></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック"><font size="1"><br></font></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック" size="1">日常的にも株価の動向などもフラクタルな性質を持っているので、</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック" size="1">見つけてみるのも楽しいかもしれません。</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック"><font size="1"><br></font></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font face="ＭＳ Ｐゴシック" size="1">では、私が調べるマンデルブロ集合ですが、</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1">まずはマンデルブロの解説から入ります。</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1"><br></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1">参照項目の２によると</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1"><br></font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><font size="1">1975年マンデルブロ(Mandelbrot)が「砕けた石」という意味のラテン語から命名した、非整数次元を持った図形、構造。特徴としては自己相似性が挙げられる。</font></span></p><p><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'ＭＳ ゴシック'"><br></span><font size="1">とあります。</font></p><p target="_blank"><font size="1">確かに以下の図をみるとそう見えますね。</font></p><p target="_blank"><br></p><p target="_blank"><a href="http://stat.ameba.jp/user_images/00/b9/10007352975.jpg" target="_blank"><font size="1"><img height="163" alt="マンデルブロ集合" src="https://stat.ameba.jp/user_images/00/b9/10007352975_s.jpg" width="220" border="0"></font></a> <font size="1"> </font></p><p target="_blank"><br></p><p target="_blank"><font size="1">　　　　　　　　　　　　 マンデルブロ集合</font></p><p target="_blank"><br><br></p><p target="_blank"><font size="1">それでは、続いて<font color="#0000ff">アルゴリズム</font>の説明です。</font></p><p target="_blank"><br></p><p target="_blank"><font size="1"><font color="#0000ff">JAVA</font>のソースがあったので、</font></p><p target="_blank"><font size="1">これを解説することによって理解していこうと思います。</font></p><p target="_blank"><br><br></p><p target="_blank"><font size="1">＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</font></p><p><font size="1"><br></font></p><p target="_blank"><font size="1">現在、参考にさせていただいている書籍は以下になります。</font></p><p target="_blank"><font size="1">問題がありましたら、大変申し訳ありませんが、ご指摘ください。</font></p><p target="_blank"><font size="1">できる限り迅速に対応させていただきます。</font></p><p target="_blank"><font size="1"> </font></p><p target="_blank"><font size="1">１、ねこいりねこ</font></p><p target="_blank"><a href="http://homepage.mac.com/catincat/"><font size="1">http://homepage.mac.com/catincat/</font></a> <font size="1"> </font></p><p target="_blank"><font size="1"><br></font></p><p target="_blank"><font size="1">２、フラクタルとは</font></p><p target="_blank"><a href="http://momi.jwu.ac.jp/~physm/buturi01/fra01/fractal.html"><font size="1">http://momi.jwu.ac.jp/~physm/buturi01/fra01/fractal.html</font></a> <font size="1"> </font></p><p target="_blank"><font size="1"><br></font></p><p target="_blank"><font size="1">３、 『ウィキペディア（Wikipedia）』：フラクタル</font></p><p target="_blank"><a href="http://ja.wikipedia.org/wiki/ãã©ã¯ã¿ã«"><font size="1">http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB</font></a> <font size="1"> </font></p><p target="_blank"><br></p><p target="_blank"><font size="1">４、フラクタル</font></p><p target="_blank"><a href="http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html"><font size="1">http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html</font></a> <font size="1"> </font></p><p target="_blank"><font size="1">＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</font></p><p target="_blank"><font size="1"><br><br></font></p><p target="_blank"><font size="1"><br></font></p></li>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013581785.html</link>
<pubDate>Tue, 13 Jun 2006 16:06:38 +0900</pubDate>
</item>
<item>
<title>論理回路-第１講</title>
<description>
<![CDATA[ <p>OSを製作するのはマザーボードの知識も必要です。</p><p>今回はまず、基本的な論理回路の知識をまとめていきます。</p><br><p>始めのうちはうまくまとまりませんが、そのうちに</p><p>改善されていくと思います。<br></p><p>以下の６つの表は真理値表です。</p><br><p><font color="#ff0000">真理値表</font>とは論理関数を表す方法です。</p><p>(論理関数とは論理変数(AとかBなど)と論理記号（･ とか ＋など ）)</p><br><p>まずは基本的な論理関係である論理積、論理和、否定です。</p><br><p><a href="http://stat.ameba.jp/user_images/db/35/10007226423.jpg" target="_blank"><img height="166" src="https://stat.ameba.jp/user_images/db/35/10007226423_s.jpg" width="177" border="0"></a> </p><br><p>Ａ、Ｂがともに１のときのみ論理関数 ｆ は１となります。</p><br><p><a href="http://stat.ameba.jp/user_images/80/b7/10007226480.jpg" target="_blank"><img height="162" src="https://stat.ameba.jp/user_images/80/b7/10007226480_s.jpg" width="176" border="0"></a> </p><p>Ａ、Ｂいずれか１つでも１のときに論理関数 ｆ は１となります。</p><br><p><a href="http://stat.ameba.jp/user_images/b1/d2/10007226482.jpg" target="_blank"><img height="112" src="https://stat.ameba.jp/user_images/b1/d2/10007226482_s.jpg" width="108" border="0"></a> </p><br><p>反対の状態を表します。</p><br><p>以上が、最も基本的な論理機能です。</p><p>以下の回路もこれら３つで分解することができます。</p><p> </p><p>ただ、実用上、あると便利ですので単独のゲートとして</p><p>使用されることが多いです。</p><p> </p><p><a href="http://stat.ameba.jp/user_images/cd/c1/10007226494.jpg" target="_blank"></a></p><p><a href="http://stat.ameba.jp/user_images/6d/5b/10007226484.jpg" target="_blank"><img height="170" src="https://stat.ameba.jp/user_images/6d/5b/10007226484_s.jpg" width="201" border="0"></a> </p><br><p>１が<font color="#0000ff">奇数個</font>あるときに論理関数 ｆ は１となります。</p><p> </p><p><a href="http://stat.ameba.jp/user_images/b8/55/10007226487.jpg" target="_blank"><img height="164" src="https://stat.ameba.jp/user_images/b8/55/10007226487_s.jpg" width="179" border="0"></a> </p><p>ＮＯＴ ＡＮＤ このことです。</p><p>つまりＡ・Ｂの否定ですね。</p><br><p><a href="http://stat.ameba.jp/user_images/cd/c1/10007226494.jpg" target="_blank"><img height="169" src="https://stat.ameba.jp/user_images/cd/c1/10007226494_s.jpg" width="181" border="0"></a> </p><p>ＮＯＴ ＯＲのことです。</p><p>つまり、Ａ＋Ｂの否定ですね。</p><br><p>これらから、ド・モルガンの定理という話がでてきます。</p><br><p>これからの良く使っていくと思われるので、</p><p>とりあえず、書いておきます。</p><br><p><a href="http://stat.ameba.jp/user_images/ca/b4/10007226140.jpg" target="_blank"><img height="84" src="https://stat.ameba.jp/user_images/ca/b4/10007226140_s.jpg" width="124" border="0"></a> </p><br><p><font size="2"> </font></p><br><p><a href="http://www.amazon.co.jp/gp/product/4769202040/249-1305084-6089106?v=glance&amp;n=465392&amp;camp=2025&amp;dev-t=D3C79EA7EWG0HM&amp;link%5Fcode=sp1"></a></p><br><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><p>現在、参考にさせていただいている書籍は以下になります。</p><p>問題がありましたら、大変申し訳ありませんが、ご指摘ください。</p><p>できる限り迅速に対応させていただきます。</p><p> </p><p>１、論理回路の基礎</p><p><a href="http://www.amazon.co.jp/gp/product/4769202040/249-1305084-6089106?v=glance&amp;n=465392&amp;camp=2025&amp;dev-t=D3C79EA7EWG0HM&amp;link%5Fcode=sp1">http://www.amazon.co.jp/gp/product/4769202040/249-1305084-6089106?v=glance&amp;n=465392&amp;camp=2025&amp;dev-t=D3C79EA7EWG0HM&amp;link%5Fcode=sp1</a> </p><br><p>２、研究室の資料</p><br><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013375219.html</link>
<pubDate>Thu, 08 Jun 2006 16:02:19 +0900</pubDate>
</item>
<item>
<title>ファイルシステム論-第１講</title>
<description>
<![CDATA[ <p>本ブログは主にUNIX系（Linux）の構造を解説するのが</p><p>主題となっております。</p><br><p>適宜、ＢＳＤ系、Solaris、Windows等は解明しだい</p><p>ご紹介していきたいと思っています。</p><br><br><p>それでは、今回のテーマであるファイルシステム論（第１講）に入っていきます。<br></p><p>ここでのキーワードは<br><br>１、セクター</p><p>２、ファイルシステム<br>３、ＶＦＳ<br>４、iノード<br>５、パス名探索</p><p>６、インデックス化ディレクトリ<br><br>の６つです。<br></p><p>まずは、以下の図１を見てください。<br><br></p><div><a href="http://stat.ameba.jp/user_images/05/5b/10007143636.jpg" target="_blank"><img alt="mapping" src="https://stat.ameba.jp/user_images/05/5b/10007143636_s.jpg" border="0"></a> <br>                                 　　　　　　図１<br><br><br>図１はLinuxの場合、</div><div></div><div>ある情報(a.txt)をハードディスクに保存したい時にはどうすれば<br>保存できるのか？<br><br>を示しています。</div><div></div><div></div><div>これは本題の本質的な理解にも繋がっていきますので、<br>この事を頭の片隅に置いて以下を見ていってください。<br><br>では、まずは<br><br><font color="#0000ff">１、セクター　</font>の説明から初めていきたいと思います。<br></div><div>一般にデータが保存される際には一定のサイズにデータは</div><div>分割されて保存されます。</div><div></div><div>この一定サイズのことを<font color="#ff0000">データ・ブロック</font><font color="#000000">と呼びます。</font></div><div><br>ハードディスクでは<font color="#ff0000">セクター</font>という一定サイズの小さな記憶領域に<br>分割されています。</div><div></div><div></div><div></div><div></div><div>セクターにはアドレス(セクター番号)が割り当てられ <div>書き込み、読み込みともこのアドレスで管理されます。</div><div></div><div></div><div></div></div><div>図１の赤い１つ扇形がこれに当たります。</div><div></div><div></div><div></div><div></div><div>そして、ハードディスクでは、データ・ブロックが何にあたるのかと</div><div>言えば、<font color="#ff0000">セクター×（２，４，８）</font>というものになります。</div><div></div><div>少し、わかりにくいかもしれませんね。</div><div></div><div></div><div></div><div></div><div></div><div>もう少し、具体的に書き直していこうと思います。</div><div></div><div>先ほどのセクターというのは一般にセクター一つで５１２バイトとなって</div><div>います(物理フォーマットの際に指定できる)</div><div><br></div><div><font color="#ff0000"><font color="#000000">また、Linuxの標準ファイルシステムである</font></font>ext2ファイル・システムでは</div><div>１データ・ブロックのサイズは<font color="#ff0000">セクター×（２，４，８）</font><font color="#000000">、つまりは</font></div><div>５１２バイト×２，４，８　＝　１０２４、２０４８、４０９６バイト</div><div>のいずれかとなっています。</div><div><br>例えば、データ(a.txt)が</div><div></div><div>---------------a.txt-------------------</div><div></div><div>はじめまして、Ｌｉｎｕｘの構造を勉強中の</div><div>Ｎ沢と申します。</div><div></div><div>--------------------------------------</div><div></div><div>ならば、一般的に</div><div>半角の英数字や記号、半角カタカナなどは1バイト</div><div>全角のひらがな漢字などは２バイト</div><div>なので、a.txtのファイルサイズは１００バイトもいきません。</div><div></div><div></div><div>※参照記事：Hitachi Systems </div><div><a href="http://ew.hitachi-system.co.jp/w/2E38390E382A4E38388E69687E5AD97.html">http://ew.hitachi-system.co.jp/w/2E38390E382A4E38388E69687E5AD97.html</a> </div><div></div><div></div><div>そのため、a.txtを保存する場合はデータ・ブロックを一つだけ使うだけで済むのです。</div><div></div><div>しかし、１つのデータ・ブロックのサイズの越えた場合は複数のデータ・ブロックに記録されます。</div><div><br>この際にその分割されたデータができるだけ、近いところに配置される<br>ように調節されます。この事によって、データ（a.txt）を</div><div>読み込む時には高速に読み込むことができるのです。<br><br></div><div></div><div></div><div></div><div><font color="#0000ff">２、ファイルシステム</font></div><div></div><div>このデータ・ブロックですが、実際のファイルとの対応付けは</div><div>OS(カーネル)が行います。</div><div>この対応付けの仕組みのことをファイルシステムと呼びます。</div><div></div><div></div><div></div><div><br><font color="#0000ff">３、ＶＦＳ</font></div><div></div><div>Linuxのファイルシステムにはさまざまなファイルシステムがあります。</div><div></div><div>ext2</div><div>ext3</div><div>iso9660</div><div>ReiserFS</div><div>NFS</div><div>XFS</div><div></div><div>などなど</div><div></div><div>新しいファイルシステムが次々に作られていっています。</div><div></div><div>一般にファイルシステムを作成する時は</div><div>以下のコマンドを使用しますが、</div><div></div><div># mkfs -t ext2 /dev/hda</div><div></div><div># mkfs -t xfs /dev/hdb</div><div></div><div>この際に、hdaとhdbはファイルシステムが異なります。</div><div>つまりは全く、データの保存形式が違うのです。</div><div></div><div>これは、</div><div>大雑把に言えば、</div><div>$ cp 「/dev/hdaの中のファイル」 「/dev/hdbの中のファイル」</div><div></div><div>とはできないことを意味します。</div><div></div><div>でも、現実的にはこういったことが許されています。</div><div>これはVFS(<font color="#ff0000">Virtual File</font> System)という機構を導入していること</div><div>によって実現しています</div><div>----------------------------</div><div></div><div></div><div>カーネルからのアクセス</div><div>↓</div><div>VFS</div><div>↓</div><div>ext2 or xfs</div><div>↓</div><div>ローカルファイルシステム</div><div>↓</div><div>ハードディスクドライバ</div><div>↓</div><div>ハードディスク上のデータ</div><div>----------------------------</div><div></div><div></div><div></div><div></div><div>参照：mkfsのmanページ</div><div><a href="http://www.linux.or.jp/JM/html/util-linux/man8/mkfs.8.html">http://www.linux.or.jp/JM/html/util-linux/man8/mkfs.8.html</a> </div><div><br><font color="#0000ff"><br></font></div><div>※注</div><div>今のところはローカルファイルシステムとハードディスクドライバの</div><div>部分は気にしないでください。</div><div><font color="#000000"><br></font></div><div><font color="#0000ff">４、iノード<br></font><div><br><br><a href="http://stat.ameba.jp/user_images/80/09/10007143675.jpg" target="_blank"><img alt="mapping2" src="https://stat.ameba.jp/user_images/80/09/10007143675_s.jpg" border="0"></a> <br>                                           図２</div><div></div><div>今までは漠然と図１のように書きましたが、</div><div>ファイルを管理する上で重要な点を</div><div>はずしています。</div><div>それはiノードです。</div><div></div><div>ファイルは「iノード」と「データ・ブロック」に分けられています。</div><div>つまり、ファイルにはそのファイル固有のiノード番号というものが</div><div>つけられています。</div><div>図２でいえば、青い部分ですね。このiノード番号を頼りに</div><div>ハードディスク上のデータ(データブロック)を探すのです。</div><div></div><div>ここで少しだけ、ファイルシステム全体を俯瞰してみようと思います。</div><div></div><div>まずは</div><div></div><div></div><div>ブートブロック：１ブロック目はブートセクタ用に予約されています。</div><div></div><div></div><div>ブロックグループ：データ保存時に<font color="#ff0000">関係の深いデータを同じブロック・グループ内に</font></div><div>確保するようにすれば、ディスク・ヘッドの移動を最小限に抑えられるためにグループ化</div><div>してあります。</div><div></div><div></div><div>スーパーブロック：iノードの総数、ブロックの総数、空きブロック数、空きiノード数、</div><div><font color="#ff0000">使用可能な最初のブロック番号、ブロックサイズ、最初の未予約iノード番号</font>、このスーパーブロックの</div><div>グループ番号</div><div></div><div></div><div>グループディスクリプタ：全部のブロックグループの管理情報が格納されている</div><div></div><div></div><div>データブロックビットマップ：ブロックグループ内の空きデータブロックを管理するための</div><div>ビットマップ</div><div></div><div></div><div>iノードビットマップ：ブロックグループ内の空きiノードを管理するためのビットマップ</div><div></div><div></div><div>iノードテープル：iノードの情報を格納する。</div><div></div><div></div><div>データブロック：データ本体</div><div></div><div></div><div></div><div><a href="http://stat.ameba.jp/user_images/08/5b/10007170422.jpg" target="_blank"><img height="125" src="https://stat.ameba.jp/user_images/08/5b/10007170422_s.jpg" width="220" border="0"></a> </div><div></div><div>そして、iノートテーブルの部分を今回は解説します。</div><div></div><div>　　　　　　　　　　　　　　　　　　　　　</div><div>　　　　　　　　　　　　　　　　　　　　　　図３</div><div></div><div></div><div></div><div></div><div></div><div><a href="http://stat.ameba.jp/user_images/4a/db/10007170156.jpg" target="_blank"><img height="132" src="https://stat.ameba.jp/user_images/4a/db/10007170156_s.jpg" width="220" border="0"></a> </div><div>　　　　　　　　　　　　　　　　　　　　　　図４</div><div></div><div></div><div></div><div>iノードテーブルとは図４のようになっています。</div><div>と言っても何のことを言っているのかわからないと思いますので</div><div>解説いたします。</div><div></div><div>ext2のiノードには、ファイルの中身を格納するデータ・ブロックのアドレス情報が</div><div>記載されています。</div><div>iノードには１２個までのデータブロックのアドレスを格納でき、</div><div>ブロックサイズが４０９６Bの場合なら、</div><div>４０９６B＝１０２４×４B＝４KBなので</div><div>４K×１２個＝４８KBのデータをファイルに格納することができます。</div><div></div><div>このようにiノードから直接参照されるデータブロックを「直接ブロック」と呼びます。</div><div>これに加えてext2では「間接ブロック」を３つ使って一度に書き込める</div><div>ファイルサイズを上げています。</div><div><br><a href="http://stat.ameba.jp/user_images/12/b0/10007169815.jpg" target="_blank"><img height="42" src="https://stat.ameba.jp/user_images/12/b0/10007169815_s.jpg" width="220" border="0"></a> </div><div>　　　　　　　　　　　　　　　　　　　　　　図５</div><div></div><div></div><div></div><div></div><div>上記の計算は以下の表を参考に考えます。　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　<a href="http://stat.ameba.jp/user_images/11/a9/10007171103.jpg" target="_blank"><img height="76" src="https://stat.ameba.jp/user_images/11/a9/10007171103_s.jpg" width="220" border="0"></a> </div><div></div><div></div><div></div><div></div><div></div><div></div><div><font size="2">以下、１段間接、２段間接、３段間接の場合の計算式を載せておきます。</font></div><div><font size="2"><br></font></div><div><font size="2"><br></font></div><div><strong><font size="4"><br></font></strong></div><div><strong><font size="4">((４０９６/ <font color="#ff0000">４</font></font><font size="4"> + 11) * <font color="#00ff00">4</font>) / 1</font><font size="-2"> </font><font size="4">024 = 4.04296875　MB</font></strong></div><div><strong><font size="4"><br></font></strong></div><div><strong><font size="4">{ (4</font><font size="-2"> </font><font size="4">096 / <font color="#ff0000">4</font>)^2 + ((4</font><font size="-2"> </font><font size="4">096 / <font color="#ff0000">4</font>) + 11) ｝* <font color="#00ff00">4</font> / (1</font><font size="-2"> </font><font size="4">024^2) = 4.00394821　GB</font></strong></div><div><strong><font size="4"><br></font></strong></div><div><strong><font size="4">{ (4</font><font size="-2"> </font><font size="4">096 / <font color="#ff0000">4</font>)^3 + (4</font><font size="-2"> </font><font size="4">096 / <font color="#ff0000">4</font>)^2 + (4</font><font size="-2"> </font><font size="4">096 / <font color="#ff0000">4</font>) + 11) ｝* <font color="#00ff00">4</font> } / (1</font><font size="-2"> </font><font size="4">024^3) = <font color="#000000">4</font>.00391011 TB</font></strong></div><strong><font size="4"><br></font></strong></div><p><strong><font size="4"><br></font></strong></p><p><font size="4"><font size="2">この中で、<font color="#ff0000">４</font>はアドレス情報が３２ビット(4バイト)であることから来ています。</font></font></p><p><font size="4"><font size="2"><font color="#00ff00">４</font>はブロックサイズを表しています。</font></font></p><p><font size="4"><font size="2"><br></font></font></p><p><font size="4"><font size="2">ここで、最後の４TBですが、実際に保存できるのは約２TBである。</font></font></p><p><font size="4"><font size="2">これはi_sizeメンバーとi_dir_aclメンバーが原因である(詳細は省略)。</font></font> </p><p><font size="4"><font size="2">ファイル(a.txt)作成、削除の手順</font></font></p><p><font size="4"><font size="2"><br></font></font></p><p><font size="2">【作成】</font></p><p><font size="2"><br></font></p><p><font size="4"><font size="2">カーネルがファイルの作成開始</font></font></p><p><font size="4"><font size="2">↓</font></font></p><p><font size="4"><font size="2">iノードを確保</font></font></p><p><font size="2">↓</font></p><p><font size="4"><font size="2">iノードを</font></font><font size="4"><font size="2">ディレクトリに登録(</font></font><font size="4"><font size="2">ディレクトリと同じブロック・グループから確保)</font></font></p><p><font size="4"><font size="2">↓</font></font></p><p><font size="4"><font size="2">親ディレクトリのデータブロックにファイル名とiノード情報を</font></font><font size="2">登録</font></p><p><font size="2">↓</font></p><p><font size="2">データブロックを確保(<font size="4"><font size="2">ディレクトリと同じブロック・グループから確保)</font></font></font></p><p><font size="4"><font size="2">↓</font></font></p><p><font size="2">書き込み</font></p><p><font size="2"><br></font></p><p><font size="4"><font size="2">【削除】</font></font></p><p><font size="2"><br></font></p><p><font size="2">親ディレクトリのエントリから削除</font></p><p><font size="2">↓</font></p><p><font size="2">リンク・カウントを減らす</font></p><p><font size="2">↓</font></p><p><font size="2">リンク数が０の場合のみiノードとデ</font><font size="2">ータブロックを解放</font></p><p><font size="4"><font size="2">（ハードリンク時）</font></font> </p><div><strong><font size="4"><br></font></strong></div><div></div><div><font color="#0000ff">５、パス名探索<br></font></div><div></div><div></div><div></div><div><a href="http://stat.ameba.jp/user_images/7e/c0/10007171028.jpg" target="_blank"><img height="316" src="https://stat.ameba.jp/user_images/7e/c0/10007171028_s.jpg" width="220" border="0"></a> <br>　　　　　　　　　　　　　　　　　　　　　図７</div><div></div><div></div><p>パス名探索を/home/nozawa/part3/b.txtとして</p><div><br></div><p>$ cat /home/nozawa/part3/b.txt</p><div><br></div><p>でファイルの中身を見ようとした時、カーネルはどのようにして、</p><p>b.txtのiノード番号を知り、b.txtのiノードに行き着くことができるのかを解説したいと思います。</p><div><br></div><p>実はかなり簡単なシステムになっており図７にあるとおり、</p><p>地道に一番上から探索していくことになるのです。</p><div><br></div><p>つまりは</p><div><br></div><p>/ 　　　　ディレクトリのiノード番号を調べる</p><p>↓</p><p>home　　ディレクトリのiノード番号を調べる</p><p>↓</p><p>nozawa　ディレクトリのiノード番号を調べる</p><p>↓</p><p>part3　　ディレクトリのiノード番号を調べる</p><p>↓</p><p>b.txt　　　のiノード番号を調べる</p><div><br></div><div></div><div><font color="#0000ff">６、インデックス化ディレクトリ</font></div><div></div><div>しかし、ディレクトリエントリの検索は、最初から１つずつみていくものなので</div><div>登録されるエントリ(ファイル)が増えると非常に効率が悪くなります。</div><div>ext2では大きなディレクトリのアクセス効率を挙げるために</div><div><font color="#ff0000">インデックス化ディレクトリ</font><font color="#000000">という機構をサポートしています。</font> <div></div>具体的にどのようにアクセス効率をあげているかというと、</div><div><font color="#ff0000">ファイル名から計算されるハッシュ値</font>によって、<font color="#ff0000">どのブロックにあるか</font>が</div><div>分かる仕組みになっています。</div><div>同一のディレクトリに同名ファイルを作成できないのもここからきています。<br></div><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊注意＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><p>現在、参考にさせていただいている書籍は以下になります。</p><p>問題がありましたら、大変申し訳ありませんが、ご指摘ください。</p><p>できる限り迅速に対応させていただきます。</p><p> </p><p>１、Linuxカーネル</p><p><a href="http://www.amazon.co.jp/gp/product/4873111331/249-8164456-1521107?v=glance&amp;n=465392">http://www.amazon.co.jp/gp/product/4873111331/249-8164456-1521107?v=glance&amp;n=465392</a> </p><p> </p><p>２、<font size="2">オぺレーティングシステム</font></p><p><a href="http://www.amazon.co.jp/gp/product/4274132501/249-8164456-1521107?v=glance&amp;n=465392">http://www.amazon.co.jp/gp/product/4274132501/249-8164456-1521107?v=glance&amp;n=465392</a> </p><p> </p><p>３、日経Linux　2004年　3、5、6月号</p><p><a href="http://www.nikkeibpm.co.jp/mag/computer/fra_lin.html">http://www.nikkeibpm.co.jp/mag/computer/fra_lin.html</a> </p><p> </p><p>４、UNIX USER 2005年　5、9月号</p><p><a href="http://www.unixuser.jp/">http://www.unixuser.jp/</a> </p><div><br></div><p>５、<font size="2">基本単位</font></p><p><font size="2"><a href="http://www2.nsknet.or.jp/~azuma/ta/ta0038.htm">http://www2.nsknet.or.jp/~azuma/ta/ta0038.htm</a> <br></font></p><p>＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊</p><div><br></div><div><br></div><div><strong><br></strong></div><br><p><strong><br></strong></p>
]]>
</description>
<link>https://ameblo.jp/meteor1231/entry-10013234824.html</link>
<pubDate>Mon, 05 Jun 2006 03:49:23 +0900</pubDate>
</item>
</channel>
</rss>
