作業系統實驗記錄

2021-09-29 17:58:59 字數 2902 閱讀 4151

第一題

偽**完成

int

main()

//主函式示例

patienti()

return;}

nurse()

doctor()

return

}

找到幾篇可以參考的文章

這篇含有對佇列的操作,打算在p,v操作間實現對佇列的操作而非僅僅輸出文字「我進病房啦」之類的

這兩篇大概是使用執行緒的範例

理髮師問題

稍微改了一下第一篇的main函式

寫了doctor函式

#include

#include

#include

#include

#include

#include

#include

sem_t sa;

sem_t sb;

sem_t s1;

//滿緩衝區數目

sem_t s2;

//空緩衝區數目

sem_t s;

pthread_mutex_t mutex;

void

*doctor (

void

*arg)

/*醫生執行緒程式*/

}void

*nurse (

void

*arg)

/***執行緒程式*/

}void

*paitient (

void

*arg)

/*病人執行緒程式*/

}

int

main()

//建立1個醫生

pthread_create

(&doc,

null

, doctor,

null);

//建立1個**

pthread_create

(&nur,

null

, nurse,

null);

for(i =

0; i <10;

++i)

/*等待病人執行緒退出*/

pthread_join

(c[i]

,&thread_result)

;pthread_join

(doc,

&thread_result)

;/*等待醫生執行緒退出*/

pthread_join

(nur,

&thread_result)

;/*等待**執行緒退出*/

pthread_mutex_destroy

(&mutex)

;/*銷毀互斥*/

return0;

}

訊號量申請那裡還沒寫好

建立程序那裡的指標是啥也沒明白

先醬紫

#include

#include

#include

#include

#include

#include

#include

sem_t sa;

sem_t sb;

sem_t s1;

//滿緩衝區數目

sem_t s2;

//空緩衝區數目

sem_t s;

pthread_mutex_t mutex;

int patn=0;

void

*doctor (

void

*arg)

/*醫生執行緒程式*/

return

null;}

void

*nurse (

void

*arg)

/***執行緒程式*/

return

null;}

void

*paitient (

void

*arg)

/*病人執行緒程式*/

intmain()

; pthread_mutex_init (

&mutex,

null);

/*初始化互斥*/

//建立1個**

pthread_create

(&nur,

null

, nurse,

null);

//建立1個醫生

pthread_create

(&doc,

null

, doctor,

null);

//建立10個病人

for(

int i =

0; i <

10; i++

)//for(int i = 0; i < 10; ++i) /*等待病人執行緒退出*/

pthread_join

(c,null);

pthread_join

(doc,

null);

/*等待醫生執行緒退出*/

pthread_join

(nur,

null);

/*等待**執行緒退出*/

pthread_mutex_destroy

(&mutex)

;/*銷毀互斥*/

sem_destroy

(&sa)

;sem_destroy

(&sb)

;sem_destroy

(&s1)

;sem_destroy

(&s2)

;sem_destroy

(&s)

;return0;

}

凌晨1:27,終於寫完**了

作業系統實驗

一 實驗目的 理解vi的三種執行模式及其切方法。學會使用vi的各種操作命令進行文字檔案的編輯。用vi編寫linux下c程式,會用gcc編譯。二 實驗環境 一台裝有linux的機器 這裡預設是red hat linux 9 系統裡面有gcc編譯器。三 實驗內容 寫出主要的內容 首先用合法使用者登入系統...

作業系統實驗

分析bootloader進入保護模式的過程。在剛進入bootloader的時候,最先執行的操作分別為關閉中斷 清除eflags的df位以及將ax,ds,es,ss暫存器初始化為0 globl start start code16 cli 關中斷 cld 清除方向標誌 xorw ax,ax ax清0 ...

實驗作業系統

實驗一 linux使用環境 實驗二 linux下c程式設計環境 1 設有乙個三位數,將它的百 十 個位上的3個數,各自求立方,然後加起來,正好等於這個3位數,請在linux環境下程式設計找出所有滿足條件的數,並編譯 除錯 執行你的程式。include int main return0 實驗三 程序觀...