操作系统

  • 操作系统
  • 操作系统的主要结构:
  • 什么是用户态和内核态?
  • 用户态和内核态的切换:
  • 操作系统提供的三个抽象:


操作系统

操作系统的主要结构:

主要分为三部分:中央处理器CPU,I/O桥以及I/O等外围设备,存储器

操作系统系统整体架构及详细介绍如下图 操作系统的架构_linux


图片来源:《深入理解计算机系统》

什么是用户态和内核态?

通俗的说,大部分应用程序执行,都是在用户态下的,特权级别是比较低的,当需要使用系统资源的时候,一般通过系统调用或者中断,从用户态切换到内核态
操作系统的保护机制,通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操作不会修改另一个进程的地址空间中的数据。在内核态下,CPU可执行任何指令,在用户态下CPU只能执行非特权指令。当CPU处于内核态,可以随意进入用户态;而当CPU处于用户态,只能通过中断的方式进入内核态。

具体来说:

用户态和内核态的切换:

系统调用:这是用户态进程主动要求切换到内核态的一种方式。用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。例如fork()就是执行了一个创建新进程的系统调用

**异常:**当cpu在执行运行在用户态下的程序时,发生了一些没有预知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关进程中,也就是切换到了内核态,如缺页异常。

**外围设备的中断:**当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令而转到与中断信号对应的处理程序去执行,如果前面执行的指令时用户态下的程序,那么转换的过程自然就会是 由用户态到内核态的切换。如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后边的操作等

操作系统提供的三个抽象:

操作系统内核是应用程序和硬件之间的媒介。他提供三个基本的抽象:
1.文件是对I/O设备的抽象。
2.虚拟内存是主存和磁盘之间的抽象。
3.进程是处理器、主存和I/O设备的抽象。