zoukankan      html  css  js  c++  java
  • 八股文之进程与线程

    假设面试官的问题是: 进程和线程的定义,有什么区别?(亲身经历......)

    八股文就是背,背就完事了。面试了之后才知道,背才是王道......私以为面试官自己也背不下来。背的时候可以把一些比较抽象的词生活化一些,显示不是背的,是真的自己会......

    总结内容参考书籍:

    《UNIX系统编程手册 上》.((德)Michael Kerrisk)

    链接:https://pan.baidu.com/s/186tC_75ppgpK-p5JKi1bbQ
    提取码:ela5

    进程

    定义:进程是由内核定义的抽象实体,并为该实体分配用以执行程序的各项系统资源。【举例 linux系统,因为下面的内容可能对其他操作系统不一样】从内核角度看,进程由用户内存空间和一系列内核数据结构组成,其中内存空间包含了程序代码及代码所使用的变量;而内核数据结构则用于维护进程状态信息:记录在内核数据结构中的信息包括许多与进程相关的标识号(IDs), 虚拟内存表, 打开文件的描述符表,信号传递及处理的有关信息, 进程资源使用及限制,当前工作目录和大量的其他信息。

    进程内存布局图很重要!):

    线程

    并发(concurrrent)和并行(parallel)的区别:https://www.cnblogs.com/f-ck-need-u/p/11161481.html

    多核与多cpu的区别:http://blog.chinaunix.net/uid-27189442-id-4117855.html

                                       https://zhuanlan.zhihu.com/p/85819786

                                       https://epc.zol.com.cn/484/4841109.html

    定义:线程是允许应用程序并发执行多个任务的一个机制(与多进程并发类似)。一个进程可以包含多个线程。同一程序(程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程)中的所有线程均会独立执行相同的程序。且共享同一份全局内存区域, 其中包括初始化数据段,未初始化数据段,以及堆内存段。(所有的线程栈驻留同一虚拟地址空间。)同一进程中的多个线程可以并发执行。在多处理器(多核)环境下多个线程可以同时并行。如果一个线程因等待I/O操作而阻塞,那么其他线程依然可以继续运行。

    多线程进程图(图很重要!

     进程的局限:

    1. 进程间信息难以共享。由于除去只读代码段外,父子进程并未共享内存,因为必须采用一些进程间通信(IPC)方式,在进程间进行信息交换。

    2.调用fork()来创建进程的代价相对较高。即便使用copy-on-write技术,仍然需要复制内存页表(page table)和文件描述符表(file descriptor table)之类的多种进程属性,这意味着fork()调用在时间上的开销依然不菲。

    线程解决了上述两个问题。

    1.线程之间能够方便,快速地共享信息。只需将数据复制到共享(全局或堆)变量中即可。不过,要避免出现多个线程同时修改同一份信息的情况,这就需要使用到线程同步技术。

    2.创建线程比创建进程通常要快十倍甚至更多。线程的创建之所以快,是因为调用fork()创建进程时所需复制的诸多属性,在线程间本来就是共享的。尤其是无需采用写时复制(copy-on-write)来复制内存页,也无需复制页表。

    总结:

    线程与进程的关键区别在于, 线程比进程更易于共享信息,这也是许多应用程序选择线程而不是进程的主要原因。对于某些操作来说(例如创建线程比创建进程快),线程可以提供更好的性能。但是,在程序设计的进程/线程之争中,这往往不会是决定性因素。

    -------------BE SEXY AND BRAINY---------
  • 相关阅读:
    Vue3.0官方文档
    简单实现Vue的双向绑定原理
    小程序使用weapp-qrcode二维码插件,宽高自适应解决方法
    小程序判断ios还是android
    手写实现bind
    手写实现call,apply函数
    React onClick点击事件传参三种写法
    zynq 中断
    zynq_ps端点亮led灯代码
    突然发现自己的很多博客无法显示图片,人都傻了,于是就整理了一早上,全部换成了markdown格式,就好了,希望博客的时间不会对大家造成困扰!!!
  • 原文地址:https://www.cnblogs.com/yuxiaolan/p/15250802.html
Copyright © 2011-2022 走看看