博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程与线程
阅读量:3958 次
发布时间:2019-05-24

本文共 836 字,大约阅读时间需要 2 分钟。

面试遇到的问题,进程与线程有什么区别呢?

就我查到的资料而言,我的感觉是,进程与线程,就像施工队与工人。怎么讲呢?
一个施工队中有好多工人,一个进程底下可以有多个线程。
进程拥有资源,有堆内存,就像施工队有个大仓库。
但是真正工作的,运行在CPU上的,是线程,就像实际干活的是工人。而且线程拥有的资源很少,只有一个程序计数器,一组寄存器,外加栈(而这些,正是运行程序所必备的资源)。就像工人拿个安全帽,推个手推车就可以搬砖了。但是线程共享进程的资源,就像一个施工队中的所有工人,可以共用这个施工队的大仓库。
换进程开销大,换线程开销小。就像换施工队,你得回收仓库,但是换工人,你把他的安全帽手推车一收,就可以让他休息了。

实际来说,进程与线程的异同:

  1. 进程线程都可以并发进行。
  2. 进程拥有大量内存资源(堆),而线程值拥有少量资源,但是进程底下的线程一起共享进程的资源。
  3. 进程拥有大量资源,因此创建和撤销的开销大。而线程资源少,所以开销小。
  4. 进程通信借助操作系统,通信难。线程通信通过进程,较简单。
  5. 进程更加稳定安全(具体为什么不太了解)。

通信:

  • 进程通信有:匿名管道,有名管道,信号量,消息队列,信号,共享内存,套接字七种方式。
  1. 匿名管道与有名管道,其实是通过文件来实现,由一个文件描述符来指向管道。半双工。环形队列结构。匿名管道用于有亲缘关系的进程,默认创建好。有名管道用于不相关的进程,需要人工创建。
  2. 信号量其实是个计数器,计数器为0时禁止访问。
  3. 消息队列是个链表,放在内核中并由消息队列标识符标识。独立于进程存在。可以按消息的类型字段读取。
  4. 信号…………不懂。所有的描述都很朦胧……
  5. 共享内存,就是多个进程共享一段内存,有了一个平台进行交流。但是共享内存本省没有同步机制!需要程序员控制。
  6. 套接字,绑定端口,感觉走向了网络端,因此可以支持不同设备间进程的交流。
  • 线程通信有:事件,信号量,互斥量,临界区四种。
    互斥量是信号量的一种特殊情况。
    事件和临界区未知…………

转载地址:http://dxxzi.baihongyu.com/

你可能感兴趣的文章
mysql忘记密码怎么办?~
查看>>
MySQL修改密码方法总结
查看>>
怎么将我的硬盘屏蔽
查看>>
关于MySQL select into 和 SQLServer select into
查看>>
2003应用
查看>>
文件上传组件比较
查看>>
关于MySQL select into 和 SQLServer select into
查看>>
搭建开发环境(初学liferay必看)
查看>>
Apache FileUpload文件上传组件API解析
查看>>
屏蔽usb的方法- -
查看>>
JSP编程进度条设计
查看>>
精心收集的面试笔试题库,网络上很难找到这么齐全的,推荐给大家
查看>>
教学视频
查看>>
JS操作Cookie详解
查看>>
Java正则表达式详解
查看>>
myeclipse 快捷键
查看>>
对div排序
查看>>
读写blob类型字段
查看>>
js类型转换
查看>>
spring实例化Bean理解
查看>>