Linux
文章平均质量分 77
daboluo520
山河远阔,人间星河,无一是你,无一不是你。
展开
-
Windows & Linux 实用技巧
desktop是一种桌面快捷方式文件,用户可以双击文件打开。也可以使用命令行的方式打开。原创 2022-10-25 11:40:42 · 1834 阅读 · 0 评论 -
Ubuntu 编译XCB源码
ubuntu编译xcb源码原创 2022-06-23 19:42:35 · 1331 阅读 · 0 评论 -
wsl安装xrdp(可视化界面并远程),解决闪退、黑屏
window11 安装linux子系统(一键安装)并连接到vs code操作之前可以先换源// 编辑sudo vim /etc/apt/sources.list// 替换为以下内容deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiver原创 2022-05-13 13:33:11 · 14826 阅读 · 6 评论 -
【线程同步与互斥】卖票问题(互斥锁)
一、简述1.共享变量 很多变量有时候需要在线程间共享,可以通过数据的共享,从而完成线程之间的交互。如果变量是只读的,多个线程同时读取该变量不会有一致性的问题,但是当一个线程可以修改的变量,我们就需要对这些线程进行同步了。 2.互斥 指某一资源同时只允许一个线程访问,具有唯一性和排他性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的,有可能造成某些线程的饥饿问题,长时间享受不到资源。...原创 2018-05-10 09:36:13 · 1413 阅读 · 0 评论 -
进程间关系和守护进程
一、进程间关系1.进程组(Process Group) 1)是一个或多个进程的集合,通常,这个集合与同一个作业相关联,可以接受同一终端的各种信号。 2)每一个进程组都有一个组长进程,其进程组ID等于其进程组ID。 3)当一个进程组中还有一个进程存在,就算终止了这个组长进程,这个进程组依然存在。 4)我们将一些进程归为进程组的一个重要原因是我们可以将信号发送给一个进程组,进程组中的所有进...原创 2018-04-26 21:49:34 · 362 阅读 · 0 评论 -
多线程死锁
一、死锁1)提出 多线程与多进程提高了系统资源的利用率,然而并发执行也会带来一些问题,如死锁。 2)概念 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 3)死锁在显示生活中的实例 在一个计算机系统中,只有一个打印机和一个输...原创 2018-04-29 12:56:44 · 113 阅读 · 0 评论 -
高级IO模型
一、网络IO1.高级IO背景 对于网络IO,IO效率提升是至关重要的,一个数据在网络中的传输,其传输时间主要由网络中的延迟所决定,具有不确定性(什么时候来),所以接收IO应用程序必须经过高效的等,及时的搬迁数据来提高传输速度。众所周知,数据的搬迁取决于网卡、硬盘、内存的速度,但是经过多年的发展,它们的发展已经遇到了瓶颈,所以为了再次提升IO效率,就需要将应用程序等待的时间降低,如何高效的等,...原创 2018-06-15 10:22:27 · 122 阅读 · 0 评论 -
IO多路转接之epoll
一、epoll1.认识epoll 它是Linux内核为处理大批量句柄而做了改进的poll,Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。2.epoll支持最大fd 它所支持的FD上限是最大可以打开文件的数目,这个数字一般远大于2048,举个例子,在1GB内存的机器上大约是10万左右,具体数目可以ca...原创 2018-06-29 15:41:18 · 203 阅读 · 0 评论 -
IO多路转接之select
一、select背景原创 2018-06-18 23:34:24 · 152 阅读 · 0 评论 -
【线程】概念与控制
线程概念与控制、线程分离、一、线程的概念1.概念 在一个程序里的一个执行流就叫做线程,是一个进程内部的控制序列。线程是调度的基本单位,在Linux下,线程称为轻量级进程。 2.线程与进程之间的区别 1)进程是承担系统分配资源的基本单位,线程是CPU调度的基本单位。 2)一个线程只能属于一个进程,并且线程共享整个进程的资源,一个进程可以拥有多个线程,但至少拥有一个线程。 3)线...原创 2018-05-08 21:08:12 · 216 阅读 · 0 评论 -
inode以及软硬链接
一、inode①使用ls -l查看文件元数据,用来描述数据属性 模式 硬链接数 文件所有组 组 大小 最后修改时间 文件名②使用stat查看,查看文件信息。 //Access:最后访问时间//Modify:文件内容最后修改时间//Chage:属性最后修改时间//链接数:即有多少个文件名指向这个inode③文件系统的构成④inode...原创 2018-04-12 20:21:35 · 213 阅读 · 0 评论 -
进程基本概念、进程地址空间
强调内容今天来谈一谈进程的一些基本概念,认识一些进程状态,重新认识一下程序地址空间(进程地址空间),进程调度算法,环境变量等属性。一、进程1.什么是进程? 程序的一个执行实例,正在执行的程序,是一个担当分配系统资源的实体,系统资源包括CPU时间、内存等。 2.linux中的PCB 进程信息被放在一个叫做进程控制块(process control block)的数据结构中,存储进程的属...原创 2018-03-31 17:54:14 · 5628 阅读 · 0 评论 -
进程间通信----管道、消息队列、共享内存、信号量
一、进程间通信(Inter Process Communication)1.目的 1)数据传输 2)资源共享 3)通知事件 4)进程控制 注:每个进程都有各自不同的用户地址空间,进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间中拷贝到缓冲区,进程B再从缓冲区将数据读走,内核提供的这种机制就是进程间通信。 2.说明 1)本质:两个毫不相干的进程,看到同...原创 2018-03-26 21:32:44 · 485 阅读 · 0 评论 -
静态库与动态库详解
隐式链接的动态库也可以独立更新,前提是需要保证dll导出的函数和符号保持兼容,不能删除或修改已存在的,函数的参数和返回类型也需要一样,如果结构体在库之间的传递时,结构体大小和内存布局变化也会导致问题,但是你可以新增,或者重新优化接口里面的代码。一种是显式链接(手动加载.dll),编译时不需要导入库。导入库在程序运行时就不需要了,当程序员的代码生成DLL时,链接程序会查找函数或C++类的信息,并自动生成一个.lib文件,即导入库。不开源的库,其源代码是不可见的,开发者只能在暴露的头文件中,调用它对外的接口。原创 2018-04-14 11:31:54 · 196 阅读 · 1 评论 -
【进程控制上】创建、终止、等待、程序替换
★进程的创建、终止、等待、程序替换、以及popen/system与fork之间的区别。一、进程的创建init进程将系统启动后,init将成为此后所有进程的祖先,此后的进程都是直接或间接从init进程“复制”而来。完成该“复制”功能的函数有fork()和clone()等。 1.fork#include <unistd.h>pid_t fork(void);返回值...原创 2018-04-15 21:48:51 · 258 阅读 · 0 评论 -
fd与FILE以及fork缓冲问题
一、文件描述符(fd)1.文件描述符其实就是一个非负的小整数。是文件指针数组的下标。 2.让我们看一看0,1,2,…代表什么?#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>int main(){ char b...原创 2018-04-10 19:21:39 · 490 阅读 · 0 评论 -
VIM的基本使用
一、VIM1.概念 是一款文本编辑器,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 2.优点 可以完成复杂的编辑与格式化功能 3.模式 其模式共有十二种,基本模式有六种1.普通模式//启动vim后默认处于普通模式,wulun 什么模式,按返回键(或者ctrl+[)都会进入普通模式。2.可视模式//在正常模式中按下v, V, <Ctrl>+v3...原创 2018-04-16 22:11:24 · 141 阅读 · 0 评论 -
【进程控制下】实现一个简易的shell
1.shell原理 运用程序替换的原理来实现的,shell自己就是一个进程。1.获取命令行2.解析命令行3.创建子进程(fork)4.替换子进程(exec)5.父进程等待子进程退出(wait)2.shell#include <unistd.h> #include <sys/wait.h> #include <stdio.h> #i...原创 2018-04-17 19:11:23 · 329 阅读 · 0 评论 -
进程信号
一、信号概念1.一个信号产生及处理实例 1)在shell下,启动一个进程。 2)按下Ctrl+c,键盘输入产生一个硬件中断。 3)如果CPU正在运行这个进程则代码暂停执行,CPU从用户态返回到内核态。 4)终端程序将该动作解释成一个SIGINT信号,写在该进程的PCB中。 5)在某个时刻,CPU从内核返回到该进程的用户空间代码继续执行之前,先处理PCB记录的信号,发现是SIGINT待...原创 2018-04-22 10:45:31 · 342 阅读 · 0 评论