1. 程式人生 > >作業系統基本知識(一)

作業系統基本知識(一)

計算機系統體系結構:

  1. 單處理器的計算機系統,它只有一個general purpose 的處理器,它有一個CPU來執行通用的指令集,    另外,裡面也包括一些專用的控制器(處理器),比如控制硬碟、網絡卡、鍵盤的等,這些控制器通常由作業系統管理; 
  2. 多處理器的計算機系統,可以分為非對稱型(asymmetric multiprocessing )與對稱型(symmetric multiprocessing, SMP);  在非對稱型的多處理器系統中,由其中一個處理器控制與監督其它的處理器工作; 在對稱型的多處理器系統中,所有的處理器都是平等的。 對於多處理器計算機系統,通常每一個處理器都有自己的暫存器與快取,所以的處理器都共享實體記憶體的; 
    另外,現代的CPU設計,通常在一個chip上設計多個計算單元,常稱為多核處理器, 從2006年以後, 現在Intel 與AMD的CPU都本都是多核處理器了。
  3. 叢集計算機系統

作業系統的相關操作:

  1. 通過雙模或多模(dual-mode or multimode) 操作 來確定 可以區分系統(核心或特權)指令還是使用者指令, 實現的方法是通過硬體增加一個mode 位來識別; 把一些危險的或特徵重要的指令設為特權指令,這樣使用者就無法執行,確定作業系統的性;
  2. 使用一個timer 進行週期性的中斷,來確保了作業系統可以一直掌控著CPU的控制權.  比如,萬一個使用者進入無限迴圈時,  通過這麼一箇中斷可以把CPU的控制權交給作業系統;

作業系統結構:

  1. 什麼是系統呼叫(system calls)?
    因為在使用者狀態是沒有辦法執行核心指令,怎麼辦??那就通過系統呼叫來完成吧。它是由作業系統核心提供的一些服務,包括:程序管理、檔案操作、記憶體管理、通訊等;
  2. 什麼是API(application programming interface)?
    它是應用程式介面, 對於應用程式程式設計人員是可見的。  它其實是對 系統呼叫的封裝,一個API可以對應一個系統呼叫,也可以包括多個system calls.  當程式設計人員使用需要使用核心功能時, 不需要直接呼叫系統呼叫,而是通過API來完成,API再去呼叫相應的systm calls。  為什麼這麼做??1. 為了程式的可移植性,API常常可以做到統一,而system call 的實現可以不不一樣;2. 使用API比直接使用 system call 要簡單的多。
    常用的三種API: windows系統的windows API; POSIX based 的系統(unix, linux, MAc OSX)的 POSIX API; JAVA虛擬機器的 Java API;
  3. 什麼是 system call interface?
    它就是系統呼叫介面, 它可以截獲API中使用的系統函式呼叫, 然後system call interface 再呼叫實際的 核心函式完成任務;  system call interface 起到 在API與實際的核函式之間的link 作用;
  4. 作業系統的結構組成?
    1)簡單的 monolithic 作業系統;整個核心裡包括很多東西;效能高,但是維護、除錯難。
    2) 分層的結構,實現簡單;
    3)microkernel結構,把一些必要的功能加入核心,其它的都放入到使用者態裡去;
    4)模組化的結構: 一些必要的功能在核心,加入一些可以載入的其它模組(在核心態);
    5) hybrid system :雜交以上的;

作業系統的啟動:  (講啟動過程 ,重點說了一下在載入硬碟上的 bootloader程式之前,電腦都幹了哪些事, 具體到 bootloader程式, 不同的作業系統不一樣吧)

瞭解一些背景知識:

1. CS:IP 兩個暫存器指示了 CPU 當前將要讀取的指令的地址,其中  CS  為程式碼段暫存器,而   IP  為指令指標暫存器 。

