嵌入式面经大全(3/30)--进程、线程基础概念(三)

牛客高级系列专栏:





简介

本人2020年本硕毕业于广东工业大学:嵌入式许乔丹,牛客高级专栏作者,牛客大学讲师,本科阶段搞了4年单片机、曾参加全国大学生恩智浦汽车竞赛,发表4个硬件专利。研究生阶段找了嵌入式linux的实习,毕业后拿到珠海格力,云从科技,CVTE,小米,美的,华为的嵌入式offer,签约CVTE嵌入式岗位。

在CVTE先后做过嵌入式Linux开发和安卓系统开发,参与过TV板卡、显示屏板卡、智能家居板卡、希沃网课学习机的开发。欢迎交流嵌入式或者安卓哈!

正文开始⬇️

1.1 进程线程的基本概念(本文讲1.1.7-1.1.9)

1.1.1什么是进程,线程,彼此有什么区别⭐⭐⭐⭐⭐

1.1.2多进程、多线程的优缺点⭐⭐⭐⭐

1.1.3什么时候用进程,什么时候用线程⭐⭐⭐

1.1.4多进程、多线程同步(通讯)的方法⭐⭐⭐⭐

1.1.5进程的空间模型⭐⭐⭐

1.1.6一个进程可以创建多少线程,和什么有关⭐⭐

1.1.7进程线程的状态转换图 什么时候阻塞,什么时候就绪⭐⭐

1.1.8父进程、子进程的关系以及区别⭐⭐⭐⭐⭐

1.1.9什么是进程上下文、中断上下文⭐⭐

1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解

1.2.1并发,同步,异步,互斥,阻塞,非阻塞的理解⭐⭐⭐⭐⭐

1.2.2什么是线程同步和互斥⭐⭐⭐⭐⭐

1.2.3线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐

1.3 孤儿进程、僵尸进程、守护进程的概念

1.3.1 基本概念 ⭐⭐

1.3.2 如何创建守护进程:⭐⭐

1.3.3 正确处理孤儿进程、僵尸进程的方法⭐⭐⭐⭐⭐

1.1 进程线程的基本概念

1.1.7 进程线程的状态转换图,什么时候阻塞,什么时候就绪?

在此之前,我们先看看一个进程一生中,从蛋生到死亡都有可能出现什么状态。

创建态(New):一个进程正在被创建,还没到转到就绪状态之前的状态。

就绪态(Ready):一个进程获得了除CPU时间片之外的一切所需资源,一旦得到CPU时间片调度时即可运行。

运行/执行态(Running):当一个进程得到CPU调度正在处理机上运行时的状态。

睡眠/挂起态:由于某些资源暂时不可得到而进入“睡眠态”,将进程挂起,等待唤醒。

阻塞/暂停态(Blocked):一个进程正在等待某一事件而暂停运行时,如等待某资

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++面试题解析大全 文章被收录于专栏

#承诺提供免费技术答疑# 该专栏是我校招阶段整理的关于“嵌入式面经”的111道题目,“C/C++软件开发岗位”也可以参考下。涵盖了大多数嵌入式/软件开发岗位常见基础面试题,题目来源是牛客网各大大厂的面经,答案是我逐个查阅资料,是嵌入式面试最常见的题目和答案。订阅即赠送简历模板、超大笔试面试真题大礼包、内推机会,需要的同学点击我头像私信即可!

全部评论
赞!
1 回复 分享
发布于 2020-06-04 21:22
贴个我比较能理解的中断上下文时不能睡眠的解释:4楼的解释:大家知道操作系统以进程调度为单位,进程的运行在进程的上下文中,以进程描述符作为管理的数据结构。进程可以睡眠的原因是操作系统可以切换不同进程的上下文,进行调度操作,这些操作都以进程描述符为支持。 中断运行在中断上下文,没有一个所谓的中断描述符来描述它,它不是操作系统调度的单位。一旦在中断上下文中睡眠,首先无法切换上下文(因为没有中断描述符,当前上下文的状态得不到保存),其次,没有人来唤醒它,因为它不是操作系统的调度单位。 此外,中断的发生是非常非常频繁的,在一个中断睡眠期间,其它中断发生并睡眠了,那很容易就造成中断栈溢出导致系统崩溃。(http://bbs.chinaunix.net/thread-2115820-1-1.html)
3 回复 分享
发布于 2020-07-30 11:00
子进程和父进程的内存关系:在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如果不是因为exec,内核会给子进程的数据段、堆栈段分配相应的物理空间(至此两者有各自的进程空间,互不影响),而代码段继续共享父进程的物理空间(两者的代码完全相同)。而如果是因为exec,由于两者执行的代码不同,子进程的代码段也会分配单独的物理空间。(https://blog.csdn.net/igaozh/article/details/84290796?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight)
1 回复 分享
发布于 2020-07-30 10:38
资料中有一些语病错漏,有时还是很影响理解的
点赞 回复 分享
发布于 2023-03-23 10:00 湖北
能否发我一个PDF版本,我已经订阅。
点赞 回复 分享
发布于 2022-08-19 14:01 上海
东西很好,顶楼主!!!
点赞 回复 分享
发布于 2020-09-07 10:58
师兄写的,过来看看,确实很良心
点赞 回复 分享
发布于 2020-09-04 10:24
对于挂起态和阻塞态有点不理解,网上好像只有一个阻塞态,这两个状态有什么区别么?
点赞 回复 分享
发布于 2020-08-05 17:15
感谢分享,有个疑惑希望能帮我解答一下。 我理解中断上下文不能调度,但我记得似乎进入中断的时候没有关闭系统调度这个操作。 我一直的理解,是中断的时候可以配置使用单独的栈,那么这个时候由于中断函数没有相应的PCB,且中断栈对于被中断的进程是不可见的,因此一旦显示的调用sched函数也是不可能返回中断环境,因而不能睡眠(会调用sched函数)。即使中断函数共用了被中断进程的内核栈,即相当于在进程中调用了中断函数,由于中断发生是异步的,如果中断中发生睡眠,相当于被中断函数意外的失去了CPU,这很有可能使系统挂掉。另外有的中断可能配成IRQF_DISABLED,这就直接屏蔽了其他中断,即使没有配成这个,也会占用某一条中断线,如果调度出去了很可能使得系统崩溃。 但是我也见过另外一个说法,就是被中断打断的进程会改变进程状态,使得调度器没办法再调度这个被打断进程,因此不能在中断中调度。 今天又看到了第三种说法...希望这方面能详细讲一下。感谢
点赞 回复 分享
发布于 2020-07-13 22:28
不错不错,线程进程终于理解了,好评满满
点赞 回复 分享
发布于 2020-07-07 10:32
赞一个!
点赞 回复 分享
发布于 2020-06-06 14:31

相关推荐

昨天 15:48
门头沟学院 Java
点赞 评论 收藏
分享
评论
24
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务