1. 程式人生 > 其它 >計算機基礎,作業系統

計算機基礎,作業系統

程式設計與程式語言

什麼是語言?

中文、日文、韓文、英文都是人類的語言

語言其實就是人用來溝通交流的媒介(語言就是一種事物與另外一種事物溝通表達的方式/工具)

什麼是程式語言?

人與計算機之間溝通交流的媒介

人-----------程式語言------------計算機

程式語言的本質就是一門語言

能夠與機器的對話的人

什麼是程式設計?

程式設計即程式設計師根據需求把自己的思想流程按照某種程式語言的語法風格編寫下來,產出的結果就是包含一堆字元的檔案。

  • 1、想好做事的步驟

  • 2、找一種對方能聽懂語言把做事的步驟給翻譯下來,並且存入檔案中

強調:程式在未執行前跟普通檔案無異,只有程式在執行時,檔案內所寫的字元才有特定的語法意義

 

什麼是程式?什麼是程序?

程式就是一系列的程式碼檔案,程序指的是一個正在執行的程式

為何要程式設計?

計算機就相當於人類的奴隸,程式設計的目的是為了控制計算機讓其代替人類去工作,從而解放人力


計算機基礎

1.什麼是計算機

計算機有一個別名“電腦”,包含人對計算機的終極期望,通電之後能夠真的像人腦一樣去工作

2.為何要有計算機

  • 為了執行人類的程式,從而把人類解放出來

大前提:計算機所有的組成都是模仿人的某一功能或器官

計算機五大組成部分

  • 運算器:控制數學運算與邏輯運算

    • 數學運算:數字相關的運算
    • 邏輯運算:根據條件判斷是否可行
  • 控制器:是計算機的指揮系統,負責控制計算機各個硬體的工作

    • 控制器+運算器=》CPU------------相當於人的大腦
  • 儲存器:存取資料

    • 記憶體:基於電工作的,記憶體裡存放的資料都是電訊號

    • 特點:存取資料速度快,斷電資料丟失,只能臨時存取資料-----------》人腦的記憶功能

    • 外存:比如磁碟,基於磁工作,磁盤裡存放的是磁訊號

    • 特點:存取資料速度遠遠慢於記憶體,斷電資料不受影響,可以永久儲存資料-----------》人的筆記本

  • 輸入裝置input:如鍵盤、滑鼠、麥克風....

    • 將外界的資料傳遞給計算機
  • 輸出裝置output: 如顯示器、音響、印表機.....

    • 將計算機內部的資料傳遞給外部
eg:人與計算機對比

	    加入要考試髮捲子之後

		用眼睛看卷子(輸入裝置)思考題目怎麼做(運算器 記憶體)拿筆寫卷子(控制器 輸出裝置)

與執行程式有關的三大核心硬體

  • 中央處理器(CPU)

    • CPU去記憶體中取程式的指令並執行
  • 記憶體

    • 程式要想執行必須先存在於記憶體中
  • 硬碟

    • 永久儲存相應資料
  • 程式的執行經歷的步驟:
    • 1、先將程式由硬碟讀入記憶體->程式啟動/載入過程

    • 2、cpu從記憶體中取出程式的指令來執行->程式的執行

ps:程式執行過程中產生的資料一定是最先存放於記憶體中的,關鍵資料一定要由記憶體刷入硬碟永久儲存下來

  • 總結:
    • 程式最先是存放於硬碟之上

    • 程式的執行一定是先把程式的程式碼由硬碟載入到記憶體

    • 然後CPU從記憶體中讀取指令執行


計算機硬體詳解

CPU

​ x86-64

​ cpu具有向下相容

​ 64的cpu既能執行32位的程式也能執行64位的程式

多執行緒與多核晶片

​ 2核4執行緒:

​ 2核代表有兩個cpu,4執行緒指的是每個cpu都有兩個執行緒=》假4核

​ 4核8執行緒

​ 4核代表有4個cpu,8執行緒指的是每個cpu都有兩個執行緒=》假8核

記憶體

隨機存取儲存器

再往下一層是主存,此乃儲存器系統的主力,主存通常稱為隨機訪問儲存RAM,就是我們通常所說的記憶體,容量一直在不斷攀升,所以不能再快取記憶體中找到的,都會到主存中找,主存是易失性儲存,斷電後資料全部消失

硬碟

  • 機械硬碟:磁碟

  • 磁軌:一圈資料,對應著一串二進位制(1bit代表一個二進位制位)

    8bit位元位=1Bytes位元組

    1024Bytes=1KB

    1024KB=1MB

    1024MB=1GB

    1024GB=1TB

    1024TB=1PB

    200G=200*1000*1000B

​ 每個磁頭可以讀取一段換新區域,稱為磁軌

​ 把一個戈丁手臂位置上所以的磁軌合起來,組成一個柱面

​ 每個磁軌劃成若干扇區,扇區典型的值是512位元組

  • 扇區:

    • 一個扇區通過為512Bytes

    • 站在硬碟的解讀,一次性讀寫資料的最小單為為扇區

    • 作業系統一次性讀寫的單位是一個block塊=》8扇區的大小=4096Bytes

  • 柱面:

    • 每張碟片由若干個磁軌和若干個扇區組成從外向內分別為0磁軌、1磁軌、2磁軌……不同碟片的同一磁軌構成的一個圓柱面稱為柱面,柱面由外向內依次為0柱面、1柱面、2柱面……磁碟將資訊按扇區存入
    • 平均尋道時間:機械手臂轉到資料所在磁軌需要花費的時間,受限於物理工藝水平,目前機械硬碟可以達到的是5ms
    • 平均延遲時間:轉半圈需要花費4ms,受限於硬碟的轉速

