原创 數據結構——線性表(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.進程間通信的實現方