前面写的字仅限于之前看的,没有输出过程,忘得也快。现在我想尝试这样整理出来后输出,会不会更好?.一直以来,我都是在随意的研究Linux内核,没有深入的学习,但是以后可能会经常用到,不得不建立自己的知识体系。我希望我能记录更多。内核的定义内核是操作系统的核心。它由负责响应中断的中断服务程序、调度器(管理多个进程共享处理器时间)、进程地址空间的内存管理程序以及网络和进程间通信等系统服务程序组成。作品。在系统状态下,它拥有受保护的内存空间和访问硬件设备的所有权限。即内核空间。用户空间只能以进程的角度来看,只能看到允许调用的部分系统资源,以及自己的内存空间。Linux内核介绍Linux继承了Unix,比如通用的API接口(Posix),但并不完全基于特定的Unix。不同的是Linux充分吸收了微内核的概念(服务模块化管理、抢占式内核、支持内核线程、动态加载内核模块的能力)。inmod、rmmod、微内核的定义,其实老师在学校就强调过,真正的微内核指的是只保留必要的服务,不能从内核中去掉的内核,比如调度服务,中断服务。其他服务包括fs、驱动模块可以从内核中移除。微内核设计的重要目的之一是安全性。因为我们很容易知道,很多bug和攻击面都来自于内核所承载的模块服务,进而导致安全漏洞和整个系统的崩溃。但是微内核的缺点也很明显。因为各个服务在模块化加载后运行在不同的地址空间,无法直接进行函数调用,需要使用IPC(进程间通信),需要进行上下文切换和不必要的开销。因此,Linux仍然是一个单一的内核,所有的服务模块都运行在一个地址空间中,可以直接调用函数。实用第一。Linux支持对称多处理机制SMP。Preemptive抢占式内核。允许对内核中运行的任务进行优先排序的能力。大多数其他Unix不支持抢占。Linux内核一般不区分线程和进程:所有进程都是一样的,只是其中一些进程共享资源。Linux提供了面向对象的设备模型,包括设备类、热插拔事件,用户空间设备文件系统sysfs忽略了过时的Unix标准和不必要的功能。处理器在任何时间点的活动可以分为:运行在用户空间,执行用户进程,运行在内核空间,进程上下文,代表某个系统调用。运行在内核空间,在中断上下文中,与任何进程无关,处于特定的中断中。陷入内核态系统调用,通过调用库让内核完成不同的任务,但通常内核调用只是库调用的一个步骤。printf(),提供数据缓存和格式化操作,调用write()系统调用只是他的动作之一。但是open()等是一一对应的。strcpy()不使用系统调用。通过系统调用进入内核态,我们称之为内核代为执行,内核运行在进程的上下文中。中断服务中断通常由来自硬件设备的中断表示。内核通过中断号找到中断服务程序,调用服务程序处理中断,运行在中断上下文中。确保中断服务能够在第一时间处理并退出。
