首页 理论教育 操作系统实现之路:字符shell概述及启动

操作系统实现之路:字符shell概述及启动

时间:2023-10-21 理论教育 版权反馈
【摘要】:作为用户与计算机的接口,shell的地位非常重要。但是shell的实现原理却并不复杂,它本身是操作系统的一个程序,用于接受用户输入,然后调用对应的程序完成处理,并反馈结果。同时shell也是大多数操作系统初始化之后,运行的第一个程序。本节简单介绍一下Hello China的字符界面shell的实现。图形界面的shell,在第11章中做详细介绍。如果发现是系统结束消息,则函数返回,从而导致shell线程结束。

操作系统实现之路:字符shell概述及启动

作为用户与计算机的接口,shell的地位非常重要。但是shell的实现原理却并不复杂,它本身是操作系统的一个程序,用于接受用户输入,然后调用对应的程序完成处理,并反馈结果。同时shell也是大多数操作系统初始化之后,运行的第一个程序。本节简单介绍一下Hello China的字符界面shell的实现。图形界面的shell,在第11章中做详细介绍。

Hello China初始化过程中,完成全局对象的初始化后,会创建一个shell线程,用于完成用户交互功能(详细内容请参考3.4.3节)。线程的入口点,即线程的功能函数,就是SystemShell。该函数是一个封装函数,直接调用EntryPoint例程。在EntryPoint例程中,事先定义了线程的消息处理功能,代码如下:

其中,KernelThreadMessage是一个核心线程消息数据结构,线程之间的消息交互都是通过该数据结构进行的,该结构的定义如下:(www.xing528.com)

EntryPoint函数调用GetMessage函数,从shell线程的消息队列中获取消息并调用DispatchMessage函数进行处理。需要注意的是,在调用DispatchMessage处理之前,首先判断是不是一个系统结束消息(如果用户按下了“CTRL+ALT+DEL”组合键,则系统会向shell线程发送一个系统结束消息(KTMSG_THREAD_TERMINAL消息)。如果发现是系统结束消息,则函数返回,从而导致shell线程结束。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