深入理解linux内核(四) 绪论之UNIX系统概述

进程/内核模式:
       标准的unix系统cpu只运行在内核态或用户态
       内核本身不是进程,而是进程管理者
       进程进入内核态的几种方法:
               1.系统调用
               2.异常信号处理(包括中断处理)
               3.直接运行内核线程
进程实现:
       每个进程由进程描述符表示
       进程描述符包含的几个主要寄存器:
               1.PC(程序计数器),SP(栈指针寄存器)
               2.通用寄存器
               3.浮点寄存器
               4.包含CPU状态信息的处理器控制寄存器
               5.用来跟踪进程对RAM访问的内存管理寄存器
       当CPU决定恢复执行某一个进程时,它用进程描述符中合适的字段来装载CPU寄存器,以为程序计数器PC中存放的值指向下一条要执行的指令。
可重入内核:
       可重入函数,只能改变局部变量,不能改变全局变量。
       可重入内核可以包含不可重入函数,利用锁或其他机制保证一次只有一个进程访问这个函数
       内核控制路径:表示内核执行系统调用,异常或中断所执行的指令序列。
       内核控制路径可以正常顺序被执行或者交错被执行。
进程地址空间:
       每个进程在运行时都有自己的私有地址空间,进程在用户态和内核态使用的私有栈不同。
同步和临界区:
       防止多个进程在竞争资源时发生死锁。
       临界区是这样一段代码,进入这段代码的进程必须完成,之后另一个进程才能进入。
非抢占式内核:
       比较安全,但是在多处理器上是低效的。
       如果内核支持抢占,在进入临界区之前关闭抢占,离开时开打。
禁止中断:
       进入临界区,关闭中断,离开时再打开。
信号量:
       组成:
              1.一个整数变量
              2.一个等待进程链表
              3.两个原子方法down() up()
       每次访问数据结构时执行down方法对信号量的值减一当发现值小于0时则把该进程加入信号链表中然后阻塞该进程。
执行up方法对信号量的值加一当发现值大于等于0时则激活信号链表中的一个或多个进程。
自旋锁:
       如果访问数据结构时间比较短,使用信号量比较低效,这时候可以用自旋锁。自旋锁和信号量比较相似,但是自旋锁没有进程链表。
       当一个进程发现锁被其他进程锁住时,它就一直“旋转”,执行一个紧凑的循环指令直到锁打开。
       自旋锁针对的是多处理系统。
信号和进程间通信:
       信号:提供了把系统事件报告给进程的一种机制。
       进程间通信:
              1.信号量
              2.消息队列
              3.共享内存
       共享内存是进程间通信最快的方式
进程管理,内存管理,设备驱动程序这三个后续详细描述。
总结:进程执行可分为内核态和用户态,多个进程同时执行时要避免死锁,以及对临界区访问要互斥。
内核大致的常用概念绪论基本都描述了,接着开始真正的内核深入学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值