自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程间通信(IPC)

进程间具有独立性(每个进程都有自己的一份独立的虚拟地址空间,一个进程只能访问自己的虚拟地址空间,但不包括内核空间,不能访问其他进程的),如果多进程之间想相互通信,此时无法直接进行(一个进程不能读取其他进程的虚拟地址空间中的内容,更不能去修改),因此需要操作系统提供一些公共资源(内存、文件等)来让多个进程都能通过访问这个媒介进行通信。2、System V IPC:一套较古老的标准。3、POSIX IPC:一套跨平台的新标准。操作系统为用户提供的几种进程间的通信方式。1、管道:最古老的通信形式。

2024-03-15 14:45:21 427

原创 数组名及数组传参问题

数组名#include<stdio.h>int main(){#if 0 int a[5] = {1,2,3,4,5}; printf("%d\n", sizeof(a));//20,a代表整个数组 printf("%d\n", sizeof(&a));//4,&a只是个(指向整个一维数组的)指针常量,在32位操作系统下,占4字节 printf("%d...

2019-09-07 14:45:37 584

原创

树:非线性结构(结点间前驱、后继的关系并不具有惟一性),其结点间的关系是前驱惟一,而后继不惟一,即结点之间是一对多的关系。

2019-09-06 08:32:41 2033

原创 CBC 模式

一文搞懂 CBC 模式

2024-09-18 18:02:35 314

原创 为什么 ECB 模式不安全

链接模式的缺失导致 ECB 模式不安全

2024-09-18 17:36:35 329

原创 对称加密

一文搞懂对称加密

2024-09-12 15:39:13 392

原创 加密

加密技术

2024-09-12 15:14:27 481

原创 git

一文轻松搞懂 git

2024-08-26 14:39:10 495

原创 HMAC

一文搞懂基于单向散列函数的消息验证码(HMAC)

2024-08-22 10:51:30 124

原创 哈希长度延展攻击

一文搞懂哈希长度延展攻击,并提供 MD5 长度延展攻击代码

2024-08-14 17:46:50 189

原创 如何选择单向散列函数

一文搞懂如何选择单向散列函数

2024-07-25 16:14:54 244

原创 单向散列函数

一文搞懂单向散列函数

2024-07-24 10:41:23 368

原创 密码学

密码学最基础的分支有三个,第一个是单向散列函数,第二个是对称密码技术,第三个是非对称密码技术。

2024-07-24 10:05:03 126

原创 AES-CCM

OpenSSL 官方提供的 AES-CCM 加解密示例

2024-07-23 17:37:34 320

原创 AES-GCM

aes-256-gcm 加解密示例

2024-07-23 17:33:49 222

原创 用 System V IPC 共享内存实现简单的 Client&Server 通信

占用。

2024-05-16 15:14:45 299

原创 System V IPC 共享内存

共享内存是最快的进程间通信方式,一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说,进程不再通过执行进入内核的系统调用来传递彼此的数据。

2024-05-14 17:13:40 242

原创 用 System V IPC 消息队列实现简单的 Client&Server 通信

【代码】用 System V IPC 消息队列实现简单的 Client&Service 通信。

2024-05-14 10:11:12 159

原创 ftok()

【代码】ftok()传参需知。

2024-03-26 17:17:46 110

原创 System V IPC 消息队列

这是 System V IPC 用到的一个公共结构体,其中,ipc_perm.key 被称之为 ipckey,进程间通信本质上其实就是在内核中申请一定的资源,ipckey 就描述着内核中唯一一个消息队列(一块共享内存/一个信号量集)这样的资源,毕竟一个操作系统可以创建出很多个消息队列。

2024-03-21 14:53:24 289

原创 命名管道打开规则

4、O_NONBLOCK enable: open 调用返回 -1,errno 值为 ENXIO(6)1、O_NONBLOCK disable:open 调用阻塞,直到有进程为写而打开该 FIFO。3、O_NONBLOCK disable:open 调用阻塞,直到有进程为读而打开该 FIFO。2、O_NONBLOCK enable: open 调用返回文件描述符。

2024-03-19 10:58:52 382

原创 IPC之管道

