linux 内核设计与实现(第二章笔记)
来源:互联网 发布:软件多开器安卓版 编辑:程序博客网 时间:2024/04/29 14:47
1、linux进程理解
对于linux 的进程一直是linux系统的亮点,linux系统的高效率、并发性很大程度上都与其任务(进程)有很大的关系,而对于linux进程,很久以前理解为就是程序的一次执行,但是其实他还包括了太多的东西,并不仅仅是一个程序的执行,它包含了程序计数器、进程站、寄存器等相关的资源。也正是进程的两种虚拟技术(虚拟处理器和虚拟内存)让用户感觉自己独占处理器或者一块内存。
linux下的进创建很简单,调用fork函数就可的到一个子进程(注意linux 进程默认返回两个数值,一个是返回到子进程,一个是返回到父进程),并且在一般情况下,进程的创建和exec系列函数联系在一起。
对于fork函数,需要注意:
a、fork一个子进程系统会进行怎么样的资源配备。
b、fork函数调用在所执行的系统调用。
c、fork函数退出所经过的步骤,特别要注意防止僵尸进程的出现,一般处理僵尸进程的方法(如父进程等待子进程结束、父进程提前退出,让init进程接管子进程)。
d、用户调用fork函数与vfork函数的区别。
2、进程中的重要数据结构与实现机制
a、 进程有唯一标识符:进程ID,同时理解进程时最重要的是进程描述符(struct task_struct ),该描述符包含了进程执行时的状态、优先级、进程ID等重要信息。
b、分配进程描述符。进程在分配进程描述符时采用了slab机制,保证了资源分配的快速性,同时理解进程中thread_info与struct task_struct 之间的关系。
c、进程状态。系统中的进程有五种状态:TASK_RUNNING、TASK_INTERRUPTIBLE(可中断)、TASK_UNINTERRUPTIBLE(不可中断)、TASK_ZMBIE(僵死)、TASK_STOPPED(停止),各种状态通过不同的调用实现状态的跳转:
3、进程上下文
进程处于上下文中,此时进程当前指针corrent是可用的,系统调用或者异常可以使进程陷入内核执行。
内核进程的访问,使用list_for_each可以访问进程循环队列的每一个进程,任何一个进程都是init进程的后代。
- linux 内核设计与实现(第二章笔记)
- linux 内核设计与实现(第二章笔记)
- 《linux内核设计与实现》阅读笔记 第二章 进程
- Linux内核设计与实现笔记之第一章、第二章
- Linux内核设计与实现--学习笔记--第二章
- linux内核设计与实现第二章
- linux内核设计与实现(第二章)----内核开发准备
- [笔记]《Linux内核设计与实现》第六章内核数据结构
- Linux 内核设计与实现(第二版)1-3章(读书)
- Linux 内核设计与实现(第二版)第4章
- Linux进程 (Linux内核设计与实现学习笔记)
- Linux进程(Linux内核设计与实现学习笔记)
- 《linux内核设计与实现》--从内核出发 第二章 进程线程
- linux内核设计与实现【第三版】摘记----第二章:从内核出发
- Linux内核设计与实现学习笔记
- Linux内核设计与实现笔记
- LKD (linux内核设计与实现)笔记
- 《linux内核设计与实现-笔记1》
- POJ1200(Hash 或 Map 或 Set)
- PAT A 1049. Counting Ones (30)
- 关于汉字输入联想
- [Java 内部类 ] 的四个知识点 《Java开发实战经典》
- CSDN线上编程挑战5月份月赛题目:打牌
- linux 内核设计与实现(第二章笔记)
- 源码安装鸟哥私房菜的xpenguins软件包的问题解决
- duilib之源码分析
- jquery datagrid根据指定列的值改变所在行的背景颜色
- Project Euler Q2 解法
- android 实现输入法的国际化
- cocos2dx V2.3.3 解决中文乱码
- ACM-简单题之Factorial——poj1401
- [Java 05 OO] (基础篇) 《Java开发实战经典》