Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188469
  • 博文数量: 46
  • 博客积分: 1355
  • 博客等级: 中尉
  • 技术积分: 336
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 16:20
文章分类

全部博文(46)

文章存档

2017年(2)

2014年(12)

2012年(1)

2011年(5)

2010年(26)

我的朋友

分类: LINUX

2010-08-27 22:14:27

    又很久没有怎么学习了,整天是浑浑厄厄的,马上就要找工作了,别说两把刷子了,一把都没有,从今天开始,每两天要把总结的东西写到blog上,开始一个新的旅程。

进程管理:

1、进程   是处于执行期的程序,以及它所包含的资源的总合。在Linux中不区分进程与线程的概念,线程只是它共享资源的一种方法。

2、调用fork()的进程被称为父进程,产生的新进程被称为子进程。在Linux中使用写时拷贝技术来避免大量不用的数据在父子进程间拷贝。

3、调用exec()这个函数族就可以创建新的地址空间,并把新的程序载入。

4、最终,程序会通过exit()系统调用退出执行。

5、进程链表中的每一项都是类型为task_struct,称为进程的描述符结构,它包含的数据能完整地描述一个正在执行的程序:它打开的文件,进程的地址空间,挂起的信号,进程的状态等。

6、Linux中通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色的目的。

7、系统调用和异常处理程序是对内核明确定义的接口,进程只有通过这些接口才能陷入到内核执行,对内核的所有访问都必须通过这些接口。

8、进程的创建:首先,fork()通过拷贝当前进程创建一个子进程,子进程与父进程的区别仅仅在于PID、PPID和某些资源和统计量,exec()函数负责读取可执行文件并将其载入地址空间开始运行。

9、Linux的fork()使用了写时拷贝(copy-on-write)页实现,这是一种可以推迟甚至免除拷贝数据的技术,内核此时并不复制整个进程,而是让父子进程共享同一个拷贝,只有在需要写入的时候,数据才会被复制,从而使各个进程拥有各自的拷贝。当调用了fork()函数创建了子进程时,系统让子进程先运行,从而避免父进程写入空间,那么写时拷贝技术就没有起作用了。

10、在Linux中所有的线程都当做了进程来实现,每一个线程都拥有唯一属于自己的task_struct。

11、Linux与其它系统的线程有区别,Linux的线程只是共享资源一种方式,线程与进程的创建类似,只不过在调用clone()的时候需要传递一些参数标志,来指明需要共享的资源,也就是说,新建的进程与它的父进程都叫做线程。

12、内核线程与普通进程的区别在于内核线程没有独立的地址空间,在内核空间运行从不切换到用户空间去。

13、调度,在一组处于运行状态的进程中选择一个来执行,这就是调度程序要完成的基本工作。




阅读(1383) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-30 21:50:31

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com