Linux程序基礎

2021-09-22 10:24:27 字數 2343 閱讀 5011

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 程序組基本概念 程序組是乙個或多個程序的集合,可以接收來自同乙個終端的各種訊號。每執行乙個程式或是命令都將產生乙個程序組。每個程序屬於乙個程序組,而每個程序組都存在乙個領頭程序 或是叫組長程序 一般程序組的第乙個程序是領頭程序。領頭程序可以建...