kernel learning1

                                                                                                        笔记1

一:内核介绍:

  内核由负责中断响应的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通讯等系统鼓舞程序共同组成。内核独立于普通应用程序,处于系统态,有受保护的内存空间和访问硬件设备的所有权限,这种系统态和被保护的空间,统称内核空间。

1 用户态与内核态

   当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。

  当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

(另外说明:在进程运行在用户态时,CPU堆栈指针寄存器指向的是用户堆栈地址,也叫用户堆栈,在内核态的时候,叫内存堆栈,在两态切换时,内核栈保存中断现场、保存操作系统子程序间相互调用的参数、返回值等切换回来时再取出,用户栈保存用户进程间的参数,以及返回值

2.内核分类

单内核和微内核:

    单内核:绝大部分unix系统设计为单内核,因为单内核讲内核以单个静态二进制文件放在磁盘,为同一地址空间,所有运行过程直接调用函数,不用考虑通讯,这与用户程序一样,简单性能高(linux也是)

微内核:将内核分为多个块,存储在各自的地址空间,每个块也叫过程,叫一个过程,也叫一个服务器,只有特权服务器在特权模式下运行,其他都在用户空间,但是IPC(进程间通讯)就会是一个问题,IPC开销多余函数调用。(windows和Mac就是基于微内核,不过在越来越像单内核)

3.Linux和Unix的内核区别

    API仿Unix不说了,除此

    3.1、Linux支持动态加载内核,虽然是单内核,但也可以动态加载卸除部分内核代码

    3.2、Linux支持对称多处理机制(SMP),传统Unix不支持,虽然少部分支持

(PS:SMP对称多处理参考对称多处理器系统-SMP,j讲的很清楚了)

    3.3、Linux是抢占式内核

    3.4Linux内核里线程与进程是一样的,只是资源量不同



猜你喜欢

转载自blog.csdn.net/amous_x/article/details/79929572