論理回路-第3講(論理ゲート)(作成途中)
今回からは論理ゲートの話です。
論理ゲートとは第2講で説明した式や表の形で表現されていた論理関数を
結線の図の形で表現するための手段です。
簡単にいえば、トランジスタやダイオードのような電子回路のことです。
論理変数(A、B)がゲートの入力になり、論理関数 f が出力になります。
論理積(AND) f=A・B
入力は2~8入力が普通です。
論理和(OR) f=A+B
入力は2~8入力が普通です。
否定(NOT) f=A
インバータまたはインバータ・ゲートとも呼ばれます。
図の○が否定を表しています。
**************注意***************
現在、参考にさせていただいている書籍、サイトは以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、基本論理ゲート
http://www.ie.u-ryukyu.ac.jp/~wada/digital/gate.html
*******************************
論理回路-第2講(作成途中)
続いてベン図です。
3つの円が重なったところをそれぞれの領域を1~8に分けます。
続いて、ベイチ図、カルノー図です。
カルノー図とは
「論理回路などにおいて論理式を簡単化するための表の中で正方形で構成された図」のことです。
ベン図を
・ベイチ図
・カルノー図
に書き換えると
以下のようになります。
ベイチ図は論理回路で使いずらいので
カルノー図で今後は説明していきます。
ベイチ図
カルノー図
カルノー図はベイチ図若干変更して考案されたものです。
**************注意***************
現在、参考にさせていただいている書籍は以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、論理回路の基礎
2、研究室の資料
3、『ウィキペディア(Wikipedia)』 カルノー図
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%8E%E3%83%BC%E5%9B%B3
*******************************
フラクタルのアルゴリズム-2
それでは、
前回に引き続き、解説していきます。
http://ameblo.jp/meteor1231/theme-10002209945.html
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.image.*;
public class Mandelbrot extends Applet
implements Runnable,MouseListener,MouseMotionListener {
static double RAD=6;
int width,height,length;
int[] pixels;
MemoryImageSource mit;
Image image;
double[] z_re,z_im;
double min_re,max_re;
double min_im,max_im;
double red_re,green_re,blue_re;
double red_im,green_im,blue_im;
int last_x,last_y;
int dx,dy;
boolean running;
public void init() {
width=getSize().width;
height=getSize().height;
length=width*height;
pixels=new int[length];
mit=new MemoryImageSource(width,height,pixels,0,width);
mit.setAnimated(true);
image=getToolkit().createImage(mit);
z_re=new double[length];
z_im=new double[length];
addMouseListener(this);
addMouseMotionListener(this);
reset();
}
void reset() {
min_re=-2.0;
max_re=2.0;
min_im=-2.0*height/width;
max_im=2.0*height/width;
red_re=Math.random()*RAD;
green_re=Math.random()*RAD;
blue_re=Math.random()*RAD;
red_im=Math.random()*RAD;
green_im=Math.random()*RAD;
blue_im=Math.random()*RAD;
}
public void start() {
if (!running) {
running=true;
new Thread(this,"Plotter").start();
}
}
public void stop() {
running=false;
}
public void mousePressed(MouseEvent e) {
running=false;
last_x=e.getX();
last_y=e.getY();
}
public void mouseReleased(MouseEvent e) {
if (dx==0 && dy==0) {
double range_re=max_re-min_re;
double range_im=max_im-min_im;
double center_re=min_re+range_re*e.getX()/width;
double center_im=min_im+range_im*e.getY()/height;
max_re=center_re+range_re/4;
min_re=center_re-range_re/4;
max_im=center_im+range_im/4;
min_im=center_im-range_im/4;
} else {
double d_re=(max_re-min_re)*dx/width;
double d_im=(max_im-min_im)*dy/height;
max_re-=d_re;
min_re-=d_re;
max_im-=d_im;
min_im-=d_im;
dx=dy=0;
}
running=false;
synchronized (this) {
for (int i=0;i<length;i++) z_re[i]=z_im[i]=0;
start();
}
}
public void mouseClicked(MouseEvent e) {
if (e.getClickCount()==2) {
running=false;
synchronized(this) {
reset();
for (int i=0;i<length;i++) z_re[i]=z_im[i]=0;
start();
}
}
}
public void mouseExited(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {
dx+=e.getX()-last_x;
dy+=e.getY()-last_y;
last_x=e.getX();
last_y=e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {}
public synchronized void run() {
int x,y,i;
double c_re,c_im;
double d_re=(max_re-min_re)/width;
double d_im=(max_im-min_im)/height;
int T=30;
while (running) {
for (c_im=min_im,y=0,i=0;y<height && running;c_im+=d_im,y++)
for (c_re=min_re,x=0;x<width;c_re+=d_re,x++,i++) {
double z_re=this.z_re[i],z_im=this.z_im[i];
for (int t=0;t<T;t++) {
double z2_re=z_re*z_re-z_im*z_im;
double z2_im=2*z_re*z_im;
z_re=z2_re+c_re;
z_im=z2_im+c_im;
}
int red=(int)((red_re*z_re+red_im*z_im)*128)+128;
int green=(int)((green_re*z_re+green_im*z_im)*128)+128;
int blue=(int)((blue_re*z_re+blue_im*z_im)*64)+128;
if (red<0) red=0; else if (red>255) red=255;
if (green<0) green=0; else if (green>255) green=255;
if (blue<0) blue=0; else if (blue>255) blue=255;
pixels[i]=0xff000000|red<<16|green<<8|blue;
this.z_re[i]=z_re;
this.z_im[i]=z_im;
}
mit.newPixels();
if (T<1000) T+=10;
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
g.drawImage(image,dx,dy,this);
g.setColor(Color.gray);
g.fillRect(0,0,dx,height);
g.fillRect(width+dx,0,width,height);
g.fillRect(0,0,width,dy);
g.fillRect(0,height+dy,width,height);
}
}
**************注意***************
現在、参考にさせていただいている書籍は以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、ねこいりねこ
http://homepage.mac.com/catincat/
*******************************
フラクタルのアルゴリズム-第1講
研究室で
☆スタックの実装
・アセンブラ
・ハード
☆フラクタル描写(マンデルブロ集合)
・アルゴリズム
・アセンブリおこし
・通信:送ったデータの処理(ハード的に実装)
・PPM形式調べ
を課題として与えられたので、私はこの内、
フラクタル(マンデルブロ集合)のアルゴリズムの担当となりました。
まずは、フラクタルとは何かから解説していきたいと思います。
フラクタルの具体的な例としては海岸線の形などが挙げられます。
海岸線は巨視的にみると複雑に入り組んだ形状をしていますが、
これを拡大するとさらに細かい形状が見えてくるようになり、
結果として拡大しても同じように複雑に入り組んだ形状をしています。
つまり、フラクタルとは以下の図(海岸線に似てる)のように拡大しても、
また同じ図形が現れるもののことを言います(ちなみにコッホ曲線といいます)
一般的な例としては(リンク付き)
があげられます。
そのほかには
http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html
のようなおもしろい例があげられます。
日常的にも株価の動向などもフラクタルな性質を持っているので、
見つけてみるのも楽しいかもしれません。
では、私が調べるマンデルブロ集合ですが、
まずはマンデルブロの解説から入ります。
参照項目の2によると
1975年マンデルブロ(Mandelbrot)が「砕けた石」という意味のラテン語から命名した、非整数次元を持った図形、構造。特徴としては自己相似性が挙げられる。
とあります。
確かに以下の図をみるとそう見えますね。
マンデルブロ集合
それでは、続いてアルゴリズムの説明です。
JAVAのソースがあったので、
これを解説することによって理解していこうと思います。
**************注意***************
現在、参考にさせていただいている書籍は以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、ねこいりねこ
http://homepage.mac.com/catincat/
2、フラクタルとは
http://momi.jwu.ac.jp/~physm/buturi01/fra01/fractal.html
3、 『ウィキペディア(Wikipedia)』:フラクタル
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB
4、フラクタル
http://www.cssa.chs.nihon-u.ac.jp/~szklab/hura3.html
*******************************
論理回路-第1講
OSを製作するのはマザーボードの知識も必要です。
今回はまず、基本的な論理回路の知識をまとめていきます。
始めのうちはうまくまとまりませんが、そのうちに
改善されていくと思います。
以下の6つの表は真理値表です。
真理値表とは論理関数を表す方法です。
(論理関数とは論理変数(AとかBなど)と論理記号(・ とか +など ))
まずは基本的な論理関係である論理積、論理和、否定です。
A、Bがともに1のときのみ論理関数 f は1となります。
A、Bいずれか1つでも1のときに論理関数 f は1となります。
反対の状態を表します。
以上が、最も基本的な論理機能です。
以下の回路もこれら3つで分解することができます。
ただ、実用上、あると便利ですので単独のゲートとして
使用されることが多いです。
1が奇数個あるときに論理関数 f は1となります。
NOT AND このことです。
つまりA・Bの否定ですね。
NOT ORのことです。
つまり、A+Bの否定ですね。
これらから、ド・モルガンの定理という話がでてきます。
これからの良く使っていくと思われるので、
とりあえず、書いておきます。
**************注意***************
現在、参考にさせていただいている書籍は以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、論理回路の基礎
2、研究室の資料
*******************************
ファイルシステム論-第1講
本ブログは主にUNIX系(Linux)の構造を解説するのが
主題となっております。
適宜、BSD系、Solaris、Windows等は解明しだい
ご紹介していきたいと思っています。
それでは、今回のテーマであるファイルシステム論(第1講)に入っていきます。
ここでのキーワードは
1、セクター
2、ファイルシステム
3、VFS
4、iノード
5、パス名探索
6、インデックス化ディレクトリ
の6つです。
まずは、以下の図1を見てください。
保存できるのか?
を示しています。
この事を頭の片隅に置いて以下を見ていってください。
では、まずは
1、セクター の説明から初めていきたいと思います。
ハードディスクではセクターという一定サイズの小さな記憶領域に
分割されています。
例えば、データ(a.txt)が
この際にその分割されたデータができるだけ、近いところに配置される
ように調節されます。この事によって、データ(a.txt)を
3、VFS
この中で、4はアドレス情報が32ビット(4バイト)であることから来ています。
4はブロックサイズを表しています。
ここで、最後の4TBですが、実際に保存できるのは約2TBである。
これはi_sizeメンバーとi_dir_aclメンバーが原因である(詳細は省略)。
ファイル(a.txt)作成、削除の手順
【作成】
カーネルがファイルの作成開始
↓
iノードを確保
↓
iノードをディレクトリに登録(ディレクトリと同じブロック・グループから確保)
↓
親ディレクトリのデータブロックにファイル名とiノード情報を登録
↓
データブロックを確保(ディレクトリと同じブロック・グループから確保)
↓
書き込み
【削除】
親ディレクトリのエントリから削除
↓
リンク・カウントを減らす
↓
リンク数が0の場合のみiノードとデータブロックを解放
(ハードリンク時)
パス名探索を/home/nozawa/part3/b.txtとして
$ cat /home/nozawa/part3/b.txt
でファイルの中身を見ようとした時、カーネルはどのようにして、
b.txtのiノード番号を知り、b.txtのiノードに行き着くことができるのかを解説したいと思います。
実はかなり簡単なシステムになっており図7にあるとおり、
地道に一番上から探索していくことになるのです。
つまりは
/ ディレクトリのiノード番号を調べる
↓
home ディレクトリのiノード番号を調べる
↓
nozawa ディレクトリのiノード番号を調べる
↓
part3 ディレクトリのiノード番号を調べる
↓
b.txt のiノード番号を調べる
**************注意***************
現在、参考にさせていただいている書籍は以下になります。
問題がありましたら、大変申し訳ありませんが、ご指摘ください。
できる限り迅速に対応させていただきます。
1、Linuxカーネル
http://www.amazon.co.jp/gp/product/4873111331/249-8164456-1521107?v=glance&n=465392
2、オぺレーティングシステム
http://www.amazon.co.jp/gp/product/4274132501/249-8164456-1521107?v=glance&n=465392
3、日経Linux 2004年 3、5、6月号
http://www.nikkeibpm.co.jp/mag/computer/fra_lin.html
4、UNIX USER 2005年 5、9月号
5、基本単位
http://www2.nsknet.or.jp/~azuma/ta/ta0038.htm
*******************************
























