linux
Persistence_Y_1
这个作者很懒,什么都没留下…
展开
-
关于TCP建立和释放连接的三次握手,四次挥手及相关问题总结
为什么TCP建立与释放连接要进行三次握手和四次挥手?接下来, 我们将逐步对这个问题进行剖析.理解清楚TCP socket编程与三次握手和四次挥手的关系.对于服务器端来说, 我们首先创建一个socket, 接下来调用bind绑定服务端的IP地址和端口. 绑定端口是为了内核收到数据之后知道这个数据应该交给哪个进程, 绑定IP地址主要是由于机器上可能有多个网卡,需要选择监听哪个网卡. bind之后, 就要调用listen, 将服务端之前创建的socket转为被动套接字(也就是监听套接字). 之后调用acce原创 2020-08-07 19:15:31 · 1091 阅读 · 0 评论 -
使用多线程处理数据时的线程安全问题,同步与互斥的实现以及死锁的产生条件
线程安全首先我们要知道什么是线程安全!线程安全指的是多个执行流进行任务处理的时候对临界资源的争抢访问, 不会产生数据二义问题。为了实现线程安全,我们通常需要保证同步与互斥这两个条件。同步:通过条件判断保证对临界资源访问的合理性互斥:通过同一时间的唯一访问保证临界资源访问的安全性同步与互斥的实现互斥的实现互斥的实现我们通常是利用互斥锁互斥锁本身实际上是一个只有0/1(计数为1或者为0)的计数器,通过这样的计数描述当前临界资源的访问状态,所有执行流在访问临界资源的时候都需要通过该计数器判断当前原创 2020-07-25 20:27:57 · 279 阅读 · 0 评论 -
线程概念以及Linux下提供的线程控制接口
线程概念在早些时候, 我们学习进程的时候, 说进程就是一个pcb, 是操作系统对运行中程序的描述, 通过这个描述实现对运行中程序的调度执行, 然而现在学习线程, 线程其实是进程当中的一条执行流, 在linux下是通过pcb实现的, 因此我们说linux下的pcb实际上是一个线程, 并且这些pcb共用同一块地址空间, 这些pcb更加轻量化, 因此也被称作轻量级进程.实际上, 这个时候我们并不以pcb去区分线程和进程, 通常我们这样去理解:进程是操作系统资源分配的基本单位线程是cpu调度执行的基本单位原创 2020-07-24 18:20:00 · 164 阅读 · 0 评论 -
LInux下标准库IO接口和系统调用IO接口
标准库IO接口fopen;打开文件fread:对文件进行读操作fwrite:对文件进行写操作fseek:跳转文件读写指针位置fclose:关闭文件,对应于fopenstd::in : 标准输入std::out : 标注输出stderr : 标准错误fopen FILE* fopen(char* filename, char* mode); //filename是打开文件的名称 //mode是打开文件的方式 返回值是一个FILE*文件流指针, 通过这个指针操作文件打开文原创 2020-07-19 17:19:18 · 209 阅读 · 0 评论 -
代码实现LRU最近很少使用算法
LRU全称(Least Recently Used), 称为最近很少使用算法.意思是, 根据最近访问的记录, 对于缓存的数据进行淘汰, 如果一个数据最近被访问, 或者经常被访问, 那么它就会处于列表前面的位置(比如数组或者链表的前面), 而一个数据很长时间没有被访问, 就会处于靠后的位置, 这个时候缓存如果满了, 来了新的数据, 就会把处于尾部的数据淘汰掉, 并将新的数据放入列表.LRU算法通常是用一个哈希表和一个双向列表实现的其实就如我们之前在概念中提到的那样, 也可以是一个数组, 也可以是一个列表原创 2020-07-27 12:22:19 · 215 阅读 · 0 评论 -
Linux下的程序替换, exec函数族,以及利用程序替换实现一个简单的minishell
程序替换程序替换是指替换一个正在运行中的程序.我们知道, linux中进程就是一个pcb, 是对一个运行中程序的描述, 通过虚拟地址空间及页表, 将程序运行对应的数据及代码映射到物理内存, 程序替换就是pcb不变, 但是映射到物理内存的代码和数据改变成另一个程序.那么, 如何去理解程序替换呢?我们可以这样去思考, 当我们使用 fork()创建子进程之后, 子进程执行的是和父进程相同的程序(先不考虑根据返回值进行代码分流), 这个时候, 我们就可以在子进程当中调用exec函数来执行其他的程序, 如果这原创 2020-07-13 18:52:59 · 347 阅读 · 0 评论 -
Linux中进程概念相关, 进程地址空间
在了解进程地址空间之间, 我们先来看一段代码#include <stdio.h>#include <unistd.h>int gval = 1;//全局变量int main(){ pid_t pid = 0; pid = fork(); if (pid == 0) { //子进程会进入这个判断 gval=100;//在子进程当中修改这个全局变量的值 printf("child gval:%d---%原创 2020-07-11 20:35:04 · 210 阅读 · 0 评论 -
Linux下的进程优先级,环境变量及相关操作
进程优先级进程优先级就是指一个进程对CPU资源获取的优先权(权级其实就是一个数字),优先权高的就会优先执行。那么为什么要有进程优先级呢?因为配置进程的优先权对于多任务环境的linux非常有用,可以大大改善系统性能。通常情况下,我们较常遇见的有交互式进程和批处理进程。交互式进程:直接与用户进行交互的进程批处理进程:在后台默默做循环工作的进程一般情况下,要求交互式进程优先级较高,能够更加优先的被CPU处理(如果不这样做,用户的一个操作可能会响应缓慢,体验效果较差)因此,进程优先级最大的作用就是让原创 2020-07-06 21:06:10 · 376 阅读 · 0 评论 -
Linux下的进程概念,进程状态和进程等待
进程概念进程就是一个pcb(process control block),是操作系统对运行中程序的描述,通过这个描述实现对运行中程序的调度管理,Linux下pcb是一个task_struct结构体,task_struct是Linux内核的一种数据结构。task_struct结构体中的内容包括内存指针,上下文数据,程序计数器,进程标识符(pid),进程状态,优先级,IO信息等在知道进程概念的基础上,我们再来看一个进程的创建 pid_t fork(void);//创建一个子进程fork具有两个返回原创 2020-07-05 09:25:36 · 573 阅读 · 0 评论 -
linux权限简介
权限 :a. root 普通用户b. 修改权限c. 去掉当前用户/组用户/其他用户的可读权限chmod -r[filename]d. 只去掉当前用户的可读权限. chmod u-r [filename]e. 增加可读权限chmod +r [filename]chmod u+r [filename]f. chmod u+r/u-r/g-r/g+r/o-r/o+r [filena...原创 2020-01-07 21:11:52 · 93 阅读 · 0 评论 -
linux基础指令
ifconfiga. 作用: 查看ip, 查看linux系统中网卡信息lsa. list 作用:查看当前目录下的内容b. ls /c. 绝对路径: 从根目录出发到目标目录的路径相对路径: 以.或者…开始计算当前目录到目标目录的路径d. ls -a : 查看当前目录下的所有文件包括隐藏文件e. ls -l : 查看文件的详细信息 ls -l --> llf. ls -...原创 2020-01-04 12:00:08 · 125 阅读 · 0 评论 -
linux基础指令回顾
软件管理包:yumyum list 查看所有软件安装包yum install 安装yum list install 查看已安装工具yum remove 移除个人编码工具:编辑器:vim*操作模式:共有十二种,常用的只有三种:插入模式,普通模式,底行模式*模式切换:所有模式围绕普通模式切换。ESC切回普通模式普通模式切换插入模式:i a o I A O普通模式切换底行模式 (...原创 2019-11-06 19:30:28 · 106 阅读 · 0 评论 -
关于linux代码调试的基础操作
vim普通模式跳行gg : 回到文本头部G(shift + g) : 回到文本最后一行[num] + G(shift + g) : 跳到任一行命令行模式下操作:set nu : 设置行号:set nonu : 取消行号:vs [filename] 同时打开多个文件, ctrl + ww 切换到不同的文件xshell 也有分屏的功能/[搜索的字符串] —>>按ente...原创 2019-11-03 17:50:24 · 182 阅读 · 0 评论 -
关于linux的常见基础指令4
权限a. 文件 :可读 : 是可以读出文件中的内容可写 : 是可以修改文件中的内容可执行 : 表示这个文件具有可执行权限, 但是是否能真的执行, 取决于文件的内容.b. 文件夹可读 : 缺失可读, 不能查看文件夹下的内容可写 : 缺失可写, 不能在文件夹下创建文件或者文件夹可执行 : 缺失可执行, 不能进入到本文件夹umaska.txt() = 系统默认的权限(0777...原创 2019-11-01 22:34:39 · 90 阅读 · 0 评论 -
关于linux的常见基础指令3
mva. 移动文件夹或者文件mv [filename] [path] : 将filename移动到path下mv [folder] [path] : 将folder移动到path下b. 重命名mv [src_filename] [dest_filename]mv [src_folder] [dest_folder]cpa. 可以拷贝文件cp [filename] [pat...原创 2019-10-31 22:23:31 · 83 阅读 · 0 评论 -
关于linux的常见基础指令2
ifconfiga. 作用: 查看ip, 查看linux系统中网卡信息lsa. list 作用:查看当前目录下的内容b. ls /c. 绝对路径: 从根目录出发到目标目录的路径相对路径: 以.或者…开始计算当前目录到目标目录的路径d. ls -a : 查看当前目录下的所有文件包括隐藏文件e. ls -l : 查看文件的详细信息 ls -l --> llf. ls -...原创 2019-10-28 22:04:31 · 77 阅读 · 0 评论 -
关于linux的常见基础指令
ifconfig指令该指令的作用是查看ip, 查看linux系统中网卡信息ls 指令该指令的作用是查看当前目录下的内容(即list)ls /该条指令是查看根目录(/)下的内容ls -a查看当前目录下的所有文件包括隐藏文件ls -l查看文件的详细信息, ls -l指令相当于 llls -lrt查看文件的详细信息绝对路径和相对路径绝对路径 : 绝对路径是指, 从根...原创 2019-09-27 11:14:46 · 120 阅读 · 0 评论