嵌入式面经-线程与进程

  • 什么是进程和线程

    • 进程是资源分配的基本单元,它是程序执行时的一个实例,在程序运行时创建

    • 线程是程序执行的最小单元,是进程的一个执行流,一个进程可由有多个线程组成

  • 线程与进程的区别是什么

    • 资源占用:每个进程都拥有独立的地址空间、文件描述符等系统资源,而线程共享同一个进程的资源。这使得线程之间切换的开销比进程之间小。

    • 执行单元:每个进程都有自己的执行环境和代码,是独立运行的实体。而线程依附于特定的进程,并与其他线程共享同一代码段和数据段。

    • 通信机制:进程之间通信需要借助操作系统提供的机制,如管道、消息队列、共享内存等。而线程直接共享同一进程的地址空间,可以通过读写共享变量来进行通信。

    • 调度:对于多个进程,操作系统负责进行调度决策;而对于多个线程,由于它们属于同一个进程,因此可以更高效地进行上下文切换和调度。

    • 创建销毁开销:创建或销毁一个新的线程比创建或销毁一个新的进程开销小得多

  • 进程和线程的关系

    • 进程(Process)和线程(Thread)是操作系统中并发执行的基本单位

    • 一个进程可以看作是一个程序的执行实例,它包括了代码、数据和资源等。每个进程都有独立的内存空间,运行在不同的地址空间中,相互之间不能直接访问彼此的内存。

    • 而线程是进程中的一条执行路径。一个进程可以包含多个线程,并且这些线程共享相同的内存空间。也就是说,在同一个进程中的多个线程可以访问和修改相同的变量和资源

  • 进程间通信方式有哪些

    • 管道

      • 普通管道:单工通信,只能父子或兄弟进程间使用

      • 流管道:半双工通信,只能父子或兄弟进程间使用

      • 有名管道:双工通信,并且允许没有关系的进程间使用

    • 信号:信号用于通知接收信号的进程有某种事件发生,所以可用于进程间通信;除了用于进程间通信之外,进程还可以发送信号给进程本身

    • 消息队列:消息队列是消息的链表,存放在内核中并由消息队列标识符标识,消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺陷。

    • 信号量:信号量是一个计数器,与其它进程间通信方式不大相同,它主要用于控制多个进程间或一个进程内的多个线程间对共享资源的访问

    • 共享内存:共享内存就是映射一段能被其它进程所访问的内存,这段共享内存由一个进程创建,但其它的多个进程都可以访问,使得多个进程可以访问同一块内存空间。

    • 套接字(Socket):基于网络的 IPC 方法,允许位于同一主机或使用网络连接起来的不同主机上的应用程序之间交换数据,就是网络通信

  • 进程调度的几种方式

    • 先来先服务

    • 短作业优先

    • 优先级调度:为每个进程分配一个优先级,根据优先级高低来决定下一个要执行的进程

    • 时间片轮转:将CPU使用时间划分成固定大小的时间片,每个进程按照时间片顺序依次获得CPU执行权。如果时间片用完,则暂停当前进程并将其放回就绪队列末尾

    • 多级反馈队列调度:将就绪队列划分为多个队列,每个队列拥有不同的优先级和时间片大小。新到达的进程首先放入最高优先级队列,并享有较长的时间片;若在该时间片内未完成,则被降低一级优先级并放入下一级队列。

  • 线程间同步机制有哪些

    • 互斥锁:互斥锁用于保护共享资源,只允许一个线程对资源进行访问,其他线程需要等待。

    • 条件变量:条件变量用于实现线程之间的等待和通知机制,使得某些特定条件满足时才继续执行。

    • 读写锁:读写锁可以同时支持多个读操作或单个写操作,提高并发性能。

    • 信号量:信号量可用于限制同时访问某个资源的线程数量,并提供对资源的互斥访问。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值