本文目錄一覽:
- 1、用C語言可以寫操作系統嗎?
- 2、為什麼C語言比較適合編寫系統軟件?C語言是哪位計算機專家設計出來的?最早用C語言寫的操作系統是哪種
- 3、C語言內存重寫和內存遺漏是什麼意思?什麼情況下會發生呢?
- 4、C語言誕生的時候,是在什麼操作系統下運行的?
用C語言可以寫操作系統嗎?
C語言當然是可以寫操作系統的,但是操作系統的編寫一般都不僅僅只是用C語言編寫的。
寫操作系統需要編程語言提供以下幾個特徵:
1、跨平台,不能是只在某個平台下編譯(VB就不行);
2、必須是編譯型語言(PHP就不行),或者有一個非常高效的解釋器;
3、必須有方便的操作硬件的功能,容易嵌入彙編(Java就不行);
4、兼容性要好,最好不同編譯器編譯的符號要基本相同,容易鏈接(C++不行,如果放棄Class的話C++基本可以);
5、編譯器本身最好是由該語言自己完成的(大部分語言的編譯器都是用C/C++寫的);
6、開發者可以很方便的擴展、改造、或者使用第三方的運行庫(大部分語言的庫都無法修改);
7、開發者眾多(小眾語言就不行);
8、該語言開發操作系統的資料要足夠完善。
所以總結下來,C語言是首選。
為什麼C語言比較適合編寫系統軟件?C語言是哪位計算機專家設計出來的?最早用C語言寫的操作系統是哪種
簡單來說,C語言寫操作系統,是因為它快。最快是計算機底層機器碼,然後是彙編語言,之後就是C了。其它的一些特性,如直接操作內存等等就不多說了。
C語言由美國貝爾實驗室開發的,最早開放出來就是為了重寫Unix系統的
C語言內存重寫和內存遺漏是什麼意思?什麼情況下會發生呢?
沒怎麼聽過這個概念,但是我覺得你說的應該是內存溢出和內存泄露這兩個問題
內存溢出也就是定義的變量長度不足,內存不夠儲存數據導致數據超出界限,這通常是由於數據長度判斷不嚴格造成的。好比只定義了一個能裝5個蘋果的盒子卻要裝8個蘋果,剩下的3個只能放到其他蘋果的位置了,其他的蘋果就等於是被「重寫」了
例子,定義了int a[2]變量,再定義int *p = a,當用p[2] = 0寫入數據時,就發生了內存溢出。由於c語言只檢查指針是否有效(能讀寫),這就可能導致指針被賦予一個特殊的值,比如指向程序代碼部分,這時候往指針中寫入的數據就有可能覆蓋原本的命令,而且有可能被程序或者系統運行。還有一種情況就是錯誤的指針可能意外的修改了其他變量的值,這個通常在結構體變量中發生。
一句話就是溢出的內存
內存泄露就是給指針分配了內存卻並未做回收,導致系統一直認為你正在使用這塊內存,當不再有指針指向這塊內存,也就是無法正常手動回收時,就造成了內存泄露。內存泄露會導致系統可用內存越來越少,直到再無內存可供分配或者程序被終止。由於系統自身代碼缺陷而存在的內存泄露,由於除非關機重啟,系統一直在運行,會導致泄露的內存一直得不到回收,最終內存耗盡系統崩潰死機
C語言誕生的時候,是在什麼操作系統下運行的?
C語言誕生於UNIX操作系統,但C語言誕生後,又重寫了UNIX系統,現在通行的UNIX版本絕大部分代碼都是C語言編寫的,這使得系統易讀,易修改,易移植。作為一個多用戶,多任務的分時操作系統。UNIX的系統結構可分為三部分:操作系統內核(是UNIX系統核心管理和控制中心,在系統啟動或常駐內存),系統調用(供程序開發者開發應用程序時調用系統組件,包括進程管理,文件管理,設備狀態等),應用程序(包括各種開發工具,編譯器,網絡通訊處理程序等,所有應用程序都在Shell的管理和控制下為用戶服務)。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/151625.html