首页 > 系统相关 >14 进程的等待与唤醒机制

14 进程的等待与唤醒机制

时间:2023-04-29 16:13:13浏览次数:44  
标签:空转 14 等待 调度 进程 唤醒 运行 函数

进程的等待结构:

kwlst_t 结构用于挂载等待的进程;经常被包含在信号量等结构,是用于保护访问受限的贡献资源;

进程等待:

krlsched_wait 函数:获取当前正在运行的进程,设置进程状态为等待状态,执行脱链操作,并将进程加入等待结构;

进程唤醒:

krlsched_up 函数:从等待数据结构中获取进程,然后设置进程的状态为运行状态,最后将这个进程加入到进程优先级链表中;

空转进程:

空转进程是进程调度器的最后选择;每个CPU一个空转进程;

建立空转进程:

cosmos的空转进程是内核进程,不加入调度系统,而是一个专用的指针指向它;

new_cpuidle 接口函数,调用new_cpuidle_thread 函数,建立空转进程;借用之前的建立进程的操作,最后设置调度系统结构的空转进程和当前进程 指针 ,指向这个空转进程;

其中,将 krlcpuidke_main 空转进程的主函数 传进初始化内核栈函数;主函数就是一个死循环;

空转进程运行:

作为第一进程,手动启动,没法调度;krlcpuidle_start 函数:取出空转进程,设置一下机器上下文结构和运行状态,接着调用retnfrom_first_sched 函数,恢复进程内核栈中的内容,启动运行;

将建立空转进程和启动空转封装为初始化空转进程函数,最后 初始化进程调度器和初始化空转进程 由init_krl函数最后调用;

实验部分(后续更新):

多进程运行:

现在的状态:空转进程调用了 进程调度器, 而进程调度器选择了空转进程, 一个闭环;

 实验部分:

建立两个内核进程,运行两个函数,都调用 krlschedul  函数, 交替运行;

 

标签:空转,14,等待,调度,进程,唤醒,运行,函数
From: https://www.cnblogs.com/xuan01/p/17363963.html

相关文章

  • Cygwin、MSYS2 Bash封装函数restart,重启Windows程序进程向导,输入序号一键重启对应进程
    概述作用:终端输入restart,根据菜单提示输入序号重启特定的软件或进程,定义的重启函数太多不便于记忆的情况,特别是手机远程终端(如:JuiceSSH)连接的情况下,减少手动输入和误操作,其中判定浏览器进程使用了另一篇文章中预定的函数wmicps,ps2为指向wmicps的alias(详见:https://www.cnblog......
  • 14 进程调度
    进程调度的原因:一是CPU同一时刻只能运行一个进程,并且CPU的个数总是少于进程个数,就需要让进程共用一个CPU;二是当一个进程拿不到资源时就应该让出CPU,否则会一直霸占CPU;1、管理进程:进程的生命周期:进程的状态:运行、睡眠、等待、新建、僵死;组织进程:设计思想:链表数据结构,一个优......
  • 【协程】进程,线程和协程
    进程进程,描述的是程序的执行过程,是运行着程序的代表,在操作系统中,每个进程的内存空间都是独立的,使用多进程并发有两个缺点:一是内核的管理成本高,而是无法简单地通过内存同步数据(进程运行的虚拟内存空间),很不方便,于是多线程模式就出现了。线程线程是操作系统能够运行运算调度的最......
  • [ARC144D] AND OR Equation
    ProblemStatementYouaregivenpositiveintegers$N$and$K$.Findthenumber,modulo$998244353$,ofintegersequences$\bigl(f(0),f(1),\ldots,f(2^N-1)\bigr)$thatsatisfyallofthefollowingconditions:$0\leqf(x)\leqK$forallnon-negative......
  • P3573 [POI2014]RAJ-Rally 题解
    非常好题目,爱来自xc。看到有向无环图,想到拓扑序。通过拓扑序,可以轻松求出以每个点为起点的最长路\(disS\)与每个点为终点的最长路\(disF\)。如何求总共的最长路?在\(disS,disF,disS_u+1+disF_v((u,v)\inE)\)中取最大值即可。注意最后一项,表示将连边的二点值相加。......
  • 13 进程
    进程:从进程的结构看:进程是一个应用程序运行时刻的实例;从进程的功能看:进程是应用程序运行时所需资源的容器;从操作系统对进程的实现角度看:进程是一堆数据结构;进程的结构:进程必须要有一个地址空间:这个地址空间包括至少两部分:一部分是内核,一部分是用户的应用程序;每个进程拥有x86......
  • cf-edu-142.D
    题目链接:https://codeforces.com/problemset/problem/1792/D算法:tire树求最长公共前缀(lcp)。反思:题目转换出的题意已大致得到,但怎么具体求不会。思路:tire树维护一个结构,1在哪些位置出现,2在哪些位置出现,以此类推。代码:#include<bits/stdc++.h>usingnamespacestd;consti......
  • 学系统集成项目管理工程师(中项)系列14_采购管理
    1. 概念和术语1.1. 采购是从项目团队外部获得产品、服务或成果的完整的购买过程1.2. 三大类1.2.1. 工程1.2.2. 产品/货物1.2.3. 服务2. 主要过程2.1. 编制采购管理计划2.2. 实施采购2.3. 控制采购2.4. 结束采购3. 合同3.1. 包括买方和卖方之间的法律文......
  • [oeasy]python0141_自制模块_module_reusability_复用性
    自制包内容回忆上次内容上次导入了外部的py文件importmy_module导入一个自己定义的模块 可以使用my_module中的变量不能直接使用my_module.py文件中的变量只要加my_module.作为前缀就可以  直接导入导入变量、函数frommy_mo......
  • [ABC143E] Travel by Car
    2023-02-20题目题目传送门翻译翻译难度&重要性(1~10):4.5题目来源AtCoder题目算法最短路解题思路我们枚举每一对点\((u_i,v_i)\)间的距离小于等于\(t\),那么只要在\(u_i\)加一次油就可以直接到\(v_i\)了,距离设为\(1\);若大于\(t\),那么在\(u_i\)加满油也不能直......