校招准备
文章平均质量分 52
湘江北去2016
从头再来!
展开
-
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-07-02 18:24:17 · 341 阅读 · 0 评论 -
Linux进程的唤醒与睡眠
1.Linux系统的进程有几种状态:TASK_RUNNING(运行状态), TASK_INTERRUPTIBLE(可被信号中断的睡眠状态), TASK_UNINTERRUPTIBLE(不可被信号中断的睡眠状态). 其中处于TASK_RUNNING状态的进程由一颗红黑树组织在一起.俗称运行队列.处于TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE状态的进程由队列组织原创 2015-07-17 16:26:59 · 2472 阅读 · 0 评论 -
O(1)调度算法
1.进程有两个优先级,一个是静态优先级,一个是动态优先级.静态优先级是用来计算进程运行的时间片长度的,动态优先级是在调度器进行调度时用到的,调度器每次都选取动态优先级最高的进程运行.静态优先级的计算:nice值和静态优先级之间的关系是:静态优先级=100+nice+20而nice值的范围是-19~20,所以普通进程的静态优先级的范围是100~139进程运行的时间片长度的计算:静态优先级<120,原创 2015-07-22 22:08:58 · 6122 阅读 · 0 评论 -
Linux进程的虚拟地址空间
1.以32位系统为例,Linux系统中每个进程共有3GB的用户地址空间,当用户调用系统调用时,内核线程会代表进程运行,此时是在内核空间内运行的,故所有进程共享1GB的内核空间. 所以,总的来说,每个进程可用的地址空间共有4GB2.进程的3GB用户地址空间由下图所示: 可以看出,进程的用户地址空间从0x00000000--0xbfffffff(2^30+2^31),依次是代码段,数据段,堆,原创 2015-07-20 11:24:25 · 1727 阅读 · 0 评论 -
Linux的虚拟文件系统
1.几个重要的数据结构: <超级块>: 一个已安装的文件系统对应一个超级块1318struct super_block {1319 struct list_head s_list; /* Keep this first */1320 dev_t s_dev; /* searc原创 2015-07-20 23:19:33 · 511 阅读 · 0 评论 -
内核定时器的使用
#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <asm/uaccess.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/slab.h>#include <linux/types.h>#incl原创 2015-07-16 17:24:15 · 394 阅读 · 0 评论 -
Linux的中断服务程序
1.几个重要的数据结构:///////////////////////////////////////////////1.struct irq_desc; 表示一个中断号31struct irq_desc;32typedef void (*irq_flow_handler_t)(unsigned int irq,33 struct irq原创 2015-07-16 16:11:32 · 1021 阅读 · 0 评论 -
Linux下的字符设备驱动程序
1.有如下几个重要的结构体:<include/linux/cdev.h>, 在内核中表示一个真正的字符设备结构struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构,在写驱原创 2015-07-14 09:54:27 · 401 阅读 · 0 评论 -
fork系统调用的执行过程
1.Linux提供了三个系统调用用于创建进程,分别是fork,vfork,clone:fork系统调用: 内核采用写时复制技术对传统的fork函数进行了下面的优化.即子进程创建后,父子进程以只读的方式共享父进程的资源(并不包括父进程的页表项).当子进程需要修改进程地址空间的某一页时,才为子进程复制该页.采用这样的技术可以避免对父进程中某些数据不必要的复制.vfork系统调用: 使用vfork函数创建原创 2015-07-21 21:14:15 · 3128 阅读 · 0 评论 -
内核抢占和schedule()函数的分析
1.线程描述符:struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; __u32 flags; __u32 status; __u32 cpu;原创 2015-07-22 17:31:33 · 2700 阅读 · 0 评论 -
内核中如何得到进程描述符的地址
1.几个重要的结构: <进程描述符>:struct task_struct 描述一个进程的所有信息的结构,包含众多描述进程属性的字段,以及指向其他与进程相关的结构体的指针从上图可以得知,struct task_struct结构中存在如下重要的字段:thread_info:struct thread_info,线程描述符,里面包含了指向进程描述符的指针mm: struct mm_struct,指原创 2015-07-21 17:55:25 · 1134 阅读 · 0 评论 -
最后的冲刺
还有50天左右的时间,校招就要开始了。从今天开始,记录下自己这段时间的点点滴滴。这段时间的任务,暂时的规划是,复习以前的内容,主要包括: 1.复习以下书籍: Linux内核设计与实现 C和指针 C++ Primer Unix环境高级编程 Unix网络编程 卷I 2.阅读以下书籍: 编程之原创 2015-07-02 18:36:32 · 373 阅读 · 0 评论 -
Linux的CFS(完全公平调度)算法
1.几个重要的概念: 每个进程都有一个nice值, 表示其静态优先级, nice值和进程的权重存在如下关系: static const int prio_to_weight[40] = { /* -20 */ 88761, 71755, 56483, 46273, 36291, /* -15 */ 29154, 2325原创 2015-07-27 11:18:43 · 11269 阅读 · 1 评论