原创 09死鎖

什麼是死鎖? 多個進程由於互相等待對方持有的資源而造成的誰都無法執行的情況叫死鎖 舉個栗子 在這樣一個四條路交叉的情況下:車A佔有了路4,請求進入路1,而路1被車B佔有,車B請求進入路2,路2又被車C佔有; 車C申請進入路3,而路3被車

原创 08進程同步與信號量

進程同步:指多個進程間互相合作,共同推進 比如大巴車司機和售票員兩個進程:司機必須等到售票員關門後,才能啓動車輛。售票員必須等司機到站停車才能開門。可以通過信號來完成,售票員在關門時發送信號1,司機等待信號1發生後,啓動車輛。司機到站停車

原创 判斷樹的子結構

輸入兩顆二叉樹,判斷B是不是A的子結構。(約定空樹不是任意一個數的子結構),B是A的子結構,即A中有出現和B中相同的結構及節點值。例如: 求解思路:1.先遍歷樹A,在A中找到B的根節點。若B是A的字數,則B的根節點必然是A的節點之一  

原创 05用戶級線程

進程=資源(內存等)+指令執行序列 一個資源+多個指令執行序列構成了進程 線程就是進程內共享地址空間的指令序列,是輕量級的進程,如下圖所示 線程:保留了併發的優點,實質就是映射表不變而PC指針變。 線程誕生的背景?即多個執行序列+一個地址

原创 指向常量字符串的指針

由於字符串在編程時使用的頻率非常高,爲了優化,很多語言都對字符串做了特殊的規定。 爲了節省內存,C/C++把常量字符串放到單獨的一個內存區域。當幾個指針賦值給相同的常量字符串時, 它們實際上會指向相同的內存地址。但用常量初始化字符數組,情

原创 04多進程圖像

本節兩個要點:1.從用戶層面認識進程 ,什麼是多進程 2.操作系統爲多進程圖像做了哪些準備。 上一節已經說了,進程就是啓動了的程序。從用戶角度看,打開PPT,網易雲音樂就是開啓了兩個進程。同時,我們打開人物管理器能看到字段爲PID的列,就

原创 03CPU管理的直接想法

CPU的工作原理:簡單來說就是取指執行,也就是說取指令然後執行指令。 以CPU上電以後的工作流程舉例解釋取指執行,如下圖所示                               取指執行示意圖 假設CPU上電的時候PC指針值是5

原创 02_操作系統接口

什麼是接口?日常生活中如電源插座、汽車油門踏板 接口的作用:連接兩個東西、信號轉化、屏蔽細節 操作系統接口:連接操作系統和應用軟件,使得程序在用戶態和內核態之間切換        如何連接:C語言程序,進一步的即系統函數,表現爲系統函數的

原创 01_sizeof

定義一個空的類型,裏面沒有任何的成員變量和成員函數,對類型求sizeof,得到的結果是多少? 答:答案是1,空類型的實例中不包含任何信息,本來求sizeof應該是0,但是當我們聲明該類型實例的時候,它必須在內存中佔有一定的空間,至於佔多

原创 01操作系統啓動

操作系統裝在硬盤上(磁盤),因此操作系統的啓動第一步就是把操作系統文件載入內存。載入內存的過程主要爲三部分 boot sect.s(引導程序) set up.s,完成os啓動前的設置 system模塊執行 set up:        

原创 C++中流輸入輸出比printf和scanf速度慢

今天在刷題時總是提示Time Limit EXceeded,題目是:熱血大格鬥  #include <map> #include <iostream> #include <string> #include <vector> #inclu