Linux 内核 (1) —— 绪论

  • 基于 Linux kernel 2.6.11 的记录

    基本概念

      1、硬件为CPU引入了至少两种不同的执行模式:用户程序的非特权模式和内核的特权模式。分别成为用户态(User Mode) 和 内核态(Kernel Mode)

      2、一个进程可以定义为:运行程序的”执行上下文“

      3、硬链接有两方面的限制: 

          a : 不允许用户给目录创建硬链接。因为这可能把目录数变为环形图,从而就不可能通过名字定位一个文件

          b : 只有在同一文件系统中的文件之间才能创建链接。这带来比较大的限制,因为现代Unix系统可能包含了多种文件系统,这些文件系统位于不同的磁盘和 / 或分区,用户也许无法知道它们之间的物理划分

        因此,引入了软链接 (soft link,也称符号链接(symbolic link))

       4、fd = open(path,flag,mode)

     这个系统调用创建一个”打开文件“对象,并返回文件描述符的标识符

       5、CPU 既可以运行在用户态下,也可以运行在内核态下。进程是动态的尸体,在系统内通常只有有限的生存期。创建、撤销及同步现有进程的任务都委托给内核中的一组例程来完成。内核本身并不是一个进程,而是进程的管理者。

       6、除用户进程之外,Unix 系统还包括几个所谓内核线程(kernel thread)的特权进程(被赋予特殊权限的进程),它们具有以下特点:

        a:它们以内核态运行在内核地址空间

       b : 它们不与用户直接交互,因此不需要终端设备

       c : 它们通常在系统启动时创建,然后一直处于活跃状态直到系统关闭

    7、外围设备向CPU 发出一个中断(interrypt)信号以通知一个事件的发生。每个中断信号都是由内核中的中断处理程序(interrupt handler)来处理的。因为外围设备与CPU异步操作,因此,中断在不可预知的时间发生.

   8、为了让内核管理进程,每个进程由一个进程描述符(process descriptor)表示,这个描述符包含有关进程当前状态的信息

   9、所有 Unix 内核都是可重入的 (reentrant) 

  10、Linux 支持 mmap()系统调用,该系统调用允许存放在块设备上的文件或信息的一部分映射到进程给你的部分地址空间。内存映射为正常的读写传送数据方式提供了另一种选择。如果同一文件由几个进程共享,那么共享它的每个进程地址空间都包含有它的内存映射。

  11、同步广泛使用的一种机制是信号量(semaphore),它在单处理器系统和多处理器系统上都有效。信号量仅仅是与一个数据结构相关的计数器。所有内核线程在试图访问这个数据结构之前,都要检查这个信号量。可以把每个信号量看成一个对象,其组成如下:

  a:一个整数变量

  b:一个等待进程的链表

 c:两个原子方法 : down()  和 up()

 down()  方法对信号量的值减1,如果这个新值小于0,该方法就把正在运行的进程加入到这个信号量链表,然后阻塞该进程(即调用调度程序).up() 方法对信号量的值加1,如果这个新值大于或等于0,则激活这个信号量链表中的一个或多个进程。

每个要保护的数据结构都有它自己的信号量,其初始值为1.当内核控制路径希望访问这个数据结构时,它在相应的信号量上执行 down() 方法,如果信号量的当前值不是负数,则允许访问这个数据结构,否则,把执行内核控制路径的进程加入到这个信号量的链表并阻塞该进程。当另一个进程在那个信号量上执行up()方法时,允许信号量链表上的一个进程继续执行。

  12、在多处理器系统上,信号量并不总是解决问题同步的最佳方案。还有自旋锁(spin lock),当然,自旋锁在单处理器环境下是无效的

  13、信号量、消息队列及共享内存,被统称为 System V IPC.

  14、进程、进程间通信以及Linux 相关内存管理是一个很大的话题,可以着重了解。

 

 最近开通了公众号,文章会同步到这里,欢迎一起探讨    

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值