用户态、系统调用、内核态

1、用户态与内核态

根据进程访问资源的特点,我们可以把进程在系统上的运行分为用户态、内核态

1.1 用户态

  • 用户态(user mode) :当进程执行用户自己的代码时,则该进程处于用户态。用户态运行的进程可以直接读取用户程序的数据,但是,这时cpu访问资源受限

1.2 内核态

  • 系统态(kernel mode):当进程执行系统内核代码时,则该进程处于内核态。系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制,这时cpu可以访问计算机的所有资源

2、用户态与内核态的转换

2.1 系统调用

用户态进程通过系统调用申请使用系统态级别的资源,并由操作系统程序代为完成。系统调用使用了操作系统为用户开放的中断来实现,例如Linux的int 80h中断。

在运行的用户态程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。这些系统调用按功能大致可分为如下几类:

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。
  • 文件管理。完成文件的读、写、创建及删除等功能。
  • 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
  • 进程通信。完成进程之间的消息传递或信号传递等功能。
  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。

在这里插入图片描述

2 外围设备的中断

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

3 异常

当CPU在执行用户态程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值