一个进程通过系统调用 pipe 创建出一个匿名管道,操作系统就会在内核中创建一块没有明确标识的缓冲区,并返回给创建进程两个文件描述符作为管道的操作句柄供进程来操作管道,一个描述符用于从管道中读,另一个用于往管道中写。其中,fd[0]表示读端,fd[1]表示写端。因此匿名管道只能用于具有亲缘关系的进程间通信,因为子进程能复制父进程的文件描述符表。4、进程退出,匿名管道被释放,也就是匿名管道的生命周期随进程,这里的进程指持有匿名管道的最后一个进程,当然也可以主动关闭所有进程的有关匿名管道的那两个文件描述符。

2024-03-15 16:33:51 591

原创 管道读写规则及 PIPE_BUF 涉及的写原子性问题

【代码】管道读写规则及 PIPE_BUF 涉及的写原子性问题

2024-03-06 15:16:25 512

原创 Pipe Capacity(管道容量)

【代码】Pipe Capacity(管道容量)

2024-03-06 13:10:29 428

原创 《深入分析Linux内核源码》

《Linux操作系统内核分析》1《Linux操作系统内核分析》2《深入分析Linux内核源码》

2020-10-15 12:15:52 297

原创 const *与*const的区别

const *p:p指向地址的内容不可变,p可变;*const p:p不可变,p指向地址的内容可变。

2020-09-28 18:18:24 256

原创 Xshell 设置缓冲区大小以便保留更多的交互信息

首先我们需要了解,Xshell的屏幕输出都是由缓冲区的大小来决定的,如果设置的数值较大我们就可以在Xshell的客户端中保留更多的记录以便等需要的时候可以随时查看,反之则会保留较少的信息,两者各有优劣势,看需求决定如何配置。Xshell中有一项缓冲区设置的配置,我们可以对这项内容进行设置来影响xshell客户端屏幕的信息数量。方法2:除了在会话管理界面进入属性设置,我们也可以在进入会话连接后在进行设置。

2020-09-18 00:09:50 1039

原创 Xshell 设置鼠标左键选中即复制,右键粘贴

打开xshell,选择【工具】-【选项】-【键盘和鼠标】,[ 向右按钮 ] 改为 [ 粘贴剪贴板内容 ],下面勾选将选定的文本自动复制的剪贴板即可。

2020-09-16 11:44:16 8803 1

原创 线程池

线程池(一种线程使用模式):至少包含有一个线程+任务队列,也就是一个线程也可以组成一个线程池。线程池有什么用?应用场景,双十一,在淘宝买东西,给服务器发送请求,一瞬间几百万个请求就过去了,淘宝创建线程去处理请求,你不可能创建几百万个线程,大量线程的创建有可能瞬间耗光资源,服务器就崩溃了,也就是说创建线程也得有个上限,但是这些请求怎么办?这么多线程只能处理这么多,其余的只能丢掉了,所以就得有地...

2019-10-31 17:54:04 119

原创 线程安全的同步与互斥总结

互斥的实现:互斥锁、信号量同步的实现:条件变量、信号量

2019-10-31 17:30:02 135

原创 生产者与消费者模型+POSIX信号量

