中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

衡水企業(yè)網(wǎng)站巨量關(guān)鍵詞搜索查詢

衡水企業(yè)網(wǎng)站,巨量關(guān)鍵詞搜索查詢,WordPress文件word,java開發(fā)就是做網(wǎng)站么個人主頁~ 從硬件到軟件了解進(jìn)程 一、馮諾依曼體系結(jié)構(gòu)二、操作系統(tǒng)三、操作系統(tǒng)進(jìn)程管理1、概念2、PCB和task_struct3、查看進(jìn)程4、通過系統(tǒng)調(diào)用fork創(chuàng)建進(jìn)程(1)簡述(2)系統(tǒng)調(diào)用生成子進(jìn)程的過程〇提出問題①fork函數(shù)②父子進(jìn)程關(guān)…

在這里插入圖片描述
個人主頁~


從硬件到軟件了解進(jìn)程

  • 一、馮諾依曼體系結(jié)構(gòu)
  • 二、操作系統(tǒng)
  • 三、操作系統(tǒng)進(jìn)程管理
    • 1、概念
    • 2、PCB和task_struct
    • 3、查看進(jìn)程
    • 4、通過系統(tǒng)調(diào)用fork創(chuàng)建進(jìn)程
      • (1)簡述
      • (2)系統(tǒng)調(diào)用生成子進(jìn)程的過程
        • 〇提出問題
        • ①fork函數(shù)
        • ②父子進(jìn)程關(guān)系
        • ③解答問題

一、馮諾依曼體系結(jié)構(gòu)

我們常見的嵌入式結(jié)構(gòu),包括哈佛結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu),我們所使用的計算機電腦就是馮諾依曼體系結(jié)構(gòu),下圖就是該體系的直觀圖
在這里插入圖片描述
在這里的存儲器指的是內(nèi)存,如果不考慮緩存的情況,這里的CPU能且只能對內(nèi)存進(jìn)行讀寫,不能訪問輸入輸出設(shè)備,輸入輸出設(shè)備要輸入輸出數(shù)據(jù)也只能寫入內(nèi)存或者從內(nèi)存中讀取,就是說,雖然CPU是中央處理器,但對于馮諾依曼結(jié)構(gòu)來說,內(nèi)存才是中心的部件,所有數(shù)據(jù)必須先經(jīng)過內(nèi)存然后再流向別處

馮諾依曼體系結(jié)構(gòu)是計算機設(shè)備得以普及的重大突破,我們知道計算機的存儲速度如下圖,寄存器是最快的存儲也是最貴的,機械硬盤HDD是最慢的存儲也是最便宜的,如果沒有馮諾依曼結(jié)構(gòu),我們的計算機要不然就是便宜速度慢,要不就是昂貴速度快,馮諾依曼結(jié)構(gòu)的原理是,在CPU進(jìn)行計算的時候,內(nèi)存已經(jīng)接收外部輸入設(shè)備輸入的數(shù)據(jù)并存儲,然后在CPU進(jìn)行完計算后將結(jié)果取出,然后將結(jié)果放到輸出設(shè)備,再把輸入的數(shù)據(jù)交給CPU進(jìn)行計算,這樣,低速的輸入輸出設(shè)備、中速的內(nèi)存以及高速的CPU有機整合,形成了現(xiàn)代計算機雛形

在這里插入圖片描述

二、操作系統(tǒng)

任何計算機系統(tǒng)都包含一個基本的程序集合,它就被稱為操作系統(tǒng),我們前面說過,操作系統(tǒng)就是操作系統(tǒng)內(nèi)核+命令行解釋器(shell),設(shè)計操作系統(tǒng)的目的就是更好地與硬件交互管理軟件資源,為應(yīng)用程序提供一個良好的執(zhí)行環(huán)境
在這里插入圖片描述
如上圖所示,我們可以清楚看到對于用戶和系統(tǒng)軟件部分的交互,我們是不能直接調(diào)用操作系統(tǒng)的,操作系統(tǒng)像一只小蝸牛,它縮在殼里伸出觸角與你交流,除了觸角以外,你是碰不到蝸牛的身體的,你只能碰到殼,這里的觸角就是系統(tǒng)調(diào)用接口,而操作系統(tǒng)也有殼,除了調(diào)用系統(tǒng)調(diào)用接口,其他的方式都沒法間接使用操作系統(tǒng),因為系統(tǒng)調(diào)用在使用上操作比較基礎(chǔ),對用戶的要求比較高,所以開發(fā)者就對部分系統(tǒng)調(diào)用進(jìn)行適度封裝,從而形成了庫,有了庫我們程序員就可以更好的進(jìn)行開發(fā)軟件,然后開發(fā)出來的軟件再被普通人所使用

