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

歡迎訪問 生活随笔!

生活随笔

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

linux

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

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

1.進程基本概述

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

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

1.1 進程的組成部分

已分配內存的地址空間

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

程序代碼的一個或多個執行線程

進程狀態

1.2 進程的環境

本地和全局變量

當前調度上下文

分配的系統資源,如文件描述符合網絡端口

1.3 進程的產生

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

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

任何進程可創建子進程。所有進程都是第一個系統進程的后代。REHEL7上,第一個系統進程就是systemd。

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

1.4 進程的分類

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

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

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

2.進程的狀態

Excuting //運行態

ready //就緒態,也可稱作睡眠態

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

Interruptible sleep // 可中斷的睡眠??呻S時喚醒

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

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

進程睡眠的原因

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

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

Linux進程狀態

標志 內核定義的狀態和描述

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

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

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

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

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

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

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

< 高優先級進程

N 低優先級進程

前臺進程組中的進程

| 多線路進程

s 會話進程首進程

3.進程優先級

3.1Linux進程調度與多任務

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

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

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

3.2 進程優先級

進程優先級范圍:0-139,數字越小,優先級越高

0-99 實時優先級,內核調整

100-139 靜態優先級,用戶可控制

進程優先級的特點

獲得更多的CPU運行時間

更優先獲得CPU運行的機會

要修改進程的優先級可以通過調整進程的nice值來實現,nice值越小,優先級越高

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

3.3 相對優先級

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

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

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

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

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

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

3.4 nice級別與權限

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

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

3.5 進程優先級調整

調整nice值

```

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

renice NI PID (例:renice 3 3704)

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

nice -n NI (COMMAND)

```

4.進程管理命令

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

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

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

唯一進程識別符(PID)

CPU和已經花費的時間

進程在各種位置上分配的內存數量

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

當前的進程狀態

ps支持是三種選項格式:

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

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

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

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

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

exiting或defunct表示僵尸進程

總結

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

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