携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
多任务系统
㈠什么是多任务系统
⒈并发:由同一个处理器轮换地运行多个程序。或者说是由多个程序轮班地占用处理器这个资源。
且在占用这个资源期间,并不一定能够把程序运行完毕。
㈡程序的切换
⒈系统是通过把待运行程序的地址赋予程序计数器PC来实现程序的切换的。 ⒉PC程序计数器:用来存放吓一跳指令的的地址,属于处理器中的寄存器。 ⒊PC是系统进行程序切换动作的关键,哪个程序占有了PC,哪个程序就占有了处理器。
㈢任务运行时与处理器之间的关系
⒈运行环境包括了两部分:处理器中的运行环境和内存中的运行环境。 ⒉处理器通过两个指针寄存器(PC和SP)来与任务代码和任务堆栈建立联系并运行它。
㈣多任务时的问题
当有多个任务时,处理器中的运行环境应该怎么办? ⒈在内存中为每个任务创建一个虚拟的处理器(处理器部分的运行环境); ⒉当需要运行某个任务时就把该任务的虚拟处理器复制到实际处理器中(SP之间的复制); ⒊当需要中止当前任务时,则把任务对应的虚拟处理器复制到内存(PC之间的复制); ⒋由操作系统的调度器按某种规则来进行这两个复制工作。 也就是说,任务的切换是任务运行环境的切换!
㈤虚拟处理器
⒈虚拟处理器应该存储的主要信息: ①程序的断点地址(PC): ②任务堆栈指针(SP); ③程序状态字寄存器(PSW); ④通用寄存器内; ⑤函数调用信息(已存在于堆栈)。 ⒉具有控制块的程序才是一个可以被系统所运行的任务,任务控制块是由操作系统另行构造的一个数据结构,每个任务都有一个,它除了保存任务堆栈指针SP之外还要负责保存任务其他信息。程序代码、私有堆栈、任务控制块是任务的三要件。任务控制块提供了运行环境的存储位置。 ⒊其实,程序切换的关键是把程序的私有堆栈指针赋予处理器的堆栈指针SP,即实质上系统是通过SP的切换来实现程序的切换的。 ⒋进程的切换需要通过PC实现,但是PC需要通过私有堆栈找到,而私有堆栈需要知道SP,而SP 在任务控制块中,所以进程切换步骤为
㈥小结
一个完整的任务应该有如下三部分: ⒈任务代码(程序); ⒉任务的私有堆栈(用以保护运行环境); ⒊任务控制块(提供私有堆栈也是虚拟处理器的位置); 这些都是任务方应该提供的基本信息。