1. 程式人生 > >linux系統安裝、使用中的問題和clock_t計時問題

linux系統安裝、使用中的問題和clock_t計時問題

1.windows下的安裝ubuntu系統過程中,(使用easyBCD軟體安裝)出現如下錯誤


則要在分好/  /home  swap等空間後先解除安裝了ISOdevice,記得自己當時等這個介面出來後,點選返回和繼續是沒反應的,所以要在這個介面出來之前調出終端解除安裝,使用的指令是:sudo umount -l /isodevice  。為了檢視這個被解除安裝了沒有,可以再次輸入這指令,則會顯示:umount: /isodevice: not mouted   其介面則是:


   注意:其實這個錯誤在第一次安裝ubuntu是不會出錯的,一般是解除安裝完ubuntu系統後重新安裝才會出現這種錯誤。

2.按Ctrl+alt+F(1...6)出來的tty終端,其小四角是省略了一些字母:


3.當進行過VNC遠端控制時,要安裝了一些影象介面後,導致登入時即使輸入正確的密碼,但是閃了一下有跳回輸入密碼的登入介面,這時要在tty裡刪除相應的檔案先,在切換到登入介面就可以登入進行,不過這個是不治本的方法,其他的方法自己也不知道,基本指令是

1. 在tty終端裡輸入:cd  /home/yangdashi     (其中的yangdashi是我的使用者名稱)

2.然後檢視是否有.Xaut*檔案,其一般開啟了VNC服務後會在這裡生成一個Xauthority的檔案,其屬性被

定義為root使用者,所以我們自身的使用者名稱就使用不了。所以要刪除它,檢視指令為:ls -al

3.接著輸入: rm -rf  .Xaut*  

注意不要忽略了‘.’和‘*’

4.重新輸入指令:ls -al可以看到Xauthority檔案被刪除了。故可以成功登陸了。

注意:如果我們刪除上面的那個檔案後還是出現迴圈登入,則可能是本機使用者盤的記憶體不夠,刪除一些佔用記憶體比較大的檔案則可以登入

4,linux系統的一些常識:


5.關於在linux系統下使用clock_t的問題.

首先,我們需要理解linux系統下的時間系統有幾種,其分別為:

(1) 實際執行時間(real time):從命令列執行到執行終止的消逝時間;
(2) 使用者CPU時間(user CPU time):命令在使用者態中執行時間的總和;
(3) 系統CPU時間(system CPU time):命令在

系統核心態中執行時間的總和。

其中使用者態和系統態的概念:

void testfork(){  
if(0 = = fork()){  
printf(“create new process success!\n”);  
}  
printf(“testfork ok\n”);  
}  

2)特權級

熟悉Unix/Linux系統的人都知道,fork的工作實際上是以系統呼叫的方式完成相應功能的,具體的工作是由sys_fork負責實施。其實無論是不是Unix或者Linux,對於任何作業系統來說,建立一個新的程序都是屬於核心功能,因為它要做很多底層細緻地工作,消耗系統的物理資源,比如分配實體記憶體,從父程序拷貝相關資訊,拷貝設定頁目錄頁表等等,這些顯然不能隨便讓哪個程式就能去做,於是就自然引出特權級別的概念,顯然,最關鍵性的權力必須由高特權級的程式來執行,這樣才可以做到集中管理,減少有限資源的訪問和使用衝突。

特權級顯然是非常有效的管理和控制程式執行的手段,因此在硬體上對特權級做了很多支援,就Intel x86架構的CPU來說一共有0~3四個特權級,0級最高,3級最低,硬體上在執行每條指令時都會對指令所具有的特權級做相應的檢查,相關的概念有CPL、DPL和RPL,這裡不再過多闡述。硬體已經提供了一套特權級使用的相關機制,軟體自然就是好好利用的問題,這屬於作業系統要做的事情,對於Unix/Linux來說,只使用了0級特權級和3級特權級。也就是說在Unix/Linux系統中,一條工作在0級特權級的指令具有了CPU能提供的最高權力,而一條工作在3級特權級的指令具有CPU提供的最低或者說最基本權力。

3)使用者態和核心態

現在我們從特權級的排程來理解使用者態和核心態就比較好理解了,當程式執行在3級特權級上時,就可以稱之為執行在使用者態,因為這是最低特權級,是普通的使用者程序執行的特權級,大部分使用者直接面對的程式都是執行在使用者態;反之,當程式執行在0級特權級上時,就可以稱之為執行在核心態。

雖然使用者態下和核心態下工作的程式有很多差別,但最重要的差別就在於特權級的不同,即權力的不同。執行在使用者態下的程式不能直接訪問作業系統核心資料結構和程式,比如上面例子中的testfork()就不能直接呼叫sys_fork(),因為前者是工作在使用者態,屬於使用者態程式,而sys_fork()是工作在核心態,屬於核心態程式。

當我們在系統中執行一個程式時,大部分時間是執行在使用者態下的,在其需要作業系統幫助完成某些它沒有權力和能力完成的工作時就會切換到核心態,比如testfork()最初執行在使用者態程序下,當它呼叫fork()最終觸發sys_fork()的執行時,就切換到了核心態。

