每当引导加载程序加载操作系统有可能只有一个程序流活性,是吗?这将意味着,一个处理器保存的指令指针,并执行它创立的位置处的EIP寄存器指向的命令。在该点以及如何在系统启动到利用多个过程和/或线程(没有用户级线程,但是CPU线程)?

有帮助吗?

解决方案

在OS将在一个特殊的角色开机(BIOS和引导加载程序完成后) - 作为第一个程序来运行它必须所有的CPU指令直接访问

因此,将设置在系统的各种部件 - 如设置中断处理程序(或中断服务程序)。这样做之后它必须建立一个“调度”的能力。

在实际的“进程/线程”处理将通过该调度程序来完成。它决定,该线程将被运行。此外,它管理着所有的活动线程。在CPU是不知道的所有这些事情。

一旦调度的主要执行决定执行线程(或“过程”)A,它copys的处理数据到所述寄存器(以及寄存器存储到最近运行的线程的InfoBlock)。它会告诉CPU /计时器引起的名词微秒(或其他TIMEUNIT)中断。然后,它会告诉CPU在非操作系统模式下运行“程序”(唯一的CPU知道)(因此,它可能无法修改关键数据或注册自己的中断处理程序没有权限)。

虽然线程A现在执行,硬件定时器将运行。一旦它击中所需的时间偏移,就会产生一个中断。然后,硬件将停止当前程序的执行,并且将调用registred Interrupt Handler代替它。此处理程序将所述调度器的方法(主要执行再次,要准确)。

然后,该方法将再次重新评估哪个线程应该安排等调度继续进行。

其他提示

正确,在引导过程期间,只有一个执行线程。通常是这种情况,直到OS已初始化到低电平存储器管理,调度程序等是功能性的点。

这是即使是在多CPU系统的情况下 - 一个核心是“主处理器”处理早期启动,直到基础设施是有的kickstart其他核

在结束它的高度OS专用;在 有硬件规格细节英特尔架构软件开发人员手册。 (假设你正在谈论英特尔架构;其他架构可能会有所不同似地)

一的第一件事情一个(多线程)OS必须开始是负责管理多个进程(因此也管理多个CPU线程例如。在多核机器上)的调度器。

由该调度器开始第一过程是通常某种“初始化”过程的这又是负责加载其他程序/进程随后

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top