国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程

這篇具有很好參考價(jià)值的文章主要介紹了【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

> 作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等
> 座右銘:松樹千年終是朽,槿花一日自為榮。

> 目標(biāo):了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng),掌握Linux的進(jìn)程

> 毒雞湯:一花凋零荒蕪不了整個(gè)春天,一次挫折也荒廢不了整個(gè)人生。

> 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲?????

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

??前言

????????我們最初學(xué)習(xí)Linux指令已經(jīng)可以用戶與操作系統(tǒng)交互了,往后面我們用Xshell可以編寫一些簡(jiǎn)單的代碼,這些只能算是入門,咱們學(xué)習(xí)Linux可不是這些,如果只學(xué)習(xí)這些的話,那在C語言中這些我們已經(jīng)掌握的比較熟練了????。學(xué)習(xí)Linux掌握的是各種代碼底層是如何運(yùn)行和使用的。

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

?主體

我們從以下學(xué)習(xí)馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程????。

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

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

????????馮·諾依曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。

????????數(shù)學(xué)家馮·諾依曼提出了計(jì)算機(jī)制造的三個(gè)基本原則,即采用二進(jìn)制邏輯、程序存儲(chǔ)執(zhí)行以及計(jì)算機(jī)由五個(gè)部分組成(運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備),這套理論被稱為馮·諾依曼體系結(jié)構(gòu)。

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

截至目前,我們所認(rèn)識(shí)的計(jì)算機(jī),都是有一個(gè)個(gè)的硬件組件組成:

  • 輸入單元:包括鍵盤, 鼠標(biāo),掃描儀, 寫板等
  • 中央處理器(CPU):含有運(yùn)算器和控制器等
  • 輸出單元:顯示器,打印機(jī)等

關(guān)于馮諾依曼,必須強(qiáng)調(diào)幾點(diǎn):

  • 這里的存儲(chǔ)器指的是內(nèi)存
  • 不考慮緩存情況,這里的CPU能且只能對(duì)內(nèi)存進(jìn)行讀寫,不能訪問外設(shè)(輸入或輸出設(shè)備)
  • 外設(shè)(輸入或輸出設(shè)備)要輸入或者輸出數(shù)據(jù),也只能寫入內(nèi)存或者從內(nèi)存中讀取。
  • 一句話,所有設(shè)備都只能直接和內(nèi)存打交道。

這里說的光用文字是很難理解馮諾依曼體系結(jié)構(gòu)的,大家可搜說相關(guān)圖片用圖來了解馮諾依曼體系結(jié)構(gòu)。

??操作系統(tǒng)原理

什么是操作系統(tǒng):

  • 操作系統(tǒng)(英語:Operating System,縮寫:OS)是一組主管并控制計(jì)算機(jī)操作、運(yùn)用和運(yùn)行硬件、軟件資源和提供公共服務(wù)來組織用戶交互的相互關(guān)聯(lián)的系統(tǒng)軟件程序。 根據(jù)運(yùn)行的環(huán)境,操作系統(tǒng)可以分為桌面操作系統(tǒng),手機(jī)操作系統(tǒng),服務(wù)器操作系統(tǒng),嵌入式操作系統(tǒng)等。

為什么要有操作系統(tǒng):

  • 手段:對(duì)下管理好軟硬件資源。
  • 目的:對(duì)上提供一個(gè)良好的運(yùn)行環(huán)境-->(為用戶提供穩(wěn)定的、高效的、安全的、的執(zhí)行環(huán)境)

用圖解釋操作系統(tǒng):

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

操作系統(tǒng)本質(zhì)對(duì)數(shù)據(jù)做管理,而管理的模用一句話來概括:先描述,在組織。

總結(jié):
計(jì)算機(jī)管理硬件

  1. 描述起來,用struct結(jié)構(gòu)體
  2. 組織起來,用鏈表或其他高效的數(shù)據(jù)結(jié)構(gòu)

??系統(tǒng)調(diào)用和庫函數(shù)

系統(tǒng)調(diào)用和庫函數(shù)概念描述:

  • 在開發(fā)角度,操作系統(tǒng)對(duì)外會(huì)表現(xiàn)為一個(gè)整體,但是會(huì)暴露自己的部分接口,供上層開發(fā)使用,這部分由操作系統(tǒng)提供的接口,叫做系統(tǒng)調(diào)用。
  • 系統(tǒng)調(diào)用在使用上,功能比較基礎(chǔ),對(duì)用戶的要求相對(duì)也比較高,所以,有心的開發(fā)者可以對(duì)部分系統(tǒng)調(diào)用進(jìn)行適度封裝,從而形成庫,有了庫,就很有利于更上層用戶或者開發(fā)者進(jìn)行二次開發(fā)。

