程序的建立,建立程序的兩種方式
一:程序的建立
1,系統的初始化
2,一個程序在執行過程中開啟了子程序
3,使用者的互動式請求,而建立一個新程序(如雙擊qq)
4,一個批處理作業的初始化(只在大型機的批處理系統中應用)
關於程序的建立,UNIX和WINDOWS
1,在unix中系統呼叫的是:fork,fork會建立一個與父程序一摸一樣的副本
2,在windows中該系統呼叫是:cresteprocess ,既負責處理程序的建立 ,也負責把正確的程式裝入新程序
二:程序的終止:
1,正常退出
2,出錯退出
3,嚴重錯誤(非自願,執行非法指令,如引用不存在的記憶體,i/o等,可以捕捉異常
4,被其他程序殺死
三:程序的層次結構
無論是unix還是windows,程序只有一個父程序,不同的是:
1,在unix中所有的程序,都是以init程序為根,組成樹形結構。父子程序共同組成一個程序組
2,windows中,沒有程序層次的概念,所有的程序地位都相同
四:程序的狀態
程序主要分為三種狀態,執行態,阻塞態,就緒態。
五:建立程序的兩種方式
# # # 方式一:
# from multiprocessing import Process
# import time
#
# def task(x):
# print('%s is running' %x)
# time.sleep(3)
# print('%s is done' %x)
#
# if __name__ == '__main__':
# # Process(target=task,kwargs={'x':'子程序'})
# p=Process(target=task,args=('子程序',)) # 如果args=(),括號內只有一個引數,一定記住加逗號
# p.start() # 只是在作業系統傳送一個開啟子程序的訊號
#
# print('主')
# 方式二:
# from multiprocessing import Process
# import time
#
# class Myprocess(Process):
# def __init__(self,x):
# super().__init__()
# self.name=x
#
# def run(self):
# print('%s is running' %self.name)
# time.sleep(3)
# print('%s is done' %self.name)
#
# if __name__ == '__main__':
# p=Myprocess('子程序1')
# p.start() #p.run()
# print('主')
六:程序之間相互隔離: