描述進程的PCB

一、進程標識
      OS 會爲每一個進程分配一個惟一的整型ID,作爲進程的標識號(pid)。進程除了自身的ID外,還有父進程ID(ppid),全部進程的祖先進程是同一個進程,它叫作init進程ID1init進程是內核自舉後的第一個啓動的進程。init進程負責引導系統、啓動守護(後臺)進程而且運行必要的程序

     進程的pidppid能夠分別經過函數getpid()getppid()得到。 服務器

示例:       函數

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
      printf("pid:%d   ppid:%d\n",getpid(),getppid());
      return 0;
}





二、進 程的用戶ID與組ID(進程的運行身份)

進程在運行過程當中,必須具備一相似於用戶的身份,以便進行進程的權限控制,缺省狀況下,哪一個登陸用戶運行程序,該程序進程就具備該用戶的身份。例如,假設當前登陸用戶爲gotter,他運行了ls程序,則ls在運行過程當中就具備gotter的身份,該ls進程的用戶IDID分別爲gottergotter所屬的組。這類型的ID叫作進程的真實用戶ID真實組ID真實用戶ID和真實組ID能夠經過函數getuid()getgid()得到。 ui

與真實ID對應,進程還具備有效用戶ID有效組ID的屬性,內核對進程的訪問權限檢查時,它檢查的是進程的有效用戶ID和有效組ID,而不是真實用戶ID和真實組ID缺省狀況下,用戶的(有效用戶ID和有效組ID)與(真實用戶ID和真實組ID)是相同的。有效用戶id和有效組id經過函數geteuid()getegid()得到。 spa

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
          printf("uid:%d gid:%d euid:%d egid:%d\n",getuid(),getgid(),geteuid(),getegid());
          return 0;
}


cat /etc/passwd | grep meihao  查看……目錄下的名爲meihao的進程的相關信息,裏面包含uid,gid









R 表示運行   S 表示睡眠   T 暫停   Z 殭屍

進程是程序的執行過程,根據它的生命週期能夠劃分紅3種狀態。 orm

 執行態1  生命週期

l 就緒態:進程已經具有執行的一切條件,正在等待分配CPU的處理時間片。 進程

l 等待態:進程不能使用CPU,若等待事件發生(等待的資源分配到)則可將其喚醒。 事件












(ps -aux) 看進程的cpu及內存mem佔有率


Linux 調度策略:

FIFO         實時調度策略 (運行優先級高的進程,不適合服務器)
RR           實時調度策略(運行優先級相同的,輪着來。用於嵌入式,實時 要求高)
OTHER    普通調度策略(全部的一塊兒運行,優先級高的在一個調度週期內拿到的時間片多)





五、 Linux下的進程管理


(kill -9 pid) 殺掉pid進程        (./a.out  &  )表示該進程放到後臺運行
ctrl  +z 暫停進程  bg繼續運行 bg把進程放到前臺執行

[bg做業ID]能夠將該進程帶入後臺。利用jobs能夠查看後臺任務,fg 1把後臺任務帶到前臺,這裏的1表示做業ID。
相關文章
相關標籤/搜索