第二次作業

2021-10-10 08:50:50 字數 1115 閱讀 1438

(1)系統是怎樣建立程序的?

1.申請空白pcb(程序控制塊);

2.為新程序分配資源;

3.初始化pcb;

4.就新程序插入就緒佇列;

(2)當首次呼叫新建立程序時,其入口在**?

fork()函式被呼叫一次,但返回兩次;兩次返回區別在於:子程式返回值是0,而父程序返回值是子程序的id。子程序和父程序執行相同的**,但是有自己的資料空間。

(3)程式的多次執行結果為什麼不同?如何控制實驗結果的隨機性?

多個程序的併發執行,每個程序都有先獲取cpu的可能性,故而哪乙個程序先執行是隨機的。可以通過等待,睡眠的等操作來實現多個程序的同步。

(1)可執行檔案載入時進行了哪些處理?

程序用exec( )裝入命令ls ,exec( )後,子程序的**被ls的**取代,這時子程序的pc指向ls的第1條語句,開始執行ls的命令**

(2)什麼是程序同步?wait( )是如何實現程序同步的?

程序同步是指多個相關程序在執行次序上進行協調,以使併發執行的主程序之間有效的共享資源和相互合作,從而使程式的執行具有可再現性。

首先程式在呼叫fork()建立了乙個子程序後,馬上呼叫wait(),使父程序在子程序呼叫之前一直處於睡眠狀態,這樣使子程序先執行,子程序執行exec()裝入命令後,然後呼叫wait(0),使子程序和父程序併發執行,實現了程序同步。

(3)wait( )和exit()是如何控制實驗結果的隨機性的?

可以看出在使用了exec()函式後程式使用了ls的命令,列出/bin/目錄下的檔案資訊,執行完execl()函式後,子程序呼叫exit()函式,退出當前程序,我們可以發現在使用wait()函式後,父程序永遠將在其他的子程序完成之後才執行,所以在輸出的結果中我們可以看到最後輸出的將是父程序的資訊,這樣進而可以控制實在驗結果的隨性。

在這裡插入描述

第二次作業

execise02 1.查詢85年以後出生的學生姓名 性別和出生日期 2.列表顯示所有可能的學生選課組合 學號 課程號 3.查詢1 2 4班中陳姓同學的資訊 4.查詢所有及格的學生姓名 所選課程名及所得分數 5.統計各門課程的及格人數 課程編號 課程名 及格人數 6.統計各門課程的總人數 及格人數和...

第二次作業

第一題 p1 1 遞迴寫法,效率低 include 1.寫乙個函式返回引數值為1的個數 比如 15 0000 1111 4個1 程式原型 int count one bits unsigned int value int fuc int x else return 0 void mainp1 p1 ...

第二次作業

檔名稱 516.cpp 作 者 闕文榮 完成日期 2016 年 3 月 11 日 版 本 號 v1.1 對任務及求解方法的描述部分 用while語句控制輸出 輸入描述 略 問題描述 現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。他想買這套房子,多大的 率能夠忍受...