freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計(jì)算機(jī)操作系統(tǒng)-課設(shè)(2)(已修改)

2025-09-04 16:18 本頁面
 

【正文】 目錄1 課程設(shè)計(jì)目的 12 環(huán)境搭建 13 設(shè)計(jì)過程 2 設(shè)計(jì)一:掌握Linux操作系統(tǒng)的使用方法 2 內(nèi)容要求 2 設(shè)計(jì)過程及實(shí)現(xiàn) 2 設(shè)計(jì)二:掌握系統(tǒng)調(diào)用的實(shí)現(xiàn)過程 6 內(nèi)容要求 6 設(shè)計(jì)過程及實(shí)現(xiàn) 6 設(shè)計(jì)三:掌握增加設(shè)備驅(qū)動(dòng)程序的方法 11 內(nèi)容要求 11 11 設(shè)計(jì)四:使用GTK/QT實(shí)現(xiàn)系統(tǒng)監(jiān)控器 15 內(nèi)容要求 15 設(shè)計(jì)過程及實(shí)現(xiàn) 154 課設(shè)小結(jié) 23附 代碼 24 24 242 283 294 31課 程 設(shè) 計(jì) 報(bào) 告題目: 操作系統(tǒng)課程設(shè)計(jì)報(bào)告 課程名稱: 操作系統(tǒng)原理 專業(yè)班級(jí): IS1302 學(xué) 號(hào): U201315130 姓 名: 王超 指導(dǎo)教師: 陽富民 報(bào)告日期: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1 課程設(shè)計(jì)目的(1)掌握Linux操作系統(tǒng)的使用方法;(2)了解Linux系統(tǒng)內(nèi)核代碼結(jié)構(gòu);(3)掌握實(shí)例操作系統(tǒng)的實(shí)現(xiàn)方法。2 環(huán)境搭建 (1)在Windows10上,利用虛擬機(jī)軟件VMware軟件搭建的Linux平臺(tái): ◎Ubuntu LTS ◎內(nèi)核:Linux ubuntu 圖 (2)在添加系統(tǒng)調(diào)用中用到的其他內(nèi)核包: ①下載和當(dāng)前實(shí)驗(yàn)環(huán)境最為接近的系統(tǒng)版本(這點(diǎn)很重要) 使用aptget install 命令, ② ③解壓命令:tar –xjvf –C /usr/src ④解壓后,在/usr/(3)在調(diào)用linux圖形庫時(shí)需要安裝GTK環(huán)境: ①安裝gcc/g++/gdb/make 等基本編程工具 aptget install buildessential Tip:如果提示由于依賴項(xiàng)不能安裝,需要使用apt的強(qiáng)化版aptitude,這個(gè)工具可以自動(dòng)分析軟件包依賴,系統(tǒng)一般不自帶,需要先安裝,具體過程是: aptget install aptitude aptitude install buildessential aptitude這個(gè)工具很強(qiáng)大,對(duì)于解決軟件包安裝時(shí)的依賴問題很有幫助。 ②安裝 等開發(fā)相關(guān)的庫文件: aptget install gnomecoredevel ③安裝GTK核心組件: aptget install 3 設(shè)計(jì)過程 設(shè)計(jì)一:掌握Linux操作系統(tǒng)的使用方法 內(nèi)容要求(1)編一個(gè)C程序,其內(nèi)容為實(shí)現(xiàn)文件拷貝的功能;(2)編一個(gè)C程序,其內(nèi)容為分窗口同時(shí)顯示三個(gè)并發(fā)進(jìn)程的運(yùn)行結(jié)果。要求用到Linux下的圖形庫。 (gtk/Qt) 設(shè)計(jì)過程及實(shí)現(xiàn)(1)文件拷貝: ①文件的拷貝主要的思想就是利用文件指針操作,在兩個(gè)文件之間進(jìn)行按字符的fget和fput。從而完成整個(gè)文件的拷貝操作。在這個(gè)基本功能之外,需要增加程序的健壯性,具體有以下幾個(gè)方面: 源文件是否存在且能讀取數(shù)據(jù); 是否能創(chuàng)建目的文件,且能向里面寫入數(shù)據(jù); 程序需要的argc參數(shù)個(gè)數(shù)是否滿足要求; ②基于以上幾點(diǎn)和內(nèi)容要求,主要的程序段如下:if(argc!=3) //判斷參數(shù)個(gè)數(shù)是否為3 ,否則返回{ printf(Error in argc!\n)。 return 0。}if( (fsource=fopen(argv[1],rb))==NULL ){ printf(Error in open source file!\n)。 //判斷源文件是否能打開和讀出 return 0。}if( (ftarget=fopen(argv[2],wb))==NULL ){ printf(Error in open target file!\n)。 //判斷目的文件時(shí)候能創(chuàng)建和寫入 return 0。}while((c=fgetc(fsource))!=EOF){ fputc(c,ftarget)。 //按字符讀取和寫入數(shù)據(jù)}③實(shí)驗(yàn)過程將source/,:圖 復(fù)制開始前source/利用mycopy程序復(fù)制,: (2)實(shí)現(xiàn)三個(gè)進(jìn)程之間的并發(fā)程序: 這里需要用到課程實(shí)驗(yàn)時(shí)的fork( )程序以及GTK的圖形顯示。 ①基本fork()程序,調(diào)用顯示一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程的結(jié)構(gòu)如下: if((pid_1=fork())==0) { printf(Child 1 is running......\n)。 //第一個(gè)子進(jìn)程 Child 1 show(argc,argv,This is Child 1)。 //調(diào)用函數(shù)顯示窗口 } else { if((pid_2=fork())==0){ printf(Child 2 is running......\n)。 //第二個(gè)子進(jìn)程 Child 2 show(argc,argv,This is Child 2)。 //調(diào)用函數(shù)顯示窗口 } else { printf(Parent is running......\n)。 //父進(jìn)程 Parent //由于父進(jìn)程需要顯示全部子進(jìn)程PID,所以這里直接用參數(shù)畫窗口 } }②調(diào)用GTK顯示窗體函數(shù)模塊的結(jié)構(gòu):void show(int argc,char *argv[ ],char *title ) { gtk_init (amp。argc, amp。argv)。 //初始化工具包并且獲取命令行參數(shù)。 window = gtk_window_new (GTK_WINDOW_TOPLEVEL)。 //創(chuàng)建新的窗口。 //設(shè)定窗口的位置。 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER)。 //監(jiān)聽窗口的destroy事件。g_signal_connect (G_OBJECT (window), destroy, G_CALLBACK (destroy_progress), NULL)。 gtk_window_set_title (GTK_WINDOW (window), title)。//用來設(shè)定更改窗口標(biāo)題。 gtk_container_set_border_width (GTK_CONTAINER (window), 20)。//設(shè)定寬度。 //使用gtk_vbox_new函數(shù)建立縱向組裝盒。 //為了顯示構(gòu)件,必須將構(gòu)件放入組裝盒中,并將組裝盒放在窗口內(nèi)。 vbox = gtk_vbox_new (FALSE, 10)。 gtk_container_set_border_width (GTK_CONTAINER (vbox), 100)。//設(shè)定寬度。 gtk_container_add (GTK_CONTAINER (window), vbox)。 gtk_widget_show (vbox)。 //使用gtk_box_pack_start函數(shù)將構(gòu)件放到組裝盒中。 sprintf (id_char, %s ,My ID:%d, title,getpid ())。 //顯示PID號(hào) label = gtk_label_new (id_char)。 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10)。 gtk_widget_show (label)。 sprintf (id_char, 父進(jìn)程ID:%d, getppid ())。 //顯示PPID號(hào) label = gtk_label_new (id_char)。 gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10)。 gtk_widget_show (label)。 button = gtk_button_new_with_label (close)。 //關(guān)閉窗口按鈕 //信號(hào)登記函數(shù),監(jiān)聽按鈕的clicked事件。 //當(dāng)窗口clicked時(shí), gtk_widget_destroy 就會(huì)被調(diào)用。 //而 gtk_widget_destroy 函數(shù)又調(diào)用 gtk_main_quit() 結(jié)束程序運(yùn)行。 g_signal_connect_swapped (G_OBJECT (button), clicked, G_CALLBACK (gtk_widget_destroy), window)。 gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 10)。 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT)。 gtk_widget_grab_default (button)。 //函數(shù)顯示窗口中的組件 gtk_widget_show (button)。 gtk_widget_show (window)。 //準(zhǔn)備將窗口和所有的組件顯示在屏幕上,函數(shù)必須在GTK程序的最后調(diào)用. gtk_main ()。} ③,運(yùn)行; 編譯命令為:gcc o forkgtk `pkgconfig cflags libs gtk+` :圖 三個(gè)并行顯示的窗口 設(shè)計(jì)二:掌握系統(tǒng)調(diào)用的實(shí)現(xiàn)過程 內(nèi)容要求(1)采用編譯內(nèi)核的方法,添加一個(gè)新的系統(tǒng)調(diào)用。(2)編寫一個(gè)應(yīng)用程序,測試新添加的系統(tǒng)調(diào)用。(3)系統(tǒng)調(diào)用的功能:文件拷貝。 設(shè)計(jì)過程及實(shí)現(xiàn) linux內(nèi)核版本的不同,,內(nèi)核文件也有變化。(1)修改Makefile文件,修改系統(tǒng)版本后綴::這里加的是本人的姓名的首字母,以示區(qū)分。 修改Makefile文件版本(2)修改/usr/src/ ,在最后加入新的系統(tǒng)調(diào)用,拷貝函數(shù)實(shí)現(xiàn)。如下所示:asmlinkage int sys_zcycopyfile(const char* s_file, const char* t_file) { const int BUF_SIZE = 512。 int fin,fout。 char buf[BUF_SIZE]。 int copy_count。 mm_segment_t fs。 //段操作的初始化 fs = get_fs()。 set_fs(get_ds())。 /* 系統(tǒng)調(diào)用打開源文件,若失敗,返回1 */ if ((fin = sys_open(s_file,O_RDONLY,S_IRUSR)) == 1) { return 1。 printk(Error in oen source file!)。 } /* 系統(tǒng)調(diào)用創(chuàng)建并打開目標(biāo)文件,若失敗,返回2 */ if ((fout = sys_open(t_file,O_RDWR | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR)) == 1) { return 2。 printk(Errod in open target file!)。 } while(copy_count=sys_read(fin,buf,BUF_SIZE)) { /* 拷貝文件,若失敗,返回3 */ if (copy_count == 1 || sys_write(fout,buf,copy_count) == 1) { return 3。 printk(Error in copy file!)。 } } set_fs(fs)。 /* 段操作結(jié)束 */ return 0。} (3)修改/usr/src/ :,在文件的系統(tǒng)調(diào)用號(hào)部分添加一個(gè)新的系統(tǒng)調(diào)用,具體添加行如下: 323 64 hdcopyfile sys_hdcopyfile同時(shí)把最下面的總調(diào)用號(hào)加1,變成323。 添加系統(tǒng)調(diào)用號(hào)(4)添加聲明到頭文件 : 填寫系統(tǒng)調(diào)用入口表 ③當(dāng)用戶程序需要系統(tǒng)提供服務(wù)的時(shí)候,比如347號(hào)調(diào)用sys_zcycopyfile,就會(huì)通過系統(tǒng)調(diào)用產(chǎn)生一個(gè)int 0x80的軟中斷,就會(huì)進(jìn)入到系統(tǒng)調(diào)用的入口函數(shù),找到這個(gè)調(diào)用函數(shù)表查找入口函
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1