我有100个linux小问题和解答想与你分享(持续更新中)

Linux之路总是漫漫,经常遇到些混淆概念的问题和一些容易忘记的东西
我有100个linux小问题和解答想与你分享(持续更新中)_第1张图片
我准备了许多问题与解答同你分享

Q:当遇到不同书上一些定义的差异时该怎么办?

在读《深入理解计算机系统》一书时,它将PC中指令地址的控制序列的突变称为“异常Exception”,接着把异常分为四类:

1)中断(IO设备引起);

2)陷阱和系统调用(陷阱作用即为了给应用程序applications与内核之间提供一个接口,这个接口就是“系统调用system calls”);

3)故障;

4)终止。

后三者都是一条指令的直接结果,且是同步的。

然后在《计算机概念》一书中却是将在《深入…》一书中的“异常”解释为“中断”,然后把“中断”分为三类:

1)中断(硬件触发);

2)陷阱(用户触发);

3)系统调用(软件触发)。

今日特地询问了老师,这两者是否是同一种东西,老师回答如下:

A:每本书中分类不一样,只要理解清楚每本书中所讲的就好。不理解可以多与老师进行沟通。


Q:进程五个基本状态是什么?

A:进程五个状态为:

1)创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

2)就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行

3)执行状态:进程处于就绪状态被调度后,进程进入执行状态

4)阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

5)终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

如果进程运行时间片使用完也会进入就绪状态。

另外为用户观察需要,进程还有挂起和激活两种操作。挂起后进程处于静止状态进程不再被系统调用,对于操作是激活操作。


Q:"bus error" 是什么意思呢?它跟segfault有啥区别啊

A:bus error即总线错误,通常是你试着去寻找一个根本不存在的地址,比如你的主存是8G的,但你却去寻找12G的地址;segfault是说你要寻找的东西不在这个段里,就是我们常说的越界啦!

总结下,bus error是你找的东西不存在;segfault是你找的东西不被允许访问(因为根本不是你能管到的范围啊喂)

我有100个linux小问题和解答想与你分享(持续更新中)_第2张图片
bus error是进入了不存在的世界

Q:CPU想要读取一个数据首先会把数据地址写到AddressBus中,然后经由他的专属命令通道ControlBus向其他设备发出读取信号,接着他就等着数据从DataBus过来。那到底CPU知道他读取的数据是从主存还是其他设备中获取的吗?

A:CPU是个有社交障碍的家伙,他跟所有设备打交道都是通过buses,包括经常与他合作的主存兄弟,唉,说到这也挺伤感,每时每刻都在合作,对方却不知道他是谁。就因为他的社交障碍,他只使用从DataBus中传过来的数据,至于数据来自哪里去往哪里只有数据自己知道,CPU不过问也不需要过问。

总结下,CPU不需要知道任何设备,他只需要处理从buses上发过来的数据就行,至于这段数据是从哪里来他一概不问,处理完了就扔给他的buses,也不问数据的归处。

我有100个linux小问题和解答想与你分享(持续更新中)_第3张图片
CPU是个超级社交障碍而又超级霸道的家伙

Q:什么是上下文切换(context switch)?

A:一个上下文切换(有时也被称为进程切换或任务切换)是指CPU从一个进程切换到另一个进程。

更详细地描述是上下文切换时CPU正在进行下面几个动作:

(1)暂停并保存当前进程的状态(或称保存现场);

(2)从主存中检索下一个进程的上下文并将其恢复到CPU的寄存器中;

(3)返回到程序计数器(PC)指示的位置(即,返回到进程中断的代码行),以恢复进程。

上下文切换有时被描述为内核暂停执行CPU上的一个进程,并恢复执行先前暂停的其他进程。虽然这个措辞可以帮助澄清这个概念,但它本身可能会令人困惑,因为根据定义,进程是一个程序的执行实例。因此,暂停进程(suspending progression of a process)的措辞可能更为可取。

很多时候理解操作系统概念得联系生活实际,比如上下文切换就好比人们暂停思考问题A转而去思考问题B。

Q:请解释什么叫long-term scheduling, short-term scheduling, middle-term scheduling. IO bound process, CPU bound process.

A:Schedulers(调度器)是特殊的系统软件,用各种不同的方式解决进程调度问题。他们的主要任务是选择系统的进程并决定执行哪一个进程。

(后面的问题会涉及到程序-线程-进程之间的关系和区别)

长期调度(long-term scheduling):从进程池中选择进程并将他们载入到主存中去等待执行(一次只执行一个进程,剩余进程在就绪队列中等待正在执行的进程产生一个释放信号)

中期调度(middle-term scheduling):选择已经在就绪(ready)状态中的进程

短期调度(short-term scheduling):从准备执行的进程中选择进程,并给它分配CPU

更多关于CPU调度问题看链接:

你可能感兴趣的:(我有100个linux小问题和解答想与你分享(持续更新中))