linux
文章平均质量分 78
偶然i
持续更新华为OD机考原题及答案解析
展开
-
IO多路复用------poll系统调用
poll系统调用和selct类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。poll 的原型如下: int poll(struct pollfd *fds,nfds_ t nfds,int timeout);struct pollfd{int fd; //要监控的描述符short events; //对应fd描述符要监控的事件POLLIN-可读、 POLLOUT-可写short revents;//fd描述符在监控调用返回后实际就绪的事件}...原创 2021-08-04 16:44:36 · 264 阅读 · 0 评论 -
IO多路复用--select系统调用+基于select实现并发服务器
多路转接模型作用针对大量描述符的I0进行就绪事件监控, 能够让进程在对大量描述符的IO操作中,仅仅针对就绪了指定IO事件的描述符进行操作,避免了对于没有就绪的描述进行操作,进而提高了IO效率,并且避免了对未就绪描述进行的阻塞操作导致程序流程无法推进示例:tcp服务器 tcp服务端程序会为每一个客户端的连接创建一个新的套接字,并使用新的套接字描述符与客户端进行通信,但是并不是每个客户端都会一直给服务器发送数据, 并且一直有新连接到来,在固定的流程中会因为对没有新连接到来进行的...原创 2021-08-04 16:23:36 · 515 阅读 · 0 评论 -
Linux网络编程 | 基于TCP协议的客户端服务端通信
TCP协议:传输控制协议特点:面向连接的、可靠的、面向字节流传输的协议TCP通信编程流程原创 2021-06-02 17:33:41 · 474 阅读 · 1 评论 -
Linux网络编程 | 基于UDP协议实现客户端服务端通信
对UDP(User Datagram Protocol 用户数据报协议原创 2021-06-02 16:40:08 · 698 阅读 · 0 评论 -
操作系统 | 死锁概念及其死锁案例分析解决
死锁的概念什么是死锁?程序流程无法继续推进卡死的状态死锁产生条件1.互斥条件:我接了锁,别人就不能加锁2.不可剥夺条件:我加了锁,只有我能解3.请求与保持条件:加了A锁请求B锁,请求不到B锁 ,A锁不释放4.环路等待条件:线程1拿了A锁请求B锁,线程2拿了B锁请求A锁死锁的预防:破坏产生的必要条件 1.破坏条件4,保证加解锁顺序一致 2.使用非阻塞加锁 :拿了A锁请求B锁 请求失败释放A锁避免死锁:银行家算法...原创 2021-05-28 12:28:01 · 720 阅读 · 0 评论 -
Linux多线程 | 生产者消费者模型
生产者消费者模型:是一种典型的设计模式。他的应用场景是针对大量的数据产生与处理的场景组成一个场所:线程安全的数据队列两种角色:生产者与消费者三种关系 生产者与生产者关系:互斥 消费者与消费者关系:互斥 生产者与消费者关系:同步+互斥为什么要使用生产者消费者模型生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理...原创 2021-05-16 20:43:37 · 176 阅读 · 0 评论 -
Linux多线程 | 火车站窗口卖票
描述火车站有3个窗口,去卖100张车票,卖完即停止思路典型的多线程编程问题。首先需要三个线程同时去卖票,要保证线程安全,就要使用互斥锁进行保护,防止出现卖出负数的情况1.开启三个线程2.使用互斥锁保证线程安全3.车票为0停止卖票代码实现int tickets = 100;pthread_mutex_t mutex;void *buyTicket(void *arg){ while(tickets>0) { pthrea..原创 2021-05-15 16:33:44 · 2257 阅读 · 5 评论 -
Linux | 线程概念、线程控制
技术交流qq:1032492413技术交流VX:Chamfion原创 2021-05-08 12:45:12 · 144 阅读 · 0 评论 -
操作系统 | 银行家算法及代码实现
技术交流qq:1032492413技术交流VX:Chamfion原创 2021-05-05 21:29:03 · 975 阅读 · 1 评论 -
Linux 进程间通信 | 管道
技术交流qq:1032492413技术交流微信:Chamfion原创 2021-04-26 12:26:13 · 106 阅读 · 0 评论 -
Linux | linux环境变量
技术交流qq:1032492413技术交流微信:Chamfion.原创 2021-04-26 11:08:47 · 96 阅读 · 0 评论 -
Linux | 进程创建、僵尸进程与孤儿进程
一、进程创建Unix的进程创建很特别。许多其他的操作系统都提供了产生(spawn) 进程的机制,首先在新的地址空间里创建进程,读入可执行文件,最后开始执行。Unix 采用了与众不同的实现方式,它把上述步骤分解到两个单独的函数中去执行: fork()和exec系列函数。首先,fork()通过拷贝当前进程创建一个子进程。子进程与父进程的区别仅仅在于PID (每个进程唯一)、 PPID (父进程的进程号,子进程将其设置为被拷贝进程的PID)和某些资源和统计量(例如,挂起的信号,它没有必要被继承)。exec系列原创 2021-03-23 16:35:25 · 340 阅读 · 0 评论 -
Linux进程的基本认识
Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的表现是以进程的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以是长期的(一种网络服务)。因此,对进程及其调度进行一般管理就显得极为重要。在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的。1.程序与进程的概念 程...原创 2021-03-19 14:59:06 · 145 阅读 · 0 评论 -
Linux虚拟进程地址空间
Linux虚拟进程地址空间运行在一个内存空间里。一般的,在32位的系统里面,这个内存空间大小是4GB,为什么呢?原因是32位的系统地址空间是从0x00000000~0xffffffff,(2的32次方)大多数的操作系统都会将内存空间中的一部分分给内核使用,应用程序无法直接访问这一块内存,这一块空间也被称为内核空间。一般的,Windows默认情况会将高地址的2GB空间分配给内核,Linux默认情况下将高地址1GB空间分配给内核。用户使用剩下的内存空间称为用户空间。接下来我们就来一点点。...原创 2021-03-19 13:17:49 · 282 阅读 · 0 评论 -
linux下静态库与共享库的制作与使用
linux程序设计第四版库:预先编译好的方法/函数的集合.c文件编译成.o文件,再将.o文件的方法放入库文件存放库文件的标准路径/usr/lib 用户安装的 /lib 系统本身的所有的头文件.h存放在 usr/include命令在 /usr/bin /bin比如:list.h 声明list.c 实现 编译生成 list.o 链接到main...原创 2019-06-09 11:11:15 · 313 阅读 · 0 评论 -
线程《操作系统精髓与设计》
线程:进程内部的一台哦执行序列(路径) 调度的基本单位进程:一个正在运行的程序 资源分配的基本单位线程实现并发 与并行线程间同步《操作系统精髓与设计》线程安全保证线程安全 :1 同步 2 使用线程安全的函数线程安全的函数 可重入函数比如:strtok strtok_r在函数中使用,...原创 2019-08-03 12:01:56 · 130 阅读 · 0 评论 -
计算机网络
网络:分层模型 7层模型和4层模型应用层 表示层 会话层 传输层 网络层 数据链路层 物理层应用层 传输层 网络层 数据链路层为什么要分层??《计算机网络》1.大问题划分为小问题 各层彼此独立2.灵活性 适合自己的技术实现3.复用性ip 作用唯一标识一台主机MAC 物理地址可以唯一标识一台主机问题:有了ip地址为什么还要MACi...原创 2019-08-03 12:35:09 · 104 阅读 · 0 评论 -
C与C++区别 makefile文件 gdb调试
技术交流qq:1032492413技术交流VX:Chamfion原创 2019-07-26 17:30:01 · 540 阅读 · 0 评论 -
进程概念与文件描述符
《linux内核设计与实现》第三章进程概念及状态进程:一个正在运行的程序,资源分配的基本单位进程状态:就绪 运行 阻塞进程描述符:进程控制块(PCB),存放进程的属性信息僵死进程:子进程先结束,父进程没有调用wait获取子进程的退出码,则子进程变成僵死进程为什么会产生僵死进程系统在设计时,子进程在结束后,会将退出码放入PCB中,父进程要查看子进程的退...原创 2019-07-27 12:01:26 · 441 阅读 · 0 评论 -
进程间通信
进程间通信:管道 信号量 消息队列 共享内存 套接字管道有名管道 mkfifo mkfifo()无名管道 pipe()区别:有名可以在任意两个进程间通信,无名可以在父子进程间进行通信管道通信方式:半双工通信方式包括:单工 半双工 全双工写入数据:写在内存中管道为空 读read阻塞管道未满 写write阻塞关...原创 2019-07-27 13:59:50 · 150 阅读 · 0 评论 -
Linux进程间通信 管道
技术交流qq:1032492413技术交流VX:Chamfion原创 2019-09-02 16:30:37 · 190 阅读 · 0 评论 -
linux目录、文件类型、权限及基本操作命令
技术交流qq:1032492413技术交流VX:Chamfion原创 2019-06-06 16:58:44 · 260 阅读 · 0 评论