程序是在什麼環境下運行的

運行環境

定義:運行環境 = 操作系統 + 硬件
圖:
在這裏插入圖片描述
本地代碼:機器語言的程序稱爲本地代碼

Q:各自機器的語言的不同
A:例如:MIPS vs Intel x86 ,CPU 的解釋不同,而導致了同一個源文件,編譯在各機器上的機器碼也不同

Windows 如何克服了 CPU 以外的硬件差異

1、通過設定相應的 API
程序將指令給 操作系統, 操作系統統一彙總然後輸入到各個的硬件當中

2、在 Windows 的應用軟件中,鍵盤輸入、顯示器輸出等並不是直接向硬件發送指令,而是通過向 Windows 發送指令來間接實現的。
程序員就不用注意內存和 I/O 地址的不同構成了。因爲 Windows操作的是硬件而非應用軟件

應 用 程 序 向 操 作 系 統 傳 遞 指 令 的 途 徑 稱 爲 API(Application Programming Interface)B。

相應的兼容性措施

1、FreeBSD Port 幫你輕鬆使用源代碼
該機制能夠結合當前運行的硬件環境來編譯應用的源代碼,進而得到可以運行的本地代碼系統

2、虛擬機的使用

3、Java 虛擬機的使用

BIOS 和引導

BIOS
(Basic Input/Output System)的系統, BIOS 存儲在 ROM 中,是預先內置在計算機主機內部的程序

作用
BIOS 除了鍵盤、磁盤、顯卡等基本控制程序外,還有啓動“引導程序”的功能。引導程序是存儲在啓動驅動器起始區域的小程序。操作系統的啓動驅動器一般是硬盤,不過有時也可以是 CD-ROM 或軟盤

爲什麼需要 BIOS 程序?
BIOS 會確認硬件是否正常運行,沒有問題的話就會啓動引導程序。引導程序的功能是把在硬盤等記錄的 OS 加載到內存中運行。雖然啓動應用是 OS(Operating System) 的功能,但 OS 並不能自己啓動自己,而是通過引導程序來啓動。

圖 :
在這裏插入圖片描述

.exe 文件是什麼?

源代碼:用某種編程語言編寫的程序

源文件:保存源代碼的文件

示例
通過對源文件進行編譯,得到目標文件。例如,C 語言中,將Sample1.c 這個源文件編譯後,就會得到 Sample1.obj 這個目標文件。目標文件的內容是本地代碼

用記事本打開的的 .exe 文件
圖:
在這裏插入圖片描述

DUMP(轉儲) 後的文件
Dump是指把文件的內容,每個字節用 2 位十六進制數來表示的方式
圖:
在這裏插入圖片描述
庫文件:把多個目標文件集成保存到一個文件中的形式

標準函數:sprintf() 等函數,不是通過源代碼形式而是通過庫文件形式和編譯
器一起提供的

靜態鏈接庫:存儲着目標文件的實體,並直接和 EXE 文件結合的庫文件形式稱爲靜態鏈接庫

:是用來存儲函數內部臨時使用的變量(局部變量 A),以及函數調用時所用的參數的內存區域。

:是用來存儲程序運行時的任意數據及對象的內存領域

一個 EXE 文件的形成過程
圖:
在這裏插入圖片描述
Q :在EXE文件中,變量和函數的內存地址的值,是如何來表示的呢?

A :EXE文件中給變量及函數分配了虛擬的內存地址。在程序運行時,虛擬的內存地址會轉換成實際的內存地址。鏈接器會在EXE文件的開頭,追加轉換內存地址所需的必要信息。這個信息稱爲 再配置信息。

Q :編譯器 和 解釋器 有什麼不同?

A :編譯器是在運行前對所有源代碼進行解釋處理的。而解釋器則是在運行時對源代碼的內容一行一行地進行解釋處理的。

操作系統的由來及原型

(1)監控程序
背景:在計算機中尚不存在操作系統的年代,完全沒有任何程序,因此程序員就需要編寫出處理相關的所有程序。用機器語言編寫程序,然後再使用開關將程序輸入
功能:僅具有加載和運行功能

(2)初期操作系統
背景:人們在利用監控程序編寫程序的過程中,發現很多程序都有共通的部分。例如,通過鍵盤輸入文字數據、往顯示器輸出文字數據等。這些處理,在任何程序下都是一樣的。而如果每編寫一個新的程序都要記述相同的處理的話,那真的是太浪費時間了
功能:監控程序 + 基本的輸入輸出程序

(3)現代操作系統
背景:隨着需求的整合,而抽象出了整體的計算機
功能:操作系統是多個程序的集合體

圖:
在這裏插入圖片描述

Windows操作系統的特徵

(1)32 位操作系統(也有 64 位版本)
(2)通過 API 函數集來提供系統調用
(3)提供採用了圖形用戶界面的用戶界面
(4)通過 WYSIWYGA實現打印輸出
WYSIWYG 是 What You See Is What You Get 的略寫。意思是,顯示器上顯示的文本及圖形等(What You See),是(Is)可以原樣輸出到打印機上打印(What You Get)的。

(5)提供多任務功能
多任務指的是同時運行多個程序的功能。Windows 是通過 時鐘分
割技術來實現多任務功能的。

(6)提供網絡功能及數據庫功能
中間件:並不是操作系統本身不可欠缺的功能,但它們和操作系統很接近,所以稱爲中間件 (網絡功能,數據庫功能等)

(7)通過即插即用實現設備驅動的自動設定
即插即用(Plug-and-Play)指的是新的設備連接(Plug)後立刻就可以使用(Play)的機制。新的設備連接到計算機後,系統就會自動安裝和設定用來控制該設備的 設備驅動程序。

例子:
例如鼠標,鍵盤等等

發佈了240 篇原創文章 · 獲贊 91 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章