生产者与消费者模型(以做面与吃面为例)一个场所(只有一口锅,也就是放置数据的地方只有一个)、两种角色、三种关系(生产者之间互斥(我放的时候,你就不能放,因为会造成数据混乱)、消费者之间互斥(因为你们俩没必要抢同一数据处理吧)、生产者与消费者之间是同步+互斥(总不能面做到一半你就吃吧))。这个模型用来:解耦和(如果在没有场所保存数据的情况下,也就是生产者生产出数据就得交给消费者来处理数据,如果直...

2019-10-31 17:24:05 785

原创 线程安全=同步+互斥

线程安全:多个线程同时对临界资源(例如,全局变量)(临界区:对临界资源操作的代码,说白了临界区就是对临界资源的操作)进行访问而不会造成数据二义。大部分情况,线程使用的数据都是局部变量(全局变量是直接共享的,堆区和局部变量需要通过create函数的参数4传参进去才能间接共享),变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。但有时候,很多变量都需要在线程间共享,...

2019-10-31 16:54:29 304

原创 线程

多线程?从进程开始延伸:执行流:其实,多个进程就是多个执行流。进程是程序运行的基本单位,进程也是资源分配的基本单位。cpu调度就是调度一个进程。一个执行流指的就是能够独立地执行一段代码和处理数据。其实,线程也是一个执行流。当我们有多个任务想要同时处理的时候,可以选择多进程,也可以选择多线程。只不过多线程所占用的资源相较于多进程要更少。那究竟什么是线程?线程:线程是一个执行流,独立地执...

2019-10-30 18:29:37 295

原创 volatile

volatile:保持内存的可见性,告知编译器,被该关键字修饰的变量,不允许被优化,对该变量的任何操作,都必须在真实的内存中进行操作(每次需从内存中读出以保证内存的可见性)。该关键字在C当中我们已经有所涉猎,今天我们站在信号的角度重新理解一下。[ming@190401 ~]$ cat sig.c#include<stdio.h>#include<signal.h> ...

2019-10-30 18:15:39 237

原创 sleep函数

sleep函数的实现,先alarm定时器,然后pause暂停,SIGALAM的默认处理动作会导致进程退出,修改SIGALAM的处理方式,但是可以打断当前的阻塞操作,pause被打断,程序继续往下走。但是这个sleep是有问题的。alarm(3);pause();alarm(3);和pause();之间并不是原子操作,这时候来了一个其他信号,这个信号的回调函数只干了一件事,sleep(10)...

2019-10-30 18:03:34 684

原创 可重入函数

可重入函数和不可重入函数,这也是一种竞态条件/竞争执行。#include<stdio.h>#include<unistd.h>#include<signal.h>int a = 1, b =1;int sum(int *b, int *a){ (*a)++; sleep(3);//sleep只是放大了这一过程,方便看清情况 (*b)++;...

2019-10-30 17:57:29 1141

原创 SIGCHILD信号

SIGCHILD信号,子进程先于父进程退出的话,操作系统通过此信号通知父进程,这个信号的默认处理方式是忽略处理。这就是为什么子进程退出,父进程没有任何反应的原因。正是父进程对这个信号采用默认的忽略式处理,导致父进程不知道子进程到底什么时候退出,因此导致wait阻塞等待,自定义SIGCHILD,在回调函数中调用waitpid/wait来处理这个子进程。但是SIGCHILD是个非可靠信号,一个父进程...

2019-10-30 17:51:29 1881

原创 进程信号

注意:信号不是信号量用户输入命令,在shell(bash)下启动一个前台程序。用户按下“Ctrl+c”,这时 键盘输入 产生一个硬件中断,被操作系统获取,并解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。注意:1、“Ctrl+c”产生的信号只能发给前台进程,一个命令后面加个&就可以放到后台运行(fg:把后台运行的进程放到前台来执行),这样bash不必等待进程结束就可以接受新的命令,启动新的进程了。2、bash可以同时运行一个前台进程和任意多个后台进程,只有前台进程才

2019-10-28 16:55:52 723

原创 进程间通信之System V共享内存

共享内存:最快的进程间通信方式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说,进程不再通过执行进入内核的系统调用来传递彼此的数据。管道通信:通信的本质是通过内核的缓冲区来实现通信进程一:将数据从用户态自己定义的缓冲区拷贝到内核态缓冲区进程二:将数据从内核态缓冲区拷贝到用户态自己定义的缓冲区struct shmid_ds:共享内存数据结构1、在...

2019-10-28 16:53:13 202

原创 进程间通信之System V消息队列

struct ipc_perm:这是System V版本系列进程间通信所用到的一个公共版结构体。也就是Linux内核为每个IPC对象维护一个数据结构。第一字段,这个属性非常重要,它称之为ipckey。进程间通信的方式其实本质上它们都得在内核中申请一定的资源,而ipckey其实就是在描述着内存中惟一 一个消息队列/一块共享内存/一个信号量集这样的资源,因为一个操作系统可以创建很多个消息队列。S...

2019-10-28 16:37:28 408

空空如也

空空如也

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

TA关注的人

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