自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 网络知识点

网络知识点一、内核网络栈代码:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。分析socket结构:state表示socket所处的状态,是一个枚举变量;type是表示socket在特定协议族下的类型如SOCK_STREAM;flags是一组标志位,用来设置socket是否正在忙碌;wq是sock的等待队列,在TCP需要等待时就sleep在这个队列上;file是回指指针;sk是网络层对于socket的表示

2020-09-15 11:32:14 221

原创 2020-09-15

2020/06/14 Selinux模块这周在看论文《基于密度聚类的Android平台异常入侵检测系统的研究》,里面提到了Selinux。这是2010年Shabtai等人提出的针对Android平台的入侵检测框架,并在Android系统上实现了一种更为安全的访问控制策略SElinux.SElinux的作用:作为Linux内核模块的一个安全子系统,SELinux的最大作用就是最大限度地减小系统中服务进程可访问的资源。SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kern

2020-09-15 11:30:04 145

原创 计算机网络知识点总结周报

2020/06/07 计算机网络知识点总结周报1.IPV4地址类型0.0.0.0-127.255.255.255128.0.0.0-191.255.255.255192.0.0.0-223.255.255.255224.0.0.0-239.255.255.255240.0.0.0-255.255.255.255 10.0.0.0-10.255.255.255172.10.0.0-172.31.255.255192.168.0.0-192.168.255.255 1

2020-09-15 11:28:35 922

原创 分析socket.c 文件

分析socket.c文件下图为linux网络栈实现与ISO/OSI网络栈七层分层之间的对应关系,BSD socket层对应函数集定义在socket.c文件中,其中函数将作为对socket、bind、accept等系统调用的直接下层响应函数。所有的网络调用函数都具有共同的入口函数sys_socket,由该入口函数调用具体的处理函数。Socket.c文件中函数的实现绝大多数都是简单的调用下层函数,而这些下层函数就是af_inet.c文件中定义的函数。内核对一个系统调用的响应是层层下放的,而传输层才会真正进

2020-09-15 11:27:34 555

原创 LINUX网络栈

系统调用是如何将请求传递给内核网络栈:以accept为例,accept如何将请求传递到sock_accept函数;对于网络套接字编程中的系统调用,从用户态进入内核态由int $0x80指令完成。所有的网络系统调用函数都使用一个共同的入口函数:sys_socketcall.其中,参数call表示具体被调用的应用层接口函数,参数args是接口参数指针,指向具体被调用函数所需的参数。这些用户在进行系统调用时传入的参数将原封不动的传递给内核网络栈相关底层实现函数使用。(以accept为例)①accept.S文

2020-09-15 11:22:17 168

原创 I/O复用模型

I/O复用模型一、select 函数select能监听的文件描述符受限于FD_SETSIZE,一般为1024,单纯的改变进程打开的文件描述符个数并不能改变select监听文件个数;解决1024以下客户端时使用select是很适合的,但如果链接客户端过多,select采用的是轮询模型,会大大降低服务器响应效率,不应在使用select。nfds:监控的文件描述符里最大文件描述符加1,此参数会告诉内核检测前多少个文件描述符的状态readfds:监控有读数据到达文件描述符集合,传入传出参数writef

2020-09-14 15:43:48 178

原创 多进程并发

多进程并发一、三次握手 四次挥手TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。TCP服务器收到请求报文后,如果同意连接,则发出确认报

2020-09-14 15:40:08 729

原创 中断和异常

中断和异常这周主要学习了中断和异常,在这里把整章知识梳理一下,做一个总结。(工作队列没有完成)一、什么是中段中断(外部中段)是对外部设备而言,I/O需要服务时处理器去相应。异常(内部中断)是为了解决机器运行时所出现的某些随机事件及编程方便而出现的。中断可分为屏蔽中断和不可屏蔽中断;异常分为故障、陷阱和终止三类。二、中断程序的基本框架注册中断函数:通过request_irq函数申请一根中断请求线。第一个函数:中断号,对应中断控制器上IRQ的编号。第二个函数:irt_handler_t类型个函

