lcsawyer 2015-08-13 03:51 采纳率: 100%
浏览 1635
已采纳

跨考计算机求教,不理解操作系统中的一些概念

不太理解操作系统中的一些概念,想知道这样理解对不对。当一个程序运行时,需要显示结果到显示屏上,为I/O操作,切换到内核态,由于IO操作,该进程进入阻塞状态,系统调度其他进程运行。还系统调用到底是什么?

  • 写回答

3条回答 默认 最新

  • zuishikonghuan 2015-08-13 14:27
    关注

    只说Windows下的,(个人理解),别的系统大同小异
    学过汇编的都知道有种东西叫中断,分为可屏蔽和不可屏蔽的两种。但是Windows的设计者对中断进行了扩充,提出了一个叫“中断请求级”的概念。其中规定了32个中断请求级,其中0-2是软件中断,3-31是设备中断(硬件中断),级别高的中断可以优先处理。举个例子(例子不是我作的)你上课看小说,老师来了,这时候你的大脑就产生了一个中断,这个中断的中断请求级比看小说高,于是你把小说换成了课本,系统的任务调度程序就是根据中断请求的产生来为线程调度CPU时间的,一个CPU核心在一个确定的时刻只能执行一个指令,因此,多任务抢占式操作系统就是通过任务调度来达到“多任务并行”效果的,说白了就是系统在极短的时间里就切换了好几个进程,你看起来就好像好几个进程同时运行了,至于说阻塞状态,就更好理解了,这个线程阻塞了,那么直到恢复之前系统不会为他调度一丝一毫CPU时间的,当然调度其他程序运行了,当然前提是多任务抢占式操作系统,如果是dos之类的单任务系统就不行了。
    系统调用,就是操作系统提供的应用层和内核层直接的正规通信渠道,在Windows下没有系统调用这个概念,Windows的核心是NT内核,在应用层,其实是有子系统这一概念的,微软倒腾出一个子系统是为了兼容16位程序和OS/2等系统程序,win32程序只是调用了win32子系统API,子系统API进一步调用Native API,之后进入内核调用服务函数, Native API就是Windows下的系统调用,说白了还是API,比如CreateFile是win32API,ZwCreateFile(ntdll导出的)是系统调用(还有一个内核导出的是系统服务函数)。Linux下其实也有API和系统调用的区分,比如system()是API,exec函数族是系统调用。为什么是合法渠道呢,因为这本来就是操作系统给应用程序提供的接口,当然合法了,你自己也可以实现进内核啊,比如模拟int 2e

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试