對于硬件部分和系統(tǒng)軟件部分的交互,我們前面提到了,操作系統(tǒng)是做管理的,何為管理呢?對于程序員而言,管理通過計算機語言的表示方法就是數(shù)據(jù)結(jié)構(gòu),大家不妨想一想,我們平常生活所遇到的有關(guān)于管理的問題,是不是都可以轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的方式來解決呢?我是一個學(xué)生,我來舉一個有關(guān)于學(xué)生管理例子:一個學(xué)校有十個學(xué)院,每個學(xué)院有一位院長一百位學(xué)生,假設(shè)我們的學(xué)校就這么單調(diào),沒有其他類似輔導(dǎo)員這樣的職位,校長是不直接管理我們的,校長吩咐院長來管理學(xué)生,院長就要親力親為,親自來管理這些學(xué)生,學(xué)生的屬性都是不同的,但是學(xué)生屬性的類型都是相同的,他們都有名字、性別、年齡、家庭住址,把學(xué)生這個群體定義成一個struct結(jié)構(gòu)體,然后不同的學(xué)生填不同的數(shù)值,然后按照學(xué)號前后以單鏈表的方式連接起來,這樣就把每個學(xué)院學(xué)生連接起來了,對學(xué)生的管理就是對鏈表的增刪查改,校長想要對某個學(xué)生進(jìn)行管理就可以通過院長執(zhí)行,這里的校長就是操作系統(tǒng),院長就是驅(qū)動程序,而學(xué)生就是硬件資源,一個事件可以拆分為決策+執(zhí)行,操作系統(tǒng)負(fù)責(zé)決策,驅(qū)動程序負(fù)責(zé)執(zhí)行,我們剛才的例子對于學(xué)生也就是硬件資源就是一個先描述再組織的過程,先將個體描述出來,再將個體組織起來

三、操作系統(tǒng)進(jìn)程管理

1、概念

進(jìn)程是正在執(zhí)行的程序的實例,是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,它包含了程序計數(shù)器、寄存器、內(nèi)存空間、打開的文件描述符等運行上下文信息,這些信息共同構(gòu)成了進(jìn)程執(zhí)行的環(huán)境

進(jìn)程是正在執(zhí)行的程序的實例,程序本身只是存儲在磁盤等介質(zhì)上的一組指令和數(shù)據(jù)的集合,是靜態(tài)的,只有當(dāng)程序被加載到內(nèi)存中,并由操作系統(tǒng)為其分配資源、創(chuàng)建相應(yīng)的數(shù)據(jù)結(jié)構(gòu)來管理其執(zhí)行時,它才成為一個進(jìn)程,即變成了一個動態(tài)的執(zhí)行實體

進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的基本單位,操作系統(tǒng)需要為每個進(jìn)程分配獨立的資源,包括但不限于內(nèi)存空間、CPU 時間、文件描述符、網(wǎng)絡(luò)端口等,每個進(jìn)程都有自己獨立的地址空間,進(jìn)程在自己的地址空間內(nèi)可以自由地訪問和操作數(shù)據(jù),而不會干擾其他進(jìn)程的地址空間

進(jìn)程包含了程序執(zhí)行時的運行上下文信息,運行上下文是指進(jìn)程在執(zhí)行過程中所涉及的各種狀態(tài)和數(shù)據(jù),主要包括程序計數(shù)器、寄存器狀態(tài)、堆棧信息、內(nèi)存管理信息等,程序計數(shù)器指示了進(jìn)程下一條要執(zhí)行的指令地址,寄存器用于臨時存儲數(shù)據(jù)和指令操作數(shù)等,堆棧用于保存函數(shù)調(diào)用的相關(guān)信息和局部變量等,這些運行上下文信息完整地描述了進(jìn)程當(dāng)前的執(zhí)行狀態(tài),當(dāng)進(jìn)程被調(diào)度暫?;蚧謴?fù)執(zhí)行時,操作系統(tǒng)需要保存和恢復(fù)這些上下文信息,以確保進(jìn)程能夠正確地繼續(xù)執(zhí)行

