第一章 Linux內核簡介
1. Linux是類Unix系統,但他不是Unix。
儘管Linux借鑑了Unix的許多設計並且實現了Unix的API(由Posix標準和其他Single Unix Specification定義的),但Linux沒有像其他Unix變種那樣直接使用Unix的源代碼。
2. Linux系統的基礎是內核、C庫、工具集和系統的基本工具,如登錄程序和Shell。
3. 操作系統是指在整個系統中負責完成最基本功能和系統管理的那些部分。這些部分應該包括內核、設備驅動程序、啓動引導程序、命令行Shell或者其他種類的用戶界面、基本的文件管理工具和系統工具。
4. 內核空間和用戶空間
對於提供保護機制的現代系統來說,內核獨立於普通應用程序,它一般處於系統態,擁有受保護的內存空間和訪問硬件設備的所有權限。這種系統態和被保護起來的內存空間,統稱爲內核空間。
與此相對,應用程序在用戶空間執行。它們只能看到允許它們使用的部分系統資源,並且只能使用某些特定的系統功能,不能直接訪問硬件,也不能訪問內核劃給別人的內存範圍,還有其他的一些使用限制。
內核運行的時候,系統以內核態進入內核空間執行。當執行普通用戶程序時,系統以用戶態進入用戶空間執行。
5. 在系統中運行的應用程序通過系統調用來與內核通信。
當一個應用程序執行一條系統調用,就說內核正在代其執行。進一步,這時,應用程序被稱爲通過系統調用在內核空間執行,而內核被稱爲運行與進程上下文中。

6. 在Linux中,中斷服務程序不在進程上下文執行,而在一個與所有進程都無關的、專門的中斷上下文中運行。原因是:爲了保證中斷服務程序能夠在第一時間響應和處理中斷請求,然後快速地退出。
7. 每個處理器在任何指定的時間點上的活動:
運行於用戶空間,執行用戶進程
運行於內核空間,執行進程上下文,代表某個特定進程執行
運行於內核空間,處於中斷上下文,與任何進程無關,處理某個特定的終端
8. 當CPU空閒時,內核就運行一個空進程,處於進程殺下文,但運行於內核空間。
關於IDLE進程的知識,參考網摘:分析linux内核的idle的知识
9. Linux是一個單內核,即Linux內核運行在單獨的內核地址空間上。
不過,Linux汲取了微內核的精華,如模塊化設計、搶佔式內核、支持內核線程以及動態裝載內核模塊的能力。此外,Linux還避其微內核設計上性能損失的缺陷,讓所有的事情都運行在內核態,直接調用函數,無需消息傳遞。
10. Linux內核與傳統的Unix系統之間的差異:
Linux支持動態加載內核模塊
Linux支持對稱多處理(SMP)機制
Linux內核可以搶佔(preemptive)。Linux內核具有允許在內核運行的任務優先執行的能力。
Linux內核不區分線程和其他的一般進程。對於Linux內核來說,所有的進程都一樣——只不過是其中的一些共享資源而已。
Linux提供具有設備類的面向對象的設備模型、熱插拔事件,以及用戶空間的設備文件系統(sysfs)。
11. Linux內核版本

其中,從版本號如果是偶數,那麼該內核就是穩定版,否則就是開發版。
完
第一章 Linux內核簡介的更多相关文章
- 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
原文网址:http://tc.chinawin.net/it/os/article-2512b.html 一 概述 Linux內核中gpio是最簡單,最常用的資源(和interrupt ,dma,ti ...
- Linux內核中常用的一些延時方法
Linux內核中常用的一些延時方法 這些方法在以下路徑下定義:kernel/include/linux/delay.h #ifndef _LINUX_DELAY_H #define _LINUX_DE ...
- CentOS 7.4 初次手记:第一章 Linux守护进程(daemon)
第一节 init & sysvinit 6 I sysvinit 运行顺序... 6 II Sysvinit和系统关闭... 7 III Sysvinit 的小结... 7 IV 运行级别.. ...
- Linux内核分析——第一章 Linux内核简介
第一章 Linux内核简介 一.Unix的历史 1.Unix系统成为一个强大.健壮和稳定的操作系统的根本原因: (1)简洁 (2)在Unix中,很多东西都被当做文件对待.这种抽象使对数据和对设备的 ...
- 核心系统命令实战 第一章Linux命令行简介
第一章Linux命令行简介 1.1 Linux命令行概述 1.1.1 Linux 命令行的开启和退出 开启:登陆账号密码进入系统 退出:exit/logout 快捷键:Ctrl+d 1.1.2 Li ...
- CVE-2016-8655,af_packet Linux 內核通殺提權漏洞淺析
簡單寫一下思路 這個東西需要namespace方面的支援, 首先open socket , 一連串路徑(packet_set_ring()->init_prb_bdqc()->prb_se ...
- linux內核輸出soft lockup
創建的內核線程長期佔用cpu,一直內核認為線程soft lockup,如無法獲取自旋鎖等:因此線程可適度調用schdule(),以進行進程的調度:因為kwatchdog的執行級別低,一直得不到執行 [ ...
- 【菜鸟学习Linux】-第一章-Linux环境搭建-安装VMware虚拟机
本人菜鸟一个,刚毕业才上班2个月,现在用到Linux部署项目,这才开始学习Linux,以下是我在安装Linxu系统是遇到的一些问题,希望能给广大菜鸟们在学习的道路上提供帮助和指导,废话不多说!开工! ...
- 第一章 Linux系统入门
设定目标,寻求方法,勤奋努力,坚持不懈. ------你们知道了,而我们做到了.------ 世界上第一台计算机:ENIAC(埃尼亚克).1946-2 宾夕法尼亚大学. 约翰·冯·诺依曼体系 电脑的组 ...
随机推荐
- TortoiseSVN 合并操作简明教程
下列步骤展示了如何将分支A中的修改合并到分支B. 1.在分支B的本地副本目录中选择"合并(Merge)". 2.选择“合并一个版本范围(Merge a range of revis ...
- thinkphp 缓存数据
thinkphp 中内置了缓存操作 3.1版本的数据缓存方法是cache 基本用法: S(array('type'=>'xcache','expire'=>60)); 缓存初始化 缓存初始 ...
- Kafka设计解析(二)- Kafka High Availability (上)
本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/04/24/KafkaColumn2 摘要 Kafka在0.8以前的版本中,并不提供High Av ...
- php与js中函数参数的默认值设置
php函数参数默认值设置: <?phpfunction test($val=3){ echo $val."<br/>";}test(11);test();?& ...
- DAO实现查询
package DB3; import java.sql.*; public class DB { private static String driver="com.microsoft.s ...
- USACO翻译:USACO 2012 JAN三题(1)
USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...
- HTML Help WorkShop 创作、调用方法和技巧
一.在CHM 文件中所用到的弹出式菜单: 二.在HTML Help WorkShop 中不用显示的样式 (1).从右到右阅读顺序. (2).对话框 (3).滚动条在左边 (4).仅展开单个标题 ...
- wamp环境 安装memcache 扩展
这两天在研究tp的memcached缓存 总是遇到坑 在网上找了很多教程看终于弄出来了现在拿出来分享 首先安装memcached下载memcache压缩包 使用cmd以管理员命令去安装 E:\wamp ...
- 关于IoCallDriver使用的疑惑
#pragma PAGEDCODE NTSTATUS HelloDDKRead(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) { KdPrint(("Dr ...
- Key/Value之王Memcached初探:一、掀起Memcached的盖头来
一.Memcached是何方神圣? 在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的HttpRuntim ...