日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中第一个进程的形成,Linux进程管理

發(fā)布時間:2023/12/2 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中第一个进程的形成,Linux进程管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.進程基本概述

定義:進程是已經啟動的可執(zhí)行程序的運行中實例。

/proc目錄下以數(shù)字為名的目錄,每一個目錄代表一個進程,保留著進程的屬性信息,每一個進程的PID是唯一的,就算進程退出了,其他進程也不會占用其PID

1.1 進程的組成部分

已分配內存的地址空間

安全屬性,包括所有權憑據和特權

程序代碼的一個或多個執(zhí)行線程

進程狀態(tài)

1.2 進程的環(huán)境

本地和全局變量

當前調度上下文

分配的系統(tǒng)資源,如文件描述符合網絡端口

1.3 進程的產生

現(xiàn)有的(父)進程復制自己的地址空間(fork)來創(chuàng)建一個新的(子)進程結構。

每個新進程分配有一個唯一的進程ID(PID),滿足跟蹤和安全性之需。PID與父進程ID(PPID)是新進程環(huán)境的元素。

任何進程可創(chuàng)建子進程。所有進程都是第一個系統(tǒng)進程的后代。REHEL7上,第一個系統(tǒng)進程就是systemd。

通過fork例程,子進程繼承安全性身份、過去和當前的文件描述符、端口和資源特權、環(huán)境變量以及程序代碼。隨后,子進程可能exec其自己的程序代碼。通常,父進程在子進程運行期間處于睡眠狀態(tài),設置一個在子進程完成時發(fā)出信號的請求(wait)。在退出時,子進程可能以及關閉或丟棄了其資源和環(huán)境,剩余的部分被稱作僵停。父進程在子進程退出時收到信號而被喚醒,清理剩余結構,然后繼續(xù)執(zhí)行其自己的程序代碼。

1.4 進程的分類

前臺進程:與終端相關的進程,通過終端啟動的進程

注意:也可把在前臺啟動的進程送往后臺,以守護模式運行

守護進程:daemon ,與終端無關的進程(如內核),在系統(tǒng)引導過程中啟動的進程

2.進程的狀態(tài)

Excuting //運行態(tài)

ready //就緒態(tài),也可稱作睡眠態(tài)

Uninterrutible sleep //不可中斷的睡眠。不可隨時會喚醒,只有當IO資源加載成功后才能喚醒

Interruptible sleep // 可中斷的睡眠。可隨時喚醒

Zombie //僵尸進程。正常運行結束了,但是不釋放占據的內存資源

Stopped //停止態(tài),暫停于內存中,但不會被調度,除非手動啟動

進程睡眠的原因

當一個執(zhí)行中的進程,需要加載額外的IO資源的時候,由于IO設備的速度太慢,所以會轉入睡眠狀態(tài)等待,交出CPU給其他進程,以免浪費剩余執(zhí)行時間。

在多任務處理操作系統(tǒng)中,每個CPU(或CPU核心)在一個時間點處理一個進程。在進程運行時,它對CPU的時間和資源分配的直接要求會有變化。進程分配有一個狀態(tài),它隨著環(huán)境要求而改變。

Linux進程狀態(tài)

標志 內核定義的狀態(tài)和描述

R TASK_RUNNING: 進程正在CPU上執(zhí)行,或者正在等待運行。處于運行中(或可運行)狀態(tài)時,進程可能正在執(zhí)行用戶例程或內核例程(系統(tǒng)調用),或已排隊并就緒

S TASK_INTERRUPTIBLE :進程處于睡眠狀態(tài)且正在等待某一條件:硬件請求、系統(tǒng)資源訪問或信號。當事件或信號滿足該條件時,該進程將返回運行中。

D TASK_UNINTERRUPTIBLE:此進程也在睡眠,但與S狀態(tài)不同,不會響應傳遞的信號。僅在特定的條件下使用,其中進程可能會導致意外的設備狀態(tài)

K TASK_KILLABLE :進程處于睡眠狀態(tài),與不可中斷的D狀態(tài)相同,但有所修改。允許等待中的任務通過響應信號而被中斷(徹底退出)。實用程序通常可中斷的進程狀態(tài)顯示為D狀態(tài)

T TASK_STOPPED:進程已被停止(暫停),通常是通過用戶或其他進程發(fā)出的信號。進程可以通過另一信號返回運行中狀態(tài),繼續(xù)執(zhí)行(恢復)

Z EXIT_ZOMBIE :子進程在退出時向父進程發(fā)出信號。除進程身份(PID)之外的所有資源都已釋放。

