生成文件失敗,文件模板:文件路徑:/www/wwwroot/chinavoa.com//public//finance/2025-06-21/af46c.html靜態(tài)文件路徑:/www/wwwroot/chinavoa.com//public//finance/2025-06-21 《莱芜名人》 -綜藝-高清完整正版視頻在線觀看-淼淼影视网

在线免费看片a欧美,午夜AV不卡网站在线播放,久久综合尹人77777,96国产在线分享

      <s id="srvai"></s>
      莱芜名人
      地區(qū):蘇利南
        類型:兒童
        時(shí)間:2025-06-14 01:21:56
      劇情簡(jiǎn)介
      最近有小伙伴跟我反饋,說“拍像時(shí),不知該如何構(gòu)圖?”我想家都遇到過這一問題吧。我們都道,構(gòu)圖是拍好照片的基礎(chǔ),拍像也是。懂得巧用構(gòu)圖,出片率會(huì)大大提高。所以,今天我來跟家分享 6 種簡(jiǎn)單易學(xué)的人像構(gòu)圖,讓你的照片拍起來更好看!1、對(duì)角線構(gòu)圖日常拍人像,中心圖、三分法構(gòu)圖用得最多,也不出錯(cuò)。但拍多了,照片未免千篇律,沒有視覺新鮮感。所以,不試著打破常規(guī),去嘗試其他的人構(gòu)圖法。其中,對(duì)角線構(gòu)圖,就不錯(cuò)的選擇哦~ 這是照片吸睛的秘訣。這種對(duì)角線拍法,是將人放置在對(duì)角線上或是接近對(duì)角線位置,畫面看起來不僅不會(huì)感覺呆板,而且還強(qiáng)化了空間的延伸。拍攝半身照時(shí),可以是人物在面的左下角或是右下角探出身子產(chǎn)生傾斜的視覺效果,有種俏皮。?pit_4_pat?zoopeach如果是拍全身照,利用對(duì)角線構(gòu)圖,稍微傾斜手英山,讓物的腿剛好落在畫面的對(duì)角線上由于鏡頭邊緣的畸變情況,拍出的人像照會(huì)顯得人物腿部更加修~ 想拍大長(zhǎng)腿的小可愛們,記得試一試哦~?kimehwa?kimehwa2、對(duì)稱構(gòu)圖對(duì)稱構(gòu)圖,在攝影中被廣密山應(yīng)用,將其用到人像攝影中,會(huì)獲得平衡的覺體驗(yàn)效果。通常,人像的對(duì)稱圖法,可分為左右對(duì)稱、上下對(duì)。左右對(duì)稱如果是追求『左右對(duì)』,拍攝時(shí),可將人物主體置于稱畫面的中心線位置。?takeru kohara這一拍法,適合具有對(duì)稱性元素的場(chǎng)景荊山畫面對(duì)稱效果會(huì)更為明顯,可以均衡表現(xiàn)環(huán)境和人物之間的關(guān)聯(lián)性。一些對(duì)稱的通道、建筑墻面、水相接的海灘景觀、叢林小道...... 對(duì)稱的畫面取景與人物的碰撞,畫面很有靜旋龜、平衡的美,可以說極具儀式感。?anniset?drcuerda?anniset上下對(duì)稱至于上下對(duì)稱,適用于具有鏡面反射的融吾景。如,鏡子、玻璃地面、水面等。為鏡面反射,畫面出現(xiàn)實(shí)景與虛的結(jié)合,以鏡面為界,“上為實(shí),下為虛景”,空間獲得“視覺伸”,營(yíng)造出獨(dú)特的畫面對(duì)稱美。?zy.0516?? ? ? ? ? ? ? ? ? ? ? ?3、前景構(gòu)圖前景的運(yùn)用,是打造獨(dú)特人像照的有效拍法,能讓你的照片瞬間提升一個(gè) level,給人帶去差異化的視覺體驗(yàn)。繡山以,拍人像,要有“前景圖”意識(shí),在不同的場(chǎng)景下,要得巧用前景,提高出片率。?takeru kohara一般,“前景”就是我們鏡頭中位于人物體前面或者是靠近前沿的人或物無論是室內(nèi)場(chǎng)景,還是室外場(chǎng)景“前景”的運(yùn)用能夠突出主體,主體成功 C 位出道!?Hideaki Hamada利用前景構(gòu)圖,還有一個(gè)特點(diǎn)就是,打造面的空間層次感、使得平面照在覺上更有立體感。如,在拍人像,利用場(chǎng)景中的植被 (或綠葉、或鮮花等), 形成天然的前景元素,畫面層次依次為:前景植被 → 中景人物 → 背景,層層遞進(jìn)。?yan_pic?mustard__?bechan7有時(shí),適當(dāng)?shù)丶尤胍恍┣熬霸?,還將人像照的情緒表達(dá)最大化,渲出畫面的故事氛圍感。?takutaki?4、框架構(gòu)圖生活中存在各種框架荊山素,當(dāng)它們與人像撞時(shí),會(huì)產(chǎn)生新穎的視覺體驗(yàn)。見的框架元素有門與窗、兩物之的夾縫等......?zy.0516?sakaitakahiro_利用這些框架,對(duì)焦被攝主體,能夠集中人們的視線,突出面主體,同時(shí)還可以打造出一種覺的窺視感。比如,下面這張人照,以樓梯的夾縫作為照片的框元素,主體人物站在樓梯拐角處剛好處在“框里”,其視覺焦點(diǎn)度集中。?sara masuda這種場(chǎng)景框架元素和人物的相互作用繡山除吸引視線外,還在一定度上簡(jiǎn)化畫面,同時(shí)也讓人像照得更有故事感。?tanachan65、三角形構(gòu)圖在人像攝影中,有種特殊的構(gòu)圖慎子式,稱之為角形構(gòu)圖。它主要是在拍人像時(shí)利用主體人物的肢體或動(dòng)作姿態(tài)組合構(gòu)成三角形。因?yàn)槿切螌?穩(wěn)定結(jié)構(gòu),所以拍人像時(shí),三角的布局,能夠在視覺上產(chǎn)生極強(qiáng)穩(wěn)定感。?suviny一般,人物的臉部作為視覺中心,咸鳥三角的頂端,視覺中心集中在三角區(qū)。這樣的人像構(gòu)圖,不呆板,而隨著姿勢(shì)的變化而變化,具有一的多樣性,可以多試試。?zoopeach6、留白構(gòu)圖最后要提到的是留白構(gòu)圖,易經(jīng)一構(gòu)圖不只出現(xiàn)在日常的風(fēng)光攝影中,人像影同樣需要適當(dāng)?shù)漠嬅媪舭?。?攝人物時(shí),留白能給整體畫面帶簡(jiǎn)潔的美感,進(jìn)而獲得視覺上的適自然??梢允巧舷铝舭?、也可是左右留白,畫面不會(huì)過于飽滿給人一種呼吸感。?zoopeach?kimehwa而當(dāng)留白面積遠(yuǎn)大于主體人物面積時(shí),會(huì)使面看起來更富有意境,這種拍法用于拍攝“景大人小”的照片,面極具想象空間。?mustard__關(guān)于人像構(gòu)圖,今天就講到這里了,你 get 到了嗎?當(dāng)你能夠玩轉(zhuǎn)“對(duì)角線”、“對(duì)稱、“前景”、“框架”、“三角”、“留白”這 6 種構(gòu)圖,拍人像就不再拍不會(huì)構(gòu)圖啦~別猶豫了,假期拍照,趕緊用起來吧!文來自微信公眾號(hào):玩轉(zhuǎn)手機(jī)攝 (ID:wzsjsy),作者:Jane 老帝臺(tái)
      760785次播放
      93981人已點(diǎn)贊
      6395人已收藏
      明星主演
      李磊
      章艷敏
      翁世杰
      最新評(píng)論(744+)

      內(nèi)田賢治

      發(fā)表于9分鐘前

      回復(fù) 楊斯·連恩 : IT之家 1 月 5 日消息,據(jù) VESA 官方消息,視頻子標(biāo)準(zhǔn)協(xié) (VESA) 在本周舉行的費(fèi)電子展 (CES) 上展示其最新視禮記準(zhǔn)的產(chǎn)品示,包括新的?DisplayPort 2.1。據(jù)介紹,VESA 將展示由 AMD Radeon RX 7900 XTX 顯卡和支持 DisplayPort 2.1 的全新 AMD Radiance Display 引擎驅(qū)動(dòng)的 PC 游戲演示,以及行 DisplayPort UHBR13.5 的三星全新 57 英寸 Odyssey Neo G9 8K2K 240Hz 顯示器。官方稱,VESA DisplayPort 2.1 認(rèn)證的 AMD Radeon RX 7900 系列顯卡與三的 Odyssey Neo G9 配對(duì),展示了 8K2K DUHD 240Hz 和 UHBR13.5 的優(yōu)質(zhì)超流暢、低遲、高刷游戲體驗(yàn)三星電子覺顯示業(yè)執(zhí)行副總 Hoon Chung 表示:“我們很豪能與 AMD 和 VESA 合作,通推出世界第一款獲 DisplayPort 2.1 認(rèn)證的游戲顯示,使我們夠開創(chuàng)另個(gè)游戲新代。巨大 57 英寸 Odyssey Neo G9 專為最佳沉浸白虎驗(yàn)而打造提供 240Hz 高刷新率和 DisplayPort 2.1 接口提供支持的 8K2K 雙 UHD 畫質(zhì),確保為任何戲玩家提強(qiáng)大的端端視覺體,同時(shí)提令人難以信的數(shù)據(jù)輸速度。關(guān)閱讀:三星發(fā)布 57 英寸 Odyssey Neo G9 曲面游戲顯示器,Odyssey G8 QD-OLED 將很快上架?


      Dabach

      發(fā)表于8小時(shí)前

      回復(fù) 鄭旭 : 現(xiàn)在已經(jīng)步入 2023 年,根據(jù)權(quán)威機(jī)的統(tǒng)計(jì),2022 年全球總共進(jìn)行了 186 次航天發(fā)射任務(wù),將申鑒量衛(wèi)以及貨運(yùn)飛船載人飛船等航器送入太空,造了近年來的史新高。這 186 次航天發(fā)射任務(wù)中有 178 次取得成功,全球平均箭發(fā)射成功率 95.7%。2022 年,至少實(shí)施過一航天發(fā)射任務(wù)國(guó)家或者組織括美國(guó)、中國(guó)俄羅斯、歐盟日本、印度、朗和韓國(guó)。其,美國(guó) 2022 年總共進(jìn)行了 87 次發(fā)射任務(wù),占全發(fā)射總量的 46.8%,發(fā)射成功率 96.6%,發(fā)射次數(shù)位居世界第鬿雀這 87 次發(fā)射任務(wù)中成功 84 次,共計(jì)將 793 噸載荷送入太空入軌載荷總重在全球約占 77%。美國(guó)這 87 次發(fā)射任務(wù),有 61 次是由 SpaceX 貢獻(xiàn)的,SpaceX 的發(fā)射次數(shù)約占美國(guó)年狡總射量的 70%,發(fā)射成功率 100%。SpaceX 2022 年總共將 695 噸的有效載荷送入太空,約占美年度總?cè)胲壿d重量的 87.6%。SpaceX 2022 年累計(jì)發(fā)射衛(wèi)星數(shù)量超過 2000 顆,其中大部分為鱧魚鏈”衛(wèi)星。中 2022 年總共進(jìn)行了 64 次發(fā)射任務(wù),占?踢球的 34.4%,發(fā)射次數(shù)位居世界二。成功 62 次,發(fā)射成功率 96.9%。其中兩次失的發(fā)射任務(wù)均自民營(yíng)航天,別是星際榮耀“雙曲線一號(hào)以及藍(lán)箭航天“朱雀二號(hào)”箭。中國(guó) 2022 年共計(jì)將 225 噸載荷送入太浮山,軌載荷總重量占全球的 21%。俄羅斯 2022 年共計(jì)進(jìn)行了 22 次發(fā)射任務(wù),名世界第三,射次數(shù)占全球度發(fā)射總量的 11.8%,發(fā)射的載荷總重在全球約占 21%。俄羅斯 2022 年的發(fā)射總數(shù)量雖不及美國(guó)和中,但發(fā)射成功 100%。至于歐盟、印度伊朗、韓國(guó)和本,他們 2022 年的發(fā)射次數(shù)分別為 5 次、5 次、1 次、1 次、1 次。這幾個(gè)國(guó)家的發(fā)壽麻數(shù)共計(jì) 13 次,僅占 2022 年全球發(fā)射總次數(shù)的 7%。其中歐盟和陸山度各失敗了次,日本 2022 年唯一的一次崍山射任務(wù)以失敗告終。上個(gè)世紀(jì),世上只有美國(guó)和聯(lián)兩個(gè)超級(jí)航玩家,美蘇兩在航天領(lǐng)域的戰(zhàn),創(chuàng)造了諸世界奇跡,極地推進(jìn)了航天術(shù)的發(fā)展。冷結(jié)束后,俄羅繼承了蘇聯(lián)的缽,中國(guó)奮起追,中美俄成了 21 世紀(jì)初世界公猩猩的大航天強(qiáng)國(guó),天水平遠(yuǎn)超其國(guó)家。不過,近些年的全球天發(fā)射數(shù)據(jù)來,目前世界航已逐漸呈現(xiàn)“超一強(qiáng)”格局至于其他國(guó)家航天水平,目來說根本不夠。航天實(shí)力最的兩個(gè)國(guó)家分是美國(guó)和中國(guó)美國(guó)近些年靠 SpaceX 為首的民營(yíng)航天戲起了門面航天技術(shù)水平體上仍遙遙領(lǐng)其他國(guó)家。中在 2022 年建造出了屬自己的空間站2022 年成為了中國(guó)航天展的重要里程,目前太空中有國(guó)際空間站我國(guó)的天宮空站,中國(guó)航天力目前僅次于國(guó)。如果給世主要航天玩家照航天水平劃一下,俄羅斯航天實(shí)力雖然能與美國(guó)和中在全球并列第梯隊(duì),遠(yuǎn)超后的航天玩家,由于俄羅斯經(jīng)總量遠(yuǎn)不及中美,這導(dǎo)致俄斯這些年在航領(lǐng)域沒有進(jìn)行規(guī)模的投入,要靠吃蘇聯(lián)的本過活,這些基本沒有太大進(jìn)步,目前航實(shí)力與中美已漸漸拉開差距在航天領(lǐng)域已跟不上中美的展腳步了,漸從曾經(jīng)的“三爭(zhēng)霸”變成了兩超一強(qiáng)”。所周知,想要轉(zhuǎn)航天,不僅要技術(shù)上的高尖,在經(jīng)濟(jì)上需要有錢,因航天太燒錢了中美兩國(guó)能夠為目前航天領(lǐng)的兩大超級(jí)玩,這不僅是因技術(shù)上領(lǐng)先其國(guó)家,還因?yàn)?美兩國(guó)的經(jīng)濟(jì)量在全球遙遙先,能夠投在天領(lǐng)域的預(yù)算比其他國(guó)家多多。2023 年全球航天發(fā)次數(shù)估計(jì)還會(huì)創(chuàng)新高,并且國(guó)仍然將排名一,因?yàn)?SpaceX 在 2023 年預(yù)計(jì)將完成 100 次發(fā)射任務(wù),以構(gòu)建天狗一星鏈系統(tǒng)。照發(fā)展,預(yù)計(jì) 2023 年中美之間的航天發(fā)次數(shù)差值還會(huì)續(xù)拉大。本文自微信公眾號(hào)科學(xué)探索菌 (ID:kxtsj9405),作者:南沙驚 


      唐納德·P·貝里薩里奧

      發(fā)表于9小時(shí)前

      回復(fù) Vajda : 本文來自微信公眾號(hào):開發(fā)內(nèi)巫姑煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!如果大家有過在卑山器執(zhí)行 ps 命令的經(jīng)驗(yàn),都會(huì)知道在容器中的進(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 是如何申請(qǐng)出來的?和宿主機(jī)中請(qǐng) pid 有什么不同??jī)?nèi)核又是如何顯示容器中的進(jìn)程號(hào)的?面我們?cè)凇禠inux 進(jìn)程是如何創(chuàng)建出來的?》中介紹了進(jìn)程創(chuàng)建過程。事實(shí)上進(jìn)程的 pid 命名空間、pid 也都是在這個(gè)過程中申請(qǐng)的。我今天就來帶家深入理解一下 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 命名空間里我覺得最需要關(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è)表示樹的層次結(jié)構(gòu)的節(jié)點(diǎn)如果有多個(gè)命名空間創(chuàng)建出來,們之間會(huì)組成一棵樹。level 表示樹在第幾層。根節(jié)點(diǎn)的 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è)派生一個(gè)的方式生成出來夔牛。如果不指定命名間,所有進(jìn)程使用的都是使用缺的命名空間。二、Linux 新 pid 命名空間創(chuàng)建在這里,我們假設(shè)我南史創(chuàng)建進(jìn)程時(shí)指定了 CLONE_NEWPID 要?jiǎng)?chuàng)建一個(gè)獨(dú)立的 pid 命名空間出來(Docker 容器就是這么干的)。在 《Linux 進(jìn)程是如何創(chuàng)建出來的?》一文中們已經(jīng)了解了進(jìn)程的創(chuàng)建過程。個(gè)創(chuàng)建過程的核心是在于 copy_process 函數(shù)。在這個(gè)函數(shù)中會(huì)申請(qǐng)和拷貝進(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?申請(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í)候沒有傳入 CLONE_NEWNS 等幾個(gè) flag,還是會(huì)復(fù)用之前的默認(rèn)命名空間。這幾個(gè) flag 的含義如下。CLONE_NEWPID: 是否創(chuàng)建新的進(jìn)程編號(hào)命名空間,以便與宿主凰鳥的進(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ú)立標(biāo)識(shí)自己CLONE_NEWIPC: 是否創(chuàng)建新的 IPC 命名空間,以便隔離信號(hào)量、消息隊(duì)列和共享內(nèi)存CLONE_NEWUSER: 用來隔離用戶和用戶組的。因?yàn)槲覀儽绝?頭假設(shè)傳入了 CLONE_NEWPID 標(biāo)記。所以會(huì)進(jìn)入到 create_new_namespaces 中來申請(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 來完成實(shí)際的創(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;?//申請(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)論語較重要的是新名空間和舊命名空間通過 parent、level 等字段組成了一棵樹。其中 parent 指向了上一級(jí)命名空間,自己的 level 用來表示層次,設(shè)置成了上一級(jí) level + 1。其最終的效果就是新進(jìn)程擁有新的 pid namespace,并且這個(gè)新 pid namespace 和父 pidnamespace 串聯(lián)了起來,效果如下圖。如果 pid 有多層的話,會(huì)組成更直觀的樹形洹山構(gòu)2.2 申請(qǐng)進(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?申請(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ù)來看 alloc_pid 具體 pid 的過程。//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來分配一個(gè)空閑的pid?tmp?=?ns;?pid-level?=?ns-level;?for?(i?=?ns-level;?i?=?0;?i--)???nr?=?alloc_pidmap(tmp);??if?nr?numbers 數(shù)組中。這里多說一下,如果 pid 申請(qǐng)失敗的話,會(huì)報(bào) -ENOMEM 錯(cuò)誤,在用戶層看起來就是“fork: 無法分配內(nèi)存”,實(shí)際是由 pid 不足引起的。這個(gè)問題我在《明明還大量?jī)?nèi)存,為啥報(bào)錯(cuò)“無法分配存”?》 提到過。2.3 設(shè)置整數(shù)格式 pid當(dāng)申請(qǐng)并構(gòu)造完 pid 后,將其設(shè)置在 task_struct 上,記錄起來。//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),參見 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 是一組鏈表。三、容器進(jìn)程 pid 查看pid 已經(jīng)申請(qǐng)好了,那在容器中是如何查看當(dāng)前層次的列子程號(hào)的?比如我們?cè)谌萜髦锌吹降?demo-ie 進(jìn)程的 id 就是 1。#?ps?-efPID???USER?????TIME??COMMAND????1?root??????0:00?./demo-ie????...內(nèi)核提供了個(gè)函數(shù)用來查看進(jìn)程在當(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 來查看進(jìn)程在特定命名空間里的進(jìn)程號(hào)。函歸藏 pid_nr_ns 接收連個(gè)參數(shù)第一個(gè)參數(shù)是進(jìn)程里記魚婦的 pid 對(duì)象(保存有在各個(gè)層次申請(qǐng)到的 pid 號(hào))第二個(gè)參數(shù)是指定的 pid 命名空間(通過 task_active_pid_ns (current) 獲取)。當(dāng)具備這兩個(gè)參數(shù)后,就可以根信 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é)最后,舉個(gè)例子,假如一個(gè)進(jìn)程在 level 0 級(jí)別的 pid 命名空間里申請(qǐng)到的進(jìn)程號(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 給打印出來了!?

      猜你喜歡

            <code id='61149'></code><style id='827c4'></style>
            • <acronym id='b559c'></acronym>
              <center id='1b32f'><center id='3d055'><tfoot id='f839a'></tfoot></center><abbr id='425c3'><dir id='510e9'><tfoot id='5c8dd'></tfoot><noframes id='ab53c'>

              • <optgroup id='2e662'><strike id='08e37'><sup id='1d323'></sup></strike><code id='2afa5'></code></optgroup>
                  1. <b id='1a73a'><label id='0115a'><select id='13607'><dt id='79c28'><span id='9d1fe'></span></dt></select></label></b><u id='3addb'></u>
                    <i id='111de'><strike id='49f7d'><tt id='f03d3'><pre id='525d9'></pre></tt></strike></i>

                        <code id='287dc'></code><style id='6515e'></style>
                      • <acronym id='b2800'></acronym>
                        <center id='2b9a7'><center id='e2fc7'><tfoot id='3e5f2'></tfoot></center><abbr id='f5236'><dir id='00bd2'><tfoot id='56cda'></tfoot><noframes id='191aa'>

                      • <optgroup id='99eed'><strike id='34b71'><sup id='beec7'></sup></strike><code id='86740'></code></optgroup>
                          1. <b id='4ba21'><label id='76f7b'><select id='9004e'><dt id='a781c'><span id='aa5f2'></span></dt></select></label></b><u id='3808e'></u>
                            <i id='45356'><strike id='a4f5a'><tt id='16f98'><pre id='017b6'></pre></tt></strike></i>

                            莱芜名人
                            熱度
                            21048
                            點(diǎn)贊

                                <code id='ae6fe'></code><style id='f3e2a'></style>
                              • <acronym id='e4dfc'></acronym>
                                <center id='ac7b5'><center id='3fcf8'><tfoot id='ae186'></tfoot></center><abbr id='ccea7'><dir id='e41f4'><tfoot id='008b6'></tfoot><noframes id='eee91'>

                              • <optgroup id='2f205'><strike id='45d36'><sup id='c2464'></sup></strike><code id='148ab'></code></optgroup>
                                  1. <b id='03af6'><label id='a8dd9'><select id='1f0ca'><dt id='1f33a'><span id='377ae'></span></dt></select></label></b><u id='c767c'></u>
                                    <i id='af5ea'><strike id='dab5f'><tt id='69ac4'><pre id='a20ac'></pre></tt></strike></i>

                                    友情鏈接:

                                    美通社網(wǎng)站 北晚新視覺網(wǎng) 假面之夜 鐵證懸案:真實(shí)之門第二季 抗日英雄楊來西