作業系統API

前輩們您好,

0.我很疑惑為什c語言可以強大成如此??

是因為當初在開發C語言編譯器有把從組合語言所有功能編寫進去??

1.作業系統大多由c語言所完成,所以要使用作業系統的API

要由C語言編譯器才能呼叫??

2.我好幾年前略上過...某機器專屬的組合語言

我記得組合語言可以硬體中斷

c語言可以控制硬體是因為把組合語言的API拿來用???

還是組合語言開發"C語言編譯器",有把中斷的功能編寫進去????

VB,JAVA,某些語言,不能細部控制硬體,是因為沒有把某些功能編進去吧???

我這樣推論有錯嗎????

3.其實我們所使用的API,全部來自作業系統API吧???

就算有些是自己創造的API,也是拿作業系統API來加以修改吧???

4.硬體控制,是要用到作業系統的API吧???

我記得順序是應用程式>>程式開發器(系統軟體)>>作業系統(系統軟體)

>>各機器的韌體>>硬體

每個硬體都有各自"驅動程式+硬體"(喇叭,網路卡,滑鼠,螢幕,鍵盤,掃描器.顯示卡.音效卡)

是作業系統API聯絡CPU,然後CPU再跟其他硬體做溝通嗎??

還是作業系統API可以親自跟所有硬體做溝通???

還有....假設要使用滑鼠硬體 是跟滑鼠的驅動程式(韌體)做溝通嗎

那些電腦底部的溝通到底是怎溝通的......???

每一個硬體都有一個專屬驅動程式??

到底電腦底層是怎溝通的???

CPU的驅動程式跟所有硬體驅動程式溝通???

5.開發單晶片所用的C編譯器與一般的C編譯器不同吧???

還有.....如果C語言可以,那其他語言照理說也有機會可以啊??

其他語言之所以不太採用,是因為會造成程式碼龐大??記憶體需求變大???速度變慢???造成多餘的程式嗎???

謝謝大家

已更新項目:

to Wiene

組合語言正常情況下應該可以做硬體中斷吧= =?

2 個已更新項目:

TO 阿明前輩您好

所以我們所開發的應用程式,都是藉由作業系統來完成???

我們所寫的程式碼都是跟作業系統溝通???!!!!!而不是硬體

然後作業系統在跟韌體/硬體溝通??????

"""""这在某种程度上很象 Windows 的天然代码 . 其他的语言只是提供一种能自动而且更容易的访问 API 的"""""

所以我們所寫的低~高階語言,只是在跟作業系統OS溝通,我們要的目的???

應用程式>>>系統程式(OS+韌體)>>>硬體??? 是這樣說對嗎??

謝謝您~~~~~

3 個已更新項目:

一個電腦系統由

應用程式(低~高階所寫)>>作業系統程式(低~高階所寫)>>韌體(低~中階)>>>硬體 4大部分???!!!

4 個已更新項目:

to 阿明前輩

謝謝您的回答;

抱歉。。。。不過有些觀念我還是不太懂@@ ;

一個開發環境 ex: 微軟.net開發平台 ,DEV c++ 提供1000~萬的軟體元件 ;

.NET的軟體元件底層是作業系統的API加以包裝嗎??? ;

還是有些是,有些並非作業系統API???;

網友所創造的API,開發環境的API,作業系統API

底層"全部都是引用作業系統API建造上去的"???!!!!!還是不一定???;

這些各式各樣API是甚麼關係。。。?!;

謝謝~~~~~

9 個解答

