文件系统
文件描述符元数据inodeinode保存文件的属性,执行块区域
inode并不保存文件名
inode表
inode位图
block块
数据块block一个文件保存在一个或多个块中
保存了文件的内容数据,文件读取的最小单位
指针
指针函数指针函数是指返回类型为函数指针类型
function函数返回一个返回值为空,参数值为int类型的函数指针。
1void (*fun)(int) funtion();
函数指针函数指针:指向函数入口的指针
函数指针的定义函数返回值 (*point)(参数类型);
1int (*FUNC_POINT)(float);
上面代码声明了一个返回值为int,参数类型为float的函数指针
typedef与函数指针
12typedef int(*func)(int) FUNC;FUNC f1;//得到函数指针 int(*f1)(int)
函数指针的初始化123456789#include<stdio.h>int add(int x,int y){ printf("%d+%d=%d\n",x,y,x+y);}int main(){ int (*func)(int,int); func=add; func(1,2);}
123456789#include<stdio.h>int add(in ...
linux系统调用
linux系统调用分类The linux kernel provide some api to opearte the system,some usually used api loke like read,write which aoubt IO
IO
user manage
file param
mutial pthread
linux操作系统常用的系统调用
文件操作
进程控制
用户
文件IOin the linux,every thing can abstract to file.the operation of the hardware device or input output stream can be sum up to read,write,open,close,seek.
in the file systeam,every file have unique identity called file descriptor ,the type of file descriptor is int.when a new file stream create,the ...
计算机基础
冯诺依曼体系计算机五大组成
控制器:控制硬件设备的运行
运算器:数学运算,逻辑运算,位运算
存储器
内存:临时存储
外存:硬盘:长期存储
输入设备:键盘,鼠标
输出设备
存储器
访问时间
存储器
1ms
寄存器
2ms
高速缓存
10ms
内存
10ms
硬盘
100s
磁条
存储器可分为两大类
ROM:软件数据,代码等
RAM:只读存储器(存放BIOS程序)
硬盘的大小决定了能都安装程序的大小,内存决定了能运行的程序数目
软件可以分为两大类
操作系统:控制计算机硬件,管理应用软件的控制程序
应用软件
32位CPU表示一次性能够读取32个二进制数
2核4线程表示有2个CPU,四线程表示每一个1个CPU内部有4条流水线
计算机启动流程
计算机通电
BIOS运行,检测CPU,内存,硬盘等硬件设备
BIOS读取CMOS存储器中的参数,选择启动设备
读取启动设备的第一块扇区(主引导记录MBR)
共512字节,前446为引导信息(bootloader启动装载程序,用于启动操作系统)
后64位分区信息
最后两个字节为结束标志
操作系统询 ...
计算机网络
三种交换方式
电路交换
分组交换
报文交换
性能指标
速率
bit/s
比特率
带宽
HZ
发送速率
吞吐量
时延
发送时延,传播时延,处理时延
时延带宽积
时延带宽积=传播时延*带宽
往返时间
利用率
信道利用率
网络利用率
丢包率
体系结构OSI体系结构
物理层
数据链路层
网络层
运输层
会话层
表示层
应用层
TCP/IP体系
网络接口层
网际层:IP
运输层:TCP,UDP
应用层:HTTP SMTP DNS RTP
原理体系结构
物理层:解决信号如何表示
数据链路层:分组在一个网络中传输问题
网络层:解决分组在多个网络上传输的问题
运输层:进程间的通信问题
应用层:进程的交互
应用端构建HTTP请求报文
12345GET /HTTP/1.1Accept-Language:en-usAccept:*/*Connections:closeHost:192.168.0.02
运输层给HTTP添加TCP报文或UDP,成为TCP报文段或UDP用户数据报
...
链表
单向链表链表是一种链式存储结构,物理层面是一段地址不一定连续的存储空间
结点是链表的最小单位,每个结点都有有唯一后继。
概念:
首元节点:第一个有效的数据元素
头节点:头节点是首元节点的前置节点,其数据域可不存放数据,也可以利用该数据区域存放链表节点个数等其他附加信息。
头指针:指向链表的第一个节点。如果链表没有头节点,则头指针指向首元节点。如果链表存在头结点,则头指针指向头节点。
链表的存储结构结点用LNode结构体表示,由存储数据data和指向下一个结构体的指针域组成。
特别的头指针使用*LinkList来表示一个链表,LNode用于表示节点,这样对链表和节点有很好的区分,可以提高代码的可读性。在后续的LNode *LocateElem(LinkList L,ElemType e);函数中我们可以发现传入的参数为链表,返回节点指针。
12345typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;
链表的基 ...
顺序表
顺序表属于线性表,是一种具有相同数据结构的有序序列。序列中的元素存放在连续的地址空间中。
顺序表的存储结构有两种
静态分配
12345/*静态分配的顺序表*/typedef struct{ ElemType elem[MAXSIZE]; int length;}Sqlist;
静态分配中,定义了Sqlist结构体,含有两个成员,分别是MAXSIZE大小的数组elem,用于记录顺序表长度的length
动态分配
在动态分配的顺序表中,我们会使用malloc函数申请一块连续的内存,成员elem指针指向大小为MAXSIZE的数组第一个元素的首地址,length用于记录元素个数
123456typedef int ElemType; /*线性表元素类型*//*线性表*/typedef struct{ ElemType *elem; /*元素基地址*/ int length; /*元素个数*/}SqList;
上面的ElemType是一种抽象的数据类型,而不是固定的数据类型,使用者可以根据实际需要使用typede ...