进程与线程的区别、static的作用

 

 

进程与线程的区别:

首先需要明白的一点是进程的目的是什么?进程这个概念是如何提出的呢。实际上进程是为了满足任务并发而不涉及出来的,

但是在单核CPU时多任务多个程序同时执行实际上并不是正真的同时执行(这个大家都知道),而是通过进程调度实现的。

那么为了实现多程序的并发执行就要求每个执行的程序也就是进程之间不能有干扰,所以可想象每个进程都会有自己的执行空间

和堆栈空间,否者就会出现交叉,除了这个在进程切换的时候还需要保存当前进程的上下文,所以每个进程必然有自己对应的内核存储空间;这样我们就能得出结论,进程都有自己的独立空间,其所占用的的资源也是与其他进程独立开来的。

不过在进程的使用过程中发现进程间的切换需要保存现场,然后恢复现场,占用了太多的时间;经常性的切换占用了太多的资源。在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被引进。

线程是进程中的一个执行单元,它共享进程的地址空间,但是有自己的独立的栈空间,这样面对多个请求时只需要建立一个线程

响应,就可以极大的节约空间。在同一个进程中的线程做切换时不需要太多的保存和恢复现场就能够实现线程的切换;只有进程间的线程做切换时才会进程进程切换,提高了效率。

这样我们可以得出结论:

 1. 同一个进程中的线程是共享地址空间的,进程之间则是不同的

 2. 同一个进程中的线程共享进程的资源比如I/O,内存资源,但是进程间是独占的

 3. 进程的切换占用资源多,效率低;线程则是占用资源少,切换的效率更高;

 4. 线程依赖于进程,而进程可以创建线程也可以不创建,不影响其执行

 5. CPU的调度以线程为单元

  实际上线程是轻量化的进程。

 

  static的作用:

   我们一般什么时候用到static

     2个声明变量 和 声明函数

    变量有全局的和局部的

   先讲函数static的函数或如何,限定函数只能在本文件使用;

   static的全局变量呢, 该变量也只能在本文件使用

    static 的局部变量呢,该变量只能在本文件,还要加上本函数才能使用,还有一点就是该变量只有第一次执行是会被初始化

    可以总结:

   1. 限定函数和全局变量的使用范围,只能其所在的源文件使用

    2. 对于局部变量,会被存储到全局的.data中,只能够在其声明函数中使用

 

 

 

 

 

 

 

    

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值