linux内核分析第3章&第18章读书笔记

第三章 进程管理

进程:处于执行期的程序(目标码存放在某种存储介质上)

包含资源:可执行程序代码,打开的文件,挂起的信号,内核内部数据,处理器状态,具有内存映射的内存地址空间,执行线程,存放全局变量的数据段

执行线程:进程中活动的对象

拥有资源:独立的程序计数器,进程栈,进程寄存器。

内核调度的对象是线程

进程的两种虚拟机制:虚拟处理器,虚拟内存

任务队列:链表每一项都是进程描述符结构。

进程描述符描述内容:打开的文件,进程地址空间,挂起信号,进程状态

Linux通过slab分配器分配task_struct结构,达到对象复用和缓存着色。

进程标识值:内核通过唯一的PID来标识每个进程。

进程状态:进程描述符中state域描述了进程的当前状态。

TASK_RUNNING(可执行)

TASK_INTERRUPTIBLE(正被阻塞)

TASK_UNINTERRUPTIBLE(不可中断)

_TASK_TRACED(被其他进程跟踪)

_TASK_STOPPED(进程停止执行)

进程家族

所有进程都是PID为1的init进程的后代,内核在系统启动的最后阶段启动init进程

进程创建

1 fork()通过拷贝当前进程创建一个子进程
2 exec()函数读取可执行文件并将其载入地址空间

线程实现

在linux中,线程仅仅被视作一个与其他进程共享某些资源的进程,它只是一种进程间共享资源的手段

内核线程:独立运行在内核空间中的标准进程

它与普通进程的区别在于,内科线程没有独立的地址空间,只在内核空间运行。可以被调度或者抢占。

第18章 调试

通过打印调试

Printk()具有健壮性,可以在任何时候,任何地方调用它。(除非在启动过程的初期就要在终端上输出)

Printk()可以指定一个日志级别,内核把比某个特定级别低的所有消息显示在终端上。

OOPS

Oops是内核告知用户有不幸发生的常用方式。他的产生有很多原因,包括内存访问越界或者非法的指令

如果oops在idle进程(pid为0)或者init进程(pid为1)时发生,或者在中断上下文时发生,或者持有一个锁或正在和硬件交互,系统将陷入混乱。

探测系统

用UID作为选择条件

如果开发进程相关部分,可以通过把用户id作为选择条件来安排究竟是执行新算法还是老算法。通过在特定条件下执行新算法,可以保证安全性。

使用条件变量

可以创建一个全局变量作为分支选择开关,通过某种接口或者调试器进行操控。

使用统计量

可以在定义某事件的文件里,定义两个全局变量,统计事件发生规律,最好通过原子操作来实现。

重复频率限制

1.限制重复频率

2.限制发生次数

linux内核分析第3章&第18章读书笔记的更多相关文章

  1. 《Linux内核分析与实现》 第五周 读书笔记

    第3章 进程管理 20135307张嘉琪 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码.通常进程还要包含其他资源,像打开的文件,挂起的信 ...

  2. 《Linux内核设计与实现》第五周读书笔记——第十一章

    <Linux内核设计与实现>第五周读书笔记——第十一章 20135301张忻 估算学习时间:共2.5小时 读书:2.0 代码:0 作业:0 博客:0.5 实际学习时间:共3.0小时 读书: ...

  3. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  4. Linux内核设计与实现之虚拟文件系统的读书笔记

    Linux内核设计与实现之虚拟文件系统的读书笔记 虚拟文件系统(VFS) 为用户空间提供了文件和文件系统相关的接口. 文件系统抽象层 内核在底层文件系统上建立了一个抽象层, 该抽象层使Linux能够支 ...

  5. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  6. 《LINUX内核设计与实现》第三周读书笔记——第一二章

    <Linux内核设计与实现>读书笔记--第一二章 20135301张忻 估算学习时间:共2小时 读书:1.5 代码:0 作业:0 博客:0.5 实际学习时间:共2.5小时 读书:2.0 代 ...

  7. 《Linux内核设计与实现》 第五周 读书笔记(第十八章)

    第18章 调试 20135307张嘉琪 18.1 准备开始 18.2 内核中的bug 内核中的bug多种多样,它们的产生可以有无数的原因,同时它们的表象也变化多端,从明白无误的错误代码(比如,没有把正 ...

  8. 《Linux内核设计与实现》 第三周 读书笔记

    第一章 Linux内核简介 1. Unix的历史 Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统. Unix强大的根本原因: 简洁 在Unix中所有的东西都被 ...

  9. 《Linux内核设计与实现》第十八章读书笔记

    1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触 ...

  10. 《Linux内核设计与实现》第18章读书整理

    第十八章.调试 18.1 准备开始 如果bug能重现的话,将会有很大的帮助. 18.2 内核中的bug Bug多种多样,产生的原因可以有无数的原因,表象也变化多端. 从隐藏在源代码中的错误到展现在目击 ...

随机推荐

  1. 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

    最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...

  2. java nio实现文件复制

    public class TransferTo { public static void main(String[] args) throws Exception { FileChannel in = ...

  3. Git之hotfix热修复分支

    1.假设你正在开发一个新功能, 需要新建一个new分支并切换: git checkout -b new 等价于 git branch new git checkout new 然后在这个new分支上已 ...

  4. JMeter:全面的乱码解决方案【转】

    本文是转自https://www.cnblogs.com/mawenqiangios/p/7918583.html 感谢分享者   中文乱码一直都是比较让人棘手的问题,我们在使用Jmeter的过程中, ...

  5. Paper Reading - Im2Text: Describing Images Using 1 Million Captioned Photographs ( NIPS 2011 )

    Link of the Paper: http://papers.nips.cc/paper/4470-im2text-describing-images-using-1-million-captio ...

  6. Linux下文件的打包、解压缩指令——tar,gzip,bzip2

    本文是对 鸟叔的Linux私房菜(基础学习篇) 第三版 的学习笔记,原文可参考原书中文网站 鸟叔的Linux私房菜.更多详细信息可直接参考对应Linux命令的 man 帮助( 如 man tar). ...

  7. 5.airflow问题

    1. Traceback (most recent call last): File "/usr/bin/airflow", line 28, in <module> ...

  8. loadrunner之analysis详解

    本文原出处:http://blog.csdn.net/lykangjia/article/details/56009750 一.常用到的性能测试术语 1.事务(Transaction) 在web性能测 ...

  9. Beta冲刺贡献分数分配结果

    小组名称:Hello World! 项目名称:空天猎 组长:陈建宇 成员:刘成志.刘耀泽.刘淑霞.黄泽宇.方铭.贾男男 第三周贡献分分配结果 基础分 会议分 个人贡献分 最终分数 黄泽宇 9 0.5 ...

  10. 软件工程-东北师大站-第五次作业(PSP)

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图