日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统课设--NACHOS试验环境准备、安装与MAKEFILE分析

發(fā)布時間:2025/3/21 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统课设--NACHOS试验环境准备、安装与MAKEFILE分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

山東大學(xué)操作系統(tǒng)課設(shè)lab1

  • 實(shí)驗(yàn)一 NACHOS試驗(yàn)環(huán)境準(zhǔn)備、安裝與MAKEFILE分析(lab1)
      • 實(shí)驗(yàn)環(huán)境:
      • 分析記錄:
    • 1. 準(zhǔn)備虛擬機(jī)下LINUX宿主操作系統(tǒng)環(huán)境
    • 2. NACHOS實(shí)驗(yàn)代碼框架(源碼目錄)的基本分析
    • 3. MAKEFILE的基本分析
    • 4. 硬件機(jī)制模擬部分的實(shí)現(xiàn)原理分析,包括中斷、時鐘、CPU指令執(zhí)行

實(shí)驗(yàn)一 NACHOS試驗(yàn)環(huán)境準(zhǔn)備、安裝與MAKEFILE分析(lab1)

實(shí)驗(yàn)環(huán)境:

虛擬機(jī)下Ubuntu Linux 16.04 LTS系統(tǒng),nachos-3.4內(nèi)核管理模塊和MIPS CPU軟件模擬模塊,實(shí)驗(yàn)報告放在根目錄下面。

分析記錄:

1. 準(zhǔn)備虛擬機(jī)下LINUX宿主操作系統(tǒng)環(huán)境

下載安裝VMware、Ubuntu12.04
把gcc-2.8.1-mips.tar.gz、nachos-3.4-UALR051.zip拖進(jìn)VMware Desktop
解壓nachos-3.4-UALR051.zip,放在Desktop即可
在nachos-3.4-UALR051.zip/nachos-3.4/code/threads/ 的目錄下,sudo apt-get install g++,直接make

此步是檢驗(yàn)文件有無問題,上圖所示g++ is already表示make通過,Linux宿主操作環(huán)境基本完成。
設(shè)置聯(lián)網(wǎng),下載vs code,用于編寫代碼
聯(lián)網(wǎng):https://blog.csdn.net/wuhuimin521/article/details/80992530



輸入ipconfig/all





調(diào)試好網(wǎng)絡(luò)之后,下載vs code,code_1.40.2-1574694120_amd64.deb
安裝教程如下:
https://www.cnblogs.com/wanglijun/p/10988223.html
雖然我已經(jīng)安裝了依賴,還是報錯
package architecture (amd64) does not match system (i386)
我查了資料發(fā)現(xiàn)https://blog.csdn.net/qiuchangyong/article/details/97505379
dpkg -i是安裝軟件包的意思,而我所報的錯意思是在i386機(jī)器上安裝amd64類型的包,則有不匹配錯誤。
我加上了:sudo dpkg --add-architecture amd64
又報了一個錯

應(yīng)該是我的info包里有問題,需要進(jìn)行更新https://segmentfault.com/q/1010000000117928

再次sudo dpkg -I code_1.40.2-1574694120_amd64.deb,很長一段,看起來沒有報錯,不過我還是進(jìn)行了驗(yàn)證。


還是不行,原來是我下成64位的了
看了這個:https://blog.csdn.net/bitwoods/article/details/48299135
這期間還是有一些問題的,我尋求了學(xué)長的幫助。不過大致過程如上。下載成功,安裝成功,設(shè)置快捷鍵放在桌面。


這樣用起來比較方便。

2. NACHOS實(shí)驗(yàn)代碼框架(源碼目錄)的基本分析

主要分析threads文件夾內(nèi)的thread.cc&thread.h。thread.h是thread.cc的頭文件,對應(yīng)分析。
thread.h&thread.cc
2.1 include
#include “copyright.h”
#include “utility.h”
是c++實(shí)用軟件程序包
#include “machine.h”
在machine文件夾內(nèi)
#include “addrspace.h”
在userprog文件夾內(nèi)
2.2 define
MachineStateSize 18
StackSize (sizeof(_int) * 1024)
2.3 常量
enum ThreadStatus { JUST_CREATED, RUNNING, READY, BLOCKED }
2.4 extern
引用外部變量或函數(shù)
extern void ThreadPrint(_int arg)
在這里, ThreadPrint(_int arg)

在thread.cc里有這么一條語句,說明調(diào)用的是Thread類的Print函數(shù),個人認(rèn)為此處調(diào)用外部函數(shù)無意義。
2.5 private
int* stackTop;
棧頂
_int machineState[MachineStateSize];
除棧頂之外存放其他數(shù)據(jù)的寄存器,在棧分配StackAllocate中會用到
int* stack;
棧底
ThreadStatus status;
線程狀態(tài) ready/running/blocked
char* name;
線程名稱
void StackAllocate(VoidFunctionPtr func, _int arg);
為棧分配內(nèi)存

Ifdef我認(rèn)為是規(guī)定不同端口情況下如何分配棧內(nèi)存

為寄存器初始化賦值,賦給的值是在switch.h里已經(jīng)定義好的

2.6 public
Thread(char* debugName);

初始化一個線程,定義線程名字、為棧分配空間、設(shè)置線程狀態(tài)
~Thread();
釋放一個線程
void Fork(VoidFunctionPtr func, _int arg);

調(diào)用StackAloocate()為棧分配內(nèi)存;
設(shè)置不可中斷,IntOff;scheduler設(shè)置線程狀態(tài)為ReadyToRun;
設(shè)置可中斷;
void Yield();

放棄當(dāng)前線程,運(yùn)行下一個線程;
void Sleep();

設(shè)置status為blocked;
找到下一個可運(yùn)行的線程并運(yùn)行;
void Finish();
關(guān)中斷;
摧毀線程;
睡眠;
void CheckOverflow(); // Check if thread has
// overflowed its stack
void setStatus(ThreadStatus st) { status = st; }
char* getName() { return (name); }
void Print() { printf("%s, ", name);

3. MAKEFILE的基本分析

從threads文件夾入手

4. 硬件機(jī)制模擬部分的實(shí)現(xiàn)原理分析,包括中斷、時鐘、CPU指令執(zhí)行

我的

總結(jié)

以上是生活随笔為你收集整理的操作系统课设--NACHOS试验环境准备、安装与MAKEFILE分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。