Linux C 的程式排程
程式排程
概念:按一定的演算法,從一組待執行的程式中選出一個來佔用CPU的執行。
排程方法: 搶佔式 、 非搶佔式
排程演算法:1)先來先服務 2)短程式優先 3)高優先順序優先 4)時間片輪轉法
死鍵:多個程式因競爭資源而形成一種僵局,若無外力作用,這些程式將永遠不能向前推進。
獲取ID的標頭檔案:#include <sys/types.h> 、<unistd.h>
pid_t.getpid(void) 獲取本程式ID
pid_t. getppid(void) 獲取父程式ID
程式的建立: 建立子程式 pid_t fork(void)
一次呼叫,返回兩個程式,可能有三種返回值;
1)返回 失敗 < 0
2)父程式 返回子程式ID
3)子 返回0
init---------始祖程式:所有程式的源頭
fork與vfork的區別:
1)fork:子程式拷貝父程式的資料段或資源(一模一樣), 呼叫的標頭檔案 <unistd.h>
vfork:子程式與父程式共享資料段
2)fork:父、子程式的執行順序不確定
vfork:子程式先執行,父程式後執行
exce函式族: #include <unistd.h>
1 int execl(const char *path, const char *arg1,..............)
引數: path:被執行程式名(包含完整的路徑)
arg1......argn:被執行的程式所需的命令列引數,含程式名,以空指標(NULL)結束
2 int main(int argc, char **argv) .......命令列引數 sleep( );
exec用被執行的程式替換呼叫它的程式
區別:
fork:建立一個新的程式,產生一個新的PID
exec啟動一個新的程式,替換原有的程式,因此程式的PID不會發生改變 ............俗稱 借屍還魂
程式的等待: #include <sys/types.h> #include <sys/wait.h>
pid_t wait(int status)
功能: 阻塞該程式,直到其某個子程式退出。
相關文章
- linux程式排程Linux
- LInux實驗 : 程式排程模擬Linux
- 排程器簡介,以及Linux的排程策略Linux
- OS_程式排程:C++實現C++
- Linux程式排程邏輯與原始碼分析Linux原始碼
- Linux IO排程方法Linux
- linux中設定程式排程的優先順序別Linux
- Linux核心學習筆記(5)– 程式排程概述Linux筆記
- linux搶佔式排程Linux
- Linux I/O排程器Linux
- 如何更改Linux的I/O排程器Linux
- Linux 定時任務排程Linux
- Linux中什麼情況下會發生程式排程?Linux
- Flink排程之排程器、排程策略、排程模式模式
- Linux程序排程器-CPU負載Linux負載
- Linux Shell指令碼時間排程Linux指令碼
- 程式排程案例分析與常見疑惑1:為何不能排程?
- linux之 修改磁碟排程演算法Linux演算法
- Linux排程器:程序優先順序Linux
- 程式排程的原理和演算法探析演算法
- Pod的排程是由排程器(kube-scheduler)
- Linux 中 Laravel 任務排程不執行LinuxLaravel
- Go 併發程式設計 - runtime 協程排程(三)Go程式設計
- Yarn的排程器Yarn
- oracle排程程式作業dbms_schedulerOracle
- linux基礎(四)——任務排程cron和anacronLinux
- Linux之CPU排程策略和CPU親和性Linux
- 一文詳解 Linux Crontab 排程任務Linux
- Linux 核心排程器原始碼分析 - 初始化Linux原始碼
- 深入瞭解Python的Dask分散式排程程式 - selectfromPython分散式
- kubernetes 排程
- [譯] React 中的排程React
- 程序排程的時機
- Pod的排程機制
- Go Runtime 的排程器Go
- Go排程器系列(3)圖解排程原理Go圖解
- Go語言排程器之主動排程(20)Go
- Go runtime 排程器精講(五):排程策略Go
- Spark中資源排程和任務排程Spark