那在還沒有學(xué)習(xí)進(jìn)程之前,就問大家,操作系統(tǒng)是怎么管理進(jìn)行進(jìn)程管理的呢?很簡(jiǎn)單,先把進(jìn)程描述起來,再把進(jìn)程組織起來!

??進(jìn)程

??概念描述

? 課本概念:程序的一個(gè)執(zhí)行實(shí)例,正在執(zhí)行的程序等
內(nèi)核觀點(diǎn):擔(dān)當(dāng)分配系統(tǒng)資源(CPU時(shí)間,內(nèi)存)的實(shí)體。?

??描述進(jìn)程-PCB

????????進(jìn)程信息被放在一個(gè)叫做進(jìn)程控制塊的數(shù)據(jù)結(jié)構(gòu)中,可以理解為進(jìn)程屬性的集合。課本上稱之為PCB(process control block), Linux操作系統(tǒng)下的PCB是: task_struct。
  • task_struct

task_struct-PCB的一種,在Linux中描述進(jìn)程的結(jié)構(gòu)體叫做task_struct。task_struct是Linux內(nèi)核的一種數(shù)據(jù)結(jié)構(gòu),它會(huì)被裝載到RAM(內(nèi)存)里并且包含著進(jìn)程的信息 。

  • task_ struct內(nèi)容分類
  1. 標(biāo)示符: 描述本進(jìn)程的唯一標(biāo)示符,用來區(qū)別其他進(jìn)程。
  2. 狀態(tài): 任務(wù)狀態(tài),退出代碼,退出信號(hào)等。
  3. 優(yōu)先級(jí): 相對(duì)于其他進(jìn)程的優(yōu)先級(jí)。
  4. 程序計(jì)數(shù)器: 程序中即將被執(zhí)行的下一條指令的地址。
  5. 內(nèi)存指針: 包括程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享的內(nèi)存塊的指針
  6. 上下文數(shù)據(jù): 進(jìn)程執(zhí)行時(shí)處理器的寄存器中的數(shù)據(jù)[休學(xué)例子,要加圖CPU,寄存器]。
  7. I/O狀態(tài)信息: 包括顯示的I/O請(qǐng)求,分配給進(jìn)程的I/O設(shè)備和被進(jìn)程使用的文件列表。
  8. 記賬信息: 可能包括處理器時(shí)間總和,使用的時(shí)鐘數(shù)總和,時(shí)間限制,記賬號(hào)等。
  9. 其他信息

??查看進(jìn)程

說實(shí)話,文字干巴巴,想必大家看困了,這里我們簡(jiǎn)單模擬一下進(jìn)程,看看進(jìn)程到底是個(gè)啥吧??
首先先創(chuàng)建文件:
【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux
  • Makefile:

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

  • myproc.c:

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

運(yùn)行結(jié)果:
【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux
查看進(jìn)程:

使用 ps ajx (a:所有,j:任務(wù),x:把所有的信息全部輸出)

一般搭配管道進(jìn)行使用,如:ps ajx | head -1 && ps ajx | grep test,其中?ps ajx | head -1?是把?ps ajx?輸出的信息中的第一行信息(屬性列)輸出。

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

??通過系統(tǒng)調(diào)用獲取進(jìn)程標(biāo)示符

我們可以用以下查看當(dāng)前目錄下的進(jìn)程:ls /proc/

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

那我們?nèi)绾尾榭次覀兊倪M(jìn)程???

  • 進(jìn)程idPID)--->getpid()
  • 父進(jìn)程idPPID)--->getppid()

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

運(yùn)行結(jié)果:

ps ajx | head -1 && ps ajx | grep "mypro" //查看自己的進(jìn)程

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

??通過系統(tǒng)調(diào)用創(chuàng)建進(jìn)程-fork初識(shí)

再次修改我們的myproc.c文件

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
	int ret = fork();
 	if(ret < 0){
 		perror("fork");
 		return 1;
 	}
 	else if(ret == 0){ //child
 		printf("I am child : %d!, ret: %d\n", getpid(), ret);
 	}else{ //father
 		printf("I am father : %d!, ret: %d\n", getpid(), ret);
 	}

 	sleep(1);
 	return 0;
}

運(yùn)行結(jié)果:

用下面指令搜索自己的進(jìn)程:ps axj | grep 1889

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

