Linux内核学习(一):容易混淆的概念

1、操作系统与内核的区别:内核是操作系统的核心,操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,这些部分包括内黑、设备驱动程序、启动引导程序、命令行shell或者其他种类的用户界面、基本文件管理工具和系统工具。而系统这个词包含了操作系统和所有运行于它之上的应用程序。


2、熟记这张图,表示了Linux内核的一个架构,其中虚线框的的分界所表示的地址是PAGE_OFFSET(0xC0000000)。这里面设计到内存分配的问题。



3、内核开发与应用程序开发的区别:
(1)内核编程时不能访问C库。因为标准C库特别大,即使里面的各个函数执行效率高,但是内核往往永不到全部的标准函数,所以内核只是选取了自己需要的标准函数,写到单独的头文件中调用。
(2)内核编程必须使用GUN C。比如内联函数(inline)、likely与unlikely等等。
(3)内核编程缺乏像用户空间那样的内存保护机制。如果用户进程进行一次非法内存的访问,那么内核就会发现错误,并发出SIGSEGV信号(试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.)。但是如果内核进行了同样的错误操作将会导致oops(Linux内核在发生kernel panic时会打印出oops信息,把目前的寄存器状态、堆栈内容、以及完整的call trace都dump出来)。另外记住一点,内核中的内存没有分页机制,所以用一点少一点。
(4)内核编程对与浮点数运算比较困难。一句话,不要在内核中做浮点型运算了。
(5)内核只有一个很小的定长堆栈。内核栈大小一般是两页,也就时8KB.
(6)内核支持异步中断、抢占和SMP,因此必须注意同步与并发。这里就会讲到抢占性这个概念,以后会详细分析。
(7)内核的可移植性。Linux具有很强的可移植性,从Linux的分页机制就可以看出,linux采用了四级分页模式,为的就是适应不同的环境,32位系统、64位系统以及PAE(物理地址扩展)等等。

4、Linux到底是不是抢占性的操作系统?(容易混淆的一个概念)
ucos是抢占式内核。
所谓非抢占内核就是,当中断完成后,系统就调度原来被中断的任务运行,即使此时有优先级更高的任务,也要等原被中断的任务完成后,才能参与调度。抢占式与之相反。当中断完成后,调用了调度程序以选取最高优先级的任务,并执行之。
“Linux是抢占式操作系统。”这里是指Linux的进程调度是抢占式的--多用户操作系统中的进程调度必须是抢占式的。
“Linux是非抢占式内核。”,这里的“非抢占式内核”指的是当某个进程由用户态进入到内核态后(比如说,通过系统调用),不能被调度程序挂起,转而去执行别的进程,亦即不能被其它进程抢占,除非处于内核态的该进程自愿放弃cpu时间。这只是以前的说法,自从Linux2.6版本后,就是一个完全的抢占式的内核,其实Linux支不支持抢占式内
核得在编译内核时决定的,查看方法进入内核文件夹后执行:make menuconfig –>Kernel Features-->Preemption Model (Voluntary Kernel Preemption (Desktop)) --->Preemptible Kernel (Low-LatencyDesktop) (大家可以试试)。
也就是说Linux完全是抢占式操作系统,不管从什么角度讲。

5、僵死进程(zombie process)
这也是一个很重要的概念。首先必须了解一个概念:进程与线程。
线程是进程的最小单位,一个进程可以包含多个线程。目前的操作系统支持这个功能。
父进程创建了一个新的进程,称为子进程。子进程总有一天会完成自己的任务,会调用exit()终结掉子进程。但是这时候子进程并没有完完全全的死掉 ,只是不工作了而已,它的pid号、内存、占用的资源等等都没有被回收,什么时候回收呢?必须等到父进程进行wait4()系统调用检查到子进程的死亡,然后才通知回收。由于父进程由于种种原因一直没有调用这个系统调用或者父子之间沟通出了问题,导致子进程没有回收资源,“半死不活”的,于是这时候就成为了僵死进程。
解决的办法是将这些僵死进程挂到init进程名下,由init进程统一管理,该杀的杀。


(先到这里,后续补充)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值