![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 74
swbb
这个作者很懒,什么都没留下…
展开
-
tiny-Tcmalloc(高并发内存池)
当前项目是实现一个高并发的内存池,它的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc 、free)。提高动态申请的效率减少陷入内核的次数减少系统内存碎片提升内存使用率尽量减少锁竞争应用于多核多线程场景。原创 2024-05-05 15:39:53 · 906 阅读 · 0 评论 -
问题汇总
一、TCP的粘包和拆包问题?二、HTTP和HTTPS的区别 三、TCP如何去抓包 四、MySQL中主从架构如何保证数据一致性 五、算法题 给定一个数组,同时多次给定不同的区间下标i和j(下标从0开始),快速求这些区间和。六、深分页问题是什么?如何解决MySQL深分页问题原创 2024-04-12 16:24:07 · 955 阅读 · 0 评论 -
深入解析重定向操作—dup2函数
在开始深入解析dup2函数之前,我们先来了解一下它的基本概念。dup2函数是Unix/Linux系统提供的一个系统调用函数,其作用是复制文件描述符,并将其指定为新的文件描述符。简单来说,dup2函数可以将一个已存在的文件描述符复制到另一个文件描述符上,并且可以自定义新文件描述符的编号。dup2函数作为Unix/Linux系统中重要的系统调用之一,在计算机系统编程中具有广泛的应用。通过本篇博客,我们详细介绍了dup2函数的原理、用法和常见的使用场景,并提醒读者注意一些使用上的注意事项。原创 2024-03-26 21:28:25 · 595 阅读 · 0 评论 -
Linux中execl函数详解
exec其实并不是一个函数,而是由六个以exec开头的函数所构成的一个函数族,如下图所示其中是最常用的函数,我们就来说一下execl函数我们来说明一下execl函数所需要的四个参数①标识符可以理解为编程时使用的“名字”,像命令 ls -a 中的ls就是标识符,是这个命令的“名字”,文件的文件名就是标识符,是这个文件的“名字”。②参数很好理解,像命令 ls -a 中的 -a 就是参数,函数move(int a, int b)中的整型变量a和整形变量b就是参数。原创 2024-03-25 21:51:33 · 1187 阅读 · 0 评论 -
【项目设计】基于Epoll(IO多路转接)和httplib的boost库搜索引擎
关于项目总结,主要是针对项目的扩展1. 建立整站搜索我们搜索的内容是在boost库下的doc目录下的html文档,你可以将这个库建立搜索,也可以将所有的版本,但是成本是很高的,对单个版本的整站搜索还是可以完成的,取决于你服务器的配置。2. 设计一个在线更新的方案,信号,爬虫,完成整个服务器的设计我们在获取数据源的时候,是我们手动下载的,你可以学习一下爬虫,写个简单的爬虫程序。采用信号的方式去定期的爬取。3. 不使用组件,而是自己设计一下对应的各种方案。原创 2023-12-31 20:33:27 · 1044 阅读 · 1 评论 -
linux的getcwd()和chdir()函数
登录时,工作目录设置为起始目录(home directory),该起始目录从口令文件(通常是/etc/passwd)中的相应用户的登录项中取得。口令文件中的登录项由7个以冒号分隔的字段组成,依次是:登录名、加密口令、数字用户ID、数字组ID、注释字段、起始目录以及shell程序。功能:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。函数原型:char *getcwd(char *buf, size_t size);功能:改变当前工作目录。原创 2023-12-14 16:55:50 · 414 阅读 · 1 评论 -
c执行linux命令的函数:popen
函数说明:popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c 来执行参数command 的指令。此外,所有使用文件指针(FILE*)操作的函数也都可以使用,除了fclose()以外,用pclose()来关闭。原创 2023-12-14 16:52:31 · 102 阅读 · 1 评论 -
fflush与fsync的关系(语言级缓冲区与内核级缓冲区)
对于输出设备或磁盘文件,fflush只能保证数据到达内核缓冲区,并不能保证数据到达物理设备, 因此应该在调用fflush后,调用fsync(fileno(stream)),确保数据存入磁盘。fflush是libc.a中提供的方法,是用来将流中未写的数据传送到内核。linux底层操作,属于内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作。c库缓冲-----fflush--------->内核缓冲--------fsync(刷盘)----->磁盘。原创 2023-12-14 16:46:13 · 108 阅读 · 1 评论 -
匿名管道和命名管道的概述理解和c++实现——进程间通信
匿名管道和命名管道的概述理解和c++实现——进程间通信。原创 2023-11-15 12:09:04 · 96 阅读 · 1 评论 -
进程替换,exec系列函数使用
进程替换,exec系列函数使用进程替换就是指进程不变(进程的pcb,进程地址空间不变),仅仅替换当前进程的代码和数据的技术(新程序的替换旧进程的),叫做进程的程序替换,这样就好像子进程执行了一个全新的程序。原创 2023-11-01 12:09:31 · 60 阅读 · 1 评论 -
进程终止、进程等待以及fork()、wait()、waitpid()
进程终止、进程等待、wait、waitpid、fork原创 2023-10-17 10:25:17 · 260 阅读 · 0 评论 -
Linux操作系统——深度剖析进程地址空间
C/C++的程序地址空间不是内存,使用的地址绝对不是物理地址而是虚拟地址,每个进程再启动时,都会让操作系统给它创建一个地址空间——进程地址空间,让每个进程都认为自己是独占系统中的所有资源的。原创 2023-10-16 17:52:08 · 99 阅读 · 0 评论