三月的最后一周

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值