1. 程式人生 > >python進程基礎

python進程基礎

發生 展開 系統結構 創建進程 異步 靜態 文本 服務 資源

 #   理論知識
#操作系統基礎知識
#顧名思義,進程即正在執行的一個過程.進程是對正在運行程序的一個抽象
#進程的概念起源於操作系統,是操作系統最核心的概念,也是操作系統提供的最
#古老也是最重要的抽象概念之一.操作系統的其他所有內容都是圍繞進程的概念
#展開的>
#ps:利用cpu自有一個,也能保證支持並發的能力.將一個單獨的cpu變成多個虛擬的cpu
    #(多道技術:時間多路復用和空間多路復用+硬件隔離),沒有進程的抽象,現代計算機將不復存在.

#  必備基礎理論:
        #操作系統的作用:
            #1.隱藏醜陋復雜的硬件接口,提供良好的抽象接口
            #2.管理,調度進程,並且將多個進程對硬件的競爭變的有序
        #多道技術:
            #1.生成背景:針對單核,實現並發
            #2.空間上的復用:如內存中同時有多道程序
            #3.時間上的復用:復用一個cpu的時間片(來回切換)
#  什麽是進程
#進程是(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配
#和調度的基本單位,是操作系統結構的基礎.在早期,進程是程序的基本執行實體,在當代,進程是線程的
#容器.程序是指令,數據及其組織形式的描敘,進程是程序的實體.
#狹義定義:進程是正在運行的程序的實例>

#廣義定義:進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動.他是操作系統動態執行的
    #基本單元,在傳統的操作系統中,進程即是基本的分配單元,也是基本的執行單元.

#進程的概念:
        #1.進程是一個實體.每一個進程都有它自己的地址空間,一般情況下,包括三個:文本區域,數據,推棧
          # 文本區域就是代碼,數據區域就是存儲變量和執行期間使用的動態分配的內存,
           # 堆棧區域存儲著活動調用的指令和本地變量

        #2.進程是一個執行中的程序.程序是沒有生命的實體,只有處理器賦予程序生命時
            #它才能成為一個活動的實體,我們稱為進程/

#操作系統引入進程概念的原因:
    #從理論角度看,是對正在運行的程序過程的抽象;
    # 從實現角度看,是一種數據結構,目的在於清晰地刻畫動態系統的內在規律,
    # 有效管理和調度進入計算機系統主存儲器運行的程序。

#進程的特征:
    #動態性:實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消忙
    #並發性:任何進程都可以同其它進程一起並發執行.
    #獨立性: 進程是一個獨立運行的基本單位,同時也是系統調度和分配資源的獨立單位
    #異步性: 進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立,不可預知的速度向前推動
    #結構特征: 程序,數據,進程控制塊

#進程和程序中的區別:
    #程序是指令和數據的有序集合,是一個靜態概念
    #而進程是程序在處理器上的一次執行過程,它是一個動態概念
    #程序可以作為一種軟件資料永久保存,而進程是有一定的生命周期.
    #程序的永久的,進程是短暫的.


#進程的調度:
    #當多個程序交替運行時,操作系統必須對這些進程進行調度,這個調度也不是隨機的,而是要遵循一定的原則
        #先來先服務調度算法:
        #短作業優先調度算法:
        #時間片輪轉法:
        #多級反饋隊列:

#進程的並發和並行:

    #並發:只資源有限的情況下,兩者交替使用資源(比如單核cpu)    #並行:兩者同時執行

    #註意兩者區別:
        #並行是從微觀上,在一個精準的時間,有不同的程序執行
        #並發是從宏觀上,在一段時間上看出是同時執行


#同步異步阻塞和非阻塞
#創建--->提交---> 就緒(除了cpu分配到了其他所有必須的資源)---->>進程調度-->>運行--->>釋放>..退出
#                                                 --------<<時間片到<<運行
#
                              # 阻塞


# 就緒狀態:進程分配到了程序除cpu以外的所有必須資源,只要獲得cpu,立即執行.
# 執行狀態:程序在處理器上執行的狀態
# 阻塞狀態:正在執行的程序,由於等待某件事情發生而無法執行,便放棄處理器而處於阻塞狀態,如i/o 等待信號等


#  同步和異步

#同步:一個任務的完成必需依賴另外一個任務是,只有等待被依賴的任務完成,依賴的任務才算完成,這是一種可
   #靠的任務序列.同時成功,或者同時失敗,兩個任務的狀態可以保持一致.

#異步: 不需要依賴等待的任務完成,只是通知被依賴的任務要完成什麽工作,依賴的任務也立即執行
    #只要自己的任務完成整個任務完成,至於被依賴的任務是否完成,無法確定,它是不可靠的任務序列


#阻塞和非阻塞:
    #阻塞和非阻塞這兩個概念與程序(線程)等待消息通知(無所謂同步或者異步)時的狀態有關。
    #也就是說阻塞與非阻塞主要是程序(線程)等待消息通知時的狀態角度來說的

#同步/異步與阻塞/非阻塞
    #1.同步阻塞形式:效率低,就是專心排隊,什麽別的事情都不做
    #2.異步阻塞形式:銀行的人辦業務,一個人領到一張排隊字條,這個人只能等待不能去做其它事情
    #3.同步非阻塞形式:一邊打電話和一邊觀察排隊(兩者來回切換),效率低下
    #4.異步非阻塞形式:效率高.一邊打電話等待的事情,一邊等待銀行叫號等待通知,兩種不同操作中來回切換

 #進程的創建和結束

 #進程的創建
    #凡是硬件都需操作系統去管理,只要有操作系統,就有進程的概念,就需要去創建進程,
        # 主要有四種創建方式:
            #1.系統初始化
            #2.一個進程在運行過程中開啟子進程
            #3.用戶的交互請求,而創建一個新jinc
            #4.一個批處理作業的初始化(在大型機的批處理系統中應用)
#進程的結束
    #1.正常退出
    #2.出錯退出
    #3.嚴重錯誤
    #4.被其他進程殺死

  

python進程基礎