多线程、多进程之比较,以及三种线程模型。

工作几年找工作几乎总会被问,从最开始的从网上看答案,到现在凭自己的经验去说,这个问题似乎也是经验积累的一个验证,最近没事就总结一下吧:

进程和线程的定义、比较等:
进程:处于活动状态的计算机程序。进程就是在操作系统中
      执行特定的任务,进程针对的是内存,注意进程映像的概念:
      代码区(r-x),数据区(rw-),bss,堆(rwx),共享内存,栈(rwx),环境表,内核等

      进程是资源管理的基本单位,系统资源:地址空间,打开的文件,用户信息等

     进程:一个具有独立功能的程序关于某个数据集合的一次运行活动。
      进程间通讯:管道(fifo/pipe),共享内存,消息队列,信号量,本地套接字
线程:是程序的执行路线,即进程内部的控制序列,可作为系统独立调度
      和分派的基本单位。

线程是系统调度的基本单位:线程数据:程序计数器,寄存器,栈空间。

线程同步方式:mutex,semaphore,cond.

          多线程                                                    多进程
灵活性:数据共享,通信方便            进程通信复杂,效率低
稳定性:容易死锁,注意线程安全     各进程比较独立
资源:    资源占用少                          资源占用多
效率:    创建、上下文切换快;        创建、调度、同步代价大
               同步、数据拷贝效率高        数据显示拷贝

线程调度策略:1:时间片轮转模式SCHER_RR 2:fifo队列管理SCHER_FIFO(一直占用cpu,除非有更高的优先级线程过来或者自己阻塞,否则一直运行) 3:other非实时分时调度策略

以下是三种线程模型:

猜你喜欢

转载自blog.csdn.net/wWX336815/article/details/82378823