操作系統 --- [筆記]功能、組成

操作系統的作用

  • 管理計算機硬件
  • 充當計算機用戶和計算機硬件的中介(操作系統控制硬件,協調各個用戶應用程序的硬件)

計算機系統的資源

CPU時間、內存空間、文件存儲空間、I/O設備等

操作系統的定義

  • 如何定義一個操作系統:
  1. 計算機系統的根本目的是,執行用戶程序并且更容易解決用戶問題。為了實現這一目的構造了計算機硬件。
  2. 由于硬件本身并不容易使用,因此開發了應用程序。
  3. 有些應用程序需要一些共同操作,如控制I/O設備。
  4. 這些控制和分配I/O設備資源的共同功能則被組成一個軟件模型:操作系統
  • 比較公認的定義:
  1. 操作系統是一直運行在計算機上的程序(通常稱為內核(kernel))
  2. 除了內核外還有兩類程序: 系統程序和應用程序
  3. 系統程序: 與系統運行有關,但不是內核的一部分
  4. 應用程序: 與系統運行無關的所有其他程序

中間件

  • 產生: 移動操作系統通常不只有內核,也有中間件
  • 定義: 為應用程序開發人員提供其他功能的軟件框架
  • 栗子: 最常用的兩個移動操作系統(IOS和Android),除了內核外,都有中間件以便支持數據、多媒體和圖形等.

總線

  • 物理: 一根根線,用于連接一個或多個CPU和若干設備管理器
  • 作用: 提供到內存的訪問服務

設備管理器

  • 作用: 負責一類特定的設備(磁盤驅動、音頻設備或視頻顯示器等)

計算機開機(或重啟)后的一系列操作:

  • 初始程序: 當計算機打開或重啟以便開始運行時,它需要運行一個初始程序
  • 初始程序的位置: 初始程序(或引導程序)一般位于計算機的固件(firmware),如ROM(Read-Only Memory,只讀內存)或EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀內存)
  • 引導程序的作用: 它初始化系統的各個組件,從CPU寄存器、設備控制器到內存內容
  • 引導程序: 引導程序必須知道如何加載操作系統并且開始執行系統,因此引導程序必須定位操作系統內核并且加到內存

中斷:

  • 作用: 用于告知CPU事件的發送,并采用相應的事件處理程序
  • 特點: 當CPU被中斷時,它停止正在做的事,并立即轉到固定位置(通常包含終端服務程序的開始地址)再繼續執行。在執行完畢(中斷程序)后,CPU重新執行被中斷的計算
  • 硬件中斷: 隨時通過系統總線發送信號到CPU,觸發中斷
  • 軟件中斷: 通過系統調用(也稱監督程序調用(monitor call)),觸發中斷

位、字節、字

  • 位: 或比特(bit),即一個0或一個1
  • 字節(byte): 8位,是大多數計算機的常用最小存儲
  • 字(word): 計算機架構的常用存儲單位,有一個或多個字節組成

CPU只能從內存中加載指令,因此執行程序必須位于內存

內存

  • 定義: 內存(main memory),也稱為隨機訪問內存(Random Access Memory, RAM)
  • 作用: CPU從內存中加載指令,執行的程序必須位于內存之內.
  • 馮·諾依曼體系結構:
  1. 首先從內存中獲取指令,并存到指令寄存器(instruction register)。
  2. 接著,該指令被解碼,也可能會從內存中獲取操作數據并且存到內部寄存器
  3. 在指令完成對操作數據的執行后,結果也可存到內存
  • 理想情況下,程序和數據無法永久駐留內存的原因:

  1. 內存通常太少,不能保留所有需要的程序和數據
  2. 內存是失性的(volatile)存儲設備,掉電時就會失去所有內容

外存

  • 作用: 擴充內存
  • 特點: 能存儲大量數據,且數據不易丟失
  • 常見外存: 磁盤或硬盤
  • 外存與內存的關系: 大多數程序(系統與應用)都保存在磁盤上,當要執行時才加載到內存