2. 使用者態和核心態的轉換

1)使用者態切換到核心態的3種方式

a. 系統呼叫

這是使用者態程序主動要求切換到核心態的一種方式,使用者態程序通過系統呼叫申請使用作業系統提供的服務程式完成工作,比如前例中fork()實際上就是執行了一個建立新程序的系統呼叫。而系統呼叫的機制其核心還是使用了作業系統為使用者特別開放的一箇中斷來實現,例如Linux的int 80h中斷。

b. 異常

當CPU在執行執行在使用者態下的程式時,發生了某些事先不可知的異常,這時會觸發由當前執行程序切換到處理此異常的核心相關程式中,也就轉到了核心態,比如缺頁異常。

c. 外圍裝置的中斷

當外圍裝置完成使用者請求的操作後,會向CPU發出相應的中斷訊號,這時CPU會暫停執行下一條即將要執行的指令轉而去執行與中斷訊號對應的處理程式,如果先前執行的指令是使用者態下的程式,那麼這個轉換的過程自然也就發生了由使用者態到核心態的切換。比如硬碟讀寫操作完成,系統會切換到硬碟讀寫的中斷處理程式中執行後續操作等。

這3種方式是系統在執行時由使用者態轉到核心態的最主要方式,其中系統呼叫可以認為是使用者程序主動發起的,異常和外圍裝置中斷則是被動的。

總結:使用者態與核心態主要是許可權不同,有些執行許可權必須要核心態才可以擁有。

  所以當你在linux下使用clock_t這個函式時,其返回的值跟我們在Windows下的返回值不同,其返回的CPU使用時間,其問題是:使用clock()函式計算出來的時間就為總的CPU時間。也就是說,clock函式不能區分使用者空間和核心空間。

所以當我們需要計算我們自身某段程式的執行時間是需要使用gettimeofday函式。其例子如下:

 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <sys/time.h>
 4 
 5 /*struct timeval說明
 6 strut timeval { . {! K( J, c4 ?' }$ _+ L& B0 P
 7 long tv_sec; /* 秒數 */ ( r* A) \" h& k( j. a2 F4 R
 8 long tv_usec; /* 微秒數 */
 }*/
10 int main()
11 {
12       struct timeval tpstart,tpend;
13       float timeuse;
14       gettimeofday(&tpstart,NULL);
15       /* 程式程式碼 */
16       gettimeofday(&tpend,NULL);
17       timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
18       timeuse/=1000000;
19       printf("Used Time:%f\n",timeuse);
20       return 0;
21 }


相關推薦

linux系統安裝使用中的問題和clock_t計時問題

1.windows下的安裝ubuntu系統過程中,(使用easyBCD軟體安裝)出現如下錯誤 則要在分好/  /home  swap等空間後先解除安裝了ISOdevice,記得自己當時等這個介面出來後,點選返回和繼續是沒反應的,所以要在這個介面出來之前調出終端解除安裝,使

Linux系統簡介安裝RHEL7系統RHEL7基本操作總結和答疑

換工作 使用 pin scsi tel 安裝 localhost onf rhel7 在win2008命令行界面輸入:ipconfig 查看網絡參數 ############################################################

linux系統elasticsearchELK 安裝配置排錯及示例

簡介 開始學習安裝elasticsearch時,出現過很多錯誤,導致無法進行安裝的操作。該文章是供自己安裝的總結及後面的小夥伴們能更好更快的解決問題。安裝中出現過問題會在下面描述。 一 、部署準備 檔案準備 elk-5.4.0.tar.gz 部署環境 C

