1. 程式人生 > >day01

day01

功耗 限制 通道 便是 光驅 規則 內容 正常 默認

編程語言的作用及與操作系統和硬件的關系
  編程語言是人們用來控制計算機進行某項工作
  計算機由各種硬件組成,並由用戶所安裝的操作系統進行控制,通常情況下,操作系統擁有完全的權限,用戶在執行操作軟件的時候將會限制用戶權限,當用戶需要調用本身不具備的權限時,像操作系統進行申請,由操作系統進行工作。具體權限能力由系統寄存器中的程序狀態寄存器控制。
    程序狀態字寄存器由0和1用來表示狀態
      內核態:可以獲取CPU全部指令,包括操作底層的硬件
      用戶態:可以獲取CPU部分指令,不包括操作底層的硬件

cpu-》內存-》磁盤

  運行速度 CPU > 內存 > 磁盤

  CPU:用來進行計算,運行速度最快,cpu本身包含許多指令集;

  內存:系統及軟件運行時,會先從磁盤中加載在內存中然後交由CPU進行運算(當某些時候,由於內存不夠,系統會將硬盤中的部分容量作為內存來使用,這樣可以保證軟件正常運行,但會降低軟件的運行速度),軟件運算前,先加載到內存中,主要因為內存的讀寫速度要遠遠快於磁盤的讀寫速度。

  磁盤:主要用來存放用戶自己的數據以及軟件、系統的文件。運行時這些內容將會被讀取到內存中。

cpu與寄存器,內核態與用戶態及如何切換

寄存器
程序計數器:(CPU切換執行程序時)記錄程序執行狀態

程序狀態字寄存器

  由0和1用來表示狀態(內核態、用戶態)
    內核態:可以獲取CPU全部指令,包括操作底層的硬件
    用戶態:可以獲取CPU部分指令,不包括操作底層的硬件

存儲器系列

  L1緩存:集成在CPU內部中,用於CPU在處理數據過程中數據的暫時保存。緩存的容量越大,存儲信息越多,可減少CPU與內存之間的數據交換次數,提高CPU的運算效率。

  L2緩存:位於CPU與內存之間的臨時存儲器,容量比內存小但交換速度快,二級緩存容量大小決定了cpu的性能。

  內存(RAM):計算機中所有程序的運行都是在內存中進行的,作用是用於暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。

  EEPROM:通常用來寫一些不可擦去的內容,如:BIOS臨時輸入輸出系統。

  閃存:U盤、CF卡、SM卡、SD/MMC卡、記憶棒、XD卡、MS卡、TF卡、PCIe閃存卡

  CMOS:Complementary Metal Oxide Semiconductor 存放時間、開機設置等信息

  BIOS:Basic Input Output System 系統固件,用來設置系統開機時的選項,存放於CMOS

  BIOS電池:為CMOS供電,如果該電池沒電了,那麽CMOS中的內容將會清空

磁盤

