操作系统——线程与进程的区别与联系?什么是线程安全?

什么是进程:

1、进程就是执行中的一段程序,也就是说,一旦程序被加载到了内存并准备执行时,它就是一个进程;
2、进程具有文本、数据、堆栈片段以及它自己的资源。资源可以是文件,对象句柄,设备,信号量,互斥量,管道等等;
3、操作系统管理进程以及它的资源,有大量信息与进程有关,这些信息保存在一个称作进程控制块的数据结构中;操作系统就是用这个进程控制块来管理进程以及它的资源;
4、当创建了一个进程的时候,就分配了一个进程空间。文本片段通过一个可执行映像初始化;

什么是线程:

1、线程是一种轻量级进程。与进程相比,线程给操作系统带来的创建、维护和管理负担要轻,因为与线程相关的信息非常少;
2、线程没有地址空间,线程包含在进程的地址空间中;线程文本包含在它的进程的文本片段中;进程拥有的资源线程都可以使用;
3、一个进程里面可以有多个线程,这些线程共享进程的资源;

两者的区别:

1、相同点:
第一:都有上下文内容;
第二:都可以发生上下文切换(发生三种状态的相互转换,运行,阻塞,就绪);
第三:都可以实现并发执行;
2、不同点:
第一:线程是一种轻量级进程;
第二:线程没有自己的线程空间,线程包含在进程的进程空间中;
第三:一个进程可以包含一个或多个线程;

线程安全:

多个线程共享进程的资源,当多个线程都执行一段代码,但是这一段代码会用到一个全局变量并会修改这个全局变量,所以这个时候会出现问题;
多个线程并发执行,当第一个线程读取这个值的时候是3,当正在处理的时候另外一个线程将这个变量的值改为了9,这个时候就可能会出现问题。
这是多个线程并发执行出现的竞争问题,所以需要用到线程的同步方法;线程同步方法,一般有互斥量,互斥量与条件变量配合使用(生产者与消费者模型),信号量,读写锁;
参考:http://blog.csdn.net/linux_ever/article/details/50354377

上面的这些东西都是一些比较小的知识点,想彻底搞懂需要看很多介绍,下面是一些参考资料

具体参考资料:

1、现代操作系统(内容讲的很细很详细挺好,适合进程线程概念入门)
2、C++面向对象多线程编程(第2章,第3章)
3、C++多核高级编程(第5章,第6章)
第2,3这两本书挺好的,尤其是C++多核高级编程(目前只看了前7章,感觉很好)。

最下面这本操作系统的书也挺好的,非常适合操作系统概念入门,我看的第一本操作系统的书,讲的非常好。
重点大学计算机专业系列教材:操作系统    ----谌卫军,王浩娟 著
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值