存儲設備的層次

  • 速度從快到慢:
  1. 寄存器
  2. 高速緩存
  3. 內存
  4. 固態硬盤
  5. 硬盤
  6. 光盤
  7. 磁帶

  • 注:
  1. 固態硬盤之上的存儲系統為易失的
  2. 固態硬盤及之下的為非易失的

I/O結構

  • 計算機系統由一個CPU和多個設備控制器組成,它們通過共同總線連在一起
  • 每個設備控制器管理某一特定類型的設備
  • 設備控制器:
  1. 每個設備控制器維護一定量的本地緩沖程序和一組特定用途的寄存器
  2. 負責在所控的外圍設備與本地緩沖存儲之間進行數據傳遞
  3. 操作系統為設備控制器提供了一個設備驅動程序,負責設備控制器,并且為操作系統的其他部分提供統一的設備訪問接口
  • I/O開始:
  1. 設備驅動程序加載設備控制器的適當寄存器,
  2. 設備控制器檢查寄存器內容,以便覺得采用什么操作
  3. 控制器開始從設備像本地緩沖區傳輸數據
  4. 數據傳輸完畢后,設備控制器就會通過中斷通知設備驅動程序
  5. 設備驅動程序返回控制到操作系統
  • 直接內存訪問:
  • 產生: 上述第4步中斷I/O會帶來很大的開銷,為了解決這個問題產生了直接內存訪問(DMA, Direct Memory Access)
  • 實現: 為I/O設備設置好緩沖、指針和計數器,設備控制器可在本地緩沖和內存之間傳送整塊的數據,而無需CPU的干預
  • 與傳統的區別: 每塊只產生一個中斷,來告知設備驅動程序操作已完成,而不像傳統那樣每個字節產生一個中斷.

參考《操作系統概念》P1~P8

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250538.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 試題二

Java 試題二 1、哪個選項和show函數重載 class Demo{ void show(int a,int b,float c){} } A.void show(int a,float c,int b){}//yes B,void show(int a,int b,float c){}//一模一樣。不可以出現在同一個類中。 C.int show(int a,float c,int b){return a;}//yes。 D.in…

Python之簡單驗證碼實現

def v_code(): ret for i in range(5): num random.randint(0,9) alf chr(random.randint(65,122)) s str(random.choice([num,alf])) ret s return retprint(v_code())轉載于:https://www.cnblogs.com/geeker-xjl/p/8809915.html

測繪軟件使用體會

進入石家莊鐵道大學已經兩年了,學習測繪工程專業也已經兩年了,大一的時候大多是對測繪不了解,到了大二的時候上半學期我就開始了解和使用一些測繪專業相關的軟件,在大二下半學期實習的時候更是深入的學習和使用測繪軟件&#xff0…

javascript --- event loop

栗子1 求下面函數的輸出 console.log(script start);setTimeout(() > {console.log(setTimeoout); }, 0);Promise.resolve().then(function(){console.log(promise1); }).then(function(){console.log(promise2); }) console.log(script end);說明: 在"promise2"…

sublime 設置自動換行

1.打開sublime,點擊preferences -> settings 2.將word_wrap的值由auto修改為true(若沒有word_wrap,手動添加) 轉載于:https://www.cnblogs.com/hitwgs/p/8821316.html

Java 試題三

Java 試題三 1、java類是否可以多繼承,怎么實現多繼承? 答:java沒有多繼承,但可以通過接口的形式來達到多繼承的目地。 2、我比較兩個String總是false,但是它們明明都是”abc” ! 答:比較Str…

Cent os常見操作命令

1.查看防火墻狀態:firewall-cmd –-state 2.關閉防火墻:systemctl stop firewalld.service 3.禁止防火墻開機啟動:systemctl disable firewalld.service 4.關閉selinux:vi /etc/selinux/config,然SELINUXdisabled 5.查…

