zoukankan      html  css  js  c++  java
  • 【深入理解Linux内核】《第一章 绪论》笔记

    1.商用Unix操作系统包括:

       - AT&T公司开发的(System V Release 4) SVR4、

       - 加州伯克利分校发布的4.4BSD

       - Dec公司(现属于HP)的Digital Unix

       - IBM公司的AIX

       - HP公司的HP-UX

       - Sun公司的Solaris   - Apple公司的Mac OS X

    所有商业版本都是SVR4或4.4BSD的变体,并且都趋向于遵循某些通用标准:如IEEE的POSIX(Portable Operating Systems based on Unix)和X/Open的CAE(Common Application Environment)。

    2.除了Linux外,还有一些其他的类Unix也是开放源码的,如FreeBSD,NetBSD, OpenBSD.

    3.Linux可以运行的平台,处x86外,还有HP的Alpha,Intel的Itanium,AMD的AMD64,Power PC以及IBM的zSeries.

    4.用户态和内核态:

    当一个应用程序在用户态下执行时,它不能直接访问内核数据结构或内核的程序。然而,当应用程序在内核态下运行时,这些限制不再有效。有以下几种方式激活内核例程:

    • 进程调用系统调用。
    • 正在执行进程的CPU发出一个异常(exception),内核代表产生异常的进程处理异常。
    • 中断信号
    • 内核线程被执行。

    5.当内核暂停一个进程的执行时,就把几个相关处理器寄存器的内容保存在进程描述符中。

    • 程序计数器(PC)和栈指针(SP)寄存器
    • 通用寄存器
    • 浮点寄存器
    • 包含CPU状态信息的处理器控制寄存器(处理器状态字,Processor Status Word)
    • 用来跟踪进程对RAM访问的内存管理寄存器。

    6.可重入内核:如果一个硬件中断发生,可重入内核能挂起当前正在执行的进程,即使这个进程处于内核态。

    提供可重入的一种方式是编写函数,以便这些函数只能修改局部变量,而不能改变全局数据结构,这样的函数叫可重入函数。但是可重入内核不仅仅局限于这样的可重入函数,可重入内核可以包含非重入函数,并且利用锁机制保证一次只有一个进程执行一个非重入函数。

    我的理解:所谓可重入,指的就是在内核态执行了一半,被打断,完了又可以继续执行。

    7.单块结构内核和微内核

    大部分Unix内核是单块结构:每一个内核层都被集成到整个内核程序中,并代表当前进程在内核态下运行。

    相反,微内核操作系统只需要内核有一个很小的函数集,通常包括几个同步原语、一个简单的调度程序和进程间通信机制。运行在微内核之上的几个系统进程实现从前操作系统级实现的功能,如内存分配程序、设备驱动程序、系统调用处理程序等等。

     8.进程地址空间

    每个进程运行在他的私有地址空间。在用户态下运行的进程涉及到私有栈、数据库和代码区。当在内核态运行时,进程访问内核的数据库和代码区,但是用另外的私有栈。因为内核是可重入的,因此几个内核控制路径(每个都与不用的进程相关)可以轮流执行。在这种情况下,每个内核控制路径都引用它自己的私有内核栈。

    如果用一个程序(比如说编辑程序)有几个用户同时使用,则这个程序只被装入内存一次,其指令由所有需要他的用户共享。当然,其数据不被共享,因为每个用户将有独立的数据。这种共享的地址空间由内核自动完成以节省内存。

    9.自旋锁

    自旋锁与信号量非常相似,但没有进程链表;当一个进程发现锁被另一个进程锁着时,它就不停地“旋转”,执行一个紧凑的循环指令直到锁打开。

  • 相关阅读:
    什么是二进制补码
    第四章 VB程序的控制结构
    第三章 VB的程序设计基础
    C#學習基礎方法
    C#學習基礎繼承
    C#學習基礎變量和常量
    C#學習基礎域和屬性
    第八章 VB中ActiveX控件的使用
    写给WEB2.0的站长 不仅仅是泼冷水(转)
    常见错误和难点分析
  • 原文地址:https://www.cnblogs.com/wisehead/p/3813238.html
Copyright © 2011-2022 走看看