2020-09-14 15:37:49 214

原创 文件系统概述

文件系统概述一、什么是文件系统?除去支持Linux本身的文件系统Ext2外,Linux还得支持其他不同的文件系统,即对各种不同文件系统的操作和管理纳入到一个统一的框架中。用户程序可以通过同一个文件系统操作界面,也就是同一组系统调用,对各种不同的文件系统进行操作。对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的“虚拟文件系统”。基本概念:文件:一组在逻辑上具有完整意义的信息项的系列。目录:好比一个文件夹,容纳相关文件。目录项:在一个文件路

2020-09-14 15:34:24 318

原创 自旋锁

-自旋锁一、自旋锁概念自旋锁实现在多处理器情况下保护临界区。自旋锁实际上是忙等待锁,被自旋锁保护的临界区代码执行时不能进入睡眠状态,他不能因为任何原因放弃处理器,除了服务中断;被自旋锁保护的临界区代码执行时,内核不能被抢占。单CPU不支持内核抢占→空操作;单CPU并支持内核抢占→对内核抢占功能的打开和关闭;SMP系统上,不仅对内核抢占的禁止,还需要在内存加一个标志,每个需要进入临界区的代码都必须检查这个标志,看临界区中是否有进程。在Linux中,每个自旋锁都用spinlock_t表示:内

2020-09-14 15:28:44 1739

原创 fork进程

一、fork()、vfork()、clone()、内核线程和do_fork()在linux提供了fork、vfork、clone三个进程创建办法,执行fork、vfork和clone之后,通过一个系统调用表映射到sys_fork()、sys_vfork()和sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进城工作。fork():fork()调用一次返回两个值,对于父进程,fork函数返回子进程的进程号,而对于子进程,fork函数则返回0,这就是一个函数返回两次的本质。在f

2020-09-14 15:17:54 700

原创 分页机制+实践

分页机制+实践段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址。分页功能从总体上来说, 是用长度固定的页来代替长度不一定的段,分页就是将程序分成若干相同大小的页,每页4K个字节。从80386开始,所有的80x86处理器都支持分页,它通过设置CR0寄存器的PG标志启用。当CR0中的PG=0时,禁止使用分页机制,此时分段机制产生的线性地址直接当做物理地址使用;若PG=1,则启用分页机制。页:将线性地址空间划分成若干大小相等的片。物理块或页面:将物理地址空间分成与页大小相等的若干存

2020-09-14 15:10:19 299

原创 内存寻址

内存寻址1.冯诺依曼结构和哈佛结构**哈佛结构:**程序指令和数据存储分开存储的存储器结构。**冯诺依曼结构:**数据和代码放在一起。2.X86内存寻址的不同时期**逻辑地址:**通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。线性地址:线性地址也就是虚拟地址,linux用户进程使用的地址就是这个虚拟地址。**物理地址:**用来寻址物理存储芯片的地址,通常也就是处理器的物理地址总线所寻址的地址空间。**逻辑地址、线性地址和物理地址之间的转换关系:**分段机

2020-09-14 15:02:28 375

原创 内核双链表

一、数据结构线性表1.顺序存储结构的插入①用指针指向被操作的线性表,静态分配int Insert(Sqlist *L,int i,ElemType e){ if(i<1||i>L->length+1) return ERROR; //i值不合法if(L->length>=maxleng) return OVERFLOW; //溢出for(j=L->length;j>=i-1;j–)L->ele

2020-09-14 11:32:18 141

原创 Linux入门

一、环境搭建安装完成ubantu后,安装vim和gcc.在终端输入如下命令行:sudo apt-get install vimsudo apt-get install gcc二、知识点1.根目录和家目录的区别掌握这些之间的关系,是为了能正确理解cd系列命令的操作意义,才能熟练利用命令来进入各个文件夹,用编辑器来编写代码。Linux文件系统的目录结构:树形结构。cd /: 进入根目录。根目录是所有文件夹的根。/bin:系统启动时需要的执行文件(二进制)。放置的是在单人维护模式下还能够被操

2020-09-14 11:26:08 134

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除