2. 1979年,Intel 推出了8088 CPU, 8088內部資料匯流排都是16位,外部資料匯流排是8位,可以定址 1024 KB 的記憶體; 1981年8088晶片首次用於IBM PC機中,開創了全新的微機時代, 它執行的作業系統也是第一代的DOS系統。也正是從8088開始,PC機(個人電腦)的概念開始在全世界範圍內發展起來。

3. PC機的設計師將8088CPU 可以定址的 1M 中的低端640KB用作RAM,供DOS及應用程式使用, 這就是640K的基本記憶體; 高階的384KB常稱作上位記憶體, 則保留給ROM、視訊適配卡等系統使用。從此,這個界限便被確定了下來並且沿用至今。這384K中的的低128KB是顯示緩衝區,高64KB是系統BIOS(基本輸入/輸出系統)空間,中間192KB空間用於其它留用,如下圖所示。在微軟的作業系統沒有徹底脫離DOS的時候,即使你的電腦裝有幾兆或幾十兆記憶體,但如果你使用以DOS為核心的作業系統,那麼你也只有640K的記憶體可以直接使用,1M以上的記憶體要通過一些記憶體管理工具才能使用。從Windows 95開始,才不存在常規記憶體的限制了,所有的記憶體,不管是8M還是128M,都可以被直接使用。

image_thumb[5]

作業系統的啟動過程: 

1. 當在我們剛剛接通電源的時候,整個系統由BIOS控制,電壓還不太穩定,主機板晶片組會向CPU發出reset的命令讓CPU開始初始化,同時主機板晶片組等待電源發出POWE GOOD命令,一旦電源發出POWER GOOD命令,主機板晶片組就會撤出 reset 的命令, 此時,這時候,CS:IP 兩個暫存器指向FFFF0H地址, CPU從 FFFF0H 地址開始執行定址指令(這個地址是在BIOS內而不再記憶體裡面),在這個地址中無論是AMI BIOS還是Award BIOS,在這個地址中都會儲存一條跳轉命令,直接跳轉到系統BIOS中真正的啟動程式碼處(這個程式碼一定在 F0000H至 FFFFFH之間的某個地方),BIOS的程式碼都是在BIOS晶片ROM中的,那個跳轉命令也是在ROM中的。 

補充:為什麼是 FFFF0H的位置加入跳轉指令呢?

BIOS ROM晶片裡面的程式是在計算機出廠的時候直接燒錄在裡面的,完成一些主機自檢等操作,並提 供一些訪問磁碟等基本輸入輸出服務,由於不同的計算機廠商生產的計算機所帶的外設不一樣,因此,這段程式大小也限機型的不同而不一樣, 所以,不能把這個段程式碼的地址設定為從 00000H開始, 為了解決這個問題,8086規 定,CPU均從0xFFFF0處開始執行,而在0xFFFF0處,放一條無條件轉移指令JMP,跳轉到BIOS的程式碼處(這個都是廠商自己規定);

2. 執行BISO的程式碼,幹什麼事呢?POST自檢!
主要的工作就是執行主機自檢(POST),當BIOS檢查到硬體正常後,按照 CMOS 中對啟動裝置的設定順序檢測可用的啟動裝置。BIOS將相應啟動裝置的第一個扇區(也就是MBR扇區)讀入記憶體地址為0000:7C00H 處,並檢查MBR的結束標誌位是否等於55AAH(活動盤的標誌),若不等於則轉去嘗試其他啟動裝置,如果沒有啟動裝置滿足要求則顯示"NO ROM BASIC"然後宕機。

“0x7C00” 第一次出現是在 “IBM PC 5150” 的 BIOS 的 19號中斷例程中。

IBM PC 5150 是現代 x86 PC 的鼻祖,為了保證向下相容的原則,”0x7C00”得以保留。 19號中斷例程 就是 “POST”(Power On Self Test) ,上電自檢(包括檢查是否存在驅動器),之後將啟動盤的第一分割槽的第一扇區的 512b 資料拷貝到 0x7c00處。  0x7c00”是由 IBM PC 5150 BIOS開發團隊決定(David Bradley博士)。

