Linux
Solieaor
这个作者很懒,什么都没留下…
展开
-
IP分片
IP报文分片与重组数据链路层中的每条数据链路的MTU都不一样,比如以太网的MTU为1500字节,而FDDI为4352字节等等。但是IP位于数据链路层的上一层,它必须不受限于不同数据链路的MTU大小。任何一台主机都有必要对IP分片进行相应的处理,分片往往在网络上遇到比较大的报文无法一下子发送出去才会被处理。用一个例子来进行说明,如下图我们使用两个数据链路来完成数据传输,左边我们使用FDDI的数据链路,其MTU为4352;右边我们使用以太网的数据链路,MTU为1500;由于以太网的MTU是1500字节,因此原创 2020-07-27 20:41:34 · 1545 阅读 · 0 评论 -
TCP/IP四层模型协议格式
1、以太网协议2、ARP协议以太网前两个字段目的地址和以太网源地址中,如果目的地址为全一则代表广播地址。帧类型:表示后面数据的类型。0x0806表示ARP请求与应答硬件类型:表示硬件地址的类型。为1表示以太网地址。协议类型:表示要映射的协议地址类型,0x0800表示IP地址,它的值与以太网数据帧中类型字段的值一样。硬件地址长度与协议地址长度:硬件地址和协议地址的长度。对于以太网IP地址的ARP请求/应答,值为6和4。op:操作字段。ARP请求:1,ARP应答:2;RARP请求:3,RAR原创 2020-07-26 19:58:29 · 426 阅读 · 0 评论 -
TCP/IP协议之ICMP协议
ICMP协议1、ICMP:被认为是IP层的组成部分,主要是用来传递差错报文以及其他需要注意的信息。2、ICMP协议的格式8位类型:类型字段有15个不同的值,以描述特定类型的ICMP报文。16位校验和:检验和字段覆盖整个ICMP报文,使用二进制反码求和来检验报文是否出错。typedef struct icmp_hdr{ unsigned char icmp_type; //消息类型 unsigned char icmp_code; //代码 unsigned short icmp_c原创 2020-06-03 20:02:17 · 784 阅读 · 0 评论 -
TCP/IP详解之IP协议
IP数据报的格式IP协议是TCP/IP协议族中最核心的协议。IP协议在网络中唯一标识一台主机,为数据报提供最好的传输服务。1、4位版本:以IPV4为例,协议的版本号为4;2、4位首部长度:IP头部的长度是多少个32bit,也就是length4的字节数;4bit表示的最大长度是15,所以IP头部最大长度是60个字节;3、8位服务类型:3位优先权字段(已经弃用),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。这四者相互冲原创 2020-05-31 19:09:22 · 465 阅读 · 0 评论 -
Linux线程创建
线程创建创建线程需要用到pthread_create这个函数,需要注意的是这个函数不是系统提供的,而是一个库函数,所以用这个函数的时候要引入头文件<pthread.h>函数原型int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), voi...原创 2020-05-31 18:51:38 · 153 阅读 · 0 评论 -
Linux线程概念(经典必看)
线程的引入从20世纪60年代提出进程的概念之后,使得多个程序可以实现并发执行(单CPU中),改善了资源的利用效率,提高了系统的吞吐量。此时进程作为系统中的一个基本单位,具有两个属性:进程作为资源分配和拥有的基本单位进程是一个可以独立调度和执行的基本单位进程的这两个基本属性构成了进程并发执行的基础,但是在进程的推进过程中,系统必须进行一系列的操作,如创建进程、撤销进程、切换进程等。由于进...原创 2019-12-18 15:01:10 · 372 阅读 · 0 评论 -
线程的阻塞和挂起
挂起:一般是主动的,由系统或程序发出,甚至于辅存中去。(不释放CPU,可能释放内存,放在外存)阻塞:一般是被动的,在抢占资源中得不到资源,被动的挂起在内存,等待某种资源或信号量(即有了资源)将他唤醒。(释放CPU,不释放内存)另外,有一段话很形象: 首先这些术语都是对于线程来说的。对线程的控制就好比你控制了一个雇工为你干活。你对雇工的控制是通过编程来实现的。 挂起线程的意思就是你对主动对雇...转载 2019-12-18 10:11:00 · 690 阅读 · 0 评论 -
Linux下core文件的生成、使用和关闭
core文件的生成ulimit -a:检查生成core文件的选项是否打开那么怎么才能产生core文件呢?使用ulimit -c unlimited来设置无限大,则任意情况下都会产生core文件,不过使用这个命令必须要在root下使用接下来我们就写一段代码来演示一下core文件的使用这段代码显然是有问题的,我们运行程序看会发生什么情况?生成了一个core.69801的文件,这个...原创 2019-11-03 18:10:09 · 2474 阅读 · 0 评论 -
信号
信号什么是信号?信号的概念是一个软件中断;通知进程发生了某件事情,中断进程当前操作,让进程去处理这件事情信号的种类操作系统中定义信号的种类:通过kill -l 查看信号种类;信号总共有62种信号有两大类型:可靠信号:1-31号信号非可靠信号:34-64号信号...原创 2019-08-18 12:28:09 · 95 阅读 · 0 评论 -
进程间通信之管道
什么是进程间通信?进程间通信就是操作系统为用户所提供的进程间几种通信方式操作系统为什么要为用户提供进程间通信方式?因为进程的独立性(都操作的是自己虚拟地址空间中的虚拟地址,无法访问别人的地址),因此无法直接通信,因此需要操作系统给用户提供一些公共的媒介让多个进程都能通过访问这个媒介进行通信。但是也因为进程间的通信场景有多种,因此操作系统提供了多样的通信方式system V标准:管...原创 2019-06-18 11:09:03 · 168 阅读 · 0 评论 -
进程控制
进程创建forkfork有两个返回值父子进程代码共享,数据独有,私有一份(采用写实拷贝技术)新创建的子进程几乎但不完全与父进程相同。子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份副本,包括代码和数据段、堆、共享库以及用户栈。子进程还获得与父进程任何打开文件描述符相同的副本,这就意味着当父进程调用fork时,子进程可以读写父进程中打开的任何文件。父进程和新创建的子进程之间...原创 2019-06-10 16:59:34 · 131 阅读 · 0 评论 -
简易minishell实现
要写一个shell,需要循环以下过程获取命令行解析命令行建立一个子进程替换子进程 1 #include<stdio.h> 2 #include...原创 2019-06-09 21:07:51 · 360 阅读 · 0 评论 -
环境变量
环境变量环境变量:存储系统运行环境参数的变量查看环境变量:env set echo常见的环境变量:HOME PWD SHELL PATHPATH:指定可执行程序的默认搜索路径设置环境变量:export删除环境变量:unset环境变量特性:全局特性(继承)shell终端下所运行的进程能够获取到所有的环境变量,但是获取不到普通变量环境变量在代码中的获取:ch...原创 2019-06-19 08:28:06 · 164 阅读 · 0 评论 -
系统文件I/O接口的实现
系统文件I/O接口类比C语言文件接口实现,它们的操作流程基本是类似的。但是C文件中的接口fopen、fclose、fwrite、fseek、fread都是C标准库当中的函数,我们称之为库函数。而open、close、write、lseek、read是属于系统提供的接口,称之为系统调用接口。库函数跟系统调用接口是属于上下级的关系即库函数封装了系统调用接口。接下来就让我们认识一下系统调用接口。...原创 2019-06-13 13:27:51 · 185 阅读 · 0 评论 -
进程概念
进程概念要了解进程概念,我们首先先了解一下冯诺依曼体系首先从这个图,我们可以很清晰的看到计算机是怎么运作的。那么根据这个图,我们先从一段代码来看程序是怎么运行的int main(){ fork(); return 0;程序起初被放在硬盘上,当程序运行起来之后,它的数据和代码被加载到内存当中。如果操作系统上运行了很多的程序,操作系统就必须去管理这些程序的运行,但是要管理这些...原创 2019-05-27 22:21:11 · 115 阅读 · 0 评论