一、Linux内核相对于传统的UNIX内核的比較:

(1):Linux支持动态内核模块。

虽然Linux内核也是总体式结构,但是同意在须要的时候动态哦卸除(rmmod xxx)和载入内核模块(insmod  xxx.ko).

(2):Linux支持对称多处理(SMP)机制,虽然很多UNIX的变体也支持SMP。可是传统的UNIX并不支持这样的机制。

(3):Linux内核能够抢占(preemptive)。在Linux 2.4以及曾经的版本号都是不支持内核抢占的。在Linux 2.6以及以后就支持了。

(4):Linux内核不区分线程和进程的。对于内核,全部的进程都是一样的。仅仅只是当中的一些资源共享而已。

二、单内核和微内核的差别

单体内核:大内核。将OS的所有功能都做进内核中,包含调度、文件系统、网络、设备驱动器、存储管理。

比方设备驱动管理、资源分配、进程间通信、进程间切换管理、文件系统、存储管理、网络等。

单体内核是指在一大块代码中实际包含了所有操作系统功能,并作为一个单一进程执行。具有唯一地址空间。

大部分UNIX(包含Linxu)系统都採用的单体内核。

微内核:微内核与单体内核不同。微内核仅仅是将OS中最核心的功能增加内核,包含IPC通信、地址空间分配和主要的调度,这些东西处在内核态执行。如:WINCE系统。

而其它功能如设备驱动、文件系统、存储管理、网络等作为一个个处于用户态的进程而向外提供某种服务来实现。并且这些处于用户态的进程能够针对某些特定的应用和环境需求进行定制。有时,也称这些进程为server。

三、Linux内核版本号

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2h1bl8xOTU5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

四、Linux内核开发的特点

(1):内核编程时不能訪问C库。可是大部分C库函数在内核中都已经实现了。

(2):内核编程时必须使用GNU C。

(3):内核编程时缺乏像使用用户空间那样的保护机制

(4):内核编程时浮点数非常难使用

(5):内核仅仅有一个非常小的定长堆栈;内核栈非常小,长度固定,32位的内核栈是8KB,而64位的是16KB。

(6):因为内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发

(7):要注意可移植性的重要性

《Linux内核设计与实现》笔记-1-linux内核简单介绍的更多相关文章

  1. Linux内核设计与实现笔记_1_基本概念

    Linux内核设计与实现笔记_1_基本概念 操作系统 系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括: 内核, ...

  2. 算法笔记_071:SPFA算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...

  3. 进程_Linux内核设计与实现笔记

    进程 进程是处于执行期的程序以及相关资源的总称,是正在执行的代码的实时结果. 进程部分位于Kernel的PM层.进程是Unix操作系统的抽象概念中最基本的一种,操作系统的存在就是为了运行用户程序,所以 ...

  4. 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍

    **************************************************************************************************** ...

  5. linux内核设计与实现笔记 进程调度

    转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html

  6. 把握linux内核设计思想(七):内核定时器和定时运行

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途]         前面章节说到了把工作推后到除如今以外的时间运行的机制是下半部机 ...

  7. Linux内核设计第二周学习总结 完成一个简单的时间片轮转多道程序内核代码

    陈巧然 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.使用实验楼的虚拟机 ...

  8. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  9. tcp ip协议笔记(1)——简单介绍

    前言 本人记性不佳,看书健忘,以此笔记来记录看书后自己所知所想,已达到加深对tcp ip的理解.本笔记不过我看完书后自己所写的总结,权当是书后复习. 一.为什么会有tcp ip协议        ...

  10. 项目管理---git----快速使用git笔记(一)------git的简单介绍

    最近svn代码管理服务器崩溃了,切换到git来运作. 经过几天的使用,感觉很不错. 尤其是代码合并到正式版本之前 可以对代码进行 code review. 这样能很好的保证团队的代码质量和一些重复代码 ...

随机推荐

  1. Eclipse中快速 打出 main方法的签名

    有时,我们创建一个空白类,需要打出main方法 public static void main(String [] args){ } 在Eclipse先敲main字符,然后按住ALT+/,再按回车即可 ...

  2. putty对Linux上传下载文件或文件夹

    putty是一个开源软件,目前为止最新版本为0.70.对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令. (1).pscp pscp在命令提示符中使用,只要putty ...

  3. CentOS7终端如何支持中文显示

    注意,是终端,而不是控制台.目前我没找到有控制台显示中文的(fbterm好像可以,有时间试试),如果大家知道,请务必告诉我 (1).查看系统是否安装中文包 [xf@xuexi ~]$ locale - ...

  4. [USACO 2017 Dec Gold] Tutorial

    Link: USACO 2017 Dec Gold 传送门 A: 为了保证复杂度明显是从终结点往回退 结果一开始全在想优化建边$dfs$……其实可以不用建边直接$multiset$找可行边跑$bfs$ ...

  5. redis源码解析之内存管理

    zmalloc.h的内容如下: void *zmalloc(size_t size); void *zcalloc(size_t size); void *zrealloc(void *ptr, si ...

  6. JavaScript之String类型

    这里先总结一下RegExp类型的两个主要方法: (1)exec():主要用于捕获组.接受一个参数,这个参数是主要应用模式的字符串,然后返回包含第一个匹配项信息的数组. (2)test():主要用于目标 ...

  7. [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

      hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...

  8. PHP温故知新(二)

    2.安装和配置 安装这里要注意两点,是之前没有在意的: 1.将php.ini文件中的 cgi.fix_pathinfo设置为0 设置为0是为了解决一个安全漏洞,假如我们现在有这样一个URL:http: ...

  9. mysql的锁定问题

    1.锁定这个问题,是mysql自动产生的,不用程序猿自己加锁 答:默认情况下,档执行insert/update操作时,mysql会自动进行表锁定.从而此时读取操作只能等待. 2.mysql, 需要添加 ...

  10. TQuery

    TQuery uses syndb 查询 function Tfmain.query(const sql: string): RawUTF8;var q: TQuery;begin q := TQue ...