“0x7C00 = 32KiB - 1024B” 有什麼特殊含義? 是為了解決系統和 CPU 記憶體分佈的需求!!

BIOS 決定這個地址的理由如下:
  1. 32kb是符合(DOS)系統載入的最小空間
  2. 8086/8088 0x0 - 0x3ff用於BIOS的中斷向量和BIOS資料區域。
  3. 引導扇區是512位元組,boot 程式需要的資料/堆疊 大於 512 位元組。
  4. 因此,0x7c00, 32KB 的最後 1024B 被選中了。

系統加電啟動後,可以自由使用 0x7c00起始的, 32KB 的最後 1024B空間。

3. 這時候就需要磁碟第一扇區上的MBR程式碼了,linux與windows的程式碼不一定一樣, 以linux 為例,說明:

相關推薦

作業系統基本知識

計算機系統體系結構: 單處理器的計算機系統,它只有一個general purpose 的處理器,它有一個CPU來執行通用的指令集,    另外,裡面也包括一些專用的控制器(處理器),比如控制硬碟、網絡卡、鍵盤的等,這些控制器通常由作業系統管理;  多處理器的計算機系統,可以分為非對稱型(asymmetric

作業系統與計算機組織基本知識

    作業系統是作為計算機硬體和計算機使用者之間的中介的程式。作業系統的目的是為使用者提供方便且有效地執行程式的環境。作業系統是管理計算機硬體的軟體,硬體必須提供合適的機制來保證計算機系統的正確性,以及確保系統不受使用者程式干擾正常執行。作業系統龐大而複雜,因此它必須被分塊

ActiveMQ基本知識

服務 serve cti log 功能 伸縮 class body app 1.ActiveMQ最主要的功能:實現JMS Provider,用來幫助實現高可用、高性能、可伸縮、易用和安全的企業級面向消息服務的系統。是一個異步的功能。 2.ActiveMQ特點:   完全支持

操作系統基本知識

兩個 code 緩沖 inline 內存管理 中斷 字節 核心 結束 計算機系統體系結構: 單處理器的計算機系統,它只有一個general purpose 的處理器,它有一個CPU來執行通用的指令集, 另外,裏面也包括一些專用的控制器(處理器),比如控制硬盤、網卡、

阿里雲伺服器基本知識

最近用 js 全棧玩小程式,玩的第一個流程便是要配置伺服器,而且是要繫結域名的伺服器。好吧,磕磕碰碰的,終於可以玩了。 寫著寫著,後臺介面便用上了,這時候伺服器知識又要上場了。心塞,硬著頭皮~ (在這裡就不說明怎樣購買以及伺服器搭建了,百度一大堆~還有先謝公司裡的蘇工和陳工幫忙,計算機知識也

資料結構的基本知識

1.資料結構的基本概念 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。 資料是人們利用文字元號、數字符號以及其他規定的符號對現實世界的事物及其活動所做的抽象描述。換言之,資料是資訊的載體,是客觀事物

Tomcat基本知識

頂層架構 先上一張Tomcat的頂層結構圖(圖A),如下: Tomcat中最頂層的容器是Server,代表著整個伺服器,從上圖中可以看出,一個Server可以包含至少一個Service,用於具體提供服務。 Service主要包含兩個部分:Connector和Cont

java 執行緒基本知識

import java.lang.Thread; 1.建立執行緒 Thread th=new Thread(); ps: Thread th=new Thread() { public void run() { System.out.println("run方法");

USB 基本知識

回答八:Descriptor即描述符,是一個完整的資料結構,可以通過C語言等程式設計實現,並存儲在USB裝置中,用於描述一個USB裝置的所有屬性,USB主機是通過一系列命令來要求裝置傳送這些資訊的。它的作用就是通過如問答節中的命令***作來給主機傳遞資訊,從而讓主機知道裝置具有什麼功能、屬於哪一類裝置、要佔用

資料庫入門基本知識

1.0 2.0 sql語言 2.1 sql語言的特點 綜合統一 SQL集資料的定義、操作、控制與一體,語言風格統一,可以的獨立完成資料庫生命週期的所有活動 高度非過程化 不管怎麼

WIFI6 基本知識

## 什麼是WI-FI6(802.11ax) 1. Wi-Fi 6 是下一代 802.11ax 標準的簡稱。隨著 Wi-Fi 標準的演進,WFA 為了便於 Wi-Fi 使用者和裝置廠商輕鬆瞭解其裝置連線或支援的 Wi-Fi 型號,選擇使用數字序號來對 Wi-Fi 重新命名。另一方面,選擇新一代命名方法也是為

統計學習基本理論知識

求解 兩個 向量 定義 標準差 註意 begin lan 語言模型 本篇將依據《統計自然語言處理》(宗成慶),重新梳理統計學習相關理論知識,相關概率論與梳理統計的課本不再列出來,可以找任意相關的課本復(預)習。 概率 概率是表示事件發生的可能性,將隨機試驗中的事件映射到實數

C# 《基本知識 1

png 經歷 知識 通用 代碼 可執行 處理 環境 安全性 一、 .net Framework 編寫應用程序的過程 1、使用 .NET Framework 編寫應用程序,就是使用 .NET代碼庫編寫代碼(使用支持Framework的任何一種語言)。 2、為執

JPA基礎知識:簡介、基本註解

JPA基礎知識(一):簡介、基本註解 一、簡介 JPA全稱Java Persistence API,用於物件持久化。 JPA通過JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。 sun公司定義了JDBC介面,程式設計師可以通過介面來訪問資

概率論基礎知識概率論基本概念

概率論 0. 前言 本文主要旨在對概率論的基礎概念與知識進行概要的總結,以便於使用到時可以參考。 概率論是數理統計的基礎,也是很多機器學習模型的支撐,概率論在機器學習中佔主要地位,因為概率論為機器學習演算法的正確性提供了理論依據。 1. 概率論的基本概念 1.

JS基礎知識【資料型別基本介紹,檢測資料型別端方法簡介】

1、基礎知識 ECMAScript(ES):規定了JS的一些基礎核心的知識(變數、資料型別、語法規範、操作語句等)  DOM:document object model 文件物件模型,裡面提供了一些屬性和方法,可以讓我們操作頁面中的元素  BOM:browser ob

MySQL基礎知識——基本命令和資料型別

一.MySQL基礎 MySQL由瑞典MySQL AB公司開發,目前屬於Oracle公司; MySQL是一個開源的關係型資料管理系統; MySQL分為社群版和企業版。 二.MySQL目錄結構 bin目錄,儲存可執行檔案; data目錄,儲存資料檔案;

EOS的基礎知識基本的命令操作

EOS環境的搭建和節點啟動分為以下兩步: 第一步:下載EOS的原始碼 使用命令:git clonehttps://github.com/EOSIO/eos –recursive 下載原始碼,時間大概1-3小時。編譯要求:計算機記憶體要求要有8GB以上。 下載編譯之後,

TestNG基本註解

tor 參數 ner runt ring exc 劃分 .org cal TestNG基本註解 註解描述 @BeforeSuite 註解的方法將只運行一次,運行所有測試前此套件中。 @AfterSuite 註解的方法將只運行一次此套件中的所有測試都運行

c語言-樹的基礎知識

相交 ges 最大 .cn nbsp 分享 blog com lin 第一、樹的定義: 1.有且只有一個稱為根的節點 2.有若幹個互不相交的子樹,這些子樹本身也是一顆樹 第二、專業術語: 樹的深度:從根節點到最低層,節點的層數 ,稱之為樹的深度。