​ IO延遲 = 平均尋道時間 + 平均延遲時間

​ 優化程式執行效率的一個核心法則:能從記憶體取資料,就不要從硬碟取

  • 固態硬碟:固態盤(SSD)

    • 是用固態電子儲存晶片陣列而製成的硬碟,由控制單元和儲存單元(FLASH晶片、DRAM晶片)以及快取單元組成。

    • 區別於機械硬碟由磁碟、磁頭等機械部件構成,整個固態硬碟結構無機械裝置,全部是由電子晶片及電路板組成。

  • buffer寫緩衝區:

    • 是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區,顯然緩衝區是具有一定大小的。
    • 緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區
  • cache讀快取:

    • cache是一個非常大的概念。
  • 快取(cache)與緩衝(buffer)的主要區別

    • Buffer的核心作用是用來緩衝,緩和衝擊。比如你每秒要寫100次硬碟,對系統衝擊很大,浪費了大量時間在忙著處理開始寫和結束寫這兩件事嘛。用個buffer暫存起來,變成每10秒寫一次硬碟,對系統的衝擊就很小,寫入效率高了,日子過得爽了。極大緩和了衝擊。

    • Cache的核心作用是加快取用的速度。比如你一個很複雜的計算做完了,下次還要用結果,就把結果放手邊一個好拿的地方存著,下次不用再算了。加快了資料取用的速度。

      • 簡單來說就是buffer偏重於寫,而cache偏重於讀。
      • ps:有時候大家要好好理解這些專有名詞字面上的意思,對理解這些概念有好處,緩衝:緩解衝擊,快取:臨時儲存
  • 虛擬記憶體:

    • 許多計算機支援虛擬記憶體機制,該機制使計算機可以執行大於實體記憶體的程式,方法是將正在使用的程式放入記憶體取執行,而暫時不需要執行的程式放到磁碟的某塊地方,這塊地方成為虛擬記憶體,在linux中成為swap,這種機制的核心在於快速地對映記憶體地址,由cpu中的一個部件負責,成為儲存器管理單元(Memory Management Unit MMU)

IO裝置=裝置的控制+裝置本身


作業系統

作業系統是一個協調、管理、控制計算機硬體資源與軟體資源的程式。

它處於計算機硬體與應用程式之間

  • BIOS介紹:
    • BIOS:Basic Input Output System
    • BIOS被寫入ROM裝置

​在計算機的主機板上有一個基本的輸入輸出程式(Basic Input Output system)BIOS就相當於一個小的作業系統,它有底層的I/O軟體,包括讀鍵盤,寫螢幕,進行磁碟I/O,該程式存放於一非易失性快閃記憶體RAM中。

  • 裸機:

    • CPU:中央處理器
    • ROM:充當記憶體,存放BIOS系統
    • CMOS:充當硬碟
  • 作業系統的啟動流程

    • 1.計算機加電
    • 2.BIOS開始執行,檢測硬體:cpu、記憶體、硬碟等
    • 3.BIOS讀取CMOS儲存器中的引數,選擇啟動裝置
    • 4.從啟動裝置上讀取第一個扇區的內容(MBR主引導記錄512位元組前446為引導資訊,後64為分割槽資訊,最後兩個為標誌位)
    • 5.根據分割槽資訊讀入bootloader啟動裝載模組,啟動作業系統
    • 6.然後作業系統詢問BIOS,以獲得配置資訊。對於每種裝置,系統會檢查其裝置驅動程式是否存在,如果沒有,系統則會要求使用者按照裝置驅動程式。一旦有了全部的裝置驅動程式,作業系統就將它們調入核心

  • BIOS

    • 1、存有win10系統的光碟、u盤、行動硬碟:無密碼
    • 2、本地硬碟上的win7系統:密碼
  • 應用程式的啟動流程

    • 1、雙擊exe快捷方式--》exe檔案的絕對路徑,就是在告訴作業系統說:我有一個應用程式要執行,應用程式的檔案路徑是(exe檔案的絕對路徑)
    • 2、作業系統會根據檔案路徑找到exe程式在硬碟的位置,控制其程式碼從硬碟載入到記憶體
    • 3、然後控制cpu從記憶體中讀取剛剛讀入記憶體的應用程式的程式碼執行,應用程式完成啟動

計算機的三層結構

  • 應用程式

  • 作業系統

  • 計算機硬體(cpu、記憶體、硬碟)

"""
我們日常生活中所使用的 程式設計師所編寫的程式都必須基於作業系統之上
"""

# PC端
    windows  更加註重使用者體驗
    linux    更加主動軟體執行
    macOS    兩者均可

# 移動端
    安卓 ios 鴻蒙
  • 一個非常重要的基礎概念:平臺

應用程式都是運行於作業系統之上,而作業系統則是運行於硬體之上的,所以承載應用程式的是一臺執行有作業系統的計算機,稱之為應用程式的執行平臺,即:硬體 + 作業系統 == 平臺

常見的平臺有:windows系統+某款硬體、linux系統+某款硬體、ubuntu+某款硬體等,我們在開發應用程式時就需要考慮到應用程式的跨平臺性,如果能開發出一款可以在任意平臺執行的應用程式,那對於開發者來說真是極大的福音。而決定應用軟體的跨平臺性的關鍵因素往往是程式語言的選擇,python恰好是一款跨平臺性語言,這也是我們學習它的原因之一。