linux程序概述
程序控制塊:pcb,程序控制塊包含了程序的描述資訊、控制資訊以及資源資訊,它是程序的乙個靜態描述。核心使用程序來控制對cpu和其他系統資源的訪問,並且使用程序來決定在cpu上執行哪個程式,執行多久以及採用什麼特性執行它,核心的排程器負責在所有的程序間分配cpu執行時間,稱為時間片,它輪流在每個程序分得的時間片用完後從程序那裡搶回控制權。
程序標識
os會為每個程序分配乙個唯一的整型id,作為程序的標識號(pid),程序除了自身的id外,還有父程序id(ppid),所有程序的祖先程序是同乙個程序,它叫做init程序,id為1,init程序是核心自舉後的乙個啟動程序。init程序負責引導系統、啟動守護(後台)程序並且執行必要的程式。程序的pid和ppid可以分別通過函式getpid()和getppid()獲得。
真實使用者id:getuid()
真實組id:getgid()
有效使用者id:geteuid()
有效組id:getegid()
ls -l etc/shadow //使用者的密碼儲存在etc/shadow中
//使用者的使用者名稱和密碼是儲存在/etc/passwd裡,後來專門把密碼儲存在/etc/shadow裡
cat /proc/cpuinfo //檢視cpu資訊
ps -aux //檢視所有的程序的cpu,記憶體佔用率
ps -aux|grep 'a' //查詢指定(a)程序
ps -ef //顯示父子程序關係
ps -elf //檢視所有程序
top //顯示前20條程序,動態的改變,佔用率(q)
許可權提公升:對許可權的檢視及其有效id
which passwd //檢視passwd這個命令在哪個路徑
ls -l /usr/bin/passwd //passwd是屬於root的,-rwsr-xr-x裡面的s就是許可權提公升,當任何使用者,使用passwd的時候,許可權會變成root(該命令的持有者)u+s
st_mode 高四位1111代表檔案型別,低9位代表許可權111 1 1111 1111
chmod u+s a.out 許可權提公升與檔案擁有者一樣,只針對可執行檔案,變紅
tmp drwxrwxrwt 裡面的t代表每個人自己**自己的檔案(粘著位),只能o+t(其他使用者),注意檔案的擁有者
vim /etc/sudoers //檢視sudo的配置表
在linux系統,程序是os的最小單元,os會為每個程序分配大小為4g的虛擬記憶體空間
4g的虛擬記憶體:1g分給核心空間,3g分到使用者空間(三個段)
linux程序包含三個段:資料段,**段和堆疊段
資料段:存放全域性變數、常數以及動態資料分配的資料空間
**段:存放程式**的資料
r:執行 s:睡眠 t:暫停狀態或者跟蹤狀態 z:退出程序,殭屍程序
使用者態與核心態
中斷分為軟中斷和硬中斷
嵌入式程式設計需要嚴謹控制優先順序
排程策略(140個優先順序)(-40 ~ 99)
實時排程 fifo rr 100個優先順序
普通排程 other 40個優先順序(60 ~ 99)
數字越低,優先順序越高
優先順序最高:watchdog,等級為-40
排程策略有兩種,優先順序為-40到99(140個優先順序)
<1>實時排程策略(fifo先進先出 rr輪轉)-40到59 -40最高 航天航空 飛機 linux系統 watchdog的優先順序是-40
<2>普通排程策略(other)60到99 生活中和工作中一般都是普通排程策略
man sched//排程的介面
監控程序每5秒監控業務程序是否掛掉,假如掛掉則把該業務程序拉起來
相當於./a.out,程式設計師檢視日誌,復現崩潰和查到崩潰原因。
renice -n 10 -p 100303//對程序優先順序的增加(+10)
top投票
程序的管理
通過中斷可以進入核心,程式執行在使用者態(for迴圈,開方);
而read和write是系統呼叫,執行在核心態。
kill -2等價於ctrl+c(讓程序在後台處於暫停狀態)
常用kill -9 程序號 關機訊號
假如kill了bash程序,終端視窗會被關
bg命令:將掛起的程序放到後台執行
18號是繼續訊號,kill -18 99999,可以傳送繼續訊號給99999號程序,使其從s轉到r
gdb訊號就是continue之後馬上發暫停
fg 1或fg 2 可以使後台程式拉到前台:與bg組合使用
./a.out & 可以使函式直接在後台執行
jobs 顯示後台的所有程序
Linux 程序基礎
傳統的linux模型裡有三種建立或者修改程序的操作 system用於呼叫shell,執行乙個指定的命令 fork用於建立乙個新的程序,該程序幾乎是當前程序的乙個完全拷貝 exec可以在程序中用另外的程式來替換當前執行的程序。程序 程序是乙個正在執行的程式例項,他也是linux基本的排程單位,乙個程序...
Linux 程序基礎
程序是程式執行時的乙個例項,可以分配給處理器並由處理器執行的乙個實體,由單一順序的執行顯示,是當前狀態和相關系統資源描述的活動單元。程序優先順序 可執行程式是指令和資料的集合,作為一種資料資料長期存在,是乙個靜態概念。而程序是可執行程式的一次執行過程,是有生命期,是暫時的,是乙個動態概念。所以同乙個...
Linux守護程序基礎
1 守護程序中涉及到的基本概念 1.1程序組 1.1.1 程序組基本概念 程序組是乙個或多個程序的集合,可以接收來自同乙個終端的各種訊號。每執行乙個程式或是命令都將產生乙個程序組。每個程序屬於乙個程序組,而每個程序組都存在乙個領頭程序 或是叫組長程序 一般程序組的第乙個程序是領頭程序。領頭程序可以建...