Linux
关于Linux
Jiu_R
coder
展开
-
ubuntu16.04和18.04更换为阿里源
参考原创 2022-04-04 22:00:08 · 352 阅读 · 0 评论 -
ubuntu18.04下更新至cmake3.20.2
到cmake官方下载地址下载所需版本,这里下载的是cmake-3.20.2-linux-x86_64.tar.gz解压文件tar zxvf cmake-3.20.2-linux-x86_64.tar.gz查看解压文件tree -L 2 cmake-3.20.2-linux-x86_64创建软链接sudo mv cmake-3.20.2-linux-x86_64 /opt/cmake-3.20.2sudo ln -sf /opt/cmake-3.20.2/bin/* /usr/b.原创 2022-04-04 14:02:26 · 843 阅读 · 0 评论 -
ubuntu18.04下gcc/g++版本切换
参考原创 2022-03-31 16:37:56 · 268 阅读 · 0 评论 -
同台机器windows能ping通ubuntu,反之不行
解决方案原创 2022-03-30 20:44:01 · 341 阅读 · 0 评论 -
ubuntu18.04安装ns3.26
链接原创 2022-03-04 16:55:47 · 297 阅读 · 0 评论 -
ubuntu18.04降低gcc版本
从默认的7.5.0降低到5.5.01. cd /usr/bin 2. sudo rm -r gcc //移除之前的软链接3. sudo ln -sf gcc-5 gcc // 建立gcc-5的软链接 此处尝试使用gcc-5.5.0,但是报错4. sudo rm -r g++ //同上5. sudo ln -sf g++-5 g++ //同上原创 2022-03-04 14:09:45 · 627 阅读 · 0 评论 -
线程池基本介绍
文章目录线程池简介线程池的线程数量选择子线程的方式线程池简介线程池是由服务器预先创建的一组子线程, 线程池中的所有子线程都运行着相同的代码。当有新任务到来时,主线程将通过某种方式选择线程池中的某一个子线程来为之服务。等到执行结束再将线程放回池子备用. 这相比于每次动态创建新线程, 执行结束再销毁的效率要高的多.线程池的线程数量线程池中的线程数量直接的限制因素是CPU的总核数N:对于CPU密集型的任务(消耗CPU计算资源的任务)来说,那线程池中的线程数量一般设置为4(或者+1防止其它因素造成的线程阻原创 2021-07-09 10:51:29 · 133 阅读 · 0 评论 -
5种I/O模型
阻塞非阻塞非阻塞I/O,如果I/O事件没有就绪就会立刻返回, 可以根据返回值和 errno 区分各种情况, 返回后我们可以去做其他事. 由于不阻塞, 所以为了完成读/写, 通常循环调用I/O函数, 直到事件发生后, 才去拷贝(从内核的读缓冲区拷贝到用户态或者用户态拷贝进内核的写缓冲区), 拷贝完成后返回I/O复用Linux使用select, poll, epoll函数实现I/O复用模型,这些函数也会使进程阻塞,但是和阻塞IO所不同的是 这些函数可以同时阻塞多个IO操作。而且可以同时对多个读操作、原创 2021-07-07 22:20:17 · 87 阅读 · 1 评论 -
阻塞/非阻塞和同步/异步
以网络I/O为例: 分为数据就绪和数据读写两个阶段, 以read一个socket为例阻塞/非阻塞: 说的是数据就绪阶段, 说的是系统调用这个状态阻塞如果read的时候, 若它的读缓冲区为空, 默认这个函数会阻塞在这, 等到有数据才会去读并返回, 才能往下执行非阻塞同上, 若设置socket的flags为O_NONBLOCK, 即使读缓冲区为空, read调用也会立刻返回, 我们可以根据返回值来判断发生了什么事同步/异步: 说的是数据读写阶段, 说的是应用程序和内核的交互方式同步原创 2021-07-07 20:49:23 · 68 阅读 · 1 评论 -
本地socket通信(同一主机的IPC)
本地套接字实现流程和网络套接字类似,一般采用TCP的通信流程服务端创建监听的套接字int lfd = socket(AF_UNIX/AF_LOCAL, SOCK_STREAM, 0); 监听的套接字绑定本地的套接字文件, 使用struct sockaddr_un addr;bind(lfd, addr, len); // 绑定成功之后,指定的sun_path中的套接字文件会自动生成。 监听 listen(lfd, 100);等待并接受连接请求, 就能得到客户端.原创 2021-07-07 16:21:22 · 2541 阅读 · 0 评论 -
文件系统相关
OS内核为每个进程维护一个打开文件表, 当open一个文件时, 将该文件的文件控制块(inode)加载到内存中,作为打开文件表的一项,并返回该项的索引作为文件描述符,之后可以通过文件描述符对文件进行操作文件控制块的各种信息:![打开文件后对其做一些操作](https://img-blog.csdnimg.cn/20210603210955514.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0c.原创 2021-06-03 22:19:49 · 70 阅读 · 0 评论 -
死锁知识点
死锁问题:系统模型:死锁特征:死锁处理办法:死锁预防死锁避免:死锁检测:死锁回复:原创 2021-05-31 22:44:55 · 277 阅读 · 0 评论 -
临界区 锁 信号量 管程
不确定性: 如果一个操作是非原子操作, 那么就有可能在执行的途中, 通过进程调度切换到另一个进程, 最后得到预期以外的结果, 并且由于进程调度可能发生在该操作的任何时刻, 因此结果具有不确定性临界区: 进程中的一段需要操作共享资源(包括读或者写等等)的代码区域临界区的特点:互斥: 任一时刻最多只能有一个进程位于临界区前进原则: 如果一个进程想要进入临界区, 那么在有限时间内一定会等到临界区的实现:方法1:禁用硬件中断: 在进入临界区之前屏蔽中断, 执行完临界区代码后再恢复 缺点:.原创 2021-05-27 22:42:42 · 104 阅读 · 0 评论 -
CPU调度
1. 常见的调度算法先来先服务: 简单, 但若先来的进程执行时间很长, 那么后来的都被迫等很久短进程优先: 只考虑进程执行时间, 先执行执行时间短的进程缺点: 1.由于可能不断产生新的短进程插队, 导致连续执行短任务, 会使长进程一直等不到, 导致饥饿现象2.很难预知一个进程的执行时间: 根据类似预估RTT的方法, 根据过去一段时间的进程执行时间来预估将来最高响应比优先: 在短进程优先的基础上, 额外考虑等待时间, 防止一些长进程无限等待优点: 缓解了长进程的饥饿现象缺点: 仍然需原创 2021-05-26 22:44:07 · 100 阅读 · 0 评论 -
进程和线程
进程: 随着程序运行, 所需的全部状态信息(程序代码本身, 数据, 状态信息)PCB: OS为每个进程都维护一个PCB(进程控制块), 用于保存该进程有关的所有状态信息PCB维护的进程信息:1.进程标识信息: 本进程的pid, 父进程的pid, 用户标识2.处理机状态信息保存区: 用于保存进程的运行现场信息, 保存进程执行到哪了, 以及相应的堆栈信息等3.进程控制信息:![](https://img-blog.csdnimg.cn/20210525205937684.png?x-oss-pro.原创 2021-05-25 22:40:24 · 122 阅读 · 0 评论 -
虚拟内存
覆盖技术和交换技术覆盖技术: 发生在一个程序运行内部, 程序员将程序分成若干模块, 将不同时运行的模块占据同一块内存, 按照运行的时间先后把当前需要运行的模块加载入内存, 当暂时不需要的模块放入硬盘, 可以减少这个程序的内存大小交换技术: 以进程为单位, 若当前进程需要更大内存时, 操作系统将暂时不跑的整个进程写入硬盘, 等到需要时再加载回来(当然, 需要由操作系统建立类似于页表的动态的地址映射机制, 让程序以为没有发生这个换入换出的操作)同: 都是将暂时不需要执行的代码和数据放入硬盘, 必要时.原创 2021-05-23 22:19:49 · 210 阅读 · 0 评论