koa --- 使用中間件多層級拋出錯誤

說明 能夠熟練的掌握錯誤的拋出,可以在一定程度上提高代碼的開發效率和可讀性 構造錯誤 本栗采用調用一個不存在的函數來拋出錯誤 const Koa require(koa); const app new Koa();// 響應時間輸出中間件 app.use(async (ctx, next) > {await next();// 獲取響應頭,印證…

電腦的真正價值

1.不是應用程序,而是開發程序 2.高級語言就像是人類的語言,低級語言就像是一個全心全意幫我的社交專家,他幫我說服電腦實現我的指令 3.高級語言就是字節碼,低級語言幫我轉換成機器碼 4.有時候,高級語言的一個眼神&…

Java 試題四

Java 試題四 1、abstract class 和interface 有什么區別? 【基礎】 答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類, 并為該類聲明方法,但不能…

PyInstaller用法

pyinstaller定義:PyInstaller是一個壓縮python文件成為可執行程序的一個軟件。 pyinstaller工作原理:① 它會掃描你所有的Python文檔,并分析所有代碼從而找出所有你的代碼運行所需的模塊。② PyInstaller會將所有這些模塊和你的code放在一個文…

koa --- 監聽路由,并使用模板引擎渲染顯示

使用路由 /Koa實戰/routes/index.js const Router require(koa-router); const router new Router();router.get(/, ctx > {ctx.body index; });module.exports router/Koa實戰/routes/users.js const Router require(koa-router); const router new Router({prefi…

公共平臺服務治理與鑒權

問題 解決問題 鑒權 注冊 管理 總結聊一聊最近了解的公司服務治理平臺,主要是思想,理念,而不是一種技術或框架。整個平臺設計,融入了OAUTH2認證,融入了微服務思想,幫助公司各系統在復雜的IT架構下&#xff…

Java 試題五

Java 試題五 1、運行時異常與一般異常有何異同 答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,…

【初賽】概率與期望學習筆記

一、事件 1、單位事件、事件空間、隨機事件 在一次隨機試驗中可能發生的不能再細分的結果被稱為單位事件,用 $ E $ 表示。在隨機試驗中可能發生的所有單位事件的集合稱為事件空間,用 $ S $ 來表示。例如在一次擲骰子的隨機試驗中,如果用獲得的…

koa --- 擴展hbs方法

moment 是一款常用的處理時間的庫傳入 1999-03-01T16:00:00.000Z YYYY/MM/DD輸出 1999/03/02 const moment require(moment);const myDatePattern (date, pattern) >{return moment(date).format(pattern) } 給擴展hbs功能. 放在 utils/helper.js 下方便管理 const hb…

go系列 鎖的初識

Go基礎之鎖的初識 當我們的程序就一個線程的時候是不需要用到鎖的,但是通常我們實際的代碼不會是單個線程的,所有這個時候就需要用到鎖了,那么關于鎖的使用場景主要涉及到哪些呢? 當我們多個線程在讀相同的數據的時候則是需要加鎖…

Java 試題六

Java 試題六 1、Collection 和 Collections的區別 答:Collection是集合類的上級接口,繼承與他的接口主要有Set 和List。Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。 2、Set里…

node --- 實現session認證.

跨域認證的問題 互聯網服務離不開用戶認證.一般流程如下: 1、用戶向服務器發送用戶名和密碼。 2、服務器驗證通過后,在當前對話(session)里面保存相關數據,比如用戶角色、登錄時間等等。 3、服務器向用戶返回一個 session_id&…

回信,我的好朋友王一涵

好了,不拖了,沏一杯咖啡,把信寫完。因為再拿好吃的賄賂你,賄賂不起了—— 一個胖子可以吃窮我的。 王一涵凹,不得了不得了。微胖肉質女生,關于體重我就不提了,只有我知道嘿嘿嘿,在我…