那我們?nèi)绾尾榭醋舆M(jìn)程和父進(jìn)程交替呢???
  • 我們?cè)俅涡薷膍yproc.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    printf("before fork: I am a prcess, pid: %d, ppid: %d\n", getpid(), getppid());

    sleep(5);
    printf("開始創(chuàng)建進(jìn)程啦!\n");
    sleep(1);
    pid_t id = fork();
    if(id < 0) return 1;
    else if(id == 0)
    {
       // 子進(jìn)程
        while(1){
            printf("after fork, 我是子進(jìn)程: I am a prcess, pid: %d, ppid: %d, return id: %d\n", getpid(), getppid(), id);
            sleep(1);
        }
    }
    else{
        // 父進(jìn)程
        while(1){
            printf("after fork, 我是父進(jìn)程: I am a prcess, pid: %d, ppid: %d, return id: %d\n", getpid(), getppid(), id);
            sleep(1);
        }
    }
    sleep(2);
    return 0;
}
  • 運(yùn)行結(jié)果:

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux

????????fork()之后,會(huì)有父進(jìn)程+子進(jìn)程兩個(gè)進(jìn)程在執(zhí)行后續(xù)代碼,fork()后續(xù)的代碼,被父子進(jìn)程共享,通過返回值不同,讓父子進(jìn)程執(zhí)行共享代碼的一部分,這就是并發(fā)式編程。

???結(jié)束語

? ? ? ?今天內(nèi)容就到這里啦,時(shí)間過得很快,大家沉下心來好好學(xué)習(xí),會(huì)有一定的收獲的,大家多多堅(jiān)持,嘻嘻,成功路上注定孤獨(dú),因?yàn)閳?jiān)持的人不多。那請(qǐng)大家舉起自己的小手給博主一鍵三連,有你們的支持是我最大的動(dòng)力??????,回見。

【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-766081.html

到了這里,關(guān)于【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程

    【Linux】馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)及其進(jìn)程

    作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng),掌握Linux的進(jìn)程 毒雞湯:一花凋零荒蕪不了整個(gè)春天,一次挫折也荒廢不了整個(gè)人生。 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲??

    2024年02月04日
    瀏覽(18)
  • 【Linux】系統(tǒng)初識(shí)之馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)

    【Linux】系統(tǒng)初識(shí)之馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)

    ?? 樊梓慕: 個(gè)人主頁 ??? 個(gè)人專欄: 《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》《LeetCode刷題筆記》《實(shí)訓(xùn)項(xiàng)目》《C++》《Linux》 ?? 每一個(gè)不曾起舞的日子,都是對(duì)生命的辜負(fù) 目錄 前言 1.馮諾依曼體系結(jié)構(gòu) 2.操作系統(tǒng)(OS) (1)用戶到操作系統(tǒng)再到底層是如何組織的? (

    2024年02月05日
    瀏覽(21)
  • 【Linux】馮諾依曼體系結(jié)構(gòu)以及操作系統(tǒng)的初步認(rèn)知

    【Linux】馮諾依曼體系結(jié)構(gòu)以及操作系統(tǒng)的初步認(rèn)知

    ???作者:@malloc不出對(duì)象 ?專欄:Linux的學(xué)習(xí)之路 ??個(gè)人簡(jiǎn)介:一名雙非本科院校大二在讀的科班編程菜鳥,努力編程只為趕上各位大佬的步伐???? 本篇文章講解是馮諾依曼體系結(jié)構(gòu)以及操作系統(tǒng)的初步認(rèn)知。 我們常見的計(jì)算機(jī),如筆記本。我們不常見的計(jì)算機(jī),如服

    2024年02月03日
    瀏覽(30)
  • 【Linux】進(jìn)程概念(馮諾依曼體系結(jié)構(gòu)、操作系統(tǒng)、進(jìn)程)-- 詳解

    【Linux】進(jìn)程概念(馮諾依曼體系結(jié)構(gòu)、操作系統(tǒng)、進(jìn)程)-- 詳解

    1、概念 (1)什么是馮諾伊曼體系結(jié)構(gòu)? 數(shù)學(xué)家馮·諾伊曼于 1946 年提出存儲(chǔ)程序原理,把程序本身當(dāng)作數(shù)據(jù)來對(duì)待,程序和該程序處理的數(shù)據(jù)用同樣的方式儲(chǔ)存。 馮·諾伊曼理論的要點(diǎn)是:計(jì)算機(jī)的數(shù)制采用二進(jìn)制邏輯;計(jì)算機(jī)應(yīng)該按照程序順序執(zhí)行。人們把馮·諾伊曼的

    2024年02月22日
    瀏覽(21)
  • 【Linux取經(jīng)路】馮諾依曼結(jié)構(gòu)體系與操作系統(tǒng)的碰撞

    【Linux取經(jīng)路】馮諾依曼結(jié)構(gòu)體系與操作系統(tǒng)的碰撞

    我們現(xiàn)在常見的計(jì)算機(jī),如筆記本,以及我們不常見的計(jì)算機(jī),如服務(wù)器,它們本質(zhì)都是一堆硬件(如:cpu、內(nèi)存、網(wǎng)卡、磁盤等)的集合。并不是把這些硬件毫無章法的放在一起就能夠組成計(jì)算機(jī),各硬件之間首先要具備協(xié)同能力,這就要求硬件與硬件之間要組織好#x

    2024年02月14日
    瀏覽(18)
  • 【Linux】進(jìn)程概念I(lǐng) --操作系統(tǒng)概念與馮諾依曼體系結(jié)構(gòu)

    【Linux】進(jìn)程概念I(lǐng) --操作系統(tǒng)概念與馮諾依曼體系結(jié)構(gòu)

    Halo,這里是Ppeua。平時(shí)主要更新C語言,C++,數(shù)據(jù)結(jié)構(gòu)算法…感興趣就關(guān)注我吧!你定不會(huì)失望。 計(jì)算機(jī)是由兩部分組成的: 硬件+軟件 .與硬件相關(guān)的為 馮諾依曼體系結(jié)構(gòu) ,與軟件相關(guān)的為: 操作系統(tǒng) . 如今大多數(shù)計(jì)算機(jī)(筆記本,服務(wù)器等)大多數(shù)都遵守馮諾依曼體系結(jié)構(gòu).實(shí)際中

    2024年02月09日
    瀏覽(19)
  • 【Linux】操作系統(tǒng)的基本概念 {馮諾依曼體系結(jié)構(gòu),操作系統(tǒng)的基本概念,系統(tǒng)調(diào)用及用戶操作接口,shell程序}

    【Linux】操作系統(tǒng)的基本概念 {馮諾依曼體系結(jié)構(gòu),操作系統(tǒng)的基本概念,系統(tǒng)調(diào)用及用戶操作接口,shell程序}

    現(xiàn)代計(jì)算機(jī)設(shè)計(jì)大都遵守馮·諾依曼體系結(jié)構(gòu): 截至目前,我們所認(rèn)識(shí)的計(jì)算機(jī),都是由一個(gè)個(gè)的硬件組件組成 輸入單元:包括鍵盤, 鼠標(biāo),掃描儀, 磁盤,網(wǎng)卡等 存儲(chǔ)器: 內(nèi)存(提高數(shù)據(jù)讀寫速度,降低硬件成本) 中央處理器(CPU):含有運(yùn)算器(算數(shù)運(yùn)算,邏輯運(yùn)算)和控

    2024年02月11日
    瀏覽(52)
  • 『Linux從入門到精通』第 ? 期 -深入了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)(Operator System)

    『Linux從入門到精通』第 ? 期 -深入了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)(Operator System)

    ??作者簡(jiǎn)介: 花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計(jì)劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。 ?? 專欄簡(jiǎn)介:本文收錄于 Linux從入門到精通 ,本專欄主要內(nèi)容為本專欄主要內(nèi)容為L(zhǎng)inux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。

    2023年04月23日
    瀏覽(27)
  • 『Linux從入門到精通』第 ? 期 - 深入了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)(Operator System)

    『Linux從入門到精通』第 ? 期 - 深入了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)(Operator System)

    ??作者簡(jiǎn)介: 花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計(jì)劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。 ?? 專欄簡(jiǎn)介:本文收錄于 Linux從入門到精通 ,本專欄主要內(nèi)容為本專欄主要內(nèi)容為L(zhǎng)inux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。

    2024年02月10日
    瀏覽(21)
  • 【Linux】馮諾伊曼體系結(jié)構(gòu)|操作系統(tǒng)概念理解

    【Linux】馮諾伊曼體系結(jié)構(gòu)|操作系統(tǒng)概念理解

    個(gè)人主頁:??在肯德基吃麻辣燙 我的gitee:Linux倉(cāng)庫 個(gè)人專欄:Linux專欄 分享一句喜歡的話:熱烈的火焰,冰封在最沉默的火山深處 本文進(jìn)入Linux較為晦澀的概念——馮諾依曼體系結(jié)構(gòu)和操作系統(tǒng)的理解。 馮諾依曼體系結(jié)構(gòu)是我們?nèi)粘S?jì)算機(jī)都遵守的一個(gè)整體架構(gòu),計(jì)算機(jī)

    2024年02月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包