进程状态,and 如何转换
进程三种状态:运行态,就绪态,阻塞态
运行态:进程占用cpu,并运行
就绪态:已经具备运行条件,等待cpu分配资源
阻塞态:暂时无法运行
运行态和就绪态可以相互转换,有系统进程调度决定。但是阻塞态一般需要等待出发条件,或者另一种情况是没有足够运行资源时会被挂起,等资源满足重新运行。
系统调用,为什么有系统调用
系统调用是在一个进程中,由用户态切换到内核态,在内核中执行任务,或者申请操作系统的资源。系统调用是一种保护操作系统的机制,它提供一系列定义良好的 API 接口来和操作系统交互,避免用户程序直接对内核进行操作,保证了系统的稳定、安全、可靠。
内核态和用户态
多数 CPU 都有两种模式,即用户态和内核态,通常由程序状态字(PSW) 寄存器中的一个位来控制这两种模式的切换(通过 TRAP 指令实现切换)。这两种状态其实对应着应用程序访问资源的权限:在用户态只能访问受限的资源,如虚拟内存,全局变量等,而要访问内核等资源需要通过系统调用等方式陷入到内核中;内核态可以访问操作系统的所有资源,包括内存、I/O 等资源。