每天早上七点三十,准时推送干货
假设:我们现在想要让操作系统运行「微信」,那么首先我们会怎么做嘞?在整个过程中,操作系统又做了啥?
如果这是一个面试题,你会怎么回答呢?来看看阿粉的解释~
1 ,双击微信图标。
但是打开一个程序的方式不止一种,不要限制了自己,比如也可以通过命令行键入命令的方式将它打开(不过一般不会这么做吧;
当我们双击了微信图标时,就告诉了操作系统,我希望你能帮我运行「微信」
2 ,此时操作系统接收到请求之后,就去磁盘上找到「微信」程序的相关信息,检测它的类型是不是可执行文件,同时通过程序首部信息确定代码和数据在可执行文件中的位置并且计算出对应的磁盘块地址。
看完上面的解释,你有没有疑问呢?操作系统怎么检测它是不是可执行文件呢?对于 Windows 系统来说,可执行文件是 PE(Portable Executable),对于 Linux 系统来说,可执行文件是 ELF(Executable and Linkable Format),对于 Mac 系统来说,可执行文件是Mach-O(Mach Object)
所以操作系统检测的时候,就看一下是否符合文件规范就能确定了
3 ,操作系统做完第 2 步之后,就会创建一个进程,并且将「微信」的可执行文件映射到该进程结构,意思就是,这个进程负责执行「微信」程序。
4 ,接下来操作系统会为「微信」程序设置 CPU 上下文环境,此时我们假设这个调度程序选中了「微信」程序,那么操作系统就会跳到程