● 從事日常事務的人。
●在使用者模式或核心模式下執行的 unix/linux 程序。
● 執行機器指令的cpu。
●來自硬體的中斷∶大樓著火,鬧鐘響了等。
●來自其他人的中斷∶**響了,有人敲門等。
●自己造成的中斷∶切到手指,吃得太多等。
按照緊急程度,中斷可分為以下幾類∶
●不可遮蔽(nmi)∶大樓著火!
●可遮蔽∶有人敲門等。
●來自硬體的中斷:終端、間隔定時器的"ctrl+c"組合鍵等。
●來自其他程序的中斷:kill(pid,sig#)、death_of_child 等。
●自己造成的中斷∶除以0、無效位址等。
●來自硬體的中斷:定時器、i/o裝置等。
●來自其他處理器的中斷:ffp、dma、多處理器系統中的其他 cpu。
●自己造成的中斷:除以0、保護錯誤、int指令。
程序可能會自己造成中斷。這些中斷是由被 cpu 識別為異常的錯誤引起的,例如除以0、無效位址、非法指令、越權等。當程序遇到異常時,它會陷入作業系統核心,將陷阱原因轉換為訊號編號,並將訊號傳送給自己。如果在使用者模式下發生異常,則程序的預設操作是終止,並使用乙個可選的記憶體轉儲進行除錯。如果在核心模式下發生陷阱,原因一定是硬體錯誤,或者很可能是核心**中的漏洞,在這種情況下,核心無法處理。
#define sighup
#define sigint
#define sigquit
#define sigill #define sigtrap
#define sigabrt #define sigiot
#define sigbus
#define sigfpe
#define sigkill
#define sigusr1
#define sigse**
#define sigusr2
#define sigpipe #define sigalrm
#define sigterm
#define sigstkflt
#define sigchld
#define sigcont
#define sigstop
#define sigtstp
#define sigttin
#define sigttou
#define sigurg
#define sigxcpu
#define sigxfsz
#define si**talrm
#define sigprof
#define sigwinch
#define sigpoll
#define sigpwr
#define sigsys
來自硬體中斷的訊號:在程序執行過程中,一些硬體中斷被轉換為訊號傳送給程序。
來自異常的訊號:當使用者模式下的程序遇到異常時,會陷入核心模式,生成乙個訊號,並傳送給自己。常見的陷阱訊號有sigfpe(8),表示浮點異常(除以0),最常見也是最可怕的是sigse**(11),表示段錯誤,等等。
來自其他程序的訊號:程序可使用kil(pid,sig)系統呼叫向 pid標識的目標程序傳送訊號。讀者可以嘗試以下實驗。
每個程序proc 都有乙個訊號處理陣列 int sig[32]。sig[32]陣列的每個條目都指定了如何處理相應的訊號,其中0表示 default(預設).1表示 ignore(忽略).其他非零值表示使用者模式下預先安裝的訊號捕捉(處理)函式。下圖給出了訊號位向量、遮蔽位向量和訊號處理函式。
unix訊號最初設計用於以下用途
1.作為程序異常的統一處理方法;
2.讓程序通過預先安裝的訊號捕捉函式使用者模式下的程式錯誤;
3.在特殊情況下,它會讓某乙個程序通過訊號殺死另乙個程序。
管道的主要用途是連線一對管道寫程序和讀程序。管道寫程序可將資料寫入管道,讀程序可從管道中讀取資料。管道控制機制要對管道讀寫操作進行同步控制。未命名管道供相關程序使用。命名管道是fifo的,可供不相關程序使用。在 linux中的管道讀取操作為同步和阻塞。如果管道仍有寫程序但沒有資料,讀程序會進行等待。
程序可使用 kill 系統呼叫向其他程序傳送訊號,其他程序使用訊號捕捉函式處理訊號。將訊號用作ipc的乙個主要缺點是訊號只是用作通知,不含任何資訊內容。
linux 不區分程序和執行緒。在 linux中,程序是共享某些公共資源的執行緒。如果是使用有共享位址空間的clone(系統呼叫建立的程序,它們可使用互斥量和條件變數通過共享記憶體進行同步通訊。另外,常規程序可新增到共享記憶體,使它們可作為執行緒進行同步。
sigaction()的使用
#include#include#includevoid handler(int sig,siginfo_t *siginfo,void *context)
int main(int argc,char *ar**)
}
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
第六章 指標
1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...
第六章總結
6.1 使用滑鼠 6.1.1 滑鼠時間和滑鼠訊息 根據使用者操作滑鼠時滑鼠的位置,滑鼠訊息分為兩類 客戶區滑鼠訊息和非客戶區滑鼠訊息。1.客戶去滑鼠訊息 2.當滑鼠游標位於視窗的使用者區時,將生成客戶滑鼠訊息。滑鼠訊息和鍵盤訊息有所不同,windows 只將鍵盤有訊息傳送給具有輸入極點的視窗,但滑鼠...