歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux知識:什麼是內核

Linux知識:什麼是內核

日期:2017/2/28 16:08:53   编辑:Linux教程

一.總的來講,操作系統只要能實現以下兩點就可以了:

1.時間的假象和空間的假象

時間假象的作用是實現了多進程/多線程;空間假象的作用是實現了虛擬內存。無疑,這兩點是現代操作系統的基石。

2.和硬件接口以及和用戶態的接口

從硬件那裡接收信息,這個用中斷實現,和硬件互相讀寫,這個用基本IO實現;從用戶接收請求,這個用系統調用...向用戶發送信息,這個用信號...。無疑,這樣就在接口層次滿足了上層用戶和底層硬件的要求,無疑,UNIX在這一點上是成功的(信號,IPC,POSIX...)。

二.大內核和微內核

如果我們把操作系統內核在其生命周期的前期按照時間分割,我們把它分為源碼階段和二進制階段,大內核和微內核的區分是二進制階段的區分。我們都知道,Linux是大內核,然而為何大而不亂呢?實際上看看它的源碼就明白了,它的源碼組織非常好,核心文件不到100個,其它的都是驅動或者體系結構相關的代碼。畢竟,開發者知道,對於二進制文件,人是看不懂的,人所看的是源碼,將二進制文件分開,無疑會增加維護的復雜性,更何況,將問題控制在源碼階段就節省了很多調試時間。

三.設備驅動開發

1.閱讀datasheet,編寫IO、中斷例程

2.和操作系統內核接口,也就是插入內核最低端

3.和用戶態接口,也就是在最上端導出一個用戶接口,比如ioctl

4.編寫用戶態demo和工具進程,調用第3步的接口

5.試用,調試打包

6.總結,層次結構-從上到下:最終用戶-應用程序員-系統程序員-驅動程序員-硬件工程師

四.到底應不應該在內核中解決fork炸彈

fork炸彈臭名昭著,一堆看似亂碼的字符就能耗盡你的cpu:.(){.|.&};.。如果想在內核解決它,那是很簡單的,那就是控制task_struct的層數,我們知道Linux進程是分層樹形組織的,如果限制層數最多為5層,那麼該炸彈最多也就是炸五次就無法發揮作用了,然而這卻不是好方法,因為這會損害那些正好需要6層或以上的正常程序的利益。其實還有很多解決辦法:1.利用cpu組調度,限制它們可以使用的資源;2.修改oom killer的核心算法,優先砍掉那些過於長,然而卻很瘦的樹枝,這也符合園藝工人的操作方式,因為這種枝丫會帶走過多的養分!

Copyright © Linux教程網 All Rights Reserved