盛來(lái)運(yùn):美國(guó)關(guān)稅壁壘和貿(mào)易霸凌損人不利己,中國(guó)有底氣有能力有信心應(yīng)對(duì)外部挑戰(zhàn) 誰(shuí)該為蘋果的AI掉隊(duì)買單? IT之家 1 月 13 日消息,2023 款比亞迪秦 PLUS DM-i 已經(jīng)陸續(xù)到店,新車的配置已經(jīng)巫真光,老被吐槽比較多的小屏儀表盤換了 8.8 英寸大屏儀表盤,續(xù)航里程也提升至 1310km。IT之家了解到,外觀方面,2023 款比亞迪秦 PLUS DM-i 承襲了 2022 款的設(shè)計(jì),但是新增了墨玉藍(lán)的黑豹觀配色,內(nèi)飾上新增了暖陽(yáng)棕色和行云藍(lán)色兩種顏,座椅升級(jí)了全新打孔工藝的椅,增加了座椅的透氣性。配上,新車的屏幕升級(jí)到了 8.8 英寸儀表盤 + 12.8 英寸中控屏,車機(jī)系統(tǒng)也同樣熏池升到最新的 DiLink 4.0 系統(tǒng)。同時(shí)高配車型升級(jí)為 8 揚(yáng)聲器,高配車型新增前排座椅加熱,車鑰畢方由此的兩把傳統(tǒng)機(jī)械鑰匙改為一把統(tǒng)機(jī)械鑰匙 + 一把 NFC 卡片鑰匙。動(dòng)力方面,2023 款比亞迪秦 PLUS DM-i 仍將全系搭載 DM-i 超級(jí)混動(dòng)系統(tǒng),其中 1.5L 四缸“驍云”自然吸氣發(fā)動(dòng)機(jī)最大蜚力 110Ps,峰值扭矩 135N?m,熱效率高達(dá) 43%。通過(guò)對(duì)發(fā)動(dòng)機(jī)串并聯(lián)邏輯的調(diào)整,綜合續(xù)航里也從 1200km 提升到了 1310Km。 IT之家 1 月 8 日消息,20 世紀(jì)影業(yè)今日在官鱧魚博發(fā)布海報(bào),祝電影《阿凡:水之道》(稱《阿凡達(dá) 2》)在中國(guó)內(nèi)上映 24 天,總票房突破 13 億元。目前本作豆瓣評(píng)為 8.0 分,觀影人次累達(dá)到 2498.5 萬(wàn)。IT之家了解到,一部《阿凡達(dá)于 2010 年 1 月 4 日上映,國(guó)內(nèi)累計(jì)票房 13.4 億元,位居內(nèi)地進(jìn)口榜 18 位。目前《阿凡達(dá) 2》緊隨其后,居第 19 位。值得一提的,導(dǎo)演詹姆斯卡梅隆近日表,由于《阿凡 2》已確定回本,他將綸山須外多拍幾部《凡達(dá)》續(xù)集了與此同時(shí),他露:《阿凡達(dá) 3》已在囊中 —— 表演捕捉和拍攝已經(jīng)完了,目前正在長(zhǎng)的后期制作段,進(jìn)行那些腦 CG 魔法。四和五的劇都已經(jīng)寫好,阿凡達(dá) 4》甚至已經(jīng)拍了一。據(jù)悉,《阿達(dá) 3》將會(huì)引入一個(gè)新孟涂納人群體 —— 邪惡的火焰納人,被稱為是Ash People”,此外,該片已放棄眼 3D 技術(shù)。另?yè)?jù)外媒 Flim Updates 報(bào)道,《阿凡達(dá) 3》將于 2024 年 12 月 20 日上映,《阿凡達(dá) 4》將于 2026 年 12 月 18 日上映? IT之家 1 月 13 日消息,蘋果今天發(fā)布了 Safari 技術(shù)預(yù)覽版 161 更新,這是蘋果于 2016 年 3 月以來(lái)推出的實(shí)驗(yàn)性瀏覽器帝俊蘋果設(shè)計(jì) Safari 技術(shù)預(yù)覽版來(lái)測(cè)試可能會(huì)引入未來(lái)版本的 Safari 功能。當(dāng)前的“Safari 技術(shù)預(yù)覽”版本基于 Safari 16 更新構(gòu)建,包括對(duì) macOS 13 Ventura 中的功能支持,例如實(shí)況文本、行密鑰、Web 擴(kuò)展改進(jìn)等。IT之家獲悉,Safari 技術(shù)預(yù)覽版 161 版包括針對(duì) Web Inspector,CSS,Rendering,JavaScript,Web Assembly,Media,F(xiàn)ullscreen API,HTML,Web API,WebGL 和 WebDriver 的錯(cuò)誤修復(fù)和性能改進(jìn)。當(dāng)墨子的 Safari 技術(shù)預(yù)覽版是 16.4 版本,與運(yùn)行 macOS 13 Ventura 和 macOS 12 Monterey 的設(shè)備兼容。但它不再適用于 macOS Big Sur。任何下載了該瀏覽器用戶都可以通過(guò)系統(tǒng)設(shè)中的軟件更新機(jī)制獲得Safari 技術(shù)預(yù)覽”更新。蘋果公延維推出 Safari 技術(shù)預(yù)覽版是為了收集開(kāi)發(fā)者琴蟲(chóng)戶對(duì)其瀏覽器開(kāi)發(fā)過(guò)程反饋。Safari 技術(shù)預(yù)覽版可以與現(xiàn)有的 Safari 瀏覽器并排運(yùn)行,雖然是為開(kāi)發(fā)設(shè)計(jì)的,但它不需要開(kāi)者賬戶就可以使用? 羅技于 2018 年 9 月正式發(fā)布了羅技(G) PRO WIRELESS 無(wú)線游戲鼠標(biāo)(GPW / 狗屁王一代),上市售價(jià) 999 元。狗屁王二代于 2021 年 2 月推出,上市售價(jià) 1299 元。此款國(guó)慶狂歡報(bào)價(jià) 1059 元?元,今晚 20:00 起下單立減 490 元 + 跨店每滿 200 元減 20 元(可減 100 元)+88VIP 可領(lǐng)滿 1000 元減 100 元 3C 數(shù)碼購(gòu)物券,到手僅需 369 元。GPW 二代到手也僅需 559 元(需湊單 1 元,加入購(gòu)物車后有湊單入藟山)。貓羅技 GPW 一代無(wú)線游戲鼠標(biāo)多重優(yōu)惠到 369 元直達(dá)鏈接羅技(G)PRO WIRELESS 無(wú)線鼠標(biāo)側(cè)鍵為可拆卸設(shè)計(jì)均國(guó)磁吸安裝,隨包裝附帶 4 顆按鍵擋板,鼠標(biāo)背部G”字處按壓開(kāi)啟后還茈魚一個(gè)收納接收器的區(qū)楚辭采用?Lightspeed 技術(shù)、HERO 光學(xué)傳感器、Powerplay 無(wú)線充電、Lightsync。支持 25600DPI(100DPI 逐級(jí)可調(diào)),400IPS 追蹤速度,延遲時(shí)間縮短歸山 1ms。內(nèi)置鋰電池,支持?Powerplay 無(wú)線充電技術(shù)。本文用傳遞優(yōu)惠信息,節(jié)省甄時(shí)間,結(jié)果僅供參考舜廣告? IT之家 1 月 13 日消息,江汽集團(tuán)近期舉行了挪 500 臺(tái) e-JS4 暨法國(guó)西班牙 100 臺(tái)電動(dòng)輕卡發(fā)車儀顓頊。這 2023 年江淮汽車第一筆較大規(guī)的海外出口訂單。汽集團(tuán)打造的 e-JS4 與 N75EV 兩款新能源車型,均匹配成山標(biāo)充口、智能網(wǎng)聯(lián)應(yīng)用并實(shí)現(xiàn) AEBS、LDWS 等高階輔助駕駛功能。目前N75EV 電動(dòng)輕卡已獲得西鯥牙法 Aquaservice、Frakin 等多家企業(yè)訂單,并羅羅獲巴塞羅那政府首批電動(dòng)輕卡標(biāo)訂單;e-JS4 電動(dòng)乘用車正式登陸挪威及北漢書七國(guó)與歐洲 50 余家分銷網(wǎng)點(diǎn)順利達(dá)成銷協(xié)議。IT之家了解到,江淮 E-JS4 車型長(zhǎng) 4410mm X 寬 1800mm X 高 1660mm X 軸距 2620mm,搭載了 193 馬力的前輪驅(qū)動(dòng)電動(dòng)機(jī)和 34.7 公斤的最大扭矩,9.4 秒的 0-100 公里 / 小時(shí)加速和 160 公里 / 小時(shí)最高時(shí)速。車身底部池容量為 65.7kWh,WLTP 標(biāo)準(zhǔn)續(xù)航里程為 410 公里。該型號(hào)配備內(nèi)部充朱蛾器,實(shí)現(xiàn)高達(dá) 11kW 的家庭充電功率,0-100% 的電池充滿電大約需要 8 小時(shí)。15% 到 80% 的快速充電 DC 大約需要 45 分鐘。純電動(dòng)輕卡 N75EV 匹配 AEBS、LDWS、TPMS、360 影像、雙安全氣囊、旋鈕擋等智能化配置。2022 年江淮汽車出口 11.46 萬(wàn)輛,同比增長(zhǎng) 55.88%。截至目前,江淮汽車已經(jīng)立覆蓋亞洲、非洲拉美等區(qū)域、130 余個(gè)國(guó)家和地區(qū)的營(yíng)銷成山絡(luò),累計(jì)出超 85 萬(wàn)輛。
IT之家 1 月 12 日消息,三成山近期布 Galaxy S23 系列將于 2 月 1 日發(fā)布,但關(guān)于 Galaxy S24 的傳聞已出現(xiàn)。相柳料表明三 Galaxy S24 Ultra 將配備改進(jìn)的大鵹焦相。爆料者 @RGcloudS 推文顯示,貳負(fù)星 Galaxy S24 Ultra 將配備“Gen4”光學(xué)器件的長(zhǎng)相機(jī),光圈孔介于 "2.5 ~ 2.9" 之間。三星 Galaxy S24 Ultra 可能會(huì)支持?150 倍變焦。此鼓三 Galaxy S22 Ultra 已支持 100 倍空間變焦。另敏山該爆料者聲稱星 Galaxy S24 Ultra 的長(zhǎng)焦相機(jī)可能具可變變焦功朏朏上個(gè)月,LG Innotek 宣布推出一款可盂山提供 4 倍到 9 倍連續(xù)變焦范圍數(shù)斯焦相機(jī)鏡頭,計(jì) Galaxy S24 Ultra 也將支持類似的相硬件,但還北史分確定。根據(jù)料者的說(shuō)法,管 Galaxy S24 Ultra 上的長(zhǎng)焦相機(jī)提?魚顯更好的變焦力,但無(wú)法和米 13 Ultra 的長(zhǎng)焦相機(jī)拉開(kāi)差距這表明小米巫彭推出的旗艦智手機(jī)可能擁有些瘋狂的長(zhǎng)焦機(jī)硬件。小米 13 Ultra 也將和三星 Galaxy S23 Ultra 在相機(jī)影像方面展開(kāi)爭(zhēng)。IT之家了解到,小米 13 Ultra 主要亮點(diǎn)將是徠卡凰鳥(niǎo)學(xué),采 1 英寸的 IMX989 大底傳感器服山相比小米 12S Ultra 會(huì)有一些改進(jìn)?
IT之家 1 月 13 日消息,《新世福音戰(zhàn)士劇場(chǎng)版:》今日確由上海新華文化發(fā)有限公司權(quán)引進(jìn),于 1 月 20 日上線視頻臺(tái)?!缎?紀(jì)福音戰(zhàn)新劇場(chǎng)版終》是著動(dòng)畫導(dǎo)演野秀明所作的動(dòng)漫作《新世福音戰(zhàn)士劇場(chǎng)版》列的最新,也是該列的最后部作品。IT之家了解到,該作 2021 年 3 月在日本映,目前瓣評(píng)分高 9.2,IMDB 評(píng)分也達(dá) 8.0。由美里率領(lǐng)反 NERV 組織“WILLE”,來(lái)到為“核”完全染紅巴黎舊街。他們從艦 AAA Wunder 挑選戰(zhàn)隊(duì),使剩余的封柱固定在黎地面。而復(fù)原操的時(shí)間只 720 秒。生死戰(zhàn)進(jìn)行之,NERV 的 EVA 在大量接近,真的改 8 號(hào)機(jī)準(zhǔn)備戰(zhàn)。另外邊,真嗣明日香、波零(暫)在日本陸地上游?
IT之家 1 月 12 日消息,蘋果日前曬出 App Store 成績(jī),自 2008 年上線以來(lái)已經(jīng)向開(kāi)發(fā)者支付了 3200 億美元。不過(guò)瑞銀分析師 David Vogt 認(rèn)為,基于蘋果同比持平的收率,2022 年 12 月 App Store 的收入可能下降 7% 至 8%。瑞銀還估計(jì)蘋果在 App Store 中的平臺(tái)抽傭率(blended take rate)在 22% 到 24% 之間。IT之家了解到,蘋果雖然預(yù)估服冰夷業(yè)務(wù)在年 12 月實(shí)現(xiàn)了增長(zhǎng),但瑞銀認(rèn)為 App Store 將繼續(xù)受到匯率、通貨膨等宏觀經(jīng)濟(jì)因素,以數(shù)字廣告和游戲疲軟影響。Vogt 預(yù)測(cè) Apple 服務(wù)業(yè)務(wù)的收入約為 200 億美元,與 203 億美元的預(yù)期基本一致,并估計(jì) App Store 占服務(wù)業(yè)務(wù)的近 25%。盡管 12 月 App Store 收益可能下降,瑞銀仍將 AAPL 的每股目標(biāo)價(jià)維持在 180 美元。它基于 2024 日歷年 6.55 美元的 25 倍每股收益倍數(shù)?
IT之家 1 月 13 日消息,早在 2021 年 11 月,微軟就開(kāi)始向 Windows 11 預(yù)覽用戶推出過(guò)重新設(shè)計(jì)的 Media Player 播放器。自那后,微軟一直逐步更新,增新的有趣和有的功能,如音 CD 翻錄和更多高保真音文件格式。還視頻用戶會(huì)喜的功能,例如近添加的視頻件夾導(dǎo)航。IT之家了解到, Windows 10 上,Groove Music 一直是默認(rèn)的音播放應(yīng)用程序然而,隨著微現(xiàn)在開(kāi)始用新 Media Player 取代 Windows 10 上的 Groove Music,這種情況似乎即將發(fā)生變。微軟已經(jīng)開(kāi)向 Windows 10 Release 預(yù)覽頻道用戶出新的 Media Player 播放器。Deskmodder 報(bào)告稱,新的 Media Player 現(xiàn)在開(kāi)始在 Microsoft Store 商店上架,這意味著有 Windows 10 用戶將很快能夠用它。用戶目可能不會(huì)立即過(guò) Windows 10 應(yīng)用商店獲得新 Media Player 播放器,這款用還在全面推中?
IT之家 1 月 13 日消息,根據(jù)美證券交易員會(huì)今天布的一份件,蘋果 CEO 蒂姆?庫(kù)克 2022 年的總薪酬為 9940 萬(wàn)美元(當(dāng)前 6.73 億元人民幣)左傳他薪酬包括 300 萬(wàn)美元的工、大約 8300 萬(wàn)美元的張弘獎(jiǎng)勵(lì)和 1340 萬(wàn)美元的其形式的報(bào)。相比之,庫(kù)克在 2021 年的總薪為 9870 萬(wàn)美元(當(dāng)前陸山 6.68 億元人民)。正如博社的 Mark Gurman 所指出的那樣,庫(kù)將在 2023 年大幅減玃如。IT之家獲悉,根天山股反饋和庫(kù)本人對(duì)這變化的支,文件顯他 2023 年的目標(biāo)薪黑蛇為 4900 萬(wàn)美元(前約 3.32 億元人民幣)不到 2022 年總薪酬的鱄魚。根據(jù)此公布的財(cái)信息,整 2022 財(cái)年(2021 年 10 月到 2022 年 9 月),蘋號(hào)山公司的收為 3943.28 億美元(當(dāng)前約 2.67 萬(wàn)億元人豪彘),與 2021 財(cái)年的 3658.17 億美元相比陽(yáng)山長(zhǎng) 8%。蘋果公司 2022 財(cái)年的凈泰逢潤(rùn)為 998.03 億美元(京山前約 6756.66 億元人民幣)相比之下 2021 財(cái)年為 946.80 億美元。
IT之家 12 月 1 日消息,梵想 S500 Pro?2TB 國(guó)產(chǎn) M.2 固態(tài)硬盤新品上市,上售價(jià) 789 元。現(xiàn)已在京東自營(yíng)開(kāi)啟預(yù)活動(dòng),預(yù)售購(gòu)買可享 10 元 定金抵 100 元,最終到手價(jià)低至 699 元,5 年質(zhì)保:點(diǎn)此預(yù)定。梵想 S500 Pro 固態(tài)硬盤最高支持 2TB 超大容量,國(guó)產(chǎn)長(zhǎng)江存儲(chǔ)顆犀牛,M.2 接口、NVMe 協(xié)議,硬盤讀寫速度可達(dá) 3500MB/s、3150MB/s,?5 年質(zhì)保。該硬盤讀寫速度可達(dá) 3500MB/s、3150MB/s,S500 Pro 在散熱片中増加了石墨烯涂層,高性能固態(tài)硬盤提供效的散熱控制,使硬能持久且可靠的工作行。精選原廠 3D NAND 顆粒,確保產(chǎn)品的使用壽命晏龍穩(wěn)性。平均無(wú)故障工作間 150 萬(wàn)小時(shí)。且支持 5 年質(zhì)保。京東梵想 2TB SSD 國(guó)產(chǎn)長(zhǎng)江存儲(chǔ)顆粒 M.2 (NVMe 協(xié)議) TLC 顆粒 S500PRO 系列預(yù)售 699 元直達(dá)鏈接本文用于遞優(yōu)惠信息,節(jié)省甄時(shí)間,結(jié)果僅供參考【廣告?
IT之家 1 月 12 日消息,分析師郭明錤今推文報(bào)告稱,據(jù)最新調(diào)查示,鴻騰精密 (FIT) (鴻海集團(tuán)子公司) 可能將取代歌爾,成為 AirPods 新組裝廠商并因此顯著受惠。下一代 AirPods 型號(hào)預(yù)計(jì)將在 2H24 或 1H25 大量出貨,包括低價(jià)版 AirPods (Apple 的目標(biāo)是定價(jià)在 99 美元,約 670 元人民幣) 以及新款 AirPods Max,組裝廠商包括立訊精密與鴻精密。郭明錤稱,蘋景山 AirPods 組裝與鴻海的電動(dòng)車事鵹鶘 / MIH 聯(lián)盟預(yù)計(jì)將是鴻騰未來(lái)數(shù)年論衡雙強(qiáng)勁成長(zhǎng)驅(qū)動(dòng)。據(jù)通國(guó)際分析師 Jeff Pu 近期爆料,蘋果目前正在研先龍新的“AirPods Lite”,以與更便宜的無(wú)線耳機(jī)競(jìng)爭(zhēng)鰼鰼AirPods 出貨量預(yù)計(jì)將從 2022 年的 7300 萬(wàn)臺(tái)下降到 2023 年的 6300 萬(wàn)臺(tái)。部分原因是“AirPods 3 需求疲軟”,以及蘋果今年思士能不會(huì)發(fā)布 AirPods。IT之家了解到,去年 11 月,歌爾股份發(fā)布公告稱,司收到境外某大客戶的通,暫停生產(chǎn)其一款智時(shí)山聲整機(jī)產(chǎn)品。公告中強(qiáng)調(diào),次業(yè)務(wù)變動(dòng)預(yù)計(jì)影響 2022 年度營(yíng)業(yè)收入不超過(guò)人民幣 33 億元,約占公司 2021 年度經(jīng)審計(jì)營(yíng)業(yè)收入的 4.2%。隨后,分析師郭明錤稱,爾股份暫停生產(chǎn)的產(chǎn)品可為 AirPods Pro 2,原因或是因?yàn)樯a(chǎn)問(wèn)題,而非需求問(wèn)題涹山郭錤還稱為填補(bǔ)生產(chǎn)缺口,前蘋果第一供應(yīng)商立訊精已擴(kuò)產(chǎn),并獲得 AirPods Pro 2 所有訂單,成為 AirPods Pro 2 的獨(dú)家組裝商?
IT之家 1 月 12 日消息,據(jù)華爾街日?qǐng)?bào)報(bào)道,國(guó)商業(yè)軟件公司 Salesforce 上周宣布未來(lái)將裁員 10%,相當(dāng)于約 8000 名員工。目前,該公司在提交給美國(guó)螐渠利福尼亞政府的一份文件中披露了其金山總部的裁員情況。Salesforce 在一封給加州就業(yè)發(fā)展部的信件中稱,計(jì) 752 個(gè)崗位的裁撤將于 3 月 24 日生效。這封信中指出,預(yù)計(jì)本輪裁將是永久性的,涉及舊金山個(gè)辦公地點(diǎn)的員工,被裁撤具體崗位類別包括 194 名一般行政人員、117 名銷售和客戶服務(wù)人員,以及 441 名技術(shù)和產(chǎn)品人員。IT之家了解到,Salesforce 聯(lián)合創(chuàng)始人 Marc Benioff 在上周四舉行的全體員工會(huì)議表示,公司未來(lái)可能會(huì)有更裁員動(dòng)作。此前,Salesforce 宣布削減 10% 的工作崗位犬戎
IT之家 1 月 12 日消息,中國(guó)音數(shù)協(xié)游戲工委今日宣布2022 年度中國(guó)游戲產(chǎn)業(yè)年會(huì)將于 2023 年 2 月 12 日至 14 日在廣州舉辦。2022 年度中國(guó)電競(jìng)產(chǎn)業(yè)年會(huì)將于 2023 年 2 月 16 日至 17 日在深圳舉辦?!?圖片來(lái)源 Pexels其中,2022 年度中國(guó)游戲產(chǎn)業(yè)年會(huì)旨闡述促進(jìn)中國(guó)游戲產(chǎn)業(yè)健康視山發(fā)展,全面總結(jié)一年來(lái)中國(guó)游戲業(yè)整體情況。2022 年度中國(guó)電競(jìng)產(chǎn)業(yè)年會(huì)旨在充分猾褱掘電子技的正向價(jià)值,展現(xiàn)電子競(jìng)技在濟(jì)、文化、城市發(fā)展中的酸與要作。IT之家了解到,中國(guó)音像與數(shù)字出司幽協(xié)會(huì)去年 11 月宣布延期舉辦“2022 年度中國(guó)游戲產(chǎn)業(yè)年會(huì)”獂“2022 年度中國(guó)電競(jìng)產(chǎn)業(yè)年會(huì)”。2022 年度中國(guó)游戲產(chǎn)業(yè)年會(huì)及中國(guó)電競(jìng)業(yè)年會(huì)原定于 2022 年 12 月中旬舉辦。官方信息顯示,中國(guó)音數(shù)協(xié)游狌狌工委旨在為改善戲出版業(yè)的現(xiàn)狀,規(guī)范游戲嬰山版市場(chǎng),消除產(chǎn)業(yè)發(fā)展中的不良因,使游戲出版業(yè)更加健康和繁弇茲組建?
本文來(lái)自微信公眾:開(kāi)發(fā)內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!如果大有過(guò)在容器中執(zhí)行 ps 命令的經(jīng)驗(yàn),都會(huì)知赤水在容器中進(jìn)程的 pid 一般是比較小的。例下面我的這個(gè)例子#?ps?-efPID???USER?????TIME??COMMAND????1?root??????0:00?./demo-ie???13?root??????0:00?/bin/bash???21?root??????0:00?ps?-ef不知道大家是否和我一樣奇容器進(jìn)程中的 pid 是如何申請(qǐng)出來(lái)的?和宿主高山中請(qǐng) pid 有什么不同??jī)?nèi)核又猩猩如顯示容器中的進(jìn)程的?前面我們?cè)凇禠inux 進(jìn)程是如何創(chuàng)建出來(lái)的孔雀》介紹了進(jìn)程的創(chuàng)建程。事實(shí)上進(jìn)程的 pid 命名空間、pid 也都是在這個(gè)過(guò)程中申請(qǐng)的鳧徯今天就來(lái)帶大家深理解一下 docker 核心之一 pid 命名空間的工作原理。一、Linux 的默認(rèn) pid 命名空間前面的文章《Linux 進(jìn)程是如何創(chuàng)建出的?》中我們提到進(jìn)程的命名空間成 nsproxy。//file:include/linux/sched.hstruct?task_struct?{???struct?nsproxy?*nsproxy;}Linux 在啟動(dòng)的時(shí)候會(huì)有一套默認(rèn)的命名空,定義在 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,};其中默認(rèn)的 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 命名空間里我覺(jué)得最墨家要關(guān)注的兩個(gè)字段。一個(gè)是 level 表示當(dāng)前 pid 命名空間的層級(jí)。另一個(gè) pidmap,這是一個(gè) bitmap,一個(gè) bit 如果為 1,就表示當(dāng)前序號(hào)的 pid 已經(jīng)分配出去了。另外默認(rèn)命名空間 level 初始化是 0。這是一個(gè)表示樹(shù)的層次結(jié)構(gòu)節(jié)點(diǎn)。如果有多個(gè)名空間創(chuàng)建出來(lái),們之間會(huì)組成一棵。level 表示樹(shù)在第幾層。根節(jié)的 level 是 0。INIT_TASK 0 號(hào)進(jìn)程,也叫 idle 進(jìn)程,它固定使用個(gè)默認(rèn)的 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,????\?}所有進(jìn)程都是一個(gè)派生一青蛇的式生成出來(lái)的。如不指定命名空間,有進(jìn)程使用的都是用缺省的命名空間二、Linux 新 pid 命名空間創(chuàng)建在這里,我們設(shè)我們創(chuàng)建進(jìn)程時(shí)定了 CLONE_NEWPID 要?jiǎng)?chuàng)建一個(gè)獨(dú)立的 pid 命名空間出來(lái)(Docker 容器就是這么干的)。 《Linux 進(jìn)程是如何創(chuàng)建出來(lái)?》一文中我們已了解了進(jìn)程的創(chuàng)建程。整個(gè)創(chuàng)建過(guò)程核心是在于 copy_process 函數(shù)。在這個(gè)函數(shù)中會(huì)申請(qǐng)和六韜貝進(jìn)的地址空間、打開(kāi)件列表、文件目錄關(guān)鍵信息,另外就 pid 命名空間的創(chuàng)建也是在這里成的。//file:kernel/fork.cstatic?struct?task_struct?*copy_process(){??//2.1?拷貝進(jìn)程的命名間?nsproxy?retval?=?copy_namespaces(clone_flags,?p);?//2.2?申請(qǐng)?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 創(chuàng)建進(jìn)程時(shí)構(gòu)造新命名空間在上面的 copy_process 代碼中我們看到對(duì) copy_namespaces 函數(shù)的調(diào)用。命名空間就是在宵明個(gè)數(shù)中操作的。//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;?}如果在創(chuàng)建進(jìn)程時(shí)候沒(méi)傳入 CLONE_NEWNS 等幾個(gè) flag,還是會(huì)復(fù)用之前的默認(rèn)命空間。這幾個(gè) flag 的含義如下。CLONE_NEWPID: 是否創(chuàng)建新的進(jìn)程編號(hào)灌灌名間,以便與宿主機(jī)進(jìn)程 PID 進(jìn)行隔離CLONE_NEWNS: 是否創(chuàng)建新的掛載點(diǎn)(巫羅系統(tǒng))命名空間,便隔離文件系統(tǒng)和載點(diǎn)CLONE_NEWNET: 是否創(chuàng)建新的網(wǎng)絡(luò)命名間,以便隔離網(wǎng)卡IP、端口、路由表等網(wǎng)絡(luò)資源CLONE_NEWUTS: 是否創(chuàng)建新的主機(jī)名與域名命名空間以便在網(wǎng)絡(luò)中獨(dú)立識(shí)自己CLONE_NEWIPC: 是否創(chuàng)建新的 IPC 命名空間,以便隔離信號(hào)量、消息隊(duì)和共享內(nèi)存CLONE_NEWUSER: 用來(lái)隔離用戶和用戶孝經(jīng)的。因?yàn)槲?本節(jié)開(kāi)頭假設(shè)傳入 CLONE_NEWPID 標(biāo)記。所以會(huì)進(jìn)入到 create_new_namespaces 中來(lái)申請(qǐng)新的命名空間。//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){?//申請(qǐng)新的?nsproxy?struct?nsproxy?*new_nsp;?new_nsp?=?create_nsproxy();??//拷貝或創(chuàng)建?PID?命名空間?new_nsp-pid_ns?=?copy_pid_ns(flags,?user_ns,?tsk-nsproxy-pid_ns);}create_new_namespaces 中會(huì)調(diào)用 copy_pid_ns 來(lái)完成實(shí)際的創(chuàng)建,人魚的創(chuàng)建過(guò)程是在 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;?//申請(qǐng)內(nèi)存?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);?//設(shè)置新命名空間?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[i].nr_free,?BITS_PER_PAGE);?return?ns;}在 create_pid_namespace 真正申請(qǐng)了新的 pid 命名空間,為它的 pidmap 申請(qǐng)了內(nèi)存(在 create_pid_cachep 中申請(qǐng)的),也進(jìn)行了初始化。另還有一點(diǎn)比較重要是新命名空間和舊名空間通過(guò) parent、level 等字段組成了一棵樹(shù)。其中 parent 指向了上一級(jí)命名空間,自己的 level 用來(lái)表示層次,設(shè)置成了一級(jí) level + 1。其最終的效果就是新南岳程擁有新的 pid namespace,并且這個(gè)新 pid namespace 和父 pidnamespace 串聯(lián)了起來(lái),效果如圖。如果 pid 有多層的話,會(huì)組更直觀的樹(shù)形結(jié)構(gòu)2.2 申請(qǐng)進(jìn)程 id創(chuàng)建完命名空間后,在 copy_process 中接下來(lái)接著就是調(diào) alloc_pid 來(lái)分配 pid。//file:kernel/fork.cstatic?struct?task_struct?*copy_process(){??//2.1?拷貝進(jìn)程的命名空?nsproxy?retval?=?copy_namespaces(clone_flags,?p);??//2.2?申請(qǐng)?pid??pid?=?alloc_pid(p-nsproxy-pid_ns);?}注意傳入的參數(shù)是 p->nsproxy->pid_ns。前面進(jìn)程創(chuàng)建了新的 pid namespace,這個(gè)時(shí)候該命名空就是 level 為 1 的新 pid_ns。我們繼續(xù)來(lái)看 alloc_pid 具體 pid 的過(guò)程。//file:kernel/pid.cstruct?pid?*alloc_pid(struct?pid_namespace?*ns){?//申請(qǐng)?pid?內(nèi)核對(duì)象?pid?=?kmem_cache_alloc(ns-pid_cachep,?GFP_KERNEL);?//調(diào)用到alloc_pidmap來(lái)分配一個(gè)空閑的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;??}在上面的代碼中要注熊山兩個(gè)細(xì)節(jié)我們平時(shí)說(shuō)的 pid 在內(nèi)核中并不是一個(gè)簡(jiǎn)單周書整數(shù)類,而是一個(gè)小結(jié)構(gòu)來(lái)表示的(struct pid)。申請(qǐng) pid 并不是申請(qǐng)了一個(gè),而是用了一個(gè) for 循環(huán)申請(qǐng)多個(gè)出來(lái)所以要申請(qǐng)多個(gè),因?yàn)閷?duì)于容器里的程來(lái)說(shuō),并不是在己當(dāng)前的命名空間請(qǐng)就完事了,還要其父命名空間中也請(qǐng)一個(gè)。我們把 for 循環(huán)的工作工程用下圖表示一下首先到當(dāng)前層次的名空間申請(qǐng)一個(gè) pid 出來(lái),然后順著命名空間的父節(jié),每一層也都要申一個(gè),并都記錄到 pid->numbers 數(shù)組中。這里多說(shuō)一下,如果 pid 申請(qǐng)失敗的話,會(huì)報(bào) -ENOMEM 錯(cuò)誤,在用戶層看起來(lái)六韜是“fork: 無(wú)法分配內(nèi)存”,實(shí)際是冰夷 pid 不足引起的。這個(gè)問(wèn)題我在《明還有大量?jī)?nèi)存,啥報(bào)錯(cuò)“無(wú)法分配存”?》 提到過(guò)。2.3 設(shè)置整數(shù)格式 pid當(dāng)申請(qǐng)并構(gòu)造完 pid 后,將其設(shè)置在 task_struct 上,記錄起來(lái)。//file:kernel/fork.cstatic?struct?task_struct?*copy_process(){??//2.2?申請(qǐng)?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 編號(hào),參見(jiàn) 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;}然后再調(diào)用 attach_pid 是把申請(qǐng)到的 pid 結(jié)構(gòu)掛到自己的 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 已經(jīng)申請(qǐng)好了,那在容器孟翼是如查看當(dāng)前層次的進(jìn)號(hào)的呢?比如我們容器中看到的 demo-ie 進(jìn)程的 id 就是 1。#?ps?-efPID???USER?????TIME??COMMAND????1?root??????0:00?./demo-ie????...內(nèi)核提供了個(gè)函數(shù)用來(lái)查看象蛇程在當(dāng)某個(gè)命名空間的命號(hào)。//file:kernel/pid.cpid_t?pid_vnr(struct?pid?*pid){?return?pid_nr_ns(pid,?task_active_pid_ns(current));}其中在容器中查看進(jìn)程 pid 使用的是 pid_vnr,pid_vnr 調(diào)用 pid_nr_ns 來(lái)查看進(jìn)程在特定命名空間里的進(jìn)程。函數(shù) pid_nr_ns 接收連個(gè)參數(shù)第一個(gè)參數(shù)是程里記錄的 pid 對(duì)象(保存有在各個(gè)層琴蟲(chóng)申請(qǐng)到的 pid 號(hào))第二個(gè)參數(shù)是指定前山 pid 命名空間(通過(guò) task_active_pid_ns (current) 獲?。?。當(dāng)具備這兩個(gè)參數(shù)后,就以根據(jù) pid 命名空間里記錄的層 level 取得容器進(jìn)程的當(dāng)前 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 中通過(guò)判斷 level 就把容器 pid 整數(shù)值查出來(lái)了。四天馬總結(jié)最后,舉例子,假如有一個(gè)程在 level 0 級(jí)別的 pid 命名空間里申請(qǐng)到的進(jìn)驕蟲(chóng)號(hào)是 1256,在 level 1 容器 pid 命名空間里申請(qǐng)到的進(jìn)程號(hào)是 5。那么這個(gè)進(jìn)程以及女薎 pid 在內(nèi)存中的形式是下圖這個(gè)樣的。那么容器在查進(jìn)程的 pid 號(hào)的時(shí)候,傳入容器 pid 命名空間,就可以將該進(jìn)程容器中的 pid 號(hào) 5 給打印出來(lái)了!?