低层次的编程:如何在OS启动一个新线程/进程?
-
09-09-2019 - |
题
每当引导加载程序加载操作系统有可能只有一个程序流活性,是吗?这将意味着,一个处理器保存的指令指针,并执行它创立的位置处的EIP寄存器指向的命令。在该点以及如何在系统启动到利用多个过程和/或线程(没有用户级线程,但是CPU线程)?
解决方案
在OS将在一个特殊的角色开机(BIOS和引导加载程序完成后) - 作为第一个程序来运行它必须所有的CPU指令直接访问
因此,将设置在系统的各种部件 - 如设置中断处理程序(或中断服务程序)。这样做之后它必须建立一个“调度”的能力。
在实际的“进程/线程”处理将通过该调度程序来完成。它决定,该线程将被运行。此外,它管理着所有的活动线程。在CPU是不知道的所有这些事情。
一旦调度的主要执行决定执行线程(或“过程”)A,它copys的处理数据到所述寄存器(以及寄存器存储到最近运行的线程的InfoBlock)。它会告诉CPU /计时器引起的名词强>微秒(或其他TIMEUNIT)中断。然后,它会告诉CPU在非操作系统模式下运行“程序”(唯一的CPU知道)(因此,它可能无法修改关键数据或注册自己的中断处理程序没有权限)。
虽然线程A现在执行,硬件定时器将运行。一旦它击中所需的时间偏移,就会产生一个中断。然后,硬件将停止当前程序的执行,并且将调用registred Interrupt Handler
代替它。此处理程序将所述调度器的方法(主要执行再次,要准确)。
然后,该方法将再次重新评估哪个线程应该安排等调度继续进行。
不隶属于 StackOverflow