原创 csapp lab3 bufbomb 緩存區溢出攻擊 《深入理解計算機系統》

這個實驗主要是熟悉棧,和了解數據緩存區溢出的問題。 數據緩存區溢出:程序每次調用函數時,會把當前的eip指針保存在棧裏面,作爲被調用函數返回時的程序指針。在被調用程序裏面,棧是向下增長的。所有局部變量都存儲在棧裏面(靜態局部變量除外)。假

原创 csapp lab2 bomb 二進制炸彈《深入理解計算機系統》

bomb炸彈實驗 首先對bomb這個文件進行反彙編,得到一個1000+的彙編程序,看的頭大。 phase_1: 0000000000400ef0 <phase_1>: 400ef0: 48 83 ec 08 s

原创 微軟100題——1

1.把二元查找樹轉變成排序的雙向鏈表 題目: 輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。 要求不能創建任何新的結點,只調整指針的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 轉換成雙向鏈表 4=

原创 lab4 Cache Geometries 深入理解計算機系統——高速緩存

這個實驗主要是將高速緩存命中的一點東西,意在告訴我們平常多注意這方面的東西。 不懂java的,所以只管C的部分。 You will do this several times, making small modification

原创 Search in Rotated Sorted Array

感覺這個題目在哪裏看到過,面試有可能會被問起,所以還是記錄一下。 題目地址:Search in Rotated Sorted Array 題目大意:有一組有序數據,從中間任意一個點進行一次旋轉,如:0 1 2 4 5 6 7 可能變成 4

原创 155Min Stack

題目地址:155Min Stack 最近爲了提高數據結構和算法能力,保證每天一到leetcode的題目。從easy開始,感覺這道題目還蠻好,記錄一下。 題目大意:就是維護一個棧,獲得棧中元素的的最小值。 首先想到,在棧裏面設置一個min變

原创 C++函數傳值調用

C++的函數的參數調用是傳值方式。 想要改變傳值調用,有引用和指針兩種方式。其中,引用的實現機理也是通過一個指針,但是具體和指針傳值的方式又不一樣。具體見:C++中的指針與引用 對於指針傳值,其實實際上也是一個值傳遞,只是這個值是地址。所

原创 char *p 和char *p[]

char *p 和char *p[]區別 char* p是一個指針,根本沒分配內存,他指向的"abc123ABC" 是隻讀的,不能改變,在下面給他賦值是錯的 而char p[]是一個數組,已經分配內存,是將"abc123ABC" 複製到

原创 gdb 命令使用

1.gdb -x command.txt 每次重複輸入命令很麻煩,可以使用上面的命令,把命令輸入進command.txt裏面,然後直接就可以執行gdb。 2.list 2.1 list function 打印function源程序 2.

原创 可變長參數函數

可變長參數函數的參數數量可變。如printf,scanf等函數都是可變長參數函數。 對C語言來說,實現可變長參數函數要用到三個宏:va_start(),va_end(),va_arg()和一個特殊類型va_list,他們

原创 JOS大內核鎖

JOSlab4裏面,採用了SMT的操作系統,所以可能存在兩個CPU同時進入內核態,雖然CPU之間的內核棧,但是多核同步可能還是會出現問題,所以JOS採用大內核鎖來鎖住整個內核,使得每次只有一個CPU會進入內核,另外的CPU如果申請進入內核

原创 JOS 系統中第一個用戶進程的建立和運行

一:進程的表示: 在jos系統裏面,進程用一個struct結構體Env來存儲相應的信息,這個ENV的結構體有點類似於進程描述符一類的東西。 struct Env { struct Trapframe env_tf; // Save

原创 軟鏈接和硬鏈接

軟鏈接和硬鏈接 標籤(空格分隔): APUE  linux的文件系統裏面,鏈接分爲軟鏈接和硬鏈接。現在ubuntu裏面實際看一下,兩者有什麼區別。  先說在命令行裏面怎麼實現軟鏈接和硬鏈接:  touch file : 改變file的

原创 printf緩存問題

轉載至:http://www.cnblogs.com/zackyang/archive/2010/01/19/1651929.html #include <stdio.h> #include <sys/types.h> #include

原创 MIT6.828 虛擬地址轉化爲物理地址——二級分頁

這個分頁,主要是在mit6.828的lab2的背景下來說的。 Mit6.828 Lab2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ lab2主要講虛擬內存->物理內存的變換,通過一定的