auの日記

プログラミング初心者の日記。(auはハンドルネームです)

ポーリングとは

auです。
今回はポーリングについて調べてみました。

ポーリングとは

ポーリングとは、複数の機器やプログラムに対して一定時間毎に要求を行い、要求条件を満たしていれば実行する処理方法のことです。
いつ起きるかわからないことを処理するのがこの方法です。
例えば、「スマホを3分間放置していると勝手に画面が暗くなる」「キーを押すと反応する」ということがポーリングに当たります。
プログラムの要求の有無の確認はプログラムによって変わります。

割り込み処理とは

auです。
今回は割り込み処理について調べました。

割り込み処理とは

割り込み処理とは、プログラムの処理の仕方の一つで、何かをするプログラムが動いている中でも、他のプログラムを動かしたいというのが割り込み処理です。
割り込みの要求は外部の機器(キーボードなど)で行うことができる。
1. 割り込みの信号(キーボードでコマンドを入力)する
2. CPUは今実行しているプログラムの最初のアドレスを保持した状態で一時停止し、割り込みのプログラムを実行
3. 割り込みのプログラムの処理が終わると保持していたセーブデータから元のプログラムに戻り実行する
という感じで実行します

パイプライン処理とは

auです。
今回は命令パイプラインについて調べました。

命令パイプラインとは

命令パイプラインとは、逐次ソフトウェア(順序を追って処理するソフトウェア)の効率を上げるために、タスクを分割することです。
例えば、カレーを作る行程「具材を準備する」「具材を切る」「具材を煮る」「盛り付ける」の4工程全てを1クロックとします。
これを1人で全ての工程をこなすと時間がかかってしまいます。
そこで、ぞれぞれ担当の人をつけます。そしてそれぞれで時間を分けるので早く処理を終わらせることができる考えです。

この考えをメモリに置き換えると、「命令フェッチ」「命令デコード」「演算処理」「結果を格納する」の4つに分けることができます。

LaTeXを使ってみた

auです。
大学の授業でLaTeXを使ってレポートを書きました。HTMLみたいに決まった文を入力すると「改行」や「段落」をつけることができて楽しいし意外と簡単にできました。数式を書くのがWordに比べてすごく楽だったと思います。
そして、昨日の転置行列を書いた際にもLaTeXのコマンドが使えたのでメモをしておきたいと思います。自分ははてな記法で書いています。

tex記法

基本的には

[tex: 数式]

という風に書きます。
y = xの2乗を書いてみます。

[tex: y = x^2]

 y = x^2
となります。

C言語の転置

auです。
今回は課題で「転置」が出たので、どんなものなのかを調べてみました。
転置と調べたら、"転置行列"がでてきたのでそれについて書きます。

転置行列とは

例えば"a_{ij}"とあったら、"a_{ji}"と、値を入れ替えた際のn行m列行列のことです。
3行3列の場合は
\begin{pmatrix} 1&2&3 \\ 4&5&6 \\ 7&8&9 \end{pmatrix}
上の行列を転置行列にすると
\begin{pmatrix} 1&4&7 \\ 2&5&8 \\ 3&6&9 \end{pmatrix}


2行3列の場合は
\begin{pmatrix} a&b \\ c&d \\ e&f \end{pmatrix}
上の行列を転置行列にすると
\begin{pmatrix} a&d \\ b&e \\ c&f \end{pmatrix}

仮想マシンとは

auです。
今回はよく聞く仮想マシンについて調べてみました。

仮想マシンとは

 仮想マシンとは、1台のコンピュータで仮想化の技術の用い、複数のコンピュータを1台で動作させることです。
 仮想化することで、余っているスペックを振り分けることができるので100%に近いパフォーマンスを引き出すことができます。
 仮想化する際に、自分のPCに入っているOS以外のものも起動することができます。実際に、自分のPCはWindowsOSですが、それ以外にもLinuxOSを起動することができます。違うOSでしかできないことも多くあります。例えば、Linuxのほうがメモリの消費が少ないのでサクサク動くことができることもあります。

ホスト型

 今自分が行っているのが、この"ホスト型"というやり方です。
これは、専用のソフト(自分の場合は"VM Virtual box ")を使い、設定をすることで利用することができました。
 VM Virtual boxを使うとソフトウェアが立ち上がり、1クリックで仮想マシンともともとの自分のOS(自分の場合はWindows)に移動できるので便利です。

他にもハイパーバイザー型もあるそうなのですが、何だか難しそうなのでまた今度にします。

gccの最適化オプション

auです。
今回はgccを使ってコンパイルする際に、最適化するオプションについて調べてみました。

最適化オプション

今回記述する最適化のオプションは"O1, O2, O3"です。それ以外は授業でまだ習っていないので見なかったことにします。
gcc -O1 ファイル名.c のように記述します。
O1 ~ O3まであり、数字が大きくなるほど最適化のレベルが上がります。しかし、コンパイルにかかる時間も長くなります。
また、数字が大きくなるほどデバックやビルドで予期せぬことが起きたりするため注意が必要です。
最適化を適応することで、コードのパフォーマンスが上がったり、サイズの削減などのメリットもあるので、どのようなコードのある場面で使うと有効かをしっかりと把握することが必要になってきます。まだまだよくわからないので試しながらやっていきたいです。