
Linux 系统编程
DX_John
每天给自己定一个目标!!
展开
-
传输层(二)
一.TCP可靠传输:TCP可靠传输:-------------------保证数据的可靠到达;在应用层进行数据传输时,TCP协议负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地;为此在传输层规定一系列的机制;1.关于序列号:(1)序列号:TCP会对每个字节的数据进行编号,数据的编号就是数据的序列号,每个字节都有自己的序列号;(2)作用:在网络中标识...原创 2019-06-11 01:28:42 · 316 阅读 · 0 评论 -
Linux 进程间通信------消息队列
一.关于消息队列的概念:1.消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 ;2.每个数据块都被认为有一个数据类型, 接收者进程接收的数据可以有不同类型的数据 ;3.消息队列也有管道一样的不足, 就是每个消息的最大长度是有上限的(MSGMAX), 每个消息队列的总的字节数是有上限的(MSGMNB), 系统上消息队列的总数也有一个上限(MSGMNI) ;4.进程通信,消息队列的...原创 2019-07-31 21:23:48 · 220 阅读 · 0 评论 -
如何查看CentOS7的版本信息
一.查看版本号:CentOS的版本号信息一般存放在配置文件当中,在CentOS中,与其版本相关的配置文件中都有centos关键字,该文件一般存放在/etc/目录下,所以说我们可以直接在该文件夹下搜索相关的文件;ll /etc/*centos*显示结果为:其中存放其版本配置信息的文件为“centos-release”,翻译过来就是“CentOS的发行版”,所以说我们可以在这里查看Cent...原创 2019-09-02 17:48:46 · 305 阅读 · 0 评论 -
IO多路转接模型-----epoll及epoll版本服务器的实现
epoll的实现原理:epoll模型是linux下性能最高的IO多路转接,在epoll下就绪事件变得不同。对于可读事件就绪就是接受缓冲区的数据大小大于低水位标记(一般为一字节);对于可写事件就绪就是可写缓冲区的空闲空间大小大于低水位标记(1B);epoll在内核中是一红黑树进行节点的删除和添加,还有一个rdlist双向链表,用来存储就绪事件的链表;epoll也是采用事件结构来进行监控的;...原创 2019-09-17 21:47:07 · 329 阅读 · 0 评论 -
操作系统的区分分页式和分段式内存管理
计算存储的层次结构:当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。1.内存的管理方法:内存管理主要包括虚地址、地址变换、内存分配和回收、内存扩充、内存共享和保护等功...转载 2019-09-17 23:49:07 · 1611 阅读 · 0 评论 -
Linux线程概念和线程控制
本文重点知识:1.线程概念:2.线程之间的资源独有与共享:3.多线程处理任务的优缺点:4.线程控制:一.线程的概念:1.什么是线程??在操作系统中使用pcb来描述一个程序的运行,因此pcb就是一个进程;但是在Linux下没有为线程设计一个pcb来控制线程的运行,因此线程此时就是以进程pcb模拟实现的;Linux下以pcb模拟实现线程,因此Linux下的线程实际上是一个轻量级进程;...原创 2019-09-19 17:56:25 · 323 阅读 · 0 评论 -
Linux下线程安全及实现方法
本文重点:1.线程安全概念:2.线程安全的实现方法:3.线程间同步的实现:4.线程间互斥的实现:5.原创 2019-09-19 23:36:55 · 765 阅读 · 0 评论 -
Linux系统----生产者和消费者模型及实现
本文重点:生产者和消费者模型:信号量的原理及实现流程:一.生产者和消费者模型及实现原理:1.锁等待:我们知道在实现线程间同步的过程中条件变量通过提供线程等待与唤醒线程的实现线程同步,用户在判断条件不满足的情况下提供等待功能,线程什么时候等待,需要一个判断条件;而这个判断条件也是一个临界资源,条件变量的条件判断应该是一个循环判断:多个顾客线程若被唤醒,只有一个顾客可以加锁,其他的顾客...原创 2019-09-20 13:59:24 · 454 阅读 · 0 评论 -
Linux 进程间通信------共享内存
共享内存是最快的一种IPC形式;因为消息队列,管道等都需要用到系统接口,而共享内存则是直接改变逻辑地址到物理地址的映射关系,即当一个进程A看到这片内存时,对应的只要改变进程B的映射关系,此时进程B就可以立马看到这份公共资源;1.共享内存的原理:(1)在物理内存上开辟一块内存空间;(2)将这块内存通过页表映射到进程的虚拟地址空间;(3)进程可以直接通过进程的虚拟地址访问到这块物理内存,进行操...原创 2019-07-31 20:58:02 · 465 阅读 · 0 评论 -
Linux 进程间通信---管道
一.管道的概念:管道是一种最基本的IPC机制,通过半双工通信方式传输数据资源;其本质原理是让多个进程通过访问到相同的缓冲区来实现通信;管道的局限性:(1)数据自己读不能自己写。(2)数据一旦被读走,便不在管道中存在,不可反复读取。(3)由于管道采用半双工通信方式;因此,数据只能在一个方向上流动;即可选方向的单向传输;如图所示:管道没有固定的输入输出接口,但是只能从一端向另一端传输--...原创 2019-07-31 20:14:00 · 275 阅读 · 0 评论 -
进程间通信
一.进程间通信的目的:1.数据传输:一个数据需要将它的数据发送给另一个进程;2.资源共享:多个进程之间共享同样的资源;3.通知时间:一个进程需要向另一个或一组进程发送消息,通知发生了什么事;如子进程终止时要通知父进程;4.进程控制:有些进程希望完全控制另一个进程的执行,(如Debug进程);此时控制进程希望能够拦截另一个进程的所有缺陷和异常,并能够及时知道它的状态改变;二.进程间通信的分...原创 2019-07-31 21:28:05 · 203 阅读 · 0 评论 -
路由详解
路由器的基本结构和工作原理路由器实质上是一种将网络进行互联的专用计算机,路由器在TCP/IP中又称为IP网关。本章拟以TCP/IP技术为例介绍路由器。大家都知道OSI的七层模型,如图路由器的软件结构就是以TCP/IP协议栈为核心的,下图是一个简单的路由器软件结构:路由器的协议转换发生在IP层。如下图所示,路由器试图互联局域网和Internet。 局域网是以太网,运行IEEE802.2 和...转载 2019-06-23 18:28:17 · 366 阅读 · 0 评论 -
链路层
链路层:数据链路层的作用主要是负责相邻设备之间的数据帧传输一.以太网协议:1.以太网的概念:在数据链路层主要是进行相邻设备之间的数据帧传输,而在这一过程中保证数据在传输的时候没有混乱需要用到的协议就是以太网协议;以太网协议不是一种具体的网络, 而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容;例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;例如以太网中的网线...原创 2019-06-30 22:29:38 · 319 阅读 · 0 评论 -
关于程序地址空间详解
本文重点:1.环境变量;2.程序地址空间;3.进程优先级;一.环境变量:环境变量:指在操作系统中用来指定操作系统中的运行环境的一些参数;1.常见的环境变量:PWD:当前系统的工作路径;LANG:当前系统的工作语言;HOME:当前的家目录下;PATH:以冒号间隔的路径;SHELL:命令行解释器;(PATH环境变量是一个重点;它的作用是指定一个可执行程序的默认搜索路径)...原创 2019-07-19 02:22:51 · 1319 阅读 · 0 评论 -
Linux下常用命令及使用方法详解(可收藏!!!)
关于Linux下的常用命令详解:一.目录相关命令:ls / pwd / mkdir / rmdir / rm / cp / mv / cd1. ls:列出当下目录下的文件;(一个终端打开后,直接就会处于一个目录下)这是当前用户家目录下的文件(~ 表示home(家)目录);(1)ls -a: 浏览所有文件(包含隐藏文件)-----Linux下以 . 开头的文件为隐藏文件;(2)...原创 2019-07-19 17:32:37 · 679 阅读 · 0 评论 -
Linux 进程控制
本文重点:1.进程创建:2.进程终止;3.进程等待;4.程序替换;原创 2019-07-24 17:59:38 · 288 阅读 · 0 评论 -
Linux 进程基础概念
本文重点:1.了解冯诺依曼体系结构;2.操作系统的概念与定位;3.进程的概念及其相关操作;4.进程的创建;5.进程的状态及如何修改进程状态;一.冯诺依曼体系结构:冯诺依曼体系结构是现代计算机的硬件体系结构;我们常见的计算机:如笔记本电脑,台式电脑以及服务器都遵循冯诺依曼体系结构;冯诺依曼体系结构图如下所示:1.组成:(现代计算机的五大硬件单元)输入设备:指键盘,鼠标,扫...原创 2019-07-19 02:24:43 · 351 阅读 · 0 评论 -
实现微型shell的原理和方法
本文重点:原创 2019-07-25 14:33:28 · 224 阅读 · 0 评论 -
对于标准IO库接口 & 系统调用接口的介绍及用法总结
一.标准IO库接口的介绍:1.标准库IO接口的分类:(1)fopen:打开文件;接口:FILE *fopen(const char *path, const char *mode);参数:path:文件路径;mode:文件打开方式;r:只读方式打开文件,读的位置在文件的起始位置;r+:可读可写方式打开文件,文件的读写在文件的起始位置;w:只写方式打开文件,若文件不存在则创建,若...原创 2019-07-26 16:32:43 · 575 阅读 · 0 评论 -
Linux------线程池原理及实现
1.为什么需要线程池??首要明白两个地方:线程的创建需要内存资源;线程的创建和销毁需要时间资源;显而易见,由于以上两个原因,不得不寻找一个折衷的方式面对多任务的问题。如果我们只创建一定量的线程,且在一个线程执行完某一任务后,重复利用该线程去处理新的任务而不是直接销毁它,那么通过这两个策略我们就可以“朴素”的解决以上两个问题。线程池的初衷就是想搭建一个有一定数量线程,且可以重复利用这些...转载 2019-09-20 18:31:11 · 363 阅读 · 1 评论