python-day30(程序 驗證空間隔離)
阿新 • • 發佈:2018-11-27
一. 程序
作業系統發展史簡單介紹
第一代(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檔案,執行這個檔案的程式,那麼就產生了程序,這個程序我們稱為主程序View Code9 # 10 # p = Process(target=func,) #將函式註冊到一個程序中,p是一個程序物件,此時還沒有啟動程序,只是建立了一個程序物件。並且func是不加括號的,因為加上括號這個函式就直接運行了對吧。 11 # p.start() #告訴作業系統,給我開啟一個程序,func這個函式就被我們新開的這個程序執行了,而這個程序是我主程序執行過程中創建出來的,所以稱這個新建立的程序為主程序的子程序,而主程序又可以稱為這個新程序的父程序。 12 #而這個子程序中執行的程式,相當於將現在這個test.py檔案中的程式copy到一個你看不到的python檔案中去執行了,就相當於當前這個檔案,被另外一個py檔案import過去並執行了。 13 #start並不是直接就去執行了,我們知道程序有三個狀態,程序會進入程序的三個狀態,就緒,(被排程,也就是時間片切換到它的時候)執行,阻塞,並且在這個三個狀態之間不斷的轉換,等待cpu執行時間片到了。 14 # print('*' * 10) #這是主程序的程式,上面開啟的子程序的程式是和主程序的程式同時執行的,我們稱為非同步
程序的建立(第二種方法)
三. 程序之間是空間隔離的(驗證)
四. os.getpid() os.getppid()
五. for迴圈建立程序