chapter1--UNIX基礎知識

/*20190528*/

/*APUE*/

/*第一章--UNIX基礎知識*/

1.Unix操作系統體系結構

內核--》系統調用--》shell/公用函數庫--》應用程序

2.登錄口令

    1. 口令文件:/etc/passwd; 

    2. 7個字段:登錄名:加密口令:數字用戶ID:數字組ID:註釋字段:起始目錄:shell程序(系統決定爲用戶執行哪一個shell

3.Shell

  1. 命令行解釋器:讀取用戶輸入,執行命令

    2.  常用shell:bshell, cshell, kshell

4.文件和目錄

  1. 文件名推薦在“字母”,“數字”,“.”,“-”,“_”範圍內
  2. 絕對路徑:/開頭;相對路徑名:相對於當前目錄的文件

5.輸入和輸出

  1. 文件描述符:小的非負整數,內核用以標識一個特定進程正在訪問的文件;讀寫文件時都可以使用
  2. 新程序文件描述符:標註輸入,標準輸出,標準錯誤,默認鏈向終端;可以重定向到某個文件(ls > file.list)
  3. 不帶緩衝的I/O:read(), write(), open(), lseek(), close()都使用文件描述符
  4. 標準I/O:爲不帶緩衝的I/O提供了一個帶緩衝的接口,無需考慮最佳緩衝區大小;簡化了對輸入行的處理;例如printf(), fgets()...定義在#include<stdio.h>中
  5. 標準I/O常量stdin, stdout;EOF也定義在#include<stdio.h>中

6.程序和進程

  1. 程序:存儲在磁盤上某個目錄的可執行文件;內核使用exec()函數將程序讀入內存並執行
  2. 進程:程序的執行實例;UNIX系統確保每一個進程都有一個唯一的數字標識符(進程ID,非負整數)
  3. 進程控制:fork(), exec(), waitpid()

    6.2線程

  1. 所有線程共享同一地址空間,文件描述符,棧,進程相關屬性(訪問同一存儲區)
  2. 需採取同步措施
  3. 用ID標識,旨在所屬進程內有效;可用線程ID引用該線程

7.出錯處理

  1. #include<errno.h>中定義了errno及可以賦予的各常量
  2. 不出錯其值不會被例程清除;任何函數都不會將errno置爲0
  3. 打印出錯信息函數strerror()【#include<string.h>】, perror()[#include<stdio.h>]
  4. 出錯恢復:非致命性錯誤可以恢復

8.用戶標識

(1)用戶ID

(2)用戶組ID

9.信號

(1)通知進程發生了某種情況

(2)處理方式:忽略,默認,信號處理函數

10.時間值

(1)日曆時間

(2)進程時間(CPU時間):始終時間,用戶CPU時間,系統CPU時間

11.系統調用和庫函數

(1)系統調用:直接進入內核的入口點;UNIX爲每個系統調用在標準c庫中設置一個具有同樣名字的函數

(2)庫函數可以被替換,系統調用不能

(3)系統調用提供最小接口,庫函數提供比較複雜的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章