オペレーティングシステム 其の一 20170412
電卓程度のアセンブリ言語(わかりにくい)
↓ ここのギャップをOSが埋めている
普段使っているPCのスペック(簡単)
OS:ハードウェアを抽象化してソフトウェア開発をしやすい形にする
OSを学ぶとは
①コンピュータの低レイヤを学ぶ
②OSが提供する環境を学ぶ
このふたつの意味合いを持つ
OSを学んでここがうれしい!!
・低レイヤのことがわかる
⇒デバイスドライバ:ハードウェアと新しい機器とをつなぐ役割…OSの知識が不可欠
⇒組み込み:単純な危機に搭載するCPUの設計のためには低レイヤの設計、ハードウェア寄りの設計が必要
・セキュリティ
⇒攻撃も防御もOSの知識が必要
⇒フォレンジック(コンピュータから情報を集める技術)
・プログラムの高速化
⇒アルゴリズムでどうにかなるならばいいが、OSに関する箇所がボトルネックになっていることが多々ある
OSが隠しているもの、やっていること
・実行ファイルが実行できるように準備をする
・ハードウェアが文字を表示するまでにいくつもの層やインターフェースを通らなければならない
例えば…
#include<stdio.h>
int main(void){
printf("Hello,world");
return 0;
}
上のような単純なプログラムを実行するためにもかなりの手順を踏んでいて、そこにOSが密接に絡んでくる。
補足:LinuxはユーザーにOSの状態を開示しているのでおすすめとのこと
プログラミング言語実験 其の一 20170411
・list構造の復習(C言語)
<基本設定>
…Node型の設定
typedef struct _Node{
double data; //Nodeに入れるデータ
struct _Node *next; //自己参照構造体
}Node;
…先頭のNodeの設定
Node *p,*start;
p=malloc(sizeof(Node)); //大きさNodeのメモリを動的に確保
start=p; //最初に設定した位置を*startに記録
...Nodeの連鎖の設定
for(i=0;i<n;i++){
p->next=malloc(sizeof(Node)); //メモリを動的確保
p=p->next; //pの位置をポインタで指し示す次のNodeに移す
}
この後は、pをstartの位置まで戻して同じようにしてデータの格納を行っていく。
データを出力するときもpをstartの位置まで戻して順番に出力していくとよいだろう。
あと、malloc関数を用いるときには
#include<stdlib.h>
を冒頭に書き示さなければならないことに注意。
参照:自己参照構造体