![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 88
muduo学习分享
clw_18
都挺好
展开
-
windows系统上git安装及使用教程
一、git安装进入git官网:git官网,下载windows版本并安装。具体安装教程参考:安装教程。二、git连接gitlab个人远程仓库本地git仓库和gitlab网络仓库之间的传输是通过ssh加密的,必须要让gitlab仓库认证你ssh key,因此需要通过ssh key建立连接。其教程为:1、打开gitbash终端,新建一个.ssh文件夹: mkdir ~/.ssh2、进入文件夹: cd ~/.ssh3、执行生成ssh key的命令,并按三次回车:ssh -keygen -t原创 2021-05-23 16:49:32 · 3677 阅读 · 1 评论 -
进程间通信总结
1、管道(pipe)概念:一种用于有亲缘关系的两个或多个进程之间的通信手段,可以提供单向的数据流,又称为无名管道。由于管道没有名字,只能用于有共同祖先进程的各个进程之间通信。特点:(1)半双工通信(即单向数据流),有固定的读入端和写出端;(2)只能用于有亲缘关系的进程之间通信;(3)本质上是一个内核缓冲区,也可以看作是一个特殊的文件。创建方式:#include<unistd.h>int pipe(int fd[2]);pipe函数返回两个文件描述符:fd[0]用于读数据,fd原创 2021-01-21 15:02:40 · 962 阅读 · 0 评论 -
死锁总结
什么是死锁通常是指多个线程在运行过程中因争夺资源而造成的一种僵局,当线程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进,就形成了死锁。但是单线程对同一资源多次加同一个锁也会造成死锁。产生死锁的情况1、**单线程死锁:**一个线程用一把互斥锁对某一资源加锁两次,自身就会陷入死锁状态。因为同一把互斥锁不能同时使用,一次使用需要加锁再解锁,才能进行下一次使用该锁,对某一资源加锁两次时,因为第一次的锁尚未释放,就开始第二次加锁,就会导致第一次的锁无法解开,第二次的锁也无法使用,就会产生死锁。2、*原创 2021-01-20 14:46:45 · 684 阅读 · 0 评论 -
linux下几个常用的命令
记录本人在写服务器项目时,调试过程中用到的几个命令。1、ping用于检测一个主机网络功能的可用性,以及网络的连接速度。其原理为:使用ICMP协议,向指定的网络地址发送一定数据长度的数据包,若网络地址存在且网络功能没有问题,就会返回同样大小的数据包,若在超时时间内没有返回,也会返回对应的错误信息。格式:ping 主机IP例如:在终端输入ping 127.0.0.1(127.0.0.1为本地环回地址,常用于本机模拟通信测试),结果无误,如下:ping命令的详解可参考博客:https://bl原创 2021-01-03 15:57:46 · 466 阅读 · 1 评论 -
线程同步(互斥锁、条件变量、读写锁、自旋锁)
线程同步所谓线程同步,就是有多个线程共享相同的内存时,需要确保共享数据在每个线程中都是一致的。若同一个共享变量在两个及以上线程中所显示的结果是不一样的,就表明线程不同步。什么情况下需要使用线程同步?当一个线程可以修改的变量,其它线程也可以读取或修改的时候,必须进行线程同步,否则可能导致错误。假设有两个线程A和B,需要对整型全局变量i进行递增操作,过程如下所示:递增操作不是原子操作,编译器完成递增操作实际上需要3条机器指令:(1)将变量从内存单元读入寄存器;(2)在寄存器中对变量进行增量操作;原创 2020-12-22 15:33:07 · 561 阅读 · 0 评论 -
linux中进程pid,线程tid以及线程pid
进程pid进程pid(进程ID),每个进程在系统中都有一个唯一·的非负整数表示的进程ID,用getpid() 获取进程ID。线程tid线程tid(线程ID),每个线程在所属进程中都有一个唯一的线程ID,用pthread_self() 获取自身现成ID。有多个进程时,可能会出现多个线程ID相同的线程,故线程tid只在其所属的进程上下文中有意义,不能作为系统中某个线程的唯一标识符。线程pid线程pid,每个线程在系统中都有一个唯一的pid标识符,用系统调用sys_call(SYS_gettid())原创 2020-12-08 16:10:32 · 3383 阅读 · 0 评论 -
linux进程的调度方式(面试题)
linux进程分为实时进程(有实时需求的进程)和普通进程两种,实时进程的优先级高于普通进程,故优先执行实时进程。实时进程的调度方式: 静态优先级策略+先进先出策略/轮转策略系统调度时,首先执行静态优先级策略,会根据用户设定的静态优先级对实时进程进行排序,先执行优先级高的进程直到完毕,再执行优先级低的进程。当有数个实时进程的优先级相同时,有先进先出策略(SCHED_FIFO)和轮转策略(SCHED_RR)供用户选择。若为先进先出策略,系统会根据进程出现在队列上的位置选择执行的顺序;若为轮转策略,系统会为实原创 2020-10-22 22:00:10 · 1213 阅读 · 0 评论 -
进程、线程及协程的区别
一、概念**进程:**进程是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统资源分配和独立运行的最小单位;**线程:**线程是进程的一个执行单元,是任务调度和系统执行的基本单位;二、区别**1、根本区别:**进程是操作系统资源分配和独立运行的最小单位;线程是任务调度和系统执行的最小单位。**2、地址空间区别:**每个进程都有独立的地址空间,一个进程崩溃不影响其它进程;一个线程组中多个线程共享一个进程的地址空间,一个线程的非法操作会使整个进程崩溃。**3、上下文切换开销区别:**原创 2020-10-21 22:53:06 · 14811 阅读 · 1 评论 -
linux下拷贝命令cp和移动命令mv的常见用法
一、拷贝命令cp的常见用法1、将当前目录下的指定文件拷贝到另一个目录下举例说明:当前目录路径为: /home/clw/poll_test,有以下文件:另一个目录路径为: /home/clw/epoll_test,该文件夹为空。要将当前目录中的文件client.c和makefile拷贝到另一目录中,命令为:cp client.c makefile /home/clw/epoll_test/我们可以看到epoll_test目录中已经成功拷入了两个文件。...原创 2020-10-16 13:14:12 · 709 阅读 · 0 评论 -
makefile生成多个目标文件的写法(linux程序员必须掌握的程序编译技能)
小编读完陈皓大神关于Makefile的博客之后,对Makefile的使用有了更深入的理解,在此附上陈皓大神makefile博客的链接:https://blog.csdn.net/haoel/article/details/2886。博客中针对Makefile的介绍、编译和链接原理、以及规则都做了详细的介绍,因此小编在此仅归纳两种常用的makefile文件的写法,希望可以帮助读者掌握Makefile的写法。(阅读过程中若有不理解之处,可参考陈皓大神的博客,以此来提升理解)一、初学者和小项目可使用的makef原创 2020-10-08 13:33:56 · 10999 阅读 · 5 评论 -
ubuntu18.04系统下安装vscode教程
ubuntu18.04系统安装常见的有三种方法,一是通过命令安装,二是通过ubuntu软件商店安装,三是通过visual studio官方网站安装。一、通过命令安装在终端命令行中依次输入以下命令:1、 sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make2、 sudo apt-get update3、 sudo apt-get install ubuntu-make4、 umake ide visual-studio-code(该步需要指定原创 2020-10-07 13:41:20 · 39422 阅读 · 6 评论 -
电脑安装32位操作系统还是64位操作系统好?从内存角度分析
相信很多人都发现新买的电脑都自带64位 windows10操作系统,很少有人使用32位操作系统了。那么,这是什么原因呢?64位操作系统和32位操作系统又有什么区别呢?那到底安装哪个系统好呢?接下来,我们一起来分析一下,相信能帮助你们解决心中的疑惑。一、32位操作系统最大支持4GB内存大小的电脑我们都知道,计算机只能识别二进制数字。而位(Bit)是计算机的最小存储单位,存放0或1。32位操作系统是指系统的最大寻址能力为32位,那么对应的地址空间就为:232÷1024÷1024÷1024=4(GB)2^原创 2020-09-06 22:47:47 · 1137 阅读 · 2 评论