操作系统

摘自-骏马金龙操作系统篇的学习总结

 https://www.junmajinlong.com/os

并行

伪并行-并发

一般电脑通过分时系统来完成类似条同时运行多个进程的假象,其实是由于CPU在进程之间快速切换所达成的效果,如果想真正的达成这种并行的效果,则必须要使用多核CPU,一个核心可以单独执行一个进程,从而达到并行的效果

伪并行-执行过程

比如有ABC三个进程,CPU先会执行A,然后会被调度器调度执行下一个程序,A执行的时间成为时间片,切换到C的时候会保存A的上下文通俗讲就是A执行到了哪里,下次切换回来可以继续执行

进程调度器

影响进程调度器的两个重要指标有相应时间和周转时间,时间越短说明执行的越快,可以给用户更好的体验,这些任务会被优先执行

除了这些进程还有优先级,称为抢占式多任务处理,优先级越高,被CPU执行的可能越大

内核态和用户态

为啥要有两种状态?

一般可以这样区分,操作系统管理的就是内核态进程,用户管理的是用户态进程,内核态的进程拥有管理资源的最高权限,分状态总而言之就是限制用户的权限,这两种状态描述的是一个进程的工作状态

中断

中断就是改变CPU的正常执行流程,让他回到操作系统的控制

硬件中断

任何硬件都有自己的IRQ(中断请求),比如时钟中断,当进程消耗完一个时间片,即产生一个中断,让操作系统可以调度到下一个进程

硬盘IO中断,硬盘读取数据完成,即产生中断,让操作系统做后续处理

软件中断

主要涉及内核态和用户态的切换,trap和return-from-trap

系统调用(system call)

用户进程工作在用户态,它是受限的,很多涉及到硬件的都无法执行,所以它只能请求操作系统去执行,并把结果返回给用户进程

案例

理解系统调用其实很简单,比如有一个程序想要读取a.log文件(例如head -n 1 a.log),读取之前必须先打开文件,但是用户进程是没有权限打开文件的,所以用户进程只能发送一个open()的系统调用请求操作系统去帮忙打开这个文件,操作系统打开这个文件后会将打开的结果——文件描述符交给用户进程,用户进程通过这个文件描述符就能去操作这个文件。再进一步,用户进程想要从这个打开的文件中读取一行数据,用户进程是没有权限读取文件的,只能发送一个read()系统调用请求操作系统去读取这一行数据,操作系统读取这行数据后就能交给用户进程。

中断总流程

1.发起系统调用,请求操作系统帮忙执行某些操作,这会产生软中断;
2.软中断导致陷入内核,CPU控制权交给操作系统,操作系统处理中断,即执行被请求的操作;
3.如果一切正常,操作系统在完成操作后会恢复到断点处继续向下执行,这会回到用户态;
4.用户进程取得操作系统操作的成果,继续向下执行。
原文地址:https://www.cnblogs.com/zx125/p/13957115.html