![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 92
cls-evd
南风知我意,吹梦到西洲
展开
-
Linux之进程概念
冯诺依曼操作系统1.0输入设备:键盘,磁盘,网卡,显卡,话筒,摄像头等2.0输出设备:显示器,磁盘,网卡,显卡,音响等输入和输出设备不是独立的两套设备3.0存储器(内存)不同的存储介质存储效率是不一样的。凡是离cpu越近的存储设备,它的效率越高,但是单价成本越高。反之4.0运算器和控制器(合称中央处理器也就是cpu)所谓的cpu也就是芯片:具有运算能力运算器:算术运算和逻辑运算控制器:读取指令,分析指令,执行指令,响应某种中断信号,执行某种中断方法。....原创 2023-03-17 11:08:39 · 547 阅读 · 0 评论 -
Linux之进程控制
进程创建fork函数---写时拷贝原创 2023-03-17 11:13:41 · 878 阅读 · 1 评论 -
Linux之基础IO
小复习以下如果学习文件操作只停留在语言方面,是很难对文件有一个比较深刻的理解的。C程序默认会打开三个输入输出流,stdin,stdout,stderr原创 2023-03-21 20:28:17 · 596 阅读 · 0 评论 -
Linux之进程信号
因为信号的产生是异步的,它在任何时候都可能产生信号,在信号产生期间,我的进程可能一直都在运行,当前进程可能会在做着更重要的事情。所以我们会将信号做延时处理,这个取决于OS和进程。因为信号是被保存在进程的PCB中,pending位图里,所谓的处理一定要进行检测,递达(默认,忽略,自定义)。当进程从内核态返回到用户态的时候,进行上面的检测并且处理工作。用户态:就是用户代码和数据被访问或者执行的时候,所处的状态。我们自己写的代码全部都是在用户态执行的。原创 2023-03-22 19:59:13 · 880 阅读 · 0 评论 -
Linux之进程间通信
共享内存在内核中申请的基本单位是页,这个页叫做内存页,这个内存页叫做4KB。如果我申请4097个字节,内核会向上取整,给你4096byte*2(多要了一个就得多申请一页,因为没有4097)。但是我们实际看到的并不是4096*2,而是4097,这又是怎么回事呢?如果我向OS要了10个字节,OS只给了9个,我就认为是错的,因为很容易发生越界,OS就有问题。原创 2023-03-22 10:56:35 · 2332 阅读 · 1 评论 -
Linux之多线程
挂起失败就是函数调用失败,你就不能把自己放到等待队列里,继续向后走。条件可能并没有满足,但是我这个线程被唤醒了。比如很多线程在条件变量下等,等的时候 (在多CPU的情况下被唤醒),虽然大家会排队,但是在多CPU下执行代码的时候,有可能向目标条件变量发送条件就绪这样的指令,最后可能导致当前的线程被伪唤醒。再比如:我们现在的代码是只要别人生产一条数据,就把消费者唤醒了。原创 2023-03-25 07:36:24 · 1072 阅读 · 0 评论 -
Linux之高级IO
所以当我们创建epoll的时候,就相当于帮助我们维护三个东西,红黑树,就绪队列,回调机制(当数据已经就绪,外设会向CPU的针脚发送中断,CPU执行中断向量表,然后执行中断上下文把数据从外设拷贝到内核,当然这个中断方法也有讲究,老式的计算机是由CPU参与IO的,CPU要把数据从外设搬到内存里,新的计算机也有独立的芯片,比计算机的等级低一点,我们称为DMA,当外设就绪之后,告诉CPU,CPU就让DMA把数据从外设搬到内存里)原创 2023-03-25 11:32:49 · 677 阅读 · 0 评论 -
自主设计Reactor服务器
epoll可以帮我们去检测哪些fd上的哪些事件就绪了,现在根据这仅有的54行代码,我们可以推测出将epoll设计成一个叫做就绪事件派发逻辑,说白了就是epoll可以告诉我们哪些fd就绪,哪些fd就绪了,我们就可以调用fd上的读写回调,所以我们最终就可以在epoll中进行事件派发,事件派发的时候,我们此时就可以通过epoll检测到哪些fd上的哪些事件就绪了,然后直接调用fd上的回调函数,就叫做把任务派发出去了,所以我们基于epoll写的这个事件派发的函数就可以称之为派发器。然后就开始事件派发。原创 2023-03-25 19:58:32 · 687 阅读 · 0 评论 -
Linux下如何将代码上传到Gitee中
git status 查看当前本地代码与本地仓库的对应关系我们看到需要我们进行添加,添加完毕后,再次查看。接下来用git commit -m "日志"命令这个日志是必须要填写的,否则就会报错。并且这个日志不能胡写,这个日志代表你本次修改或者提交等非常重要的信息。此时再用git push 将你的命令提交到远端 ,需要输入你的用户名与密码(gitee的)此时再次git status 下,就会看到我们的工作已经完成了。此时我们的仓库就有了我们传入的procgit..原创 2022-05-16 17:21:48 · 1405 阅读 · 2 评论