進(jìn)程是構(gòu)成操作系統(tǒng)中并發(fā)執(zhí)行環(huán)境的基本單元,操作系統(tǒng)通過管理和調(diào)度多個進(jìn)程,實現(xiàn)了多個任務(wù)的并發(fā)執(zhí)行,從而提高了系統(tǒng)資源的利用率和系統(tǒng)的整體性能,多個進(jìn)程之間可以通過各種進(jìn)程間通信機制進(jìn)行數(shù)據(jù)交換和協(xié)作,共同完成復(fù)雜的系統(tǒng)任務(wù)

下圖是我們Windows中的進(jìn)程
在這里插入圖片描述
進(jìn)程粗略來講就是內(nèi)核PCB數(shù)據(jù)結(jié)構(gòu)對象+你自己的代碼和數(shù)據(jù)
記住上面所說的先描述后組織,通過結(jié)構(gòu)體描述進(jìn)程的屬性,然后通過鏈表組織多個進(jìn)程

2、PCB和task_struct

進(jìn)程的所有信息被存放在一個叫做進(jìn)程控制塊的數(shù)據(jù)結(jié)構(gòu)中,它是進(jìn)程屬性的集合,被稱為PCB

Linux操作系統(tǒng)下的PCB就是task_struct,它是一個結(jié)構(gòu)體,被裝載到RAM里

以下是task_struct的內(nèi)容分類,除了這些,還有一些其他信息

內(nèi)容意義
標(biāo)示符每個進(jìn)程的標(biāo)識符不同
狀態(tài)任務(wù)狀態(tài)
優(yōu)先級相對于其他進(jìn)程的優(yōu)先級
程序計數(shù)器程序中即將被執(zhí)行的下一條指令的地址
內(nèi)存指針包括程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享的內(nèi)存塊的指針
上下文數(shù)據(jù)進(jìn)程執(zhí)行時處理器的寄存器中的數(shù)據(jù)
IO狀態(tài)顯示的IO請求,分配給進(jìn)程的IO設(shè)備和被進(jìn)程使用的文件列表
記賬信息處理器時間總和或使用的時鐘數(shù)總和或時間限制、記賬號等

所有運行在系統(tǒng)里的進(jìn)程都以task_struct(雙向)鏈表的形式存在內(nèi)核里

3、查看進(jìn)程

寫一個死循環(huán)的程序,方便我們查看進(jìn)程

在這里插入圖片描述
在這里插入圖片描述

ps aux | grep process | grep -v grep 查看進(jìn)程指令

ps aux 會列出系統(tǒng)中所有用戶的所有進(jìn)程的詳細(xì)信息,grep process 會在 ps aux 輸出的所有行中查找包含 process 的行,并將這些行輸出,grep 是要排除的模式,由于在執(zhí)行 grep process 時,這個 grep 命令本身也會作為一個進(jìn)程被 ps aux 列出,并且會匹配 process,為了避免將 grep process 這個進(jìn)程本身顯示出來,我們使用 grep -v grep 來過濾掉包含 grep 的行

在程序執(zhí)行過程中會生成一個進(jìn)程,我們通過查看進(jìn)程指令,其中第二列就是進(jìn)程唯一標(biāo)識PID
在這里插入圖片描述

進(jìn)程重啟對應(yīng)的PID會發(fā)生變化,是由于內(nèi)存重新給它分配的原因
在這里插入圖片描述

這里解答一下為什么我們在進(jìn)行./process的時候會啟動可執(zhí)行文件process:在進(jìn)程中有一個目錄叫做cwd,意味著當(dāng)前的工作目錄,你可以把它想象為一個指針(其實它是一個軟鏈接),指向這個文件所在的目錄,所以一個進(jìn)程在屬性中就有一個是當(dāng)前的工作目錄
亦可以看到exe這里指向的是這里的我們正在執(zhí)行的可執(zhí)行程序process
在這里插入圖片描述

