原创 數據結構——線性表(c 實現)
#include<stdlib.h> #include<iostream> using namespace std; class List { public: List(int size) { m_iSize = size;
原创 進程切換、等待與退出
一、進程切換 二、進程創建 Windows的API:CreatProcess Unix進程創建系統調用:fork/exec:fork()把一個進程複製成兩個進程、exec()用新程序來重寫當前進程。 fork()的實現原理:for
原创 實時調度和多處理器調度
一、實時操作系統 二、多處理機調度算法
原创 數據結構——鏈表(c++ 實現)
一.靜態鏈表 靜態鏈表沒有指針但是也可以實現鏈表的結構,可以通過數組來實現,如下圖所示,頭結點數爲1,說明下一個指向1;然後1的頭結點數是4,下一個元素便指向4號,4號的頭結點數爲2.。。。。。 一.單鏈表 代碼實例: #i
原创 I/O子系統
目錄 一、I/O特點 1.設備接口類型 1.1字符設備 1.2塊設備 1.3網絡設備 2.同步與異步I/O 2.1阻塞I/O 2.1非阻塞I/O 2.3異步I/O 二、I/O結構 1.一個實際例子 2.CPU與設備的連接 3.I/O指令
原创 操作系統的基本類型及其特點
典型的操作系統類型:批處理系統、分時系統、實時系統、分佈式操作系統 1.批處理操作系統(分爲單道和多道批處理操作系統,一般指多批道) 是指用戶將一批作業提交給操作系統後就不再幹預,由操作系統控制它們自動運行。這種採用批量處
原创 一維、二維動態數組的定義與其數值的輸入(使用數組與vector)
一、一維數組 1.動態數組來實現 #include<iostream> #include<vector> using namespace std; int main() { //輸入行數 int n; cin
原创 算法時間與空間複雜度雜談
一、時間複雜度 1.常量階O(1) int i = 8; int j = 6; int sum = i + j; 只要代碼的執行時間不隨 n 的增大而增長,這樣代碼的時間複雜度我們都記作 O(1)。或者說,一般情況下,只要
原创 C語言的內存管理以及堆和棧的區別
一、C語言的內存分配 1.可執行文件存儲時(沒有調入到內存) 分爲代碼區(text)、數據區(data)和未初始化數據區(bss)3個部分。 1)代碼區:存放CPU執行的機器指令(machine instructions)。通常
原创 malloc與new用法與區別
一、malloc()和free C語言中malloc函數向系統申請分配size個字節的內存空間。返回值類型是 void* 類型。void* 表示未確定類型的指針。c,c++規定,void* 類型可以強制轉換爲任何其它類型的指
原创 static、const、extern關鍵字的詳解
一、static關鍵字 1.局部變量中的static 普通局部變量就是在函數內部定義的變量(不加static修飾符)。編譯器一般不對普通局部變量進行初始化,它的值在初始時是不確定的,除非對其顯式賦值。普通的局部變量在棧空間上
原创 linux內核中的鏈表與常用鏈表的區別
一、鏈表 1.常用的鏈表結構 特點:每個鏈表的節點就是一個數據結構 struct common_fox { unsigned long tail_length; //尾巴長度 unsigned long weight;
原创 文件系統
目錄 一、文件系統 1.文件與文件系統 2.文件系統的功能 3.文件屬性 4.打開文件和文件描述符 5.文件的用戶視圖和系統視圖 6.文件內部結構 7.文件共享和訪問控制 二、目錄、文件別名、文件系統種類 1.分層文件系統 三、虛擬文件系
原创 信號量與管程
一、信號量 信號量是操作系統提供的一種協調共享資源訪問的方法 信號量的實現: 爲什麼信號量的實現就不會被中途打斷呢,因爲信號量是由操作系統來實現的,保證了PV操作的原子性,這也是其主要的優勢。 classSemaphor
原创 進程間通信
1.進程通信定義 2.進程通信方法 間接通信:兩個進程的生命週期可以不一樣。 直接通信:兩個進程必須同時存在。 2.1直接通信 2.2間接通信 2.3阻塞通信與非阻塞通信 2.4通信鏈路緩衝 3.進程間通信的實現方