进程
进程由程序、数据、进程控制块(PCB)组成。而进程控制块其实本质就是个数据结构,用来记录进程信息的。
进程的特性:动态性、并发性、独立性、异步性;
进程基本状态:就绪态、运行态、等待态;
Linux的进程的状态:可执行态(包含就绪和运行两种状态)、睡眠态(等待态)、暂停态、僵死态(会释放除PCB以外其他资源)
状态转化:
运行态-->等待态:出现这种情况一般都是其他资源被争抢了。
等待态-->就绪态:资源准备好了,等待CPU;
就绪态-->运行态:CPU时间片轮转到这个进程了;
运行态-->就绪态:时间片到期了,转为就绪态等着;
新创建的进程是处于就绪态的
进程运行模式
一个运行的进程,正常只执行一些普通的非特权指令,就会只在用户态运行,但是如果你需要一些硬件操作,或者权限更高的操作,比如需要与某个设备进行IO,或者要改些什么寄存器的数据,就需要切换到核心态,如果说是进程主动进行系统调用,就是进程用了内核提供的函数,对底层硬件做了操作,那么这个过程是就是通过陷入实现的,如果说是硬件在做其他事情,需要CPU过来帮这个设备执行一下其他操作,那么这个过程我们称为中断,一个进程执行可能就是在中断返回,陷入返回实现用户态与核心态的反复横跳。
核心态、用户态?
CPU基本功能就是执行指令,这个指令可以划分为特权指令和非特权指令,特权指令是指指令本身拥有特殊权限,比如对访问系统中的所有寄存器,内存单元和IO端口,修改系统关键设置等,这些对直接操作修改底层硬件的指令;非特权指令就是普通的计算指令之类的,不涉及资源的操作。核心态下能执行所有权限的指令,用户态下只能执行非特权指令。
进程与操作系统的内核是什么关系?
一个完整的操作系统由一个内核和一些系统服务程序构成,负责最基本的资源管理和硬件控制工作,运行在内核态,可以执行所有指令。内核向下对硬件进行控制,向上提供接口为用户进程提供系统调用接口。
中断是什么?
正常情况下,CPU需要与设备传输数据的时候,会执行打开设备IO指令,然后继续执行其他进程,当设备的IO完成之后,会向CPU发送一个中断信号,CPU此时会响应中断信号,暂停正在执行的进程,去执行中断操作,然后再回来继续执行之前暂停进程。
中断一般指CPU外部事件引发的,CPU内部的系统调用我们称为陷入,陷入和中断,本质就是用户态转为核心态的一个过程。
进程经常需要在用户态和核心态切换,切换就是通过中断实现的
未完待续