系统是怎么在普通进程和调度程序间切换的呢
系统是如何在普通进程和调度程序间切换的呢?
系统是如何在普通进程和调度程序间切换的呢?
看了这么长时间的书只知道调度程序负责让各进程循环执行,这就有个疑问,普通进程执行完片刻之后是如何回到调度程序的呢?
我猜系统应该保存调度程序的地址,当普通进程执行完片刻之后在跳回到调度程序。这里是用“栈”来保存吗,我记得“栈”是线程里的东西啊
------解决方案--------------------
系统应该是切换线程而不是进程吧。
系统是如何在普通进程和调度程序间切换的呢?
看了这么长时间的书只知道调度程序负责让各进程循环执行,这就有个疑问,普通进程执行完片刻之后是如何回到调度程序的呢?
我猜系统应该保存调度程序的地址,当普通进程执行完片刻之后在跳回到调度程序。这里是用“栈”来保存吗,我记得“栈”是线程里的东西啊
------解决方案--------------------
系统应该是切换线程而不是进程吧。
相关推荐
- Linux内核期中 Linux内核期中总结 一、计算机是如何工作的 二、存储程序计算机工作模型 三、X86汇编基础 四、计算机工作的三大法宝 五、堆栈相关寄存器:esp(栈顶指针)ebp(栈底指针) 六、计算机工作的两把宝剑:中断上下文和进程上下文切换 七、Linux内核主要特征: 八、操作系统与内核 九、系统调用的三层皮:xyz,system-call和sys-xyz。 十、系统调用的存在,有以下重要的意义: 十一、系统调用上下文 十二、进程控制块PCB 十三、操作系统三大功能:进程管理(核心)、内存管理、文件系统。 十四、进程类型 十五、进程状态转换: 十六.进程管理 十七、进程调度 十八、可执行程序的生成 十九、进程调度与进程调度的时机分析 自我总结
- Linux内核期末总结 20135316王剑桥《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC 1000029000 Linux内核期末总结 一、计算机是如何工作的 二、存储程序计算机工作模型 三、X86汇编基础 四、计算机工作的三大法宝 五、堆栈相关寄存器:esp(栈顶指针)ebp(栈底指针) 六、计算机工作的两把宝剑:中断上下文和进程上下文切换 七、Linux内核主要特征: 八、操作系统与内核 九、系统调用的三层皮:xyz,system-call和sys-xyz。 十、系统调用的存在,有以下重要的意义: 十一、系统调用上下文 十二、进程控制块PCB 十三、操作系统三大功能:进程管理(核心)、内存管理、文件系统。 十四、进程类型 十五、进程状态转换: 十六.进程管理 十七、进程调度 十八、可执行程序的生成 十九、进程调度与进程调度的时机分析 自我总结
- 进程和线程详解 一、进程和线程的概述 二、Java程序的运行原理及JVM的启动是多线程的吗? 3、多线程的实现方案(掌握) 4、线程的调度模型和如何获取和设置线程优先级 假如我们的计算机只有一个CPU,那么CPU在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令。 那么Java是如何对线程进行调用的呢? 线程有两种调度模型。 a:分时调度模型 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片。 b:抢占式调度模型 (Java采用的是该调度方式) 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片的概率相对高一些。 public final int getPriority() 返回线程对象的优先级 int i = 对象名.getPriority(); public final void setP
- 005多线程Thread 多线程Thread 多进程概述 进程 1.定义:正在进行的程序(任务管理器中可以看到)(一个CPU同一时间点只运行一个进程,只运行其中的一个线程)。是系统进行资源分配和调用的独立单位。每一个进程都有他自己的内存空间和系统资源。 2.多进程有什么意义呢?可以提高CPU的使用率。 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。 也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。 3.问题:一边玩游戏,一边听音乐是同时进行的吗?单cpu: 不是。因为单CPU在某一个时间点上只能做一件事情。 而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。 多CPU:可能是。 多线程 线程是依赖于进程而存在。 线程:在同一个进程内又可以执行多个任务,而这每一个任务我就可以看
- 并发编程中的多道技术 多道技术 多道技术中的多道指的是多个程序,多到技术的实现是为了解决多个程序竞争或者说共享同一个资源(cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上复用和空间上复用。 空间上复用:将内存分为几部分,每个部分放入一个程序这样,同一时间内就有了多道程序( 内存是物理隔离, 其他程序无法直接访问其他程序 需要IPC进程间协议来互相通讯) 时间上的复用:当一个程序在等待io操作时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似我们小学数学里面的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去抢夺cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu执行权限) 通过切换 和保存程序状态来实现并发 这就是多道技术
- 系统是怎么在普通进程和调度程序间切换的呢
- 面试(四) Java中如何获取到线程dump文件 如何在两个线程之间共享数据 sleep方法和wait方法有什么区别 为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用 wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别 为什么要使用线程池 怎么检测一个线程是否持有对象监视器 怎么唤醒一个阻塞的线程 什么是多线程的上下文切换 Java中用到的线程调度算法是什么 单例模式的线程安全性 Semaphore有什么作用 线程类的构造方法、静态块是被哪个线程调用的 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池? 什么是线程? 线程和进程有什么区别? 如何在Java中实现线程? 有哪些不同的线程生命周期? 什么是死锁(Deadlock)?如何分析和避免死锁? 什么是线程安全?Vector是一个线程安全类吗? 常用的linux指令 Java异常处理t
- Linux内核学习总结-linux内核学习笔记(九) 计算机是如何工作的---linux内核学习笔记(一) 操作系统是如何工作的---linux内核学习笔记(二) Linux内核的启动过程---linux内核学习笔记(三) Linux内核的系统调用---linux内核学习笔记(四) 分析system_call中断处理过程---linux内核学习笔记(五)(第五次作业没做,也没有成绩) 分析进程创建的过程---linux内核学习笔记(六) 可执行程序的装载和启动---linux内核学习笔记(七) 进程调度和切换---linux内核学习笔记(八)
- Android常见面试笔试题目 解释连接:http://blog.csdn.net/superkris/article/details/7709504 3、谈谈Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中,Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制, 但是,Android系 统的Binder机制中,由一系统组件组成,分别是Client、Server、Service Manager和Binder驱动程序,其中Client、Server和Service Manager运行在用户空间,Binder驱动程序运行内核空间。Binder就是一种把这四个组件粘合在一起的粘结剂了,其中,核心组件便是 Binder驱动程序了,Service Manager提供了辅助管理的功能,Client和Server正是在Binde
- 求Sql语句。解决思路
- 关于验证码的分辨 有需要的朋友 或者做过的朋友来看看