1. 程式人生 > >python-day30(程序 驗證空間隔離)

python-day30(程序 驗證空間隔離)

一. 程序

  作業系統發展史簡單介紹

  第一代(1940~1955) 手工操作 ---- 穿孔卡片

  第二代(1955~1965) 磁帶儲存 ---- 批處理系統

    1. 聯機批處理

    2. 離線批處理系統

  第三代(1955~1965) 多道程式系統(********)

    1. 多道程式設計技術

    2. 多道批處理系統

    3. 分時系統

    4. 實時系統

    5. 通用作業系統

  第N代(1980~至今)  現代計算機

    1. 個人計算機作業系統

    2. 網路作業系統

    3. 分散式作業系統

#一 作業系統的作用:
    1:隱藏醜陋複雜的硬體介面,提供良好的抽象介面
    2:管理、排程程序,並且將多個程序對硬體的競爭變得有序

#二 多道技術:
    1.產生背景:針對單核,實現併發
    ps:
    現在的主機一般是多核,那麼每個核都會利用多道技術
    有4個cpu,運行於cpu1的某個程式遇到io阻塞,會等到io結束再重新排程,會被排程到4個
    cpu中的任意一個,具體由作業系統排程演算法決定。
    
    2.空間上的複用:如記憶體中同時有多道程式
    3.時間上的複用:複用一個cpu的時間片
       強調:遇到io切,佔用cpu時間過長也切,核心在於切之前將程序的狀態儲存下來,這樣
            才能保證下次切換回來時,能基於上次切走的位置繼續執行

二. 程序的兩種建立方法(**********)

  程序的建立

 1 #當前檔名稱為test.py
 2 # from multiprocessing import Process
 3 #
 4 # def func():
 5 #     print(12345)
 6 #
 7 # if __name__ == '__main__': #windows 下才需要寫這個,這和系統建立程序的機制有關係,不用深究,記著windows下要寫就好啦
 8 #     #首先我運行當前這個test.py檔案,執行這個檔案的程式,那麼就產生了程序,這個程序我們稱為主程序
9 # 10 # p = Process(target=func,) #將函式註冊到一個程序中,p是一個程序物件,此時還沒有啟動程序,只是建立了一個程序物件。並且func是不加括號的,因為加上括號這個函式就直接運行了對吧。 11 # p.start() #告訴作業系統,給我開啟一個程序,func這個函式就被我們新開的這個程序執行了,而這個程序是我主程序執行過程中創建出來的,所以稱這個新建立的程序為主程序的子程序,而主程序又可以稱為這個新程序的父程序。 12           #而這個子程序中執行的程式,相當於將現在這個test.py檔案中的程式copy到一個你看不到的python檔案中去執行了,就相當於當前這個檔案,被另外一個py檔案import過去並執行了。 13           #start並不是直接就去執行了,我們知道程序有三個狀態,程序會進入程序的三個狀態,就緒,(被排程,也就是時間片切換到它的時候)執行,阻塞,並且在這個三個狀態之間不斷的轉換,等待cpu執行時間片到了。 14 # print('*' * 10) #這是主程序的程式,上面開啟的子程序的程式是和主程序的程式同時執行的,我們稱為非同步
View Code

  程序的建立(第二種方法)

 

三. 程序之間是空間隔離的(驗證)

 

四. os.getpid() os.getppid()

五. for迴圈建立程序