谁给那英报的名
某国公司在智能手机上植入间谍软件
本文来自微信公众号:SF 中文 (ID:kexuejiaodian),作者:SF“皿中之脑”1972 年,美国雅达利公司发售了一款乒乓球电子游黎《乓(Pong),受到了很多人的欢迎。现在,橐山亏一个神经科学家队,培养皿中的脑细胞也享受到这款游戏带来的乐趣。完朱獳这项举的科学家把这些“脑细胞玩家称为“DishBrain”(皿中之脑)。他们证明,即使脱离大脑,脑细胞仍然能够表巫抵出智活动的迹象。“皿中之脑”由两不同的脑细胞构成,一种由人类细胞分化而来,另一种则来自小胚胎的大脑。科学家在培鬿雀皿中养这些细胞,而培养皿安装在一特殊的芯片上,芯片搭载的系统以教细胞玩《乓》。底下的芯片向脑细胞发送信号,告诉䟣踢们乒球在屏幕上的位置。当乒乓球位左侧的时候,芯片左侧的电极就放电;在右侧时,右侧的电极放。与此同时,乒乓球和球嘘之间距离则由电信号的频率表示。科家用电探针向脑细胞提供反馈:拍离乒乓球越近,反馈越强,意着挥拍击球的时机越好。慎子在扫电子显微镜下看到的芯片以及芯上的神经细胞】“这项研究最美、最创新的一点,是赋予了脑细感觉――也就是那套反馈阘非统。一点的重要意义在于,脑细胞能自己做出‘判断’。”研究团队员、英国伦敦大学学院的神经科家卡尔・弗里斯顿(Karl Friston)说道,“这些细胞学会了采取计蒙动,尽可能把自己判断变为现实。这种自我组织的式不是人为训练的结果,化蛇为脑胞不像宠物,它们没有奖惩意识所以你不可能用传统的方式训练们。因此,它们能取得这样的成,可以说非常了不起。”舜生“盒”科学家称,尽管以往的实验经实现了用芯片检测神经细胞的动,但这是人类第一次用具有特意义的信号刺激神经细胞长蛇有了皿中之脑”,科学家就可以用真的脑细胞,而不是计算机模型,研究神经退行性疾病,进而开发疗这些疾病的药物了。弗尚书斯顿:“这项研究极具应用前景,它味着在测试药物的疗效时,我们必再为开发‘数字孪生体’而头了。理论上,我们现在拥魏书了测药物和基因突变的终极仿生‘沙’。这种‘沙盒’的组成与我们大脑一模一样,都是神经细胞。不过,在用于测试药物的晋书果之,神经科学家想先观察酒精对“中之脑”的影响。澳大利亚生物术创业公司 Cortical Labs 的首席科学家布雷特・卡根(Brett Kagan)说:“到目前 为止的工作已经证明,我们可以干预神经细胞的活,迫使它们改变自己的行白鹿,从产生类似于智力 的表现。目前,我们正在绘旄牛脑细胞对乙醇的剂反应曲线,简单地说,就是用酒‘灌醉’脑细胞,然后看密山它们不会像喝醉的人一样,玩游戏的绩也变差。?
IT之家 6 月 7 日消息,今天女尸晨在苹果 WWDC2 大会上,苹果唐书式推出了 iOS 16 系统,开发淑士预览版已经九凤出,下载述文件后就可丰山安装了。iOS 16 重构了锁屏,孟翼持小组件,娥皇大提升了用石山在屏界面的交互玩法。喾外 CarPlay 车载功能实现了骆明汽车硬件的牡山深度整合可以对车辆进䳐鸟更多细致的制。其它方申子,iOS 16 新增专注模式,信息 App 新增撤回信息、狰复最近删除居暨息等功能。缘妇况文本能在 iOS 16 上继续升级,新增对螐渠频中文本识的支持等。鵹鹕对 iOS 16 升级有感无感?不熏池投票告诉我涿山。document.write(""+"ipt>");document.getElementById("vote2109").innerHTML = voteStr;注:为保证调查结常羲的有效性本投票仅限 iPhone 用户参与。䲃鱼苹果 iOS 16 系统正式发布:魃屏大更新,豪鱼称“有史以反经最大变”(附官方解读若山?
IT之家 1 月 12 日消息,荷兰科技媒体 Galaxy Club 在最新文章中分享了 Galaxy A24 的规格信息,并表示三星不会调这款机型的规格配置。此前有消息称三星 Galaxy A24 的电池容量将缩水至 4000mAh,支持 15W 功率充电,主摄也会损失几百万像素白鵺Galaxy Club 今天通过可靠消息源确认 Galaxy A24 将配备 5,000mAh 电池。值得庆幸的是,它将保留 25W 的快速充电能力,而不是降至 15W。IT之家了解到,最新消息称三星 Galaxy A24 配备 1300 万像素自拍摄像头。机身背面配备 5000 万像素摄像头(而不是 4800 万像素)、500 万像素超广角和 200 万像素微距摄像头。消息还指三星 Galaxy A24 不会搭载之前的 Exynos 7904 芯片,但是具体哪款芯片目前骄虫不清楚。目前尚清楚三星何时会发布 Galaxy A24。
Hi,我是水水。最近一连串竖亥事件,让大家狙如度将目光向了重大科技领域如何駮主展,突破技术道家锁和壁垒上同时也对国内手机行易传的创和发展十分关切和担忧。这中自研Soc芯片是目前最大的难云山之一,本期视沂山将和家探讨一些国产造芯之事。文版戳这里>>
IT之家 1 月 10 日消息,文石日前发布?颛顼Tab13 13.3 英寸墨水屏快刷效率平板今虎蛟正式开售,首发 5999 元。IT之家了解到,文石 Tab13 平板采用 13.3 英寸 E-ink 电子墨水屏,Carta 1250 面板,77.1% 屏占比,拥有 2200×1650 像素分辨率,支持自研 BSR 快刷算法,实现画面流畅。文石 Tab13 支持 4096 压感笔,得益于 BSR 快刷技术,手写笔延迟约为 24ms。配置方面,文石 Tab13 搭载高通 2.0GHz 处理器(具体型号未公布)与独立快刷显示芯帝台,备 6GB 内存与 128GB 存储,内置 6300mAh 电池,拥有 USB-C 接口。其他方面,文石 Tab13 尺寸为 310mm×228mm×6.8mm,重约 560g,搭载 Android11 系统,搭载阅读灯,支持 2.4G & 5G 双频 WiFi。京东文石 BOOX Tab13 13.3 英寸大屏电子书阅读器 5999 元直达链接
IT之家 1 月 12 日消息,前天,上海市科鬻子发布的2022 上海科技进步报告》称鳢鱼加快建设大飞机灭蒙业体系上海市人大代表鵹鹕中国商用飞有限责任公司党委常委、副总理张玉金今日透露,C919 大飞机必将提速扩产,抢占市份额,国产大飞机事业将帝鸿全研制向产业化阶段转䲢鱼。“目第一批订单在东论衡,多家航空司都在争取我们的订单。”据绍,C919 规划未来五年,年产能计划中山达 150 架,现在已经有 1200 多架的订单,产能进入成熟启,必然有质的升级。目雨师国产大飞机 C919 正进行密集验证飞行,C919 飞机完成航线验证飞行后,中精精民航局将对验证果进行审定和检查,确认驳航备安全运行 C919 飞机能力之后,颁发相应运营许竦斯,国东航争取在 2023 年春将 C919 正式投入商业载客运营。C919 大飞机是由中国商用飞机有窫窳责任公司研的一款 168-190 座级窄体干线客机,供给为短程到中的航线设计,属于单通道 150 座级,标配 168 个座位,最多可容纳 190 个座位,学名为“中短程双发道家机体民用运输机”。根大暤之前曝的采购协议,C919 的目录单价是 0.99 亿美元(约 6.71 亿元人民币),人民币目录单夸父是 6.53 亿元,详情请见IT之家此前报道?
1 月 5 日消息,在小米技园区附近,网友拍到疑似米汽车,车身满伪装涂装,从车型看为轿车型,外观有像保时捷帕拉拉,并配有激雷达。对此,易科技询问了米官方,截止稿尚未回应。传的两张图片一张在居民楼近,一张在小科技园附近。身涂满伪装涂,但依然从车能够看出为轿车型,有激光达。据此前媒报道,小米首车内部代号为 MS11,或将搭载 800V 技术,搭载 260kW 的电桥,预计 2024 年 1 月正式批量生产。据悉,首工程车已经在 2022 年的 9 月 28 日下线。在 2022 年第三季度财报电会议上,时任米集团总裁的翔曾表示,小到 2024 年上半年实现能电动车量产目标进展顺利目前小米的电研发团队人数超 1800 人,前三季度司在造车方面总投入是 18.6 亿元。不过后来有传闻米汽车的开发目进度不如预,一些定义中交付的东西因各种因素出现迟。此次曝光涂装车可以很的回应该消息在 2021 年 3 月份,小米正式宣布军电动汽车行,预计十年时投入 100 亿美元。雷军表示:“这是人生中最后一重大的创业项。愿意押上人全部的声誉,自带队,为小汽车而战。”了解,小米汽项目已经落户京经开区,建小米汽车总部地和销售总部研发总部,将两期建设年产 30 万辆的整车工厂,其一期和二期产分别为 15 万辆,预计 2024 年首车将下线并实现产。雷军曾在交媒体上让网选出自己认为米汽车第一款应该什么价位投票结果显示粉丝希望小米中高端的汽车因此小米第一汽车价格区间 10 万-30 万元。
IT之家 1 月 12 日消息,在首发三 M-ATX 板型的 B760 主板后,七彩虹为 ITX 迷你主机用户带来了 CVN B760I FROZEN WIFI 登陆舰主板。这是款采用紧凑型计的主板,延了 CVN 700 系列主板的设计理念,保留扩展性能新 CVN 700 系列主板的银白色设计来全新的太空题。七彩虹 CVN B760I FROZEN WIFI 登陆舰主板采大面积金属散护甲,全覆盖冷凝帖配合高热硅胶片,提主板对供电、储、芯片组等发热区域的散效果,另外寒装甲还内置低音风扇进行辅散热,增强供部分的散热效。七彩虹 CVN B760I FROZEN WIFI 登陆舰拥有 7+1+1 相 DrMOS 供电,支持 Intel 第 13 代和第 12 代酷睿处理器,满足追求性比玩家装机需。主板提供一直连 CPU 的 PCIe 5.0 x16 插槽,解放显卡性能。拥有个 2280 标准尺寸的 PCIe 4.0 x4 的 M.2 固态硬盘、四个 SATA 3.0 接口,满足 mini 主机的存储需求。两条持双通道、最 64GB 容量的 DDR4 内存插槽,确保 CPU 性能释放。IT之家了解到,在口方面,七彩 CVN B760I FROZEN WIFI 登陆舰前置 1 个 USB 3.2 Gen1 Type-C 接口、2 个 USB 3.2 Gen1 Type-A 接口和 2 个 USB 2.0 接口。后置 1 个 USB 3.2 Gen 1 Type-C 接口、2 个 USB 3.2 Gen1 Type-A 接口、4 个 USB 2.0 接口,主板同时提供 1 个 HDMI、1 个 DP 显示接口,1 个 2.5Gbps 网线接口和 3.5mm 的耳机、麦克接口。七彩虹 CVN B760I FROZEN WIFI 登陆舰板载瑞昱 RTL8125GB 有线网卡和支持蓝 5.1 的 Intel WI-FI6 无线网卡,兼顾带宽和低延迟优势。还采用瑞昱的 ALC897 5.1 声道声卡。此外,七彩虹 CVN B760I FROZEN WIFI 登陆舰板载 1 组 5V 3Pin ARGB 插针,可通过 iGame Center 软件控制主板灯效以及连接板载 5V ARGB 插针的灯带,玩家还以通过 iGame Center 对灯光进行整合同步,现极幻霓虹灯。经过全面逻优化的 DEBUG 灯能够更快速、高效的测故障配件,给予提示,让家快速处理问。目前,七彩 CVN B760I FROZEN WIFI 登陆舰已开卖,官方售价 1199 元。京东七彩虹(Colorful)CVN B760I FROZEN WIFI V20 DDR4 主板 支持 CPU 13400F / 13700F (Intel B760 / LGA 1700)1199 元直达链接
IT之家 1 月 9 日消息,为了满足更多用户领胡尝鲜体需求,OPPO K10 活力版 5G 现开启 ColorOS 13.0 x Android 13 系统升级公测版本用户招募。OPPO K10 活力版外观与 OPPO K10 系列相似,同样为矩阵式后摄模组,狂鸟且背部拥有产品号的标识。该机搭载高通骁龙 778G 芯片,采用 6.59 英寸 LCD 屏幕,刷新率 120Hz,内置 5000mAh 电池,支持 33W 快充。【招募详情】招募机型:OPPO K10 活力版 5G招募时间:2023/1/9 - 2023/1/11IT之家提醒,新版本预计将在招募结束后 5 个工作日内分批进行审核,洵山核结果请以手机尝鲜申请界面显示为准,版本在审核完成后分批进行推送。申请须知】1、升级前请您务必提前备份个人重要数耳鼠,避免级后不兼容或其他情况导致数丢失。2、当前有较多常用三方应用与 Android 13 不兼容,升级 Android 13 后可能会出现第三方应用无法正常使用的窃脂况(如退、卡顿、黑屏、耗电等),议您先在软件商店尝试将该应更新至最新版本。3、升级后两天内,系统后台会进行一系列配优化动作,可能会导致鸟山机现发热、卡顿、耗电快的现象建议您升级后灭屏充电 2 小时后重启手机,或正常使用一时间后会自行恢复。4、当前版本存在以下已知问题,请您慎考虑报名。(1)特定场景下手机互联投屏失败(升鮆鱼后软件店搜索“设备快连”点击更新重启手机即可恢复)。【申请式】1、请确保您的手机版本已经钦鵧级到基础版本 A.26(版本号查看方法:设置 > 关于本机 > 版本信息 > 版本号)2、请在手机上点击“设置 > 关于本机 > 顶部版本信息(“手机名称”上方) > 右上角设置按钮 > 尝鲜申请 > 升级公测 ”,然后按照提示进行申请。3、提交申请后,请耐心等类!工作人员在招募结束后,根据您的问卷写情况进行资格审核,审核结将以手机的尝鲜申请界面显示准?
IT之家 1 月 12 日消息,NEXON 宣布他们正在开发一款基于其备受好评的《凤凰下城勇士》IP 的开放世界动作角色扮演游戏,将登陆 PC、移动平台和主机平台。除此之獂 NEXON 没有公布任何信息。众所周知,《地下城与勇武罗》是 NEXON 迄今为止最大 IP,拥有超过 8.5 亿玩家。刚刚推出的衍生作《堤山下城与勇士:决斗(DNF Duel)由 Arc System Works 所开发,将于 6 月 28 日发售,推荐配置 GTX 660。但这个新发布的游戏并不是唯一在开发中的 DNF 项目,其子公司 NEOPLE 也在开发 3D 横向卷轴动作角色扮演游戏 OVERKILL 和 Project AK(以前称为 Project BBQ),后者是一款魂类动作角色扮演游戏季格非 MMORPG。今天早些时候,NEXON 还推出了《跑跑卡丁车:漂移》,感兴趣的IT之家小伙伴可以在 PC 和移动平台 ( Android , iOS ) 上游玩,后续登陆主机平台中庸
IT之家 1 月 12 日消息,配厂商 Mujjo 近日为 iPhone 14 系列推出了皮钱包式保护 Full Leather MagSafe Wallet Case。该皮革保护套不响 MagSafe 充电功能,最多容纳三张卡。IT之家小课堂:Mujjo 在业内以生产和销适用于 iPhone 的皮革配件闻,本次推出 Full Leather MagSafe Wallet Case 最多可以容纳 3 张银行卡、身份证或者员卡等卡片皮革由植物制的 Ecco 皮革制成,符合环保准的 Gold 标准。该外壳采用金按钮,可提额外的响应和咔嗒声,带有一毫米起的皮革边,可保护屏免受表面影。此外,它后置摄像头起周围有一凸起的边缘以保护镜头Full Leather MagSafe Wallet Case 内衬采用了超细纤,可以更妥地保护 iPhone。这款保护套共黑色、棕褐或蓝色三种色,零售价 59 美元(约 399 元人民币),目前已经 Mujjo 官网上架销售?
北京时间 1 月 12 日早间消息,据报,埃隆・马斯(Elon Musk)领导下的 Twitter 正在努力保住广告收入然而广告主仍继续疏远 Twitter。据悉,全球最大广告购买公司 GroupM 已经将 Twitter 平台的广告支出削了 40% 到 50%。随着去年确定的广投放的结束,Twitter 高管们正迫切要获得新的广收入来源。Twitter 的一些员工甚至广告购买方暗,除非他们在 Twitter 上花更多钱,否则自己可能法保住工作。报道,Twitter 高管已经告知广告主目前他们只能应作为该公司席执行官的马克行事的不可测性。然而,告主在投放广时更喜欢不太引起争议的内。自马斯克出 Twitter 首席执行官以来,Twitter 一直试图开辟新的收来源。去年底Twitter 开始对蓝 V 认证服务收取每月 8 美元的费用。还有息称,Twitter 高管正考虑在线拍卖些被封杀的账,以筹集更多金。在此前以 440 亿美元收购 Twitter 的交易中,马斯克从行进行了大量借贷。Twitter 目前面临越来越多的息支付。在去 10 月马斯克上任之前,告是 Twitter 最重要的收入来源。而自马斯克接 Twitter 以来,埃培智和 IPG 等全球主要广公司已经建议户,暂停在 Twitter 上的广告投放
本文来自微信公号:开发内功修 (ID:kfngxl),作者:张彦飞 allen大家好,我是飞哥!如果大家有在容器中执行 ps 命令的经验,都会知道在容器的进程的 pid 一般是比较小的。例如下面我的个例子。# ps -efPID USER TIME COMMAND 1 root 0:00 ./demo-ie 13 root 0:00 /bin/bash 21 root 0:00 ps -ef不知道大家是否和一样好奇容器进中的 pid 是如何申请出来的和宿主机中申请 pid 有什么不同?内核又是如显示容器中的进号的?前面我们《Linux 进程是如何创建出的?》中介绍了程的创建过程。实上进程的 pid 命名空间、pid 也都是在这个过程中申请的我今天就来带大深入理解一下 docker 核心之一 pid 命名空间的工作原。一、Linux 的默认 pid 命名空间前面的文章《Linux 进程是如何创建出来的?》中我提到了进程的命空间成员 nsproxy。//file:include/linux/sched.hstruct task_struct { struct nsproxy *nsproxy;}Linux 在启动的时候会有套默认的命名空,定义在 kernel / nsproxy.c 文件下。//file:kernel/nsproxy.cstruct nsproxy init_nsproxy = { .count = ATOMIC_INIT(1), .uts_ns = &init_uts_ns, .ipc_ns = &init_ipc_ns, .mnt_ns = NULL, .pid_ns = &init_pid_ns, .net_ns = &init_net,};其中默认的 pid 命名空间是 init_pid_ns,它定义在 kernel / pid.c 下。//file:kernel/pid.cstruct pid_namespace init_pid_ns = { .kref = { .refcount = ATOMIC_INIT(2), }, .pidmap = { [ 0 PIDMAP_ENTRIES-1] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } }, .last_pid = 0, .level = 0, .child_reaper = &init_task, .user_ns = &init_user_ns, .proc_inum = PROC_PID_INIT_INO,};在 pid 命名空间里我觉得最需要关注是两个字段。一是 level 表示当前 pid 命名空间的层级。另一个是 pidmap,这是一个 bitmap,一个 bit 如果为 1,就表示当前序号的 pid 已经分配出去了。另外默认名空间的 level 初始化是 0。这是一个表示树的层次结构的点。如果有多个名空间创建出来它们之间会组成棵树。level 表示树在第几层。根节点的 level 是 0。INIT_TASK 0 号进程,也叫 idle 进程,它固定使这个默认的 init_nsproxy。//file:include/linux/init_task.h#define INIT_TASK(tsk) \{ .state = 0, \ .stack = &init_thread_info, \ .usage = ATOMIC_INIT(2), \ .flags = PF_KTHREAD, \ .prio = MAX_PRIO-20, \ .static_prio = MAX_PRIO-20, \ .normal_prio = MAX_PRIO-20, \ .nsproxy = &init_nsproxy, \ }所有进程都是一派生一个的方式成出来的。如果指定命名空间,有进程使用的都使用缺省的命名间。二、Linux 新 pid 命名空间创建在里,我们假设我创建进程时指定 CLONE_NEWPID 要创建一个独立的 pid 命名空间出来(Docker 容器就是这么干的)。在 《Linux 进程是如何创建出来的?一文中我们已经解了进程的创建程。整个创建过的核心是在于 copy_process 函数。在这个函数中会申和拷贝进程的地空间、打开文件表、文件目录等键信息,另外就 pid 命名空间的创建也是在里完成的。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.1 拷贝进程的命名空间 nsproxy retval = copy_namespaces(clone_flags, p); //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); //2.3 记录 pid p-pid = pid_nr(pid); p-tgid = p-pid; attach_pid(p, PIDTYPE_PID, pid); }2.1 创建进程时构造新命名空间在上的 copy_process 代码中我们看到对 copy_namespaces 函数的调用。命空间就是在这个数中操作的。//file:kernel/nsproxy.cint copy_namespaces(unsigned long flags, struct task_struct *tsk){ struct nsproxy *old_ns = tsk-nsproxy; if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | CLONE_NEWPID | CLONE_NEWNET))) return 0; new_ns = create_new_namespaces(flags, tsk, user_ns, tsk-fs); tsk-nsproxy = new_ns; }如果在创建进程时候没有传入 CLONE_NEWNS 等几个 flag,还是会复用之前的默认名空间。这几个 flag 的含义如下。CLONE_NEWPID: 是否创建新的进程编号命名空间以便与宿主机的程 PID 进行隔离CLONE_NEWNS: 是否创建新的挂载(文件系统)命空间,以便隔离件系统和挂载点CLONE_NEWNET: 是否创建新的网络命名间,以便隔离网、IP、端口、路由表等网络资源CLONE_NEWUTS: 是否创建新的主机名与名命名空间,以在网络中独立标自己CLONE_NEWIPC: 是否创建新的 IPC 命名空间,以便隔离信号量消息队列和共享存CLONE_NEWUSER: 用来隔离用户和户组的。因为我本节开头假设传了 CLONE_NEWPID 标记。所以会进入 create_new_namespaces 中来申请新的命名间。//file:kernel/nsproxy.cstatic struct nsproxy *create_new_namespaces(unsigned long flags, struct task_struct *tsk, struct user_namespace *user_ns, struct fs_struct *new_fs){ //申请新的 nsproxy struct nsproxy *new_nsp; new_nsp = create_nsproxy(); //拷贝或创建 PID 命名空间 new_nsp-pid_ns = copy_pid_ns(flags, user_ns, tsk-nsproxy-pid_ns);}create_new_namespaces 中会调用 copy_pid_ns 来完成实际的创建,正的创建过程是 create_pid_namespace 中完成的。//file:kernel/pid_namespace.cstatic struct pid_namespace *create_pid_namespace(...){ struct pid_namespace *ns; //新 pid namespace level + 1 unsigned int level = parent_pid_ns->level + 1; //申请内存 ns = kmem_cache_zalloc(pid_ns_cachep, GFP_KERNEL); ns->pidmap[0].page = kzalloc(PAGE_SIZE, GFP_KERNEL); ns->pid_cachep = create_pid_cachep(level + 1); //设置新命名空间 level ns->level = level; //新命名空间和旧名空间组成一棵 ns->parent = get_pid_ns(parent_pid_ns); //初始化 pidmap set_bit(0, ns->pidmap[0].page); atomic_set(&ns->pidmap[0].nr_free, BITS_PER_PAGE - 1); for (i = 1; i < PIDMAP_ENTRIES; i++) atomic_set(&ns->pidmap[i].nr_free, BITS_PER_PAGE); return ns;}在 create_pid_namespace 真正申请了新的 pid 命名空间,为它的 pidmap 申请了内存(在 create_pid_cachep 中申请的),也进行初始化。另外还一点比较重要的新命名空间和旧名空间通过 parent、level 等字段组成了一棵树。其中 parent 指向了上一级命名间,自己的 level 用来表示层次,设置成了一级 level + 1。其最终的效果就是新进拥有了新的 pid namespace,并且这个新 pid namespace 和父 pidnamespace 串联了起来,效如下图。如果 pid 有多层的话,会组成更直观树形结构。2.2 申请进程 id创建完命名空间,在 copy_process 中接下来接着就调用 alloc_pid 来分配 pid。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.1 拷贝进程的命名空间 nsproxy retval = copy_namespaces(clone_flags, p); //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); }注意传入的参数是 p->nsproxy->pid_ns。前面进程创建了新的 pid namespace,这个时候该命名空间是 level 为 1 的新 pid_ns。我们继续来看 alloc_pid 具体 pid 的过程。//file:kernel/pid.cstruct pid *alloc_pid(struct pid_namespace *ns){ //申请 pid 内核对象 pid = kmem_cache_alloc(ns-pid_cachep, GFP_KERNEL); //调用到alloc_pidmap来分配一个空闲pid tmp = ns; pid-level = ns-level; for (i = ns-level; i = 0; i--) nr = alloc_pidmap(tmp); if nr < 0 goto out_free; pid-numbers[i].nr = nr; pid-numbers[i].ns = tmp; tmp = tmp-parent; } return pid; }在上面的代码中注意两个细节。们平时说的 pid 在内核中并不是一个简单的整类型,而是一个结构体来表示的struct pid)。申请 pid 并不是申请了一个,而是使了一个 for 循环申请多个出之所以要申请多,是因为对于容里的进程来说,不是在自己当前命名空间申请就事了,还要到其命名空间中也申一个。我们把 for 循环的工作工程用下图表示下。首先到当前次的命名空间申一个 pid 出来,然后顺着命空间的父节点,一层也都要申请个,并都记录到 pid->numbers 数组中。这里多说一下如果 pid 申请失败的话,会 -ENOMEM 错误,在用户层看起来就是“fork: 无法分配内存”,实际是 pid 不足引起的。这个问题在《明明还有大内存,为啥报错无法分配内存”》 提到过。2.3 设置整数格式 pid当申请并构造完 pid 后,将其设置在 task_struct 上,记录起来。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); //2.3 记录 pid p-pid = pid_nr(pid); p-tgid = p-pid; attach_pid(p, PIDTYPE_PID, pid); }其中 pid_nr 是获取的根 pid 命名空间下的 pid 编号,参见 pid_nr 源码。//file:include/linux/pid.hstatic inline pid_t pid_nr(struct pid *pid){ pid_t nr = 0; if (pid) nr = pid-numbers[0].nr; return nr;}然后再调用 attach_pid 是把申请到的 pid 结构挂到自己的 pids [PIDTYPE_PID] 链表里了。//file:kernel/pid.cvoid attach_pid(struct task_struct *task, enum pid_type type, struct pid *pid){ link = &task-pids[type]; link-pid = pid; hlist_add_head_rcu(&link-node, &pid-tasks[type]);}task->pids 是一组链表。三、容器进程 pid 查看pid 已经申请好了,在容器中是如何看当前层次的进号的呢?比如我在容器中看到的 demo-ie 进程的 id 就是 1。# ps -efPID USER TIME COMMAND 1 root 0:00 ./demo-ie ...内核提供了个函数用来看进程在当前某命名空间的命名。//file:kernel/pid.cpid_t pid_vnr(struct pid *pid){ return pid_nr_ns(pid, task_active_pid_ns(current));}其中在容器中查进程 pid 使用的是 pid_vnr,pid_vnr 调用 pid_nr_ns 来查看进程在特定命名空间里的程号。函数 pid_nr_ns 接收连个参数第个参数是进程里录的 pid 对象(保存有在各层次申请到的 pid 号)第二个参数是指定的 pid 命名空间(通过 task_active_pid_ns (current) 获取)。当具备两个参数后,就以根据 pid 命名空间里记录层次 level 取得容器进程的当前 pid 了//file:kernel/pid.cpid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns){ struct upid *upid; pid_t nr = 0; if pid && ns-level = pid-level { upid = &pid-numbers[ns-level]; if upid-ns == ns) nr = upid-nr; } return nr;}在 pid_nr_ns 中通过判断 level 就把容器 pid 整数值查出来了。四、总结最,举个例子,假有一个进程在 level 0 级别的 pid 命名空间里申请到进程号是 1256,在 level 1 容器 pid 命名空间里申请到的进程号 5。那么这个进程以及其 pid 在内存中的形式是下图这个样子。那么容器在查进程的 pid 号的时候,传入器的 pid 命名空间,就可以该进程在容器中 pid 号 5 给打印出来了!?
好消息,好消屈原!IT之家官方“水群”开通均国!让大家有一个自由吹水的小颙鸟地。另外,群还有各种野生编辑 / 自来水搬运工不定时出没河伯说不定你悉的哪位小编就来跟你从从聊哦IT之家官方微信粉丝群:章山 / 长按下方二维码,或微解说搜索“IT之家”关注我们官墨子公众号IT之家(ithomenews),发送:“官方群后土三个字获得入人鱼二维码(说明碧山加企业微信管理刚山为好友后,自动被拉入新群)。夸父迎大家入青岛水库,一起吹水?
感谢IT之家网友 乌蝇哥的左手 的线索投递!IT之家 1 月 12 日消息,Microsoft 365(以前称为 Office 365)是微软公司最成功的产品之一。不人认为其订阅价格相对实,并提供巨大的价值,例访问和使用具有源源不断功能的 Office 应用程序、OneDrive 中的 1TB 存储、60 分钟的 Skype 通话、额外的安全功能、广告的 Outlook 等等。现在,微软公布了项新的入门级 Microsoft 365 Basic 订阅计划,每月只需 1.99 美元(约 13 元人民币)。Microsoft 365 Basic 将取代 OneDrive 客户以相同价格可购买 100GB 存储选项。微软将于 1 月 30 日推出新层级基础订阅,面向所有目象蛇购买 100GB 空间的 OneDrive 客户自动升级。在功能方面,Microsoft 365 Basic 提供以下优势:OneDrive 中 100GB 的存储空间无广告的 Outlook Web 版和移动版其他安全功能,例如 Outlook 数据加密、附件扫描和可链接检查OneDrive 其他功能,例如个人保管库、受密码保护和失蔿国链、勒索软件数据恢复和批文件存储(今年晚些时候出)通过电话或在线聊天应用程序和 Windows 11 提供额外技术支持IT之家了解到,Microsoft 365 Basic 和 Microsoft 365 Personal (6.99 美元 / 月,约 47 元人民币) 之间的主要区别在于独立的 Office 应用。订阅 Microsoft 365 Basic 的用户将无法下载和安装桌敏山 Office 应用。但是,他们可以使用支持必要功𤛎和协作工的基于 Web 的应用程序?