昨天講完了linux的核心架構,今天就開始讓我們認識重要的部分吧。
以下是三個名詞,程式(program)、行程(process)、執行序(thread),在作業系統中最常見的解釋。
通常是指完成特定任務的有序指令集合,或是一個可執行的文件。也就是由工程師所編寫的程式碼(code),放在硬碟中,尚未讀入記憶體的的code。
是一段執行中的程序,內容已經被移入記憶體,是一個"活生生"的個體,在一個行程裡面會有可執行的指令,也包含了行程執行時所需要的活動資訊。
在作業系統中,會用行程控制塊(process control block, PCB),記錄行程所需要的資訊,常見的有以下幾種
作業系統分配記憶體、CPU時間等等資源的基本單元。
上述都是最常見的解釋,但是,人生最重要的就是這個BUT,Linux 裡面並沒有區分行程與執行緒,而是一魚兩吃,用 task_struct
可以代表process 或 thread。
從實作的角度看來
建立user process的方法是有三個系統呼叫: fork, vfork, clone
建立kernel thread的方法有兩種系統呼叫: kernel_thread, kthread_create
而以上這些API還有library function最後都會call到 `_do_fork`
而`do_fork`所做的事就是填 `task_struct`,只要填好task_struct就是把該task給創建出來了 !!!
以上的話在現今版本的linux是錯的,哪裡有問題有待明日分曉!!
day3,遇到中秋連假,又幫母親的電腦進行系統轉移搞得七晚八晚,今天只能濫竽充數了。