操作系统简介

2017-04-06  本文已影响0人  Fruit_初

Hardware Features for OS


操作系统是事件驱动的(event-driven)


OS Control Flow
操作系统启动之后,所有只有通过event才能进入内核态

内核对每一种事件类型准备了处理函数

当处理器遇到一种给定的事件类型,会


Events



EVENT

分类


相应的处理函数

当用户进程出现不可恢复的错误的时候,操作系统通过杀死当前线程来解决

  • 如没有相应的Handler时
  • 先halt这个进程,然后将进程的状态写到文件中,接着杀死这个进程
  • 在Unix中,这个是很多信号的默认的处理函数
  • 遇到的类型可能是:对NULL的访问,除零,没有定义的指令
  • 这些是致命的使系统崩溃的错误。
  • Windows会出现蓝屏(内核halt,状态写入core file,机器被锁住)
  • 有一些错误可以修复(比如缺页),这种时候我们会返回导致错误的上下文
  • 有一些错误可以通知进程
    • 内核态的处理函数会修改PC的值,使得从处理函数返回时,会跳转到用户程序自己写的处理函数
    • 用户的处理函数也是要登记的
    • 可以使用signal和APC实现

系统调用



只有操作系统可以直接使用物理设备,那用户态的程序该如何使用呢?
—— OS需要提供给用户程序有限的、使用硬件设备的间接的接口。

当一个用户程序想做一些超出自己权限的事情的时候,必须通过系统调用。

系统调用的过程是这样:

这样的流程需要:


系统调用的函数


程序员一般是不会直接写系统调用的,而是使用一些库函数(如C,java的库)。
—— 因为系统调用的具体实现与硬件的架构相关,而使用这些库函数的时候程序员就不需要知道在具体的架构上的系统调用的指令是什么了。只需要直接使用这个同一的接口。


系统调用与函数调用的区别

系统调用是通过int 80H的指令进行陷入的,而函数调用则是直接call即可。系统调用会发生上下文切换,函数调用则不会、


中断



中断是异步的,有

两种风格的中断:


Timer & I/O

timer对操作系统而言很重要,每个一段时间发送一个中断,timer中断的处理函数在内核态。

I/O是硬件和进程间的同步。设备与机器独立运行,在完成任务时,发送中断给CPU,OS的处理函数来处理这个中断。


Interrupt Questions

  1. 中断中止了程序继续运行,并将控制权交给了操作系统。
    那么操作系统可以被打断么?

  2. 还有什么方法可以代替中断,这些方法又有什么劣势?


软件中断(略)


上一篇下一篇

猜你喜欢

热点阅读