Linux 】記錄下第一次使linux系統遇到的問題(系統安裝配置檢視搜狗輸入法安裝

作為一個有夢想的技術人,無論你是搞硬體的還是搞軟體的,相信大家都有一顆探索的心,而Linux作業系統就不該成為一種神祕的系統,於是作為小白的我也開始玩一玩linux系統了,系統的安裝是十分的簡單,下載一個rufus.exe軟體,再下載任意一個Linux系統,使用rufus製作

Linux系統安裝軟體記錄(jdkxshelltomcatJavamysql)

提前準備好的安裝包如下圖所示: linux軟體安裝1. 概述     由於Linux有多種系列,每種系列都有自己的推薦安裝方式,所以我們將安裝方式分為兩種: 一種是通用的安裝方式(任意系統都是一樣的安裝方式); 一種是不同版本Linux獨有的安裝方式。

運維之紅帽管理員篇-----1. Linux系統簡介 安裝RHEL7系統 RHEL7基本操作

ONE DAY 總結: 1970-1-1 Linus Torwalds clone-vm7 cat  /etc/redhat-release  name  -r 掛載點: 在Linux訪問裝置資源的訪問點  cat /proc/meminfo cat  /proc/cpu

Vmware下,從Linux系統安裝到yum源配置(包括Centos7.XRhel7.X)

一 系統安裝 二 yum源配置 1、mount /dev/sr0 /media/cdrom 場景:使用iso映象安裝系統後,執行此命令提示: 於是google了一下,/dev/sr0【最終發現這個不是重點,只是因為在安裝系統後CD/DVD驅動器裝

Oracle數據庫12cR2(項目實戰之二):Linux系統安裝Oracle12.2

oracle12cr2 oracle視頻教程 oracle12cr2安裝 linux上安裝12c linux上安裝12cr2 oracle數據庫12cR2(項目實戰之二):linux系統安裝Oracle12.2一、課程主題:風哥Oracle數據庫教程12cR2(項目實戰之二):在linux

Linux 系統安裝(5分鐘)

定義 install 啟動系統 輸入 let 客戶 nim ima 位置 安裝版本:CentOS 6.5 minimal 虛擬機工具:VMware 虛擬機配置:1核2線程 2G內存 50G硬盤 步驟: 一、虛擬機配置 1、打開VMware,創建新的虛擬機,選擇典型安裝;

1-1 Linux系統安裝

鍵盤 快捷 pin 顯卡驅動 repl etc skip bios 電源 虛擬機下配置網絡時 rhel7.2安裝新建虛擬機內存2G CPU 1核2線 硬盤20G存為單個文件 使用ISO鏡像 橋接網卡引導界面:? Install Red Hat Enterprise L

Linux系統安裝

linux運維學習一、配置虛擬機自動安裝 1、根據yum源配置博客:http://13132323.blog.51cto.com/13122323/1951991首先安裝自動應答腳本制作工具yum install system-config-kickstart –y,然後關閉主機的防火墻,因為他會對http

#27 Linux系統安裝:centos系

linux系統安裝:centos系Linux系統安裝:centos系 post --> bootsequence(BIOS)--> bootLoader(grub -->1.5 stage --> 2nd stage) --> kernel(devtmpfs) -->

Linux安裝配置啟動Apache

util roo 驗證 post res 啟動 php cto 直接 安裝Apache前準備: 1、檢查該環境中是否已經存在httpd服務的配置文件,默認存儲路徑:/etc/httpd/httpd.conf(這是centos預裝的Apache的一個ent版本,一般我們安裝

linux系統安裝配置exim4(源碼安裝

testing iconv uri linux系統安裝 5.0 tab sea action /usr 一、Exim4概述 Exim是一個MTA(Mail Transfer Agent,郵件傳輸代理)服務器軟件,該軟件基於GPL協議開發,是一款開源軟件。該軟件主要運行

Linux系統安裝(centOS版)

linux centos 安裝手冊。 一、概述: 學習Linux操作系統就必須得動手操作,不能只看視頻和課本。一定要動手操作,不斷的去處理問題,不斷的去嘗試。請您記住,計算機你是倒騰不壞的,萬一壞了就重裝系統解決,只要你不把計算機用出煙,就沒有事兒。 這篇博客是作者本人自己倒騰安裝的,

Linux系統管理(一)Linux系統安裝與修復

linux系統安裝與修復一. Linux多種安裝方式與應用軟件安裝1. Linux的硬盤安裝方式(1) 復制Linux的ISO文件到硬盤某個分區(2) 用Linux安裝啟動盤啟動/DOS啟動盤啟動計算機註: DOS啟動盤中必須要存放加載Linux系統的工具及Linux內核和initrd映像文件,主要文件包括:

Linux用戶管理(二)Linux系統安裝

linux安裝 1、RedHatLinux安裝前準備硬件要求CPU:Intel、ADM、VIA兼營內存:SDRAM、EDO和DDR,建議容量在128MB以上,最大4GB硬盤:接口類型(IDE、SCSI、USB)、自由空間(最小:500MB、完全安裝:4.5G)網卡:一塊或多塊顯卡:VGAhttp://hard

Linux系統安裝ActiveMQ時遇到服務無法啟動的問題

bin 使用 和我 inux 日誌 可能 sta .com 日誌信息 在安裝ActiveMQ時遇到了一點小問題,正常情況下在apache-activemq-5.15.0/bin目錄下執行$ ./activemq start應該就能夠啟動ActiveMQ的服務 也沒有詳細看

基於Linux系統安裝IQ庫數據庫

iq數據庫 數據庫 hi,好久沒分享過技術啦,現在來跟大家分享一下最近操作過一項頗值得學習操作的技術,那就是IQ數據庫的安裝啦,(*^__^*) 嘻嘻……事不宜遲,現在就直奔主題吧。以下是用root用戶操作的哦,記得刪除文件的千萬不要用rm -rf *,否則,恭喜你中頭獎了,O(∩_∩)O哈哈哈~把I

kali-linux系統安裝步驟

href 漢語 tex amd64 linux下 air ges 最好 如圖所示 由於網絡的使用越來越廣泛,網絡安全問題也越來越被大眾關註.在此背景下,KaliLinux於2013年發布,Kali Linux 集成了海量的滲透測試工具, 如nmap , Wireshark