随笔分类 - 勤动手,多动脑
摘要:linux线程--线程间同步机制 linux实现线程间同步主要有如下三个手段: mutex(互斥变量)/cond(条件变量)/sem(信号量) ###mutex互斥变量 互斥变量是实现线程同步的一个重要手段,通过对互斥变量加解锁机制,可以实现线程的同步。 一个线程对一个互斥变量加锁,而其他任何一个线
阅读全文
摘要:####恰当的使用引用 main.h class Time { public: void set_time(Time& t, int hour, int minu, int sec); void show_time(Time& t); private: int hour; int minu; int
阅读全文
摘要:解释一下为什么会有面向对象的编程: 对于一个内容简单,流程线性,规模较小的问题,我们可以从解决问题的角度出发,详细描述程序的每一步涉及的数据结构以及对其的操作;但是当程序规模较大,功能模块较多,流程复杂,运行场景多变的情况下,要事先安排好一切既定步骤简直是不可能的,面向对象的程序设计方法就是为了解决
阅读全文
摘要:重载:是指在同一个作用域内(比如一个类内部),函数根据参数类型或者参数个数等有关函数参数的差异声明不同函数,不能只根据函数返回值重载函数,如: class Base { public: Base() = default; ~Base() = default; public: void functio
阅读全文
摘要:Socket通信 我们知道两个进程如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以
阅读全文
摘要:select机制 函数作用: 在一段时间指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常事件。 函数原型: #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select(int maxfd, fd_s
阅读全文
摘要:Linux内存管理 内存只有在进程使用的时候才有意义,我们可以这么理解,内存其实是辅助进程的一个重要资源。为什么这么理解,是因为计算机最重要的资源是CPU,而操作系统管理使用CPU的基本单元就是进程,所以能够帮助进程最大程度调度CPU资源的外在资源都是辅助资源(暂时找不到合适的表达) 既然可以这么理
阅读全文
摘要:Linux信号机制 信号机制是进程间相互传递消息的一种方法,信号全称为软中断信号,信号是进程控制的一部分。从进程的描述符PCB中,也可以看到进程关于信号处理的身影。 /* 35. 信号处理 1) signal: 指向进程的信号描述符 2) sighand: 指向进程的信号处理程序描述符 */ str
阅读全文
摘要:如何对进程进行管理调度 上面我们说到,如果想充分使用CPU,必须对进程进行相应的管理,尽量使进程能够无缝的使用CPU。这其实就涉及到对进程的管理调度,目前进程的调度策略有时间片轮训,中断处理,优先级处理等调度策略。 进程的状态 在讨论进程调度策略之前,我们需要对进程执行过程中的各个状态进行一下说明。
阅读全文
摘要:git 工作区、版本库 在我们使用git的时候,我们脑海中一定要有一个关于git的框架,如下图: 我们先对git的工作区、暂存区、本地仓库做一个基本的解释 工作区: 就是我们电脑中代码的下载目录 版本库: 在我们的下载目录下有个.git目录,这个目录就是所谓的版本库,暂存区就是.git文件夹下的一个
阅读全文
摘要:进程描述符(PCB) 概述 CPU作为计算机的核心部件,我们当然希望它能一直工作,充分提高它的使用效率。对于上层软件来说,我们不可能直接去操控CPU(我们没这能力也没必要),因为操作系统是夹在计算机硬件和上层软件的中间层,所以操作系统就要充分担当起这个中间人的角色,替计算机管理好CPU,保证上层软件
阅读全文
摘要:操作系统是干什么的 一个计算机的组成包括但不限于CPU、内存、磁盘、输入输出设备、网卡等 举例来说,对于一个普通用户,我使用计算机肯定不能让我直接操控以上硬件啊(这样使用计算机的成本就太大了),所以我们迫切需要一个系统能够帮助我管理这些硬件,我只要去下发相应的命令,就可以驱动硬件动作。这个我们迫切需
阅读全文