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