当前位置: 首页 > 科技观察

当你双击一个程序,直到它显示运行界面时,操作系统是做什么的?

时间:2023-03-17 13:31:56 科技观察

假设:我们现在想让操作系统运行“微信”,那么首先要怎么做呢?操作系统在整个过程中做了什么?如果这是一个面试问题,你会怎么回答?来看看阿芬的解释吧~1.双击微信图标。但是打开程序的方法不止一种,不要局限于自己,比如你也可以在命令行中输入命令来打开(但一般不会这样做;当我们双击微信图标,我们告诉操作系统,希望你能帮我运行“微信”2.此时操作系统收到请求后,会去磁盘中查找“微信”程序的相关信息,检查其类型是否为可执行文件,同时通过程序头信息判断代码和数据在可执行文件中的位置,并计算出对应的磁盘块地址,看完上面的解释,你是不是有疑惑了?操作系统如何检测是否为可执行文件?对于Windows系统,可执行文件为PE(PortableExecutable),对于Linux系统,可执行文件为ELF(ExecutableandLinkableFormat),对于Mac系统,可执行文件是Mach-O(MachObject),所以操作系统检测到3.操作系统完成第2步后,会创建一个进程,并将“微信”的可执行文件映射到进程结构中,也就是说这个进程负责执行“微信”程序.4、接下来,操作系统会为“微信”程序设置CPU上下文。这时,我们假设调度器选择了“微信”程序,那么操作系统就会跳转到程序的开头。5、接下来执行“微信”程序的第一条指令。但是会导致页面错误。为什么会出现页面错误?因为程序在执行时,必须先将代码和数据读入内存,CPU才能执行,但是此时由于内存中没有相关数据,触发了硬件机制,捕获了pagefault异常,并将控制权交给操作系统。6、操作系统此时会分配一页物理内存,同时将代码从磁盘读取到内存中,然后继续执行“微信”程序。如果程序很大,一页内存不够用,执行过程中会重复第5步和第6步,直到将所有程序读入内存。7、之后“微信”程序执行相关功能(系统调用),显示“微信”图标8、操作系统收到这个请求,然后找到显示设备。通常,显示设备是由一个进程控制的,因此操作系统将“微信”图标赋予该进程来显示。9、控制设备的进程告诉设备window系统需要显示“微信”图标。窗口系统判断这是合法操作后,会将“微信”图标转换成像素,并将像素写入设备的存储图像区。10.视频硬件将像素转换为显示器一组可以接收的控制数据信号11.显示器解释数据信号并激活LCD屏幕。此时,我们可以在屏幕上看到“微信”的登录界面。至此,当我们双击一个程序显示运行界面时,操作系统所做的工作就比较清楚了。如果你真的被面试官问到,你也可以和面试官争论