先看下面的一張圖
你會聯想到什麼?沒錯這是整個計算機啊。
我們講計算機是用來幫助人們解決一些實際問題的工具
那我們不妨先**一下,在螢幕上輸入「hello」,計算機內部都會進行哪些工作吧。
輸出「hello」的工作
cpu發指令給記憶體,把記憶體位址為300的地方東西拿出來,寫入到777視訊記憶體位址。螢幕出現h
同理e,l,l,o。
這是系統內部是這麼操作的,然而實際中我們是怎麼操作的呢?
我們的程式是這樣的:printf("hello")
而這時計算機已經穿上了衣服。
直接就會在螢幕上面輸出「hello」!
所以,我們有了作業系統以後,我們就能從應用程式,透過作業系統,來直接操作計算機硬體。
所以我們知道了,所謂作業系統,就是在硬體之上包了一層軟體,讓我們使用計算機更加便捷和高效
準確的說作業系統很難,很難,絕知此事要躬行啊!!!
上層應用通過作業系統提供的介面,來使用作業系統。
讓我們開啟鋼琴的蓋子,看看作業系統內部是怎麼運作的吧。
從開啟電源開始,計算機做了什麼事情呢?要解決這個問題,就要解決計算機是怎麼工作的呢?
計算機的工作方式。
圖靈1936,英國圖靈提出了一種模型。
圖靈機:
由此可以看出,圖靈機和現代的計算機還有一定的距離,所以演化成了通用圖靈機。
控制器首先讀邏輯,比如讀進來加法的邏輯,那他就做加法的運算,如果讀進來的是乘法的邏輯,那麼他就做乘法的運算。這更像是一種通用的模型,也就是所謂的通用圖靈機。這就很像計算機了,把程式載入進來,就會執行相應的功能。
馮諾依曼2023年,馮諾依曼提出儲存程式思想。
把程式和資料存放在記憶體裡,,然後載入到控制器中解釋執行,計算機就會一步步的完成程式的工作。
一些知識:
ir的全稱應該是instructinon register
指令暫存器是用來存放指令的,存放當前正在執行的指令,包括指令的操作碼,位址碼,位址資訊
pc的全稱是program counter
程式計數器,是用來計數的,指示指令在儲存器的存放位置,也就是個位址資訊
在彙編中用暫存器ip表示pc
具體的操作流程,
將程式載入到(儲存器)記憶體中
用pc指標指向程式的存放位址。
取址執行。取址執行,,,,取址執行。。。自動的進行
所以計算機的工作方式,用四個字概括就是取址執行
開啟作業系統的第一句指令
也就是pc=?
在x86 pc的執行過程:
記憶體中首先有乙個固化的區域,存在著基本的輸入輸出功能,叫做rom bios,固化在記憶體的0xffff0處。
開機前,硬體自動的設定好cs=0xffff;ip=0x0000處(cs:段暫存器 ip:段內的偏移。)形成的地質就是cs<<4+ip
從0磁軌0扇區讀入1個扇區 也就是 512 個位元組,讀到了0x7c00處,這個0磁軌0扇區就是作業系統的引導扇區。
引導扇區**:bootsect.s
編譯相關知識
**解析注意:以s結尾的是彙編**。
這段** 從start開始:
mov ax, #bootseg mov ds,ax
也就是說上面的**的作用是 bios將bootsect從7c00處挪到了9000這個地方。
jumi 間接跳轉 go 賦給 ip ,initseg 賦給cs,這樣就形成了乙個位址,想一想這樣跳到**去了呢?
繼續順序執行。
int 0x13 中斷
從第2個扇區開始讀4個扇區,載入setup
讀入setup模組後
bios int 0x10 中斷
是顯示中斷。bp 表示的要顯示的字元在記憶體中的位置。所以要把msg1的字元資料打到游標的位置,這就需要獲取一下游標的位置 xor bh,bh
總結
bootsect.s做了什麼事情呢?首先我們知道的作業系統本來在硬碟上面,電源開啟,就必須從磁碟載入到記憶體中,才會取址執行,那麼bootsect.s就做了這件事。(分段讀入)具體如下:
1、 先讀入setup 顯示logo。
int 0x13號中斷,將system讀進來。現在為止,作業系統就在記憶體中了!
現在bootsect.c執行完畢了,下面應該把控制權轉給setup了,利用jumpi 0,setupseg
段間跳轉可以實現。cs《4 + ip
setup模組 即setup.s
未完待續。。。
作業系統 學習筆記 作業系統概述
桌面常見四大作業系統 基本功能 應用程式執行需要作業系統提供哪些支援?作業系統的功能 記憶體管理 裝置管理 檔案管理 作業系統的定義 各種各樣的應用系統 除錯程式 裝入程式 編輯程式 編譯程式 匯程式設計序 裝配程式 作業系統 機器語言 微程式裸機 手工操作 沒有作業系統 單道批處理系統 多道批處理...
作業系統學習筆記
這裡專門摘錄作業系統相關筆試題和面試題!也當作自己的乙個複習!乙個很全的作業系統常考知識集合 1.分段式儲存和分頁式儲存,以及段頁式儲存的區別 分頁是一維儲存,分段是二維的 因為分頁給出虛擬位址後,作業系統會自動劃分頁號和偏移量 而分段給出位址後,需要知道段號和偏移量,段的長度是可變的!故是二維的 ...
作業系統學習 筆記
單道批處理評價 資源利用率差 互動性差 等 多道批處理 w為了提高系統的利用率 出現多道批處理 多道 是指 某時刻 多個應用程式再主存中,按照某些原則去處理,逐個執行程式。批處理 使用者提交一批作業,首先存放再外存,排成乙個佇列,然後排程程式按一定的演算法去排程從該佇列 中選取佇列中的乙個或若干個作...