
Linux
Duc_Duke
天行健君子以自强不息、地势坤君子以厚德载物。
展开
-
Linux_基础命令大全
Linux文件目录系统:inux上一切皆文件linux是一个多用户操作系统,允许多个用户同时登陆,且同时工作,且相互之间互不影响/bin:存储系统命令对应的可执行文件 /dev:设备文件目录/etc:存储配置文件 ...原创 2019-08-03 23:37:25 · 443 阅读 · 0 评论 -
Linux_进程
进程:进程:运行中的程序程序:存储在磁盘上的二进制可执行文件进程:一组有序指令+数据+资源的集合进程是程序的执行过程,有开始,有结束,有结果,操作系统为了唯一标识一个进程,会给进程分配一个ID:PID内核对象:进程都是独立运行的,所以进程要通讯,必须有能够共享的东西,内核对象,内核对象由操作系统内核维护的、在操作系统内核中的结构体变量。标识符:标识符是内核对象的内部名,类似文件描...原创 2019-08-05 14:25:18 · 240 阅读 · 0 评论 -
Linux_进程间通方式
管道:半双工通讯管道:借助文件系统在多个进程之间建立一条数据通讯信道,各进程通过自己打开的文件描述符操作同一块内存空间,从而完成数据的传递工作,管道的数据都是通过内存空间缓存的,像现实中的管道两端,一段进行读操作,一段进行写操作,如果管道为空,read会阻塞,如果管道为满则write会阻塞有名管道:可以在任意进程间通讯,通讯是双向的,任意一端都可以进行读操作和写操作,但同一时间只能一端读,...原创 2019-08-05 14:24:25 · 235 阅读 · 0 评论 -
Linux_线程
线程:线程是进程内部的一条执行序列(执行流) (执行序列: 一组有序指令+数据的集合(以函数为单位)) 每一个进程至少有一条线程,称之为主线程,从代码角度看,即为main()的函数体 在主线程中可以通过线程库创建其它线程(函数线程)。 主线程和函数线程会同时向下运行,一个进程中的线程都...原创 2019-08-07 23:19:27 · 237 阅读 · 0 评论 -
Linux_锁
互斥锁:互斥锁是只能在线程之间使用的一种控制临界资源访问的机制,如果一个线程要访问临界资源,则必须先加锁,用完之后解锁,这样在一个线程访问临界资源的过程中,其它线程加锁就会阻塞,不能访问临界资源的临界区,直到访问临界资源的线程访问结束并解锁头文件:#include <pthread.h>初始化:int pthread_mutex_init(pthread_mutex_t ...原创 2019-08-08 13:12:05 · 273 阅读 · 0 评论 -
Linux_网络基础及编程流程
基本概念:IP地址:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异标识主机端口号:客户端可以通过ip地址找到对应的服务器端,但是服务器端有很多的端口,每个应用程序对应一个端口号,通过端口号,客户端才能真正的访问到该服务器。 标识主机上运行的进程网络字节序列:网络字节顺序...原创 2019-08-09 15:05:10 · 253 阅读 · 0 评论 -
Linux_TCP、UDP
TCPl:面向连接的、可靠的、字节流服务UDP:无连接、不可靠、数据报服务面向连接:两端通讯之前先建立连接,连接一旦建立,两端的交互过程都在这一连接上完成,无需建立新的连接,通讯完成后,需要断开连接,以释放服务器的资源操作系统为我们维护连接,所以内核需要为连接分配相应的资源对于服务器而言,一个链接只能为一个客户端服务,从而造成服务器性能有待优化字节流服务、数据报服务、无状态服...原创 2019-08-09 18:50:35 · 374 阅读 · 0 评论 -
Linux_三次握手、四次挥手
三次握手:第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1)(确认号:数值等于发送方的发送序号+1(即接收方期望接收的下一个序列号)),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+AC...原创 2019-08-09 20:12:11 · 469 阅读 · 0 评论 -
Linux_IP_IPV4、6
IP协议:是TCP/IP协议族的动力,为上层协议提供无状态、无连接、不可靠的数据报服务无状态:IP通信双方不同步传输数据,IP数据报的发送、传输、接收都相互独立,无上下文关系 无法处理乱序、重复的数据,16位标识仅用来处理IP分片和重组,无法指示接收顺序无连接:IP通讯双方都不长久的维持对方的任何信息,因此上层协议每次发送数据时都必须明确指出对方的IP不可靠...原创 2019-08-09 21:40:13 · 434 阅读 · 0 评论 -
Linux_HTTP
ARP:地址解析协议,用来将IP地址转换为MAC地址。MAC(Media Access Control,介质访问控制)地址:或称为MAC位址、硬件地址,用来定义网络设备的位置DNS:域名解析协议,是用来将域名转换为IP地(也可以将IP地址转换为相应的域名地址)DNS工作方式:递归式、迭代式域名:URL - 字符串 “www.baidu.com”IP地址:IP - 整型值 "168.1...原创 2019-08-10 11:50:25 · 292 阅读 · 0 评论 -
Linux_内存、虚拟内存
一、内存的管理方案分区:固定分区:操作系统启动时将内存分配完成 大小相等的固定分区:将内存分配成大小相等的区块,会产生内部碎片 放置策略:为每一个区块维护一给队列,为整体维护一个等待队列 大小不等的固定分区:将内存分配成大小不等的...原创 2019-08-10 15:28:45 · 406 阅读 · 0 评论 -
Linux_多进程、多线程、线程池、进程池
单进程、单线程编程:这样的服务器程序同一时刻只能处理一个客户端连接,可以和多个客户端串行交互int main(){ int listenfd = socket(); int res = bind(); res = listen(); while(1) { int c...原创 2019-08-10 20:38:43 · 344 阅读 · 0 评论 -
Linux_编译链接与库文件
编译链接过程:预编译:删除所有的“define”,删除注释,并展开所有的宏定义 处理所有的条件预编译指令“#if”“#ifdef”“endif”等 处理“include”预编译指令,被包含的文件插入到该预编译指令的位置 删除行号和文件名标识,以便于编译器产生调试用的符号信息及编译时产生编译错误和警告时显示的行号 ...原创 2019-08-04 19:43:52 · 349 阅读 · 0 评论 -
Linux_fork与exec
fork()与 exec() fork()函数原型:pid_t fork(void)typedef int _kernel_pid_t typedef _kernel_pid_t pid_tfork()会新生成一...原创 2019-08-04 19:56:51 · 453 阅读 · 0 评论 -
Linux_文件操作函数、库函数、系统调用函数
文件操作函数:int open(char *path,int flag,/*mode_t mode*/):打开一个普通文件。成功则返回文件描述符int read(int fd,void *buff,size_t size):按字节读取文件内容 size读取字节大小,缓冲区大小int write(int fd,void *buff,size_t size):按字节给文件中写入数据 buff文...原创 2019-08-04 20:20:50 · 326 阅读 · 0 评论 -
Linux_信号
信号信号时系统预先定义好的某些特定事件,信号可以被产生,接收,产生和接收的主体都是进程,信号有三种响应方式:忽略 默认 自定义 1) 改变信号响应方式 signal()修改信号的响应方式:signal函数可以修改信号的响应方式typedef void(* sighandle_t)(int);sighandle_t (*signal)(int,sighandle_t);忽略:SIG...原创 2019-08-05 12:26:17 · 235 阅读 · 0 评论 -
Linux_用户态和内核态
内核态用户态区别:内核态:控制计算机的硬件资源,并提供上层应用程序运行的环境。简而言之系统程序在内核运行时的状态,CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序,运行在内核态的程序可以访问的资源多,但可靠性、安全性要求高,维护管理都较复杂用户态:上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源。简而言之系统程序在用户状...原创 2019-08-05 12:37:18 · 481 阅读 · 0 评论 -
Linux_PCB
进程控制块 PCB每个进程在内核中都有一个进程控制块(Processing Control Block),Linux内核的进程控制块是task_struct结构体,用来维护进程相关的信息,主要表示进程状态。其作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位或与其它进程并发执行的进程。PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制...原创 2019-08-05 12:48:31 · 2616 阅读 · 0 评论 -
Linux_IO复用
I/O模型:阻塞I/O、非阻塞I/O、I/O复用、信号I/O、异步I/OI/O复用:一个单进程、单线程的服务器程序同时监听多个文件描述符上是否有关注的事件发生,如果某些文件描述符上有事件发生,则程序接着处理有事件发生的文件描述符,没有事件发生的文件描述符则不予理会,这样就可以极大的提高程序的性能。使得一个程序能同时监听多个文件描述符。I/O复用虽然能同时监听多个文件描述符,但它本身是阻塞的,...原创 2019-08-10 22:35:49 · 349 阅读 · 0 评论