Linux:上下文,进程上下文和中断上下文概念,上下文切换

Linux:上下文,进程上下文和中断上下文概念,上下文切换_Hani_97的博客-CSDN博客_linux 上下文

目录

上下文有哪些,怎么理解?

中断上下文切换过程:

中断上下文:

上下文概念的由来:

什么情况需要用户态到内核态

中断上下文代码中不能出现:

线程需要保护哪些上下文:SP、PC、EAX代表什么


上下文有哪些,怎么理解?

上下文简单来说就是一个环境

用户空间的程序,通过系统调用进入内核空间,此时用户空间的进程需要传递很多变量,参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器的值,变量等。

进程上下文就是用户进程传递给内核的参数以及内核要保存的一整套变量和寄存器值以及当时的环境,具体来说的就是各个变量和数据,包括所有寄存器值和当时的环境。

一个进程的上下文可以分为3部分:用户级上下文,寄存器上下文以及系统级上下文

1、用户级上下文是指正文,数据,用户堆栈以及共享存储区

2、寄存器上下文是指:通用寄存器,程序寄存器(IP),处理器状态寄存器(EFLAGS),栈指针(ESP)

3、系统级上下文:进程控制块,内存管理信息,内核栈

当发生进程调度时,进行进程切换就是上下文切换

中断上下文切换过程:

硬件通过触发信号,导致内核调用中断处理程序,进入内核空间,在这个过程中,硬件的一些变量和参数也需要传递给内核,内核对这些参数进行中断处理;

中断上下文:

保存硬件传递过来的参数以及内核需要保存的一些其他数据

上下文概念的由来:

OS有用户空间和内核空间两种工作模式,两种模式权限级别不同使得处理器有三种运行状态:

1、内核态,用于进程上下文,内核表示进程运行于内核空间

2、内核态,用于中断上下文,内核代表硬件运行于内核空间

3、用户态:运行于用户空间

系统的两种运行状态的切换才会出现上下文的切换,用户空间的应用程序如果想请求系统服务,就需要用到系统调用。

什么情况需要用户态到内核态

1、进程上下文主要是异常处理程序和内核线程。

2、中断上下文是由于硬件中断时会触发中断请求信号,请求系统处理中断,并且执行中断服务子程序;

中断上下文代码中不能出现:

运行于进程上下文的内核代码是可抢占的,但中断上下文则会一直运行到结束,不会被抢占,所以中断程序的代码需要受到一点限制:

1、睡眠或者放弃CPU

因为内核在进入中断前会关闭进程调度,一旦睡眠或者放弃CPU,内核是无法让其他进程进入。也就是中断服务子程序是一定不能进行睡眠(或者阻塞的)。

2、尝试获得信号量

如果无法获得信号量,代码就会睡眠

3、执行耗时的程序:

中断上下文占用CPU时间过长会严重影响系统功能

4、访问用户空间的虚拟地址

因为中断运行在内核空间

系统的两种不同运行状态,才会出现上下文的概念,用户空间的应用程序,如果需要请求系统服务,比如说需要操作某个物理设备,映射设备的地址到用户空间,必须通过系统调用来实现(系统调用就是操作系统提供给用户空间的接口函数)。

通过系统调用,用户空间的应用程序就会进入内核空间

线程需要保护哪些上下文:SP、PC、EAX代表什么

线程在切换过程中需要保护当前线程ID,线程状态,堆栈,寄存器状态,其中寄存器状态主要包括SP、PC、EAX;

SP:堆栈指针,指向当前栈的栈顶地址

PC:程序计数器,存储下一条将要执行的指令信息

EAX:累加寄存器;

进程间通信方式:

1、无名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,进程的亲缘关系指父子进程关系;

2、有名管道(named pipe)有名管道也是半双工的通信方式,但是他允许无亲缘关系进程间通信;

3、消息队列(message queue):消息队列是消息链表,存放在内核中并且由消息队列标识符标识,克服了信号传递信息少,管道只能承载无格式字节流等缺点;

4、信号量(semophore):信号量是一个计数器,可以控制多个进程对共享资源的访问,常作为锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此主要作为进程间以及同一进程内不同线程之间的同步手段;

5、信号(sinal):信号时一种比较复杂的通信方式,用于通知接收进程某个事件已经发生

6、共享内存(shared memory):共享内存就是一段能被其他进程所访问的内存,由一个进程创建,可以被其他进程访问;

7、套接字(socket):套接字也是一种进程间通信机制,与其他通信机制不同的是,它可以用于不同机器间的进程通信;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值