Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1611812
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: LINUX

2009-03-30 08:15:37

   时间很快啊,一周时间又结束了,新的一周又要开始上了,现在继续总结上一周,首先上一周学习的内容是系统编程,这部分自己还是不怎么的熟悉,因为很又很多的计算机专业的知识自己以前没有学过,比如【计算机操作系统】,什么进程、线程、信号量、信号、互斥锁、无名管道、有名管道,此类的东西,都是比较晦涩的,不是很容易的理解,还好的自己对与系统管理这类的东西自己很久以前就想过,所以自己在学习的时候基本上还是按着自己的思路来,现在问题是这些东西的下边,到底是怎么完成的,这就不知道了,看来等以后又时间了还是要看看源码的,只有真正的明白了他是怎么实现的才能更好的进行系统编程。
 
   根据我的理解,所谓进程就是一个资源的集合,它自己的代码段、数据段,堆区、栈区、BSS,这些资源在以前的单任务系统中,就是一台计算机,在以前的单任务计算机中,计算机的内存分配就是按照来分配的,但那是的资源分配没有现在这么的细致,要粗略很多。由此可见,当每个进程有了自己对立的资源集合的时候,就可以互不干扰的完成自己的任务,当很多进程同时运行的时候,就需要相互之间进行一些数据的交换,后者进程信号的同步,以更好的协同完成一项复杂的任务,那么这时候就需要进行进程间的通信了,必然要用到无名管道、有名管道、信号、消息队列,同时,对于有限的资源,有时候不能让两个任务同事去修改它,那这时候就要用到互斥锁、信号量的概念了,尽管如此,进程还有个很大的缺点就是数据之间的共享比较麻烦,不太方便。这时候人们就可虑用线程,在linux中,进程和线程的概念远没有windows中区分的那么明显,在linux中,线程就是一个轻量级的进程,但它没哟自己的资源集合,和自己的共享自己所属的进程的资源,正因为线程是共享自己的所属进程的资源,所以更子线程之间的数据交换是非常的方便的,用我们平常使用的全局变量就能很方便的完成数据的交换。
 
   通过上边的叙述,可能会有一个错误的认识,那就是线程比进程用起来更加的方便,实际情况不是这样的,如果需要在本进程中调用一个可执行程序、或者一个外的shell脚本,这时候线程就能完成了,因为调用的时候需要开启新的资源集合,而线程是和所属进程共享资源集合的,显然他没有自己的资源集合,更不可能给别的外部程序开启资源集合了,那就需要使用进程,fork()函数可以是子进程有自己的资源集合。
阅读(621) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~