4、通過系統(tǒng)調(diào)用fork創(chuàng)建進(jìn)程

(1)簡述

上面的進(jìn)程是在執(zhí)行可執(zhí)行程序的時候程序自動構(gòu)建的進(jìn)程,這節(jié)我們要通過系統(tǒng)調(diào)用fork創(chuàng)建進(jìn)程

寫一個fork創(chuàng)建進(jìn)程的程序如下test.c,在我們現(xiàn)有的知識體系里,在fork函數(shù)自身不出現(xiàn)問題的情況下給到的id值是大于等于0的值,屬于雙分支結(jié)構(gòu),即id值要不然就等于0要不然就大于0,不會出現(xiàn)即等于0又大于0的情況,本身兩種情況同時出現(xiàn)就是錯誤的
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
看到結(jié)果,兩個分支的程序都會執(zhí)行,就是因為fork這里的原因,生成了子進(jìn)程,改變了我們對該程序固有的看法,現(xiàn)在我們來研究fork是如何做到的

(2)系統(tǒng)調(diào)用生成子進(jìn)程的過程

〇提出問題

該過程我們可以簡化為一個問題:為什么id在等于0的同時又大于0?
id值是從fork函數(shù)來的,那么進(jìn)一步提出問題:fork為什么能產(chǎn)生兩個返回值? id為什么能承載兩個返回值?

最終我們將目光移動到fork函數(shù)身上

①fork函數(shù)

fork系統(tǒng)調(diào)用用于從一個現(xiàn)有的進(jìn)程創(chuàng)建一個新的進(jìn)程,新創(chuàng)建的進(jìn)程被稱為子進(jìn)程,而原來的進(jìn)程被稱為父進(jìn)程,子進(jìn)程是父進(jìn)程的一個副本,它幾乎繼承了父進(jìn)程的所有資源,包括代碼段、數(shù)據(jù)段、堆、棧等,但擁有自己獨立的進(jìn)程控制塊(PCB)和進(jìn)程 ID(PID)

在父進(jìn)程中,fork返回子進(jìn)程的 PID,因為父進(jìn)程可能需要對多個子進(jìn)程進(jìn)行管理和控制,所以通過返回的 PID 來標(biāo)識每個子進(jìn)程
在子進(jìn)程中,fork返回 0,這是因為子進(jìn)程不需要知道父進(jìn)程的 PID 來進(jìn)行后續(xù)操作,它可以通過getppid函數(shù)來獲取父進(jìn)程的 PID
如果fork調(diào)用失敗,將返回 - 1,并設(shè)置errno變量來表示錯誤原因

②父子進(jìn)程關(guān)系

進(jìn)程可以粗略表示為代碼+數(shù)據(jù)
當(dāng)父進(jìn)程調(diào)用fork時,內(nèi)核會為子進(jìn)程分配新的 PCB,并復(fù)制父進(jìn)程的大部分資源到子進(jìn)程中,這包括進(jìn)程的代碼部分
雖然子進(jìn)程最初復(fù)制了父進(jìn)程的地址空間,但在實際運行中,父子進(jìn)程的地址空間是相互獨立的,如果其中一個進(jìn)程修改了某些數(shù)據(jù),不會影響到另一個進(jìn)程中的相應(yīng)區(qū)域,這是通過寫時復(fù)制技術(shù)來實現(xiàn)的,即只有當(dāng)進(jìn)程試圖修改某個數(shù)據(jù)時,才會真正復(fù)制該數(shù)據(jù),以節(jié)省內(nèi)存資源,就是說在不修改某些數(shù)據(jù)的情況下它們指向的是同一塊位置,如果子進(jìn)程或者父進(jìn)程某些數(shù)據(jù)要修改,它們會重新開辟一塊空間存放該進(jìn)程的特有數(shù)據(jù)
fork調(diào)用完成后,父進(jìn)程和子進(jìn)程就開始并發(fā)執(zhí)行,它們可以各自獨立地執(zhí)行不同的代碼路徑,也可以通過各種進(jìn)程間通信機制進(jìn)行通信和同步,這里就是從fork函數(shù)出現(xiàn)之后的代碼我們可以把它當(dāng)做兩份,兩份代碼同時跑,但是id不同,后面執(zhí)行的效果可能就不同

