日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

并发编程——进程——理论知识

發(fā)布時間:2024/5/6 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并发编程——进程——理论知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、什么是進(jìn)程

程序并不能單獨(dú)運(yùn)行,只有將程序裝載到內(nèi)存中,系統(tǒng)為它分配資源才能運(yùn)行,而這種執(zhí)行的程序就稱之為進(jìn)程。

進(jìn)程(Process)是計算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。

簡單的說,進(jìn)程就是一個正在進(jìn)行的一個過程或者說一個任務(wù),負(fù)責(zé)執(zhí)行任務(wù)的人是CPU。

打個比方,我打開了QQ應(yīng)用程序,然后跟我女朋友聊天,這就是一個進(jìn)程。

二、進(jìn)程與程序的區(qū)別

程序和進(jìn)程的區(qū)別就在于:程序是指令的集合,它是進(jìn)程運(yùn)行的靜態(tài)描述文本;進(jìn)程是程序的一次執(zhí)行活動,屬于動態(tài)概念。

寫代碼,其實(shí)就是寫程序,也就是說,程序僅僅是一大堆代碼而已,而進(jìn)程,指的是運(yùn)行這段程序的運(yùn)行過程。

另外,需要強(qiáng)調(diào)的是:同一個程序執(zhí)行兩次,那也是兩個進(jìn)程。

還是打開QQ聊天,雖然是同一個軟件,但是可以開兩個聊天窗口,一個跟女朋友聊天,一個跟老板匯報工作。

三、進(jìn)程的創(chuàng)建

進(jìn)程需要由操作系統(tǒng)創(chuàng)建,也就是說,只要有操作系統(tǒng),就有進(jìn)程的概念。

有一些操作系統(tǒng)只為一個應(yīng)用程序設(shè)計,比如臺燈中的控制器,打開臺燈之后所有的進(jìn)程就都已經(jīng)存在了。

比較常見的還是通用系統(tǒng),我們的筆記本、服務(wù)器都是通用系統(tǒng),可以運(yùn)行很多應(yīng)用程序。

對于通用系統(tǒng)來說,需要有在系統(tǒng)運(yùn)行過程中創(chuàng)建和銷毀進(jìn)程的能力。

操作系統(tǒng)創(chuàng)建進(jìn)程有四種方式:

1.系統(tǒng)初始化2.正在運(yùn)行的進(jìn)程開啟子進(jìn)程3.用戶請求交互而創(chuàng)建的新進(jìn)程4.批處理作業(yè)的初始化

新進(jìn)程的創(chuàng)建都是由一個已存在的進(jìn)程執(zhí)行一個創(chuàng)建進(jìn)程的程序而創(chuàng)建的。

在Windows系統(tǒng)中,操作系統(tǒng)調(diào)用CreatProcess處理進(jìn)程的創(chuàng)建并把相應(yīng)的程序讀入新進(jìn)程。

在UNIX系統(tǒng)中,操作系統(tǒng)調(diào)用fork,創(chuàng)建一個與父進(jìn)程一模一樣的副本。

父進(jìn)程和子進(jìn)程有各自不同的地址空間,任何一個進(jìn)程在其地址空間中的修改不會影響到另外一個進(jìn)程。

四、進(jìn)程的終止

1.正常退出

自愿正常結(jié)束一個進(jìn)程。

我在給老板匯報完工作之后,老板又給我布置了新的任務(wù),而且說這個需求很著急,然我盡快完成,那我就得先跟女朋友說拜拜了,然后一點(diǎn)聊天頁面的關(guān)閉按鈕,這個進(jìn)程就結(jié)束了。

2.出錯退出

自愿創(chuàng)建一個進(jìn)程但出現(xiàn)了一些問題。

老板請求控制我的電腦,要看我的代碼演示效果,然后我打開終端,運(yùn)行python3 text.py,但是我不小心把字打錯了,應(yīng)該運(yùn)行的是test.py這個程序,text.py根本不存在,這時候就會報錯并退出。

C:\Users\86188>python text.py python: can't open file 'text.py': [Errno 2] No such file or directory

3.嚴(yán)重作錯誤

非自愿退出進(jìn)程。

女朋友是一個算法小白,問我一道算法題,我一看她的錯誤信息:

Traceback (most recent call last):File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero

哦,這是因為把0作為了分母而導(dǎo)致程序退出,一看就是沒有考慮邊界情況。

4.被其它進(jìn)程殺死

由于我一邊跟女朋友聊天一邊給老板演示,頻繁的切換,再加上我電腦本來就開啟了好多應(yīng)用程序,QQ突然間卡死了,怎么點(diǎn)都沒有用,沒辦法,啟動任務(wù)管理器,結(jié)束進(jìn)程,簡單粗暴有效。

五、進(jìn)程的層次結(jié)構(gòu)

每個進(jìn)程只有一個父進(jìn)程。

在Windows系統(tǒng)中,所有的進(jìn)程地位是相同的,但是在創(chuàng)建進(jìn)程時,父進(jìn)程獲得一個標(biāo)志,稱為句柄,可以用來控制子進(jìn)程,但是父進(jìn)程有權(quán)把句柄傳給其它子進(jìn)程。

在UNIX系統(tǒng)中所有的進(jìn)程都是以init進(jìn)程為根組成樹形結(jié)構(gòu)。

六、進(jìn)程的并發(fā)實(shí)現(xiàn)

進(jìn)程的并發(fā)實(shí)現(xiàn)在于操作系統(tǒng)中斷一個正在運(yùn)行的進(jìn)程,把此時進(jìn)程運(yùn)行的所有狀態(tài)保存到操作系統(tǒng)維護(hù)的進(jìn)程表中,該表存放了進(jìn)程狀態(tài)的重要信息:程序計數(shù)器、堆棧指針、內(nèi)存分配狀態(tài)、打開文件狀態(tài)、賬號和調(diào)度信息和其它所有在進(jìn)程由運(yùn)行態(tài)轉(zhuǎn)為就緒態(tài)或阻塞態(tài)時必須保存的信息,以保證該進(jìn)程再次啟動時能夠繼續(xù)上一次的狀態(tài)運(yùn)行。

總結(jié)

以上是生活随笔為你收集整理的并发编程——进程——理论知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。