評分
  • Chen
    Lv 6
    7 年前
    最佳解答

    Designing 32bit or above OS must consider 2 mode ( kernel mode & user mode ), and other 16bit OS like msdos doesn't.

    Only device driver in kernel mode can access device control, because kernel

    mode is critical, litttle mistakes make holistic system crashed down,

    User's application uses Open/Create/Iocontrol/read/write to control device by

    system call( int 2e for x64/x86 swi for ARM )

    application call CreateFile( "\device\name" ) user mode

    || kernel32.dll/ntdll

    int 2e

    ---------------------------------------------

    kernel mode ||

    device -> IDT-> device ISR->DPC-> APC -> user mode

    when device receive signal, interrupt controller (8259) inform cpu, cpu had layout IDT table before it.

    IDT table in kernel mode call device's ISR, ISR receives complete data insert device queue, DPC task get queue and send to user's call function

    IDT table can initial by C or ASM,

    I have experienced in coding OS of supercomputer(VAX, CDC CYBER) since I was 10 years old, Now I am good at database design( B*tree, Rtree, transaction process, parse SQL ) like ORACLE, compiler and linker design, virtual reality( 3D)and image processing, machining learing, data mining, face recognition, hand writting recognition, biometrics and bioinformatics ...etc. above mentioned knowledges learns process by myself.

    .

    2013-07-16 19:42:01 補充:

    any compiler can access assembly, but It maybe need modify compiler.and destory it compatible.

  • 6 年前

    ●九州 娛樂 網站 http://ts777.cc/

    ●●●運彩遊戲、真人遊戲、電子遊戲、對戰遊戲、對戰遊戲●●●

    ●新舊會員儲值就送500點

    ● 真人百家樂彩金等你拿

    ●線上影片直播、正妹圖、討論區免費註冊

    歡迎免費體驗交流試玩!

    ●九州 娛樂 網站 http://ts777.cc/

  • 6 年前

    ●九州 娛樂 網站 http://ts777.cc/

    ●●●運彩遊戲、真人遊戲、電子遊戲、對戰遊戲、對戰遊戲●●●

    ●新舊會員儲值就送500點

    ● 真人百家樂彩金等你拿

    ●線上影片直播、正妹圖、討論區免費註冊

    歡迎免費體驗交流試玩!

    ●九州 娛樂 網站 http://ts777.cc/

  • 匿名使用者
    6 年前

    我提供免費電腦問題諮詢:02-29405818

    我只要是~電腦維修~電腦重灌~電腦問題~修電腦~重灌win7~xp重灌~都是找他們

    他們到府服務非常方便!!

    希望能幫到你

    可以跟他們聯絡看看

    評價很高...你可以試試看!!^^

    電話:02-29405818

    或者加LINE~直接線上詢問也可以!

    ID:gmepc168

    希望能幫到你

    Yahoo服務加網址

    http://tw.serviceplus.yahoo.com/booth/seller/Y0193...

  • 您覺得這個回答如何?您可以登入為回答投票。
  • 匿名使用者
    7 年前

    →電腦筆電維修~電腦重灌~電腦組裝~重灌win7~xp重灌~

    →電腦中毒~電腦無法開機~電腦變慢~

    →筆電win8改win7~MAC改win7 or 雙系統

    ◎◎◎各式各樣電腦問題,問他們就對了◎◎◎

    →他們會很快解決你的問題 也可以免費諮詢喔!

    →北市可以到府收送喔!評價很高

    收費便宜●技術超好●修不好不收費

    有需要可以打電話詢問

    電話:02-29405818或者●加LINE~直接線上詢問

    ID:gmepc168

    希望能幫到你

    Yahoo服務加網址

    http://tw.serviceplus.yahoo.com/booth/seller/Y0193...

  • 阿明
    Lv 5
    7 年前

    任何一種視窗語言的編譯器,最底層就是API函數,也就是任何一種語言編譯器都可以呼叫API函數,只是有些程式語言沒資料,編譯器設計廠商太複雜,不想教你如何呼叫API,早期編譯器Borland C++ 好像是OWL 1.0,編譯器裡面的類別函數庫,就有利用API函數建立C++視窗類別庫資料,一般視窗C++編譯器是可以呼叫API函數,呼叫API函數時需把C++物件指標轉換API的視窗代碼,呼叫API函數需要傳入視窗的代碼及很多參數才可以進行呼叫,VB ,JAVA編譯器這些隱藏,你根本不知道如何取這些參數呼叫API

    2013-07-18 12:56:32 補充:

    補充一下

    你USB插入記憶卡時,這時電腦螢幕會顯示記憶卡小圖示,也就是USB插入記憶卡時,電腦才載入這一記憶卡驅動程式,同一個USB插座,你插入滑鼠或鍵盤,電腦會載入滑鼠或鍵盤驅動程式和USB連線, 電腦插入新硬體設備,電腦才動態載入這一設備驅動程式,每一電腦周邊硬體微軟都會有HID(硬體設備碼) ,寫驅動程式時,同時需寫硬體描述檔,把HID登記在作業系統,插入新硬體設備時,作業系統才知道插入什麼設備,才會載入這一驅動程式,Windows是一種保護模式即插即用驅動程式,開發驅動程式需使用微軟開發工具包(Driver Development Kit,簡稱DDK),不是一般組合或C語言編譯器

    2013-07-19 12:19:20 補充:

    補充一下

    視窗作業系統是一種多工多執行緒,電腦螢幕可同時執行多個應用程式,及顯示多個程式視窗界面。你寫的應用程式執行時,要顯示你的程式視窗界面,不是你的程式自己畫視窗界面直接就顯示,而是用API函數告訴作業系統,作業系統依據現在電腦螢幕其他執行的應用程式,依序呼叫畫視窗界面,要畫多個程式並行視窗界面,或多個程式重疊視窗界面,那一個程式最前面。你程式要關閉,不是你程式自己關閉,用API函數告訴作業系統程式要關閉,關閉程式後你視窗界面消失後,作業系統需要重畫桌面。

    視窗應用程式很多工作,都是用API告訴作業系統要做什麼,不是程式自己要做什麼,所以不管用什麼程式語言都需呼叫API和作業系統溝通

    2013-07-20 08:45:01 補充:

    視窗多工作業系統,視窗應用程式同時有多個在執行,多個應用程式共用滑鼠、鍵盤、電腦螢幕、列印機………. 大家共用當然需要透過作業系統,假如每個應用程式都直接和周邊硬體接觸、比如多個應用程式搶一滑鼠或鍵盤、 這樣不是天下大亂。

    視窗應用程式需要用物件導向程式語言、C語言是一種程序式的程式語言。

    2013-07-20 10:17:02 補充:

    補充一下

    單晶片8051及ARM的編譯器 Keil C 裡面有支援多工的即時作業系統 (RTOS) ,支援協調式多工,循環式多工,搶佔式多工,寫程式時依工作性質分成多個任務(函數),即時作業做會極快速切換各個任務(函數)執行,好像每一函數同時運行

    為什麼單晶片Keil C要支援即時作業系統,用傳統的組合語言或c語言寫程式很困難,較簡易的單晶片程式都想加入即時作業系統,視窗程式用C語言更困難,不要說困難C語言,就像Borland C++ OWL編譯器,難度較低這種優良正統C++視窗編譯器沒人使用,Borland公司都倒閉,你還想用c語言寫視窗程式

    2013-07-20 22:30:49 補充:

    假如你是用C語言寫視窗程式 (視窗圖形界面程式不是主控台應用程式)你就是用API寫程式,其他語言就是用把一堆 API 封裝起來,做成某一種視窗元件物件,讓你可以輕鬆使用元件物件,只要幾行程式碼能產生視窗元件 ,你用傳統純C語言需要幾百行程式碼 。

    2013-07-20 22:38:47 補充:

    補充一下

    初學者任何一種語言都可以學,對你都有幫助,多學以後你就會知道,

  • 7 年前

    0: C的開發宗旨就是整合組合語言 但只能是共通的部份

    1: 我們所使用的(各種高階語言)API,絕大都會呼叫作業系統提供的C API

    在其他非C語言中(它們本身可能就是C寫的) 可能也會提供C函式呼叫方法

    2: 組合語言不能硬體中斷 故C也不能

    3:大部份是 但"自己創造的API"沒規定一定要用作業系統提供的API

    4: 硬體控制最好是用作業系統提供的的API(但也可直用組合語言)

    "每個硬體都有各自"驅動程式+硬體...." 驅動程式+溝通問題是作業系統

    內部設計問題或廠商間的標準問題 沒有通則

    5:看您要哪種編譯結果....簡短說"基本上"是不同...

    其他非C語言也常使用 各自性質不同

  • 其威
    Lv 7
    7 年前

    kernel mode 跟 user mode 是多人多工作業系統要考慮的,跟 16bit/32bit/64bit 無關。

    msdos 是單人單工的系統,所以才不考慮這些,不是因為他是 16bit 系統。

  • 7 年前

    說來話長......

還有問題?馬上發問,尋求解答。