并且我們可以發(fā)現(xiàn)上面的截圖父子進(jìn)程誰先運行是不確定的,這個是由調(diào)度器決定的

③解答問題

問:id為什么能承載兩個返回值?
答:id變量并不是同時承載兩個返回值,而是在不同的執(zhí)行流(父進(jìn)程和子進(jìn)程)中被賦予不同的值,fork函數(shù)通過這種方式讓父進(jìn)程和子進(jìn)程能夠區(qū)分彼此,并根據(jù)返回值執(zhí)行不同的操作

問:fork為什么能產(chǎn)生兩個返回值?
答:父子進(jìn)程并發(fā)執(zhí)行,每個執(zhí)行流從fork函數(shù)的返回處繼續(xù)執(zhí)行,并且根據(jù)自身的角色(父進(jìn)程或子進(jìn)程)返回不同的值,這樣就實現(xiàn)了一個函數(shù)調(diào)用在兩個進(jìn)程中產(chǎn)生不同返回結(jié)果的效果


今日分享就到這里了~
在這里插入圖片描述

http://www.risenshineclean.com/news/36072.html

相關(guān)文章:

  • 網(wǎng)站制作報價明細(xì)表bt磁力狗
  • 超市網(wǎng)站模版網(wǎng)絡(luò)推廣培訓(xùn)班
  • 鄭州網(wǎng)站推廣排名公司浙江關(guān)鍵詞優(yōu)化
  • 萬網(wǎng)網(wǎng)站建設(shè)購買過程汽車推廣軟文
  • 怎么自己的電腦做網(wǎng)站服務(wù)器百度網(wǎng)站是什么
  • 阿里巴巴怎么做公司網(wǎng)站我為什么不建議年輕人做銷售
  • 網(wǎng)站建設(shè) 資訊動態(tài)電商軟文范例100字
  • 網(wǎng)站文化建設(shè)軟文新聞發(fā)布網(wǎng)站
  • 徐州企業(yè)網(wǎng)站設(shè)計免費的網(wǎng)站推廣在線推廣
  • 歐美設(shè)計網(wǎng)站推薦百度推廣賬號怎么申請
  • 如何寫好網(wǎng)站開發(fā)技術(shù)文檔頭條新聞今日頭條官方版本
  • 網(wǎng)站建設(shè)本科畢業(yè)設(shè)計論文鄭州網(wǎng)站推廣排名公司
  • 發(fā)果怎么做視頻網(wǎng)站四川省最新疫情情況
  • 一個網(wǎng)站怎么做鏡像站熱點事件
  • wordpress播放器源碼徐州seo外包
  • 動態(tài)網(wǎng)站建設(shè)簡介谷歌排名網(wǎng)站優(yōu)化
  • 廣西專業(yè)做網(wǎng)站的公司軟件排名工具
  • 網(wǎng)站建設(shè)技術(shù)服務(wù)清單網(wǎng)絡(luò)營銷有哪些
  • 企業(yè)介紹微網(wǎng)站怎么做短視頻營銷推廣策略
  • c 網(wǎng)站開發(fā)框架百度小說風(fēng)云榜今天
  • 企業(yè)網(wǎng)站建設(shè)合同書模板可以引流推廣的app
  • 云瓣科技做網(wǎng)站本地網(wǎng)絡(luò)seo公司
  • 網(wǎng)站后臺登陸代碼百度關(guān)鍵詞seo排名
  • 用js做跳轉(zhuǎn)到其他網(wǎng)站優(yōu)化公司怎么優(yōu)化網(wǎng)站的
  • 大場網(wǎng)站建設(shè)seo最好的工具
  • 國外做的比較好看的網(wǎng)站2022年度最火關(guān)鍵詞
  • 西安網(wǎng)站建設(shè)開發(fā)查派谷歌seo排名公司
  • 依波手表價格 官方網(wǎng)站360搜索優(yōu)化
  • 網(wǎng)站建設(shè)客戶告知書長春網(wǎng)站優(yōu)化團隊
  • 鄭州區(qū)塊鏈數(shù)字錢包網(wǎng)站開發(fā)多少錢廣州網(wǎng)頁制作