浏览器怎么打开网站服务器,莱芜论坛莱芜话题,网站开发项目工作分解,什么网站可以做十万的分期付款一.什么是内核态和用户态 内核态#xff1a;在内核空间执行#xff0c;通常是驱动程序#xff0c;中断相关程序#xff0c;内核调度程序#xff0c;内存管理及其操作程序。
用户态#xff1a;用户程序运行空间。 二.什么是进程上下文与中断上下文
1.进程上下文#xf…一.什么是内核态和用户态 内核态在内核空间执行通常是驱动程序中断相关程序内核调度程序内存管理及其操作程序。
用户态用户程序运行空间。 二.什么是进程上下文与中断上下文
1.进程上下文
1进程上文其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值进程状态以及堆栈上的内容即保存当前进程的进程上下文以便再次执行该进程时能够恢复切换时的状态继续执行。
2进程下文其是指切换到内核态后执行的程序即进程运行在内核空间的部分。
2.中断上下文
1中断上文硬件通过中断触发信号导致内核调用中断处理程序进入内核空间。这个过程中硬件的一些变量和参数也要传递给内核内核通过这些参数进行中断处理。中断上文可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境主要是当前被中断的进程环境。
2中断下文执行在内核空间的中断服务程序。
三.为什么要进行不同之间状态的切换
在现在操作系统中内核功能模块运行在内核空间而应用程序运行在用户空间。现代的CPU都具有不同的操作模式代表不同的级别不同的级别具有不同的功能其所拥有的资源也不同在较低的级别中将禁止使用某些处理器的资源。Linux系统设计时利用了这种硬件特性使用了两个级别最高级别和最低级别内核运行在最高级别内核态这个级别几乎可以使用处理器的所有资源而应用程序运行在较低级别用户态在这个级别的用户不能对硬件进行直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射即自己的地址空间。
当工作在用户态的进程想访问某些内核才能访问的资源时必须通过系统调用或者中断切换到内核态由内核代替其执行。进程上下文和中断上下文就是完成这两种状态切换所进行的操作总称。我将其理解为保存用户空间状态是上文切换后在内核态执行的程序是下文。
四.什么情况下进行用户态到内核态的切换
1.进程上下文主要是异常处理程序和内核线程。内核之所以进入进程上下文是因为进程自身的一些工作需要在内核中做。例如系统调用是为当前进程服务的异常通常是处理进程导致的错误状态等。
2.中断上下文是由于硬件发生中断时会触发中断信号请求请求系统处理中断执行中断服务子程序。
五.中断上下文代码中注意事项
运行于进程上下文的内核代码是可抢占的但中断上下文则会一直运行至结束不会被抢占。所以中断处理程序代码要受到一些限制在中断代码中不能出现实现下面功能的代码
1睡眠或者放弃CPU。 因为内核在进入中断之前会关闭进程调度一旦睡眠或者放弃CPU这时内核无法调度别的进程来执行系统就会死掉。牢记中断服务子程序一定不能睡眠或者阻塞。
2尝试获得信号量 如果获得不到信号量代码就会睡眠导致1中的结果。
3执行耗时的任务 中断处理应该尽可能快因为如果一个处理程序是IRQF_DISABLED类型他执行的时候会禁止所有本地中断线而内核要响应大量服务和请求中断上下文占用CPU时间太长会严重影响系统功能。中断处理程序的任务尽可能放在中断下半部执行。 4访问用户空间的虚拟地址 因为中断运行在内核空间。