X EXIT_DEAD :當父進程清理(獲取)剩余的子進程結構時,進程現(xiàn)在已徹底釋放。此狀態(tài)從不會在進程列出實用程序中看到

< 高優(yōu)先級進程

N 低優(yōu)先級進程

前臺進程組中的進程

| 多線路進程

s 會話進程首進程

3.進程優(yōu)先級

3.1Linux進程調度與多任務

現(xiàn)代計算機每臺配備數(shù)百個CPU,每個CPU上具有多個核心,它們可以并執(zhí)行數(shù)以百計的指令。但是所有這些系統(tǒng)往往具有一個共同點:它們需要運行的進程數(shù)量總是超出實際具有的核心數(shù)。

通過時間分片技術、Linux(和其他操作系統(tǒng))實際能夠運行的進程數(shù)(和線程數(shù))可以超出可用的實際處理單元數(shù)。操作系統(tǒng)進程調度程序將在單個核心上的進程之間快速切換,從而給用戶一種有多個進程的同時運行的印象。

執(zhí)行此切換的Linux內核部分稱為進程調度程序。

3.2 進程優(yōu)先級

進程優(yōu)先級范圍:0-139,數(shù)字越小,優(yōu)先級越高

0-99 實時優(yōu)先級,內核調整

100-139 靜態(tài)優(yōu)先級,用戶可控制

進程優(yōu)先級的特點

獲得更多的CPU運行時間

更優(yōu)先獲得CPU運行的機會

要修改進程的優(yōu)先級可以通過調整進程的nice值來實現(xiàn),nice值越小,優(yōu)先級越高

nice值的范圍是(-20,19),-20對應100 ,19對應139

3.3 相對優(yōu)先級

由于不是每個進程都與其他進程同樣重要,可告知調度程序為不同的進程使用不同的調度策略。常規(guī)系統(tǒng)上運行的大多數(shù)進程使用的調度策略稱為SCHED_OTHER(也稱為SCHED_NORMAL),但還有一些其他策略可用于不同的目的。

由于并非所有進程都以同樣的方式創(chuàng)建,可為采用SCHED_NORMAL策略運行的進程指定相對優(yōu)先級。此優(yōu)先級稱為進程的nice值。一個進程可以有40種不同級別的nice值。

這些nice級別的范圍是從-20到19.默認情況下,進程將繼承其父進程的nice級別,通常為0

nice級別越高,表示優(yōu)先級越低(該進程容易將其CPU使用量讓其他進程)

nice級別越低,表示優(yōu)先級越高(該進程更加不傾向于讓出CPU)

如果不存在資源爭用(例如當活動進程數(shù)小于可用CPU核心數(shù)時),即使nice級別高的進程也將仍使用它們可使用的所有可用CPU資源。當請求CPU時間的進程數(shù)超過可用核心數(shù)時,nice級別較高的進程將比nice級別較低的進程收到更少的CPU時間。

3.4 nice級別與權限

為很少占CPU資源的進程設置較低的nice級別可能會對同一系統(tǒng)上運行的其他進程的性能造成負面影響,所以緊允許root用戶設置負nice級別以及降低現(xiàn)有進程的nice級別

普通非特權用戶僅允許是指正的nice級別,只能對現(xiàn)有進行級別提升nice級別,而不能降低nice級別。

3.5 進程優(yōu)先級調整

調整nice值

```

//調整以及啟動的進程的nice值

renice NI PID (例:renice 3 3704)

//在啟動時指定nice值(-20,19)

nice -n NI (COMMAND)

```

4.進程管理命令

Linux系統(tǒng)各進程的相關信息均保存在/proc/PID目錄下的各文件中

4.1 ps(process state)命令用于列出當前的進程,可以顯示詳細的進程信息,包括:

用戶標識符(UID),它確定進程的特權

唯一進程識別符(PID)

CPU和已經花費的時間

進程在各種位置上分配的內存數(shù)量

進程的位置STDOUT,稱為控制終端

當前的進程狀態(tài)

ps支持是三種選項格式:

UNIX(POSIX)選項、可以分組但必須以連字符開頭

BSD選項,可以分組但不可與連字符同用

GNU長選項,以雙連字符開頭

ps(process state),顯示進程信息,注意事項:

加了[ ]中括號的,表示內核進程,通常位于頂部

exiting或defunct表示僵尸進程

總結

以上是生活随笔為你收集整理的linux中第一个进程的形成,Linux进程管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。