《Linux内核设计与实现》笔记-1-linux内核简单介绍
一、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内核简单介绍的更多相关文章
- Linux内核设计与实现笔记_1_基本概念
		Linux内核设计与实现笔记_1_基本概念 操作系统 系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括: 内核, ... 
- 算法笔记_071:SPFA算法简单介绍(Java)
		目录 1 问题描述 2 解决方案 2.1 具体编码 1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ... 
- 进程_Linux内核设计与实现笔记
		进程 进程是处于执行期的程序以及相关资源的总称,是正在执行的代码的实时结果. 进程部分位于Kernel的PM层.进程是Unix操作系统的抽象概念中最基本的一种,操作系统的存在就是为了运行用户程序,所以 ... 
- 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍
		**************************************************************************************************** ... 
- linux内核设计与实现笔记    进程调度
		转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html 
- 把握linux内核设计思想(七):内核定时器和定时运行
		[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 前面章节说到了把工作推后到除如今以外的时间运行的机制是下半部机 ... 
- Linux内核设计第二周学习总结 完成一个简单的时间片轮转多道程序内核代码
		陈巧然 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.使用实验楼的虚拟机 ... 
- 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令
		Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ... 
- tcp ip协议笔记(1)——简单介绍
		前言 本人记性不佳,看书健忘,以此笔记来记录看书后自己所知所想,已达到加深对tcp ip的理解.本笔记不过我看完书后自己所写的总结,权当是书后复习. 一.为什么会有tcp ip协议 ... 
- 项目管理---git----快速使用git笔记(一)------git的简单介绍
		最近svn代码管理服务器崩溃了,切换到git来运作. 经过几天的使用,感觉很不错. 尤其是代码合并到正式版本之前 可以对代码进行 code review. 这样能很好的保证团队的代码质量和一些重复代码 ... 
随机推荐
- 【BZOJ 1027】 (凸包+floyd求最小环)
			[题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ... 
- [Codeforces 1053C] Putting Boxes Together
			Link: Codeforces 1053C 传送门 Solution: 先推出一个结论: 最后必有一个点不动且其为权值上最中间的一个点 证明用反证证出如果不在中间的点必有一段能用代价少的替代多的 这 ... 
- [CF843D]Dynamic Shortest Path
			[CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ... 
- static_cast, dynamic_cast, reinterpret_cast, const_cast的区别
			static_cast最像C风格的强制转换,很多时候都需要程序员自身去判断转换是否安全.但是相对C风格的强制转换,在无关类的类指针之间转换上,有安全性的提升. dynamic_cast是运行时的转换吧 ... 
- Problem D: 零起点学算法94——输出矩阵
			#include<stdio.h> int main() { ][]; while(scanf("%d %d",&n,&m)!=EOF) { ; ;i& ... 
- Problem F: 零起点学算法85——数组中插入一个数
			#include<stdio.h> int main() { ],b[]; while(scanf("%d",&n)!=EOF) { ;i<n;i++) ... 
- ThreadPoolExecutor(线程池)源码分析
			1. 常量和变量 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); // 高3位为线程池的运行状态,低29 ... 
- ubuntu12.04国内软件源
			手动修改方式: 163源 deb http://mirrors.163.com/ubuntu/ precise main restricted deb-src http://mirrors.163.c ... 
- Lua-简洁、轻量、可扩展的脚本语言
			转自:http://rmingwang.com/The-Programming-Language-Lua.html 1. 一.Lua安装及常用库的安装 2. 1.1 Ubuntu $ sudo apt ... 
- zxing生成二维码和读取二维码
			当然,首先要导入zxing的jar包. 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.Path ... 