磁盤結構:

  磁頭:讀寫
  磁道:二進制
  扇區:磁盤級別默認情況為521Bytes,可調節(操作系統一次寫入八個扇區(一個Block)
  柱面:例如分區

平均尋道時間:硬盤在接收到系統指令後,磁頭從開始移動到移動至數據所在的磁道所花費時間的平均值,通常與磁盤的轉速有關。

平均延遲時間:找到數據所在磁道後,尋找到數據開頭的時間。

虛擬內存:當某些時候,由於內存不夠,系統會將硬盤中的部分容量作為內存來使用,這樣可以保證軟件正常運行,但會降低軟件的運行速度。

MMU:Memory Management Unit的縮寫,中文名是內存管理單元,操作系統一次寫入八個扇區(一個Block)

磁帶:一種保存數據的設備,通常用來備份資料,可移動性強(方便搬運),內存大,但速度慢。

設備驅動與控制器:每一個設備同常需要通過總線鏈接在主板上,在主板與總線接口的位置通常會有一個控制器(用來控制硬件),硬件應該遵循控制器中的規則。這樣的話,大多數廠家在生產硬件的時候只要遵循這個規則就可以被電腦使用,通常驅動會實現硬件及控制器的交互。

總線:用來連接各種機器元件,如主板與鍵盤、鼠標、cpu等;

南橋:連接運行速度較慢的硬件,如:鍵盤、鼠標、usb等;

北橋:連接運行速度較快的硬件,如CPU、內存等

操作系統的啟動流程

  開機執行BIOS(基本輸入輸出系統)引導程序,這個過程叫做系統自檢,標識和配置所有的即插即用設備,並配置DMA通道;完成加電自檢,測試內存,端口,鍵盤,視頻適配器,磁盤驅動器等基本設備,以及CD-ROM驅動器;對引導驅動器可引導分區定位:在CMOS(complementary metal oxide semiconductor,互補金屬氧化物半導體)中,可以自行設置引導順序,一般順序是軟驅,磁盤,光驅;加載主引導記錄以及引導驅動器的分區表,執行主引導記錄MBR,主引導記錄在硬盤上找到可引導分區,將其分區引導記錄裝入內存,並將控制權交給分區引導記錄,由分區引導記錄定位根目錄,然後裝入操作系統。

應用程序的啟動流程

  查找軟件存放位置後將數據讀取到內存中,如果需要進行對硬件的操作,則需要通過操作系統來完成。

固態硬盤與機械硬盤的工作原理
目前,人們多數使用的是基於Flash閃存的固態盤。相變存儲尚在實驗室,DRAM固態盤采用常見內存顆粒,數據需要額外的電源才能保存,使用者不多。固態盤常見接口有SATA(普通PC使用的串行ATA接口)、PCI-Express(常見於顯卡設備的接口,特點在於高速)等多種。不同的接口,其實都是為了通用、高速的目的。Flash的最小存儲單元是晶浮柵晶體管,對應於磁盤中的一個bit的存儲單元。磁盤中,利用磁極的不同來標記0,1,當磁頭掃過盤面,通過感應電流就可以識別出不同狀態,即讀取數據;增強磁頭的磁性,可以改變盤面記錄單元的狀態,實現寫入數據。固態盤中,在存儲單元晶體管的柵(Gate)中,註入不同數量的電子,通過改變柵的導電性能,改變晶體管的導通效果,實現對不同狀態的記錄和識別。有些晶體管,柵中的電子數目多與少,帶來的只有兩種導通狀態,對應讀出的數據就只有0/1;有些晶體管,柵中電子數目不同時,可以讀出多種狀態,能夠對應出00/01/10/11等不同數據。所以,Flash的存儲單元可分為SLC(一個蘿蔔一個坑)和MLC(2個/多個蘿蔔一個坑)兩種。區別在於SLC的狀態簡單,所以讀取很容易,MLC有多種狀態,讀取時,容易出錯,需要校驗,速度相對較慢。實際MLC的狀態識別過程比上述復雜很多,讀取一次MLC的功耗比SLC大很多。由於材料本身的緣故,SLC可以接受10萬次級的擦寫,而MLC材料只能接受萬次級擦寫操作,所以MLC的壽命比SLC少很多。但是,也是最重要的,由於MLC中的信息量大,同一個存儲單元,信息量是SLC的N倍,所以相同容量的磁盤,MLC類型Flach成本更低,存儲單元體積更小,這也導致市面上多數固態盤都采用了MLC型的Flash顆粒。SLC由於其特性,僅在高端的高速存儲設備中使用。有了上述介紹,不難理解,固態盤寫入,就是改變晶體管裏柵中電子數目的過程。讀出,就是向晶體管施加電壓,獲取不同導通狀態,對應識別存儲數據的過程。Flash顆粒便是大量這種浮柵晶體管的陣列,一般的U盤中會有1-2粒這種Flash顆粒,視容量而定;在SSD硬盤中,常見會有8-16粒Flash顆粒。不過,用戶在使用過程中,對器件的負面特性並不需要擔心太多,生產廠商已經做出了考慮。如,由於單個存儲單元的訪問次數有限,如果長期在同一個區域重復讀寫,會導致該存儲區域失效,進而影響整塊盤的壽命。於是,業界研究了負載平衡技術,將用戶的訪問請求均勻分布在所有存儲單元中,以延長整個盤壽命。而這個“不要在一只羊身上薅羊毛”的事情,就是固態盤控制器的任務了

寄存器
程序計數器:(CPU切換執行程序時)記錄程序執行狀態

程序狀態字寄存器

  由0和1用來表示狀態
    內核態:可以獲取CPU全部指令,包括操作底層的硬件
    用戶態:可以獲取CPU部分指令,不包括操作底層的硬件

BIOS:固件用來設置系統開機時候的指令

CMOS存放時間、開機設置等信息如BIOS中的設置內容

硬盤:
磁頭:讀寫
磁道:二進制
扇區:磁盤級別默認情況為521Bytes,可調節(操作系統一次寫入八個扇區(一個Block)
柱面:例如分區

虛擬內存:將硬盤中的容量暫時給內存使用,linux中成為Swap

進程線程是專門針對CPU提出來的單詞嗎
  進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
  線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
  進程和線程的關系:
  (1)一個線程只能屬於一個進程,而一個進程可以有多個線程,但至少有一個線程。
  (2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
  (3)處理機分給線程,即真正在處理機上運行的是線程。
  (4)線程在執行過程中,需要協作同步。不同進程的線程間要利用消息通信的辦法實現同步。
  進程與線程的區別:
  (1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位
  (2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行
  (3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源.
  (4) 系統開銷:在創建或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於創建或撤消線程時的開銷。但是進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個進程死掉就等於所有的線程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些
  結論:
  (1)線程是進程的一部分
  (2)CPU調度的是線程
  (3)系統為進程分配資源,不對線程分配資源

問題
  好多層的磁盤,在一個柱面內,都是屬於一個分區
  平均尋道時間:每次都從外面開始尋找嗎

預習內容:

day01