zoukankan      html  css  js  c++  java
  • 面试题必问——简述线程、进程、并发、并行

    多线程是面试必问的知识点,多多少少都会有人掉进面试官挖的坑中。

    1.说一下什么是进程?

    进程是资源分配的的基本单位,启动一个程序就是一个进程。每个进程都有彼此独立的地址空间,不同的进程之间无法访问彼此的数据。但是可以通过通道,文件,套接字等进行访问

    2.不同进程中哪些资源可以共享

    • 堆】由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)

    • 全局变量】全局定义的变量单位,因此也是共享的

    • 局部静态变量】虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的

    • 文件等公用资源】这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

    3.说一下什么是线程? 

          进程的最小单位,一个进程包含多个线程,当关闭进程时线程也会相应被关闭。

          举例:

    一个浏览器就相当于一个线程,每个tab页是一个进程。关闭浏览器之后每个网页也会被关闭。

    需要频繁销毁创建的使用线程,因为进程的销毁和创建需要消耗大量的资源,需要保证程序稳定安全,推荐使用进程。需要加快执行速度选用线程。

    4.说一下什么是并行?

        同一时间节点,多个任务同时进行。比如洗澡的时候可以唱歌,多核CPU,多个进程可以运行在不同的物理核心上。每个CPU各司其职执行不同的任务。

    5.说一下什么是并发?

    一段段时间内,多个任务交替执行,类似多线程。单核cpu,某一时刻只能一个进程执行。但是可以通过不断切换的方式(如时间片轮巡),因为cpu执行速度非常快,所以我们看起来好像是同时进行,实际上是快速交替执行

    ========================================================================================================================================================

    附加并行资料

    特点

    1、各数据位同时传输,传输速度快、效率高,多用在实时、快速的场合。
    2、微机系统中最基本的信息交换方式。
    3、并行传递的信息不要求固定的格式。
    4、并行接口数据传输率串行接口快8倍,标准并口的数据传输率理论值为1Mbps(兆比特/秒).
    5、并行传输的数据宽度可以是1~128位,甚至更宽,但是有多少数据位就需要多少根数据线,因此传输的成本较高。
    6、并行通信抗干扰能力差。
    7、在集成电路芯片的内部、同一插件板上各部件之间、同一机箱内个插件板之间的数据传输都是并行的。
    8、以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据。
    9、适合于外部设备与微机之间进行近距离、大量和快速的信息交换。
    10、并行数据传输只适用于近距离的通信,通常传输距离小于30米。

    工作原理:

     一般地并行接口有 3 个方面的功能:

    ⑴实现与系统总线的连接:提供数据的输入输出功能。
    ⑵实现与外设连接:确保与外设间有效进行数据的接收和发送。
    ⑶具有中断请求处理功能:外设输入输出采用中断的方法来实现。

    接口连接

    典型的双向并行接口与外设连接
    ⒈并行接口与CPU的连接
    数据总线:是CPU与并行接口进行数据交换的通道。
    ⑵读出写入信号线:控制数据流向,确定操作是读还是写。
    ⑶复位线,准备好状态线:并行接口数据准备就绪。
    中断请求线:并行接口向CPU进行中断请求。
    ⑸地址译码电路:进行选择不同的接口电路,选择接口电路内部不同的寄存器
    ⒉并行接口与外设的连接
    ⑴输入设备:数据输入线,设备数据准备就绪状态线和接口接收数据回答线。
    输出设备数据输出线,接口数据准备就绪状态线和外设接收数据回答线。
    ⒊并行接口
    控制寄存器:接收CPU发来的控制命令。
    ⑵数据输入缓冲器、数据输出缓冲器:进行数据的输入、输出。
    状态寄存器:提供接口电路工作状态供CPU查询。

    传输原理

    ⒈ 并行接口输入数据的过程
    外设将数据送到“数据输入线”,通过“输入数据准备好” 状态线通知并行接口取走,接口将数据锁存到“输入缓冲器”,通过“数据输入回答”线通知外设,接口数据缓冲器已满,不要再送数据,接口在其内“状态寄存器” 的相应位置 1,便于CPU 查询和接口向CPU 发中断请求之用。
    CPU 从接口将数据取走后,接口将“数据输入准备好”、“数据输入回答” 信号清除,以便外设输入下一个数据。
    ⒉ 并行接口输出数据的过程
    接口“数据输出缓冲器” 空,“数据输出准备好” 状态线送 1,收到CPU 发的数据,将之复位清0,数据通过“数据输出” 线送外设,由“数据输出准备好” 线通知外设取数据。

    实例

    微机系统中最基本的信息交换方法
    例如:微机与并行接口打印机磁盘驱动器
    例如:系统板上各部件之间,接口电路板上各部件之间
    http://www.cnblogs.com/Hei-Tao-K/
  • 相关阅读:
    04.Javascript——入门一些方法记录之iterable
    03.Javascript——入门一些方法记录之Map和Set
    02.Javascript——入门一些方法记录之Object
    unity 工具开发基础
    lua热重载
    unity接入安卓sdk (unity调用安卓工程)
    转 Unity企业级支持案例与分析
    ugui的优化
    c#各个版本的特性
    最好用的lua编辑器--------emmylua使用汇总
  • 原文地址:https://www.cnblogs.com/Hei-Tao-K/p/10477161.html
Copyright © 2011-2022 走看看