Your SlideShare is downloading. ×
V6read#3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

V6read#3

1,011

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,011
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. オペ―レーティングシステムの読み書き#3 2011/11/7 Nagoya geekbar
  • 2. 今回はuser構造proc構造
  • 3. C言語の空間モデル Text  命令列の格納領域 Data  非0で初期化されたデータ領域 Bss  0で初期化されたデータ領域 Stack  自動(auto)変数の格納領域  関数呼び出し時のレジスタ退避域注)スレッドは、まだ存在しないので対象外
  • 4. 変数の宣言と空間配置int i; // BssInt j = 1; // Datamain(){ static int k = 1; // Data int l = 1; // Stack int m; // Stack :}
  • 5. a.outと空間の関係 CPU PC a.out header text text data data exec(2) bss ・関数を呼 び出すと自3076 /* read in first 8 bytes 動的に割り3077 * of file for segment 当てる。3078 * sizes: ・呼び出し3079 * w0 = 407/410/4113080 * w1 = text size からの復帰3081 * w2 = data size に備えてレ3082 * w3 = bss size stack ジスタの内3083 */ 容を退避。
  • 6. 割り込みが起こると…….. PSWのモードがカーネル CPU モードに変わり、空間が切り PC 替わる。割り込みの種類に応 ② ① じて、ベクターテーブルの値 がPCに書き込まれる text ③ text data data 割り込みの種類に応じて、ベ クターテーブルの値がPCに bss bss 書き込まれるアプリケーション カーネル stack stack
  • 7. 空間の切り替え 1 CPU PCアプリケーション カーネル PSW 00: カーネルモード text 11: ユーザモード text data 11用 00用 data APR0 APR0 APR1 APR1 bss APR2 APR2 bss APR3 APR3 APR4 APR4 APR5 APR5 APR6 APR6 struct user stack APR7 APR7 stack I/Oレジスタ
  • 8. 空間の切り替え 2 savu(u.u_rsav); retu(rp->p_addr); text data bss user user user user user IOレジスタ text text text text text data data data data data bss bss bss bss bss stack stack stack stack stack
  • 9. Unixの空間モデル アプリとカーネルのアドレス域は分離  仮想記憶サポートで少し変わるけど、v6の時点で は完全に別空間  各アプリケーションの空間は独立 カーネルの空間は  Text,Data,Bssは一部を除いて共有  Stackはアプリ毎に個別  Stackはstruct userのページの後半
  • 10. PPDA - Per Processor Data Area OSを読み解く場合に最初に注目する構造 プロセスなどの実行単位毎に割り当てる領域 UNIXの場合はuserとproc
  • 11. struct user0413 struct user0414 {0415 int u_rsav[2]; /* save r5,r6 when exchanging stacks */0416 int u_fsav[25]; /* save fp registers */0417 /* rsav and fsav must be first in structure */0418 char u_segflg; /* flag for IO; user or kernel space */0419 char u_error; /* return error code */0420 char u_uid; /* effective user id */0421 char u_gid; /* effective group id */0422 char u_ruid; /* real user id */0423 char u_rgid; /* real group id */0424 int u_procp; /* pointer to proc structure */
  • 12. struct proc0358 struct proc0359 {0360 char p_stat;0361 char p_flag;0362 char p_pri; /* priority, negative is high */0363 char p_sig; /* signal number sent to this process */0364 char p_uid; /* user id, used to direct tty signals */0365 char p_time; /* resident time for scheduling */0366 char p_cpu; /* cpu usage for scheduling */0367 char p_nice; /* nice for scheduling */0368 int p_ttyp; /* controlling tty */0369 int p_pid; /* unique process id */0370 int p_ppid; /* process id of parent */0371 int p_addr; /* address of swappable image */0372 int p_size; /* size of swappable image (*64 bytes) */0373 int p_wchan; /* event process is awaiting */0374 int *p_textp; /* pointer to text structure */0376 } proc[NPROC];
  • 13. おわり

×