当前位置:  技术问答>linux和unix

问一个关于操作系统的弱智问题

    来源: 互联网  发布时间:2016-08-13

    本文导语:  单处理器上运行多个进程,不是很明白。虽然说各进程有自己的时间片。但是在操作系统下有一个调度进程负责进程间切换等工作,如此说来该调度进程是不是一直执行的?如果一直执行,其他进程就没有执行时间了...

单处理器上运行多个进程,不是很明白。虽然说各进程有自己的时间片。但是在操作系统下有一个调度进程负责进程间切换等工作,如此说来该调度进程是不是一直执行的?如果一直执行,其他进程就没有执行时间了。但是它又可以对各个进程进行调度。
单CPU上一个时刻只运行一条指令,该指令明显只能属于一个活动进程。
那到底是怎么做到的 呢?

|
谁跟你说有调度进程的?进程的调度都是通过定时器实现的,没有专门一个进程负责调度
比如10ms为一个时间片,那么到了10毫秒就会有个时钟中断,保存原来进程的上下文,切换到将要运行的进程上下文

|
LZ:

你说的对,中断不会无缘无故产生,在程序的执行过程中,只有非法指令或软件的中断陷入指令才会进入中断(异常)。
你也知道,还有一种情况就是“CPU中断引脚电平变化导致”。在CPU外围,会有定时器(或者叫计数器)这个硬件,当操作系统在初始化的时候对其设定好之后,就会定时产生中断电平信号了。这些电信号通过中断控制器来传输给你所说的“CPU中断引脚”,中断控制器还起着告诉CPU是哪个中断号的作用,以区别是哪个外围产生的中断。

|


结合楼上各位说法,加上我之前的回复,我综合性地补充几点:

1. 楼上各位都说了,这个调度是由定时器中断来触发的,所以它的调度周期有保证。
2. 至于定时器中断是什么中断,显然是硬件中断,也就是说有个专门的硬件部件来实现这个定时的功能,并在超时那一刻向CPU请求中断,它不受程序影响。
3. 定时器是CPU外围硬件还是CPU内部硬件?虽然楼上有几位说是CPU内部定时器,但是很不幸,真实答案是: 定时器是CPU的外围。
    说定时器在CPU内部的兄弟,无疑是从单片机上得到这个信息的。这里我们要搞清楚一个概念:CPU是什么,单片机是CPU不?不,单片机不是CPU,其专业术语叫微控制器(MCU)。它将CPU和一些常用的外围接口例如定时器,串行接口等等集成到一块芯片上,是为MCU。从MCU的角度讲,定时器是内部的。而至于Intel的80x86芯片,则是没有内部定时器的,它也没有任何内部存储,它是“纯正”的CPU,通常采用8253可编程定时器和8259中断控制器来与80x86芯片相配合,以产生所需的定时中断信号。
4. 硬件定时器可以设定定时值吗?答案是当然可以。如果是单片机,其定时器操作就跟普通寄存器操作一样,有专门的一组寄存器来设定定时器。而如果是芯片外部定时器如8253,也是可编程芯片,可以通过CPU的IO口发送信号来与它通讯,进行设定。

如果楼主还是不甚明白,可以参考《微机原理》课程。你这种思考习惯还是很好的。

|
一直执行是没错
不过有一个系统时钟中断,linux pc上是1s 1000次
在这个中断的处理函数里,内核获得cpu控制权,当前进程时间片-1
然后选择合适的进程把cpu使用权交给它

|


有一个硬件可编程定时器定时发中断啊,必须的

|

单处理器上运行多个进程,不是很明白。虽然说各进程有自己的时间片。但是在操作系统下有一个调度进程(是调度内核线程)负责进程间切换等工作,如此说来该调度进程是不是一直执行的(在宏观上是一直执行,一微观上,一个CPU只能跑一个线程)?如果一直执行,其他进程就没有执行时间了。但是它又可以对各个进程进行调度。
单CPU上一个时刻只运行一条指令,该指令明显只能属于一个活动进程。
那到底是怎么做到的 呢(linux是典型的分时多任务OS)?

建议看看源码  ./init/main.c里的asmlinkage void __init start_kernel(void)函数,这里描述了kernel主要启运过程。

|


补充一下,你这个说的是中断陷阱,跟硬件中断没太多关系的,定时器是硬件中断

|
进程的调度 通过定时器实现 

|
上面各位说的不错的,是有那么一个中断服务不停的出来调度时间片的。
如果你的中断时间设计比较短,
那么大多时间cpu都在执行你的调度程序了,可以想象一下把中断的时间设计的和你完成调度工作所需要的时间一样多,那就是系统之运行的你这个东西了,cpu全部被占用了。
所以一般来所系统时间片是不会设的很小的

|


中断啊,中断,lz的硬件知识缺乏

|


“定时器”中断,顾名思义阿

|
OS靠定时和中断驱动,其实定时说白了也是中断,明白么?

|


定时器中断

|
LS有几位对硬件不太了解,不只是电平变化会导致中断(那是外部中断),时钟是内部中断的一种,还有很多中断,各位可以去看一下LINUX内核的源码IRQ部分,都是汇编写的。

    
 
 

您可能感兴趣的文章:

  • 基于linux操作系统之上操作LCD问题,急???
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • 操作系统中PV操作的问题
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  • 问题:在新的操作系统,如Linux中加入现有操作系统的APIs的支持/兼容层算不算侵犯版权?
  • 关于操作系统内部的问题,高手指点
  • pv原语操作的一个问题,望大家解答
  • 关于UNIX文件I/O操作的问题,解决问题立即结贴
  • NOVELL 4.X操作系统的问题
  • 要实现同样的一个问题,例如数据库的查询操作,并将结果返回到页面中,在Servlet与JavaBean中都可以写相同的数据库查询操作的代码,那么
  • 操作系统的以“位”分类问题
  • 一个有关磁盘操作的问题
  • JAVA与数据库操作问题
  • 关于arm linux下硬盘操作的问题
  • SD卡操作问题?
  • 关于pv操作的问题
  • 小妹求教!!关于jsp操作oracle数据库操作的问题(文件读取,插入数据库表相应字段中)
  • USB转串口 读操作的问题
  • 小弟有如下问题:JAVA中怎样实现对操作平台的句柄!谢谢了:)
  • 讨论ejb中数据库操作问题
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • Linux下u盘文件系统相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • windows7操作系统介绍及各种使用技巧总结
  • 请问16位操作系统和32位操作系统的区别?
  • linux 操作系统下ps命令介绍
  • Linux操作系统和Hurd操作系统
  • 怎样在装有红帽操作系统的机子进行格式化,重新装Windows操作系统?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 什么样的操作最耗费服务器的IO操作?
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • C++ I/O 成员 flags():操作flags
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)
  • C++ I/O 成员 width():操作域宽度
  • 1哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • C#操作txt文件,进行清空添加操作的小例子
  • Xcode介绍及创建工程和工程依赖操作步骤
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • MyEclipse如何查看和设置文件编码格式相关操作
  • linux 怎么也能用鼠标操作?? 我的系统是Ubuntu ,不是说linux都用代码操作么??
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问我本机操作系统是2K,如何远程操作RedHat9?
  • c/c++ 操作符优先级参考
  • 关于设备操作的一点迷惑:计算机如何知道驱动程序要操作的设备正好是指定的设备?
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • linux文本模式下,怎样回看前面被屏幕滚掉的命令操作过程或者我的操作过程
  • Plesk 中操作和设置 Docker 容器
  • Python文件操作类操作实例详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3