Day13

1. 请你说说进程间的通信方式

  1. 管道:管道实质是内核中的一块内存缓存区。创建缓存后会返回两个文件描述符,分别是读和写。有名管道可以在不存在亲缘关系的进程中通信。管道的缺点:只能FIFO、数据无格式且大小受限、并且通信方式是单向的,若需要双向则需要建立两个通道。
  2. 消息队列:消息队列是内核中的消息链,消息队列支持消息的随机查询,且能够实现多个进程间的读写操作。消息队列相比管道能承载更多的消息。但是消息队列和管道一样,都存在内核与用户内存间的数据拷贝,因此不适合进行频繁的通信。
  3. 共享内存:共享内存是通过两个进程的虚拟内存中的一块地址映射到同一块物理内存上,共享内存不再需要用户到内核间的数据拷贝,通信双方直接操作用户空间的共享内存即可完成通信
  4. 信号量:为了解决多进程对共享内存访问时的并发问题,设计了信号量以保证多进程并发访问共享变量安全。信号量实质是一个计数器,拥有原子P和V。当信号量值小于等于0后,之后再进行P操作则会阻塞
  5. 信号:是事件发生对进程的通知机制,它是软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件
  6. socket:常用于网络通信,可以实现不同主机之间的进程通信

2. 请你说说线程和协程的区别

  1. 进程有独立的地址空间,线程有自己的堆栈和变量,但线程没有单独的地址空间
  2. 进程和线程切换时,需要切换进程和线程的上下文,进程的上下文切换时间开销远远大于线程上下文切换时间,耗费资源较大,效率要差一些
  3. 进程的并发性较低,线程的并发性高
  4. 每个独立的进程有一个程序运行的入口,顺序执行的序列和程序运行的出口,但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
  5. 系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存,线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源
  6. 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃,比如共享资源被破坏,则整个进程都可能死掉。所以多进程比多线程要健壮

3. 请你说说线程和协程的区别

  1. 线程是操作系统的资源,线程的创建、切换、停止等都非常消耗资源,而创建协程不需要调用操作系统的功能,编程语言自身就能完成,所以协程也被称为用户态线程,协程要比线程轻量很多
  2. 线程在多核环境下是能做到真正意义上的并行,而协程是为并发而产生的
  3. 一个具有多个线程的程序可以同时运行几个线程,而协程需要彼此协作运行
  4. 线程进程都是同步机制,而协程是异步机制
  5. 线程是抢占式,而协程是非抢占式的,所以需要用户自己释放使用权来切换到其他协程,因此同一时间只有一个协程拥有运行权,相当于单线程的能力
  6. 操作系统对于线程的开辟数量限制在千的级别,而协程可以达到上万的级别
  7. 协程适用于 I/O 密集型任务,因为它们可以在等待 I/O 操作完成时主动让出 CPU 给其他协程。线程适用于 CPU 密集型任务,因为线程可以在多个核心上并行执行计算密集型操作

4. 请你说说死锁定义及发生的条件

  1. 死锁是两个或两个以上的进程在执行过程中,因争夺共享资源而造成的相互等待的现象,若无外力作用,它们都将无法推进下去。此时系统处于死锁状态。
  2. 必要条件:
    1. 互斥条件;指进程对分配到的资源进行排他性地使用,即在一段时间内某个资源只能由一个进程占用
    2. 请求并保持条件:指进程保持至少一个资源,但又提出了新的资源请求,但又对自己的资源保持不放
    3. 不可剥夺条件:指进程已经获得的资源只能由自己主动释放
    4. 环路等待条件:指发生死锁时,必然存在一个进程到资源的环形链,即P0等待P1,P1等待P2,...Pn等待P0

5. 请你说说内存管理

  1. Linux操作系统是采用段页式内存管理方式
  2. 页式存储管理能有效地提高内存利用率(解决内存碎片),而分段存储管理能反映程序的逻辑结构并有利于段的共享。将这两种方法结合起来就形成了段页式存储管理方式
  3. 段页式存储管理方式即先将用户程序分成若干个段,再把每个段分为若干个页,并为每个段赋予一个段名。
  4. 再段页式系统中,为了实现从逻辑地址到物理地址的转换,系统中需要同时配置段表和页表
  5. 系统为每个进程建立一张段表,每个分段建立一张页表。段表表项中至少包括段号、页表长度和页表始址,页表表项中至少包括页号和块号。在进行地址转换时,首先通过段表查到页表始址,然后通过页表找到页帧号,最后形成物理地址
最后修改:2024 年 06 月 08 日
如果觉得我的文章对你有用,请随意赞赏