1.硬件:馮諾依曼體系結構:
單個分析:、
數據流向:數據必須先進入輸入設備,再到存儲器,然后由存儲器給控制器,控制器收到以后進行相應的處理后,再傳回存儲器,存儲器最終傳給輸出設備!
?
存儲效率:一般情況下在存儲的生態中,距離cpu越遠的設備,它所對應的容量會越來越大,效率會越來越低!
存儲器是馮諾依曼體系結構中的核心地位
問題:1.一個程序要運行,必須要先加載到內存中運行?為什么?
答:正是因為馮諾依曼體系結構規定!(所有軟件設計都必須遵守硬件結構。硬件是計算機的底線和邊界)
2.為什么寫的進度條,默認顯示的數據,是可能會緩存起來的?在哪里緩存?
答:緩存在內存,遵守了體系結構,緩存是正常的。
2.軟件:操作系統:
操作系統是一款進行管理的軟件!它管理著硬件和軟件
問題:·?操作系統為什么管理?
計算機是一個層狀結構,所有硬件要和軟件配合的使用,要存在對應的驅動程序!
操作系統要幫助用戶,管理好西面的軟硬件資源!
給用戶提供一個穩定、高效、安全的運行環境。
所以核心作用:操作系統通過管理好底層的軟硬件資源(手段),為用戶提供一個良好的執行環境(目的)
· 操作系統是什么?
作為一名用戶平時用的都是程序員開發的客戶端,并不是操作系統。但是用戶并不可以直接繞過操作系統去使用其他app客戶端。
操作系統里面,會有各種數據。可是,操作系統不相信任何的用戶!因此操作系統為了保證自己的數據安全,也為了保證給用戶能夠提供服務,操作系統以接口的方式給用戶提供調用的入口。來獲取操作系統內部的數據。
這里提到的接口,其實就是操作系統提供的用“c語言”實現的,自己內部函數調用---系統調用!所有訪問操作系統的行為,都只能通過系統調用完成!這種接口實現就叫系統編程!
·操作系統如何管理好軟硬件資源?
先描述再組織!!!
3.進程:
一個已經加載到內存的程序就叫做進程(任務)--也可以說是正在運行的程序叫做進程。
下圖可以看得出來,一個操作系統,不僅僅只能運行一個進程,可以同時運行多個進程。
這里的屬性值:是進程編號、進程狀態、優先級、相關指針信息....
各個pcb之間的連接用指針進行穿行的連接起來,所以可以形成一個單鏈表。一個進程如果是先后的,它在系統中進行排隊是進程的PCB再進行排隊,等排到了,PCB會調出相應的數據和代碼。
Linux操作系統下的PCB是:task_struct
task_struct 內容分類
- 標識符:描述本進程的唯一標識符,用來區別其他進程。
- 狀態:任務狀態,退出代碼,退出信號等。
- 優先級:相對于其他進程的優先級。
- 程序計數器:程序中即將被執行的下一條指令的地址。
- 內存指針:包括程序代碼和進程相關數據的指針,還有和其他進程共享的內存塊的指針。
- 上下文數據:進程執行時處理器的寄存器中的數據 [休學例子,要加圖 CPU,寄存器]。
- I/O 狀態信息:包括顯示的 I/O 請求,分配給進程的 I/O 設備和被進程使用的文件列表。
- 記賬信息:可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等。
- 其他信息
在Linux當中:用指令ls /proc可以看見會有很多的藍色文件,這些都為目錄,基本都是數字命名,這些數字其實就是屬性里面的PID(標識符),這中目錄里面包含著進程的基本所有屬性
知識點:進程和線程的區別?
???????進程是程序執行活動,是資源分配和調度基本單位,有獨立資源,調度開銷大,多個進程可并發或并行執行。線程是進程內執行單元,是CPU調度基本單位,共享進程資源,調度開銷小,同一進程的多個線程能并發或并行執行,協作更高效。
(未完結)