20191305李天琦第六章學習筆記

2022-09-09 06:36:12 字數 2534 閱讀 1156

● 從事日常事務的人。

●在使用者模式或核心模式下執行的 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 只將鍵盤有訊息傳送給具有輸入極點的視窗,但滑鼠...