xv6可以运行多cpu的计算机上,这个os使用mycpu函数来标识初当前的cpu,使用struct cpu结构体来记录当前的CPU状态。使用cpus这些状态存放于cpus数组中,使用ncpu来标志cpu的个数。

  1 // Per-CPU state2 struct cpu {3   uchar apicid;                // Local APIC ID 每个cpu都有一个唯一硬件ID,这个ID可以lapicid()函数进行获取,然后存放于这个字段中。4   struct context *scheduler;   // swtch() here to enter scheduler5   struct taskstate ts;         // Used by x86 to find stack for interrupt6   struct segdesc gdt[NSEGS];   // x86 global descriptor table7   volatile uint started;       // Has the CPU started?8   int ncli;                    // Depth of pushcli nesting.9   int intena;                  // Were interrupts enabled before pushcli?10   struct proc *proc;           // The process running on this cpu or null11 };1213 extern struct cpu cpus[NCPU]; //当前系统中存在的CPU14 extern int ncpu;

以下函数主要功能是获取 运行当前代码的cpu对应的ID,然后通过这个ID在cpus数组中进行匹配,得到当前CPU信息(这个cpu信息是已经事先通过程序获取的)

 35 // Must be called with interrupts disabled to avoid the caller being36 // rescheduled between reading lapicid and running through the loop.37 struct cpu*38 mycpu(void)39 {40   int apicid, i;4142   if(readeflags()&FL_IF)43     panic("mycpu called with interrupts enabled\n");4445   apicid = lapicid();46   // APIC IDs are not guaranteed to be contiguous. Maybe we should have47   // a reverse map, or reserve a register to store &cpus[i].48   for (i = 0; i < ncpu; ++i) {49     if (cpus[i].apicid == apicid)50       return &cpus[i];51   }52   panic("unknown apicid\n");53 }

转载于:https://www.cnblogs.com/Dream-Chaser/p/9158917.html

xv6解析-- 多处理器操作相关推荐

  1. KingbaseES V8R6运维案例之---wal日志解析DDL操作

    ​案例说明: 通过sys_waldump解析DDL操作,获取DDL操作的日志条目具体内容. 适用版本: KingbaseES V8R3/R6 一.DDL事务操作对应的wal日志文件 # 查看当前onl ...

  2. jsoup 对 HTML 文档进行解析和操作

    使用 jsoup 对 HTML 文档进行解析和操作 使用 jsoup 对 HTML 文档进行解析和操作 jsoup 简介 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser ...

  3. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  4. java xml开源操作类,xml解析和操作的开源工具项目涵盖java c++ php 等语言

    XML解析器-Xerces    XML操作库-dom4j    XML文档解析器-Digester    J2ME-的XML-解析器-kXML XML解析类库-MXP1    XML解析器-LibX ...

  5. Java解析excel操作

    问题描述 在我们的项目中经常会遇到需要导入一定规格的excel文档,然后来解析里面的内容转换为数据导入到数据库或者进行其他操作.这样解析的问题就来了,解析excle从文件后缀名上分为.xls和.xls ...

  6. web3py 解析智能合约交易结果(event事件日志解析、操作结果解析、log解析)

    ____tz_zs 一.使用 Web3.py 解码交易日志 ContractEvent 提供了与合约事件交互的方法.提供给合约事件子类的位置和关键字参数将用于通过签名查找合约事件. processRe ...

  7. 未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!

    原标题:Excel操作小技巧,助你学好计算机二级office! Office考试中最难的是什么?当然是Excel函数啊! 小编辛苦整理了excel10大懒人技巧,让你考试速提分!还不赶紧收藏起来 一. ...

  8. RxSwift之深入解析Using操作的应用和原理

    一.前言 ReactiveX 官方文档 对于 Using 的描述如下: create a disposable resource that has the same lifespan as the O ...

  9. 使用 jsoup 对 HTML 文档进行解析和操作

    简介: jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方 ...

最新文章

  1. 在jsp中点击按钮,在bean中把已经查出的数据,生成csv文件,然后在ie中自动打开
  2. LUA C 交互 cocos
  3. 改变自己,YT,吵架,和好,感冒,烦,新的项目,旧的垃圾,呵呵呵。。
  4. 计算机网络五层协议简介
  5. 用Notepad++来编写第一个HTML网页程序,你也可以!!!
  6. 树莓派(Raspberry Pi)搭建简单的lamp服务
  7. 电脑键盘打字手法_电脑快速打字技巧,送个每一位初学者
  8. python 参数一样结果不一样_优化Keras的超参数:相同参数的结果不同
  9. 【游戏开发实战】下载原神模型,PMX转FBX,导入到Unity中,卡通渲染,绑定人形动画(附Demo工程)
  10. 凤凰系统 android 分辨率,凤凰系统如何修改屏幕分辨率[多图]
  11. 计算机科学和机器学习中的代数、拓扑、微积分和最优化理论
  12. 电脑的热点手机连接不上怎么办
  13. MATLAB神经网络工具箱(代码简单实现)
  14. mysql 基础 打油诗
  15. 生活娱乐 装修最容易被忽视的十大装修细节
  16. java中 jmm,JMM(JAVA内存模型)
  17. 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】
  18. 深度学习 lr_scheduler 简易的warmup装饰器
  19. Java , HashMap与Big-man
  20. [管理]与ERP有关的主要管理概念

热门文章

  1. python可变序列_python序列中可变数据类型有什么
  2. 服务器放n个网站,服务器放n个网站
  3. filter_var()函数
  4. XAML Workflow Schema
  5. 【dp 贪心】bzoj4391: [Usaco2015 dec]High Card Low Card
  6. “只有DBA才能导入由其他DBA导出的文件”各种解决办法
  7. getElementById()方法取值
  8. [GraphQL] Create a GraphQL Schema
  9. PHP5各个版本的新功能和新特性总结(转载 http://www.jb51.net/article/48150.htm)
  10. 赫夫曼编码c++中的实现