Operating System

用于记录大二的操作系统课程笔记 1. 操作系统结构 操作系统的概念 操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件 操作系统原子性 所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征 两种处理器状态:用户态和核心态 **用户态:**用户进程执行所在的状态,运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态,比如,应用程序、文件系统、设备驱动 **内核态:**内核是计算机配置的底层软件,是操作系统最基本、最核心的部分。操作系统内核执行的状态是受保护的状态,当程序运行在0级特权级上时,就可以称之为运行在内核态。比如,时钟管理、中断处理、原语、进程通信、进程管理、存储器管理、cpu调度、设备管理 两种状态的主要区别? 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的,运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。而处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的 为啥要区别? 是为了区别执行特权指令(启动I/O、内存清零、修改程序状态字、设置时钟、允许/禁止终端、停机)与非特权指令(普通的运算指令、控制转移、算数运算、取数指令、访管指令),在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等,如果所有的程序都能使用这些指令就会很危险。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令 怎样区分处理器状态? 用程序状态字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态,0为用户态,1为核心态 两者之间如何切换? 用户态到内核态: 系统调用:这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用 中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程,自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常 核心态到用户态: 通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态” 系统调用 system call 系统调用 系统调用是操作系统提供给应用程序的接口,应用程序可以发出系统调用请求来获得操作系统的服务。比如,系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作,如存储分配、IO操作、文件管理等,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作 系统调用会使处理器从用户态进入核心态,因为系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行 系统调用按照功能分类:设备管理(请求/释放/启动)、文件管理(读/写/创建/删除)、进程控制(创建/撤销/阻塞/唤醒)、进程通信(消息传递/信号传递)、内存管理(分配/回收) 系统调用与库函数的区别: 系统调用是操作系统向上层提供的接口,有的库函数是对系统调用的进一步封装,当今编写的应用程序大多是通过高级语言提供的库函数间接的进行系统调用 中断 interrupt 中断指计算机 CPU 获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断,分为内部中断和外部中断 内部中断(软中断,异常) 信号的来源是 CPU 的内部,与当前执行的指令有关 **陷阱 trap:**是一种有意而为之的,预先安排的异常事件,一般是在编写程序时故意设下的陷阱指令,而后执行到陷阱指令后,CPU 将会调用特定程序进行相应的处理,处理结束后返回到陷阱指令的下一条指令,比如系统调用,程序调试功能等 故障 fault:故障是由错误条件引起的,在 “引起故障的指令” 被执行但还没有执行结束时发生,由 CPU 检测到的一类的意外事件。出错时交由故障处理程序处理,如果能处理修正这个错误,就将控制返回到引起故障的指令即 CPU 重新执这条指令,如果不能处理就报错。 常见的故障为缺页,当 CPU 引用的虚拟地址对应的物理页不存在时就会发生故障。缺页异常是能够修正的,有着、专门的缺页处理程序,它会将缺失的物理页从磁盘中重新调进主存,而后再次执行引起故障的指令时便能够顺利执行了 **终止:执行指令的过程中发生了致命错误,不可修复,程序无法继续运行,只能终止。通常会是一些硬件的错误。**终止处理程序不会将控制返回给原程序,而是直接终止原程序,比如整数除0 外部中断 信号的来源是 CPU 的外部,与当前执行的指令无关 1、可屏蔽中断:通过INTR线向CPU请求的中断,主要来自外部设备如硬盘,打印机,网卡等。此类中断并不会影响系统运行,可随时处理,甚至不处理,所以名为可屏蔽中断。 2、不可屏蔽中断:通过NMI线向CPU请求的中断,如电源掉电,硬件线路故障等。这里不可屏蔽的意思不是不可以屏蔽,不建议屏蔽,而是问题太大,屏蔽不了,不能屏蔽的意思。 注:INTR和NMI都是CPU的引脚 2. 进程 进程和进程实体的概念 进程(Process)的概念 ...

September 1, 2020 · Caiyi