
04 Linux
文章平均质量分 86
linux基础
且听吟风°
扣:903199567
展开
-
01 Linux简介
linux从哪来的?怎么发展的?得从UNIX说起。原创 2024-02-21 12:53:42 · 619 阅读 · 0 评论 -
02 环境配置
使用linux有三种途径:1.安装linux系统2.安装虚拟机和linux系统3.购买服务器鉴于低配置的服务器也够用,价格也不贵,选择购买服务器。前期使用1核2G的服务器就足够。尽量选择活动低价的。系统选择centos7或8购买后记得重置密码,用来登录服务器。原创 2024-02-21 16:08:14 · 287 阅读 · 0 评论 -
03 基本指令 1
linux的命令选项都可以同时叠加多个。原创 2024-02-24 22:17:48 · 1279 阅读 · 0 评论 -
04 基本指令 2
本来从屏幕输出输入的内容,可以更改到文件或其他设备的操作叫重定向可以打印输入的内容,也可以重定向内容到文件,不存在就创建文件并写入内容同样文件可以更改内容两个箭头追加重定向文本。原创 2024-02-28 17:28:29 · 586 阅读 · 0 评论 -
05 权限
3个为一组,分别代表拥有者,所属组,其他人的权限,每一位代表读、写、执行,如果有字母表示这位为1,拥有这个权限,-代表没有这个权限。普通用户不能把自己的文件拥有者给别人,只有root用户可以改变,如果是系统信任用户列表的,可以用临时提升权限命令更改,加上sudo 前缀,表示后面的命令以root权限来执行,十分钟内仍是管理者。目录的写权限决定了用户可不可以创建和删除文件,对于每个用户的根目录,只对自己有权限,别人都没有任何权限,这样保证了每个用户文件的安全。不过有些软件可能会以文件后缀名区分。原创 2024-02-29 13:11:53 · 1061 阅读 · 0 评论 -
06 vim工具
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作,命令模式下,shift+:进入该模式,打开vim,底行输入: help vim-modes。安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来。解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到。就可以进入vim编辑页面,刚进入会处于正常模式,需要切换到插入模式,左下角显示的是模式。原创 2024-02-29 19:13:19 · 1212 阅读 · 0 评论 -
07 编译器
一般情况下,生成的程序的修改时间应该是最晚的,make时会对比依赖的两个源文件是否有内容变化,如果这两个文件的修改时间晚于程序的时间,就说明内容有变化,这时可以make生成。make是一个命令工具,解释makefile指令的工具,一般来说大多数ide都有这个命令,如:Delphi的make,vc的nmake,linux下GNU的make。\r和\n两个是不同的功能,在最初的计算机中,\n用来换行,而光标还在上一行的位置,\r回车用来重新回到本行开头,所以到下一行开头就是\r\n。原创 2024-03-02 20:55:04 · 1216 阅读 · 0 评论 -
08 yum和git
安装软件,一个通常的办法就是下载程序的源代码进行编译。这种太麻烦,于是一些人把常用软件编译好,做成软件包放在服务器上,通过包管理器可以很方便的得到这个软件包安装,就好比手机上的应用商店modified)是linux下非常好用的包管理器,主要在Fedora,RedHat,Centos等发形。想下载一个软件,通过yum访问软件发布平台,将程序下载安装,解决了依赖关系由于官方的软件发布平台网址是锅外的,所以链接不稳定,国内一些机构出了镜像版。原创 2024-03-02 23:21:12 · 985 阅读 · 0 评论 -
09 gdb
gdb是linux下的一款调试器。原创 2024-03-03 13:20:08 · 200 阅读 · 0 评论 -
10 计算机结构
计算机管理硬件描述:用struct结构体组织:用链表或其他高效的数据结构。原创 2024-03-03 14:30:19 · 688 阅读 · 0 评论 -
11 进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,程序的执行实例,是系统进行资源分配的基本单位,是操作系统结构的基础进程=对应的代码和数据+进程的PCB结构启动一个软件,就是启动了一个进程,linux运行一条命令,./xxx运行时,也是创建一个进程linux可以加载多个程序,怎么管理这些进程。原创 2024-03-04 19:57:47 · 629 阅读 · 0 评论 -
12 状态优先级
cpu需要执行很多进程,有很多进程排在队列中,每个进程加载后运行一定的时间段,然后切换下一个进程。cpu如何判断进程需不需要加载,什么时候加载,依靠进程的状态和优先级属性来判断,进程调度,就变成了在task_struct的队列中选择一个进程的过程。原创 2024-03-04 23:42:33 · 714 阅读 · 0 评论 -
13 环境变量
一般指在操作系统中用来指定操作系统运行环境的一些参数如c/c++链接的时候我们不知道动静态库在哪里,照样可以连接成功,原因就是有相关环境编译帮助编译器查找环境变量有特殊用途,在系统中通常具有全局属性。原创 2024-03-05 01:29:00 · 383 阅读 · 0 评论 -
14 程序地址空间
32位平台。原创 2024-03-06 12:29:00 · 807 阅读 · 0 评论 -
15 复习
原创 2024-03-06 21:41:40 · 685 阅读 · 0 评论 -
16 进程创建
在linux中fork函数是非常重要的函数,从已存在的进程中创建一个新进程。新进程为子进程,原型为父进程返回值: 自进程中返回0,父进程返回子进程id,出错返回-1。原创 2024-03-07 00:09:56 · 885 阅读 · 0 评论 -
17 进程终止
进程终止后,释放申请的相关内核数据结构和对应的数据和代码。本质就是释放系统资源。原创 2024-03-07 13:35:20 · 1254 阅读 · 0 评论 -
18 进程等待
1.子进程退出,父进程不管,就会形成僵尸进程,造成内存泄露2.僵尸进程kill也无法杀死3.父进程给子进程的任务完成情况需要知道,结果是否正常退出4.父进程通过进程等待方式,回收子进程资源,获取退出信息。原创 2024-04-09 17:09:31 · 761 阅读 · 0 评论 -
19 进程替换
fork之后的父子程序共享代码,如果子进程想执行一个全新的程序。就用进程替换来完成这个功能,通过特定的接口,加载磁盘上的一个权限的程序(代码和数据),加载到调用程序的地址空间中。原创 2024-04-10 17:33:20 · 946 阅读 · 0 评论 -
20 文件接口
上面的fprintf传入的stdout是标准输出流,将内容打印在显示器上,一个进程默认会打开三个流,标准输入,输出和错误,键盘和显示器都是硬件,是怎么通过FILE*写入到硬件上的stdinstdoutstderr。原创 2024-04-11 22:55:41 · 734 阅读 · 0 评论 -
21 缓冲区
缓冲区就是一段内存空间。原创 2024-04-14 21:08:31 · 956 阅读 · 0 评论 -
22 标准错误
关闭了1号文件,打开的文件成了1号,本来是行刷新,变为普通文件后就会全缓冲。将文件关了后数据无法刷新只有主动刷新后才会出现数据。原创 2024-04-13 22:16:53 · 370 阅读 · 0 评论 -
23 文件系统
了解了被打开的文件,肯定还有没被打开的文件,就是磁盘上的文件。先从磁盘开始认识。原创 2024-04-15 17:17:28 · 1202 阅读 · 0 评论 -
24 软硬链接
真正找到磁盘文件的不是文件名,是inode,linux可以让多个文件名对应同一个inode。原创 2024-04-16 10:39:48 · 296 阅读 · 0 评论 -
25 静动态库
首先创建两个函数的头文件和源文件最后的main函数将函数编译成.o文件make生成文件make hello分类文件测试文件夹只留一个main.c。原创 2024-04-16 22:40:00 · 660 阅读 · 0 评论 -
26 vs code配置
输入ssh [用户名]@[主机ip],添加主机,然后选择保存配置文件。如果出问题,也可以将vsserver删了重新创建一下。搜索chinese,安装,等待重新打开。安装后F1打开,输入adduser。3.c/c++ 和 扩展包,主题。如果出现管道不存在,设置一下。原创 2024-04-17 00:12:23 · 195 阅读 · 0 评论 -
27 进程通信
两个或者多个进程实现数据层面的交互,因为进程独立性的存在,导致通信的成本比较高。原创 2024-04-17 17:34:08 · 186 阅读 · 0 评论 -
28 管道
管道式Unix中最古老的进程间通信的形式把从一个进程连接到另一个进程的一个数据流称为一个“管道”原创 2024-04-20 11:02:30 · 1052 阅读 · 0 评论 -
29 命名管道
日志内容需要输出时间,想获得时间可以用time函数或gettimeofdaytm结构是时间类型,保存了时间的各个部分。注意月份是从0开始,需要加1.年份从需要加上1990日志类分为往屏幕打印,打印到文件,和打印分类文件。日志还分等级,info常规,waring,警告,error,错误,fatal,致命,debug调试。整理完整日志信息:[级别]时间:日志内容。将内容拼接好,然后区分打印方式,往文件打印就创建文件,写入文本。多个文件需要加目录名,将日志文件都放入目录,按等级生成文件,写入不同的日志文件。原创 2024-04-20 23:58:21 · 1240 阅读 · 0 评论 -
30 共享内存
共享内存区是最快的IPC形式,一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,不再执行进入内核的系统调用来传递彼此的数据。原创 2024-04-21 21:38:38 · 910 阅读 · 0 评论 -
31 消息队列
操作系统可以通过页表映射在共享区创建一块共享内存,也可以申请一个队列。A进程和B进程可以向这个队列发送数据块,两个进程接收数据块来通信。原创 2024-04-22 22:30:26 · 351 阅读 · 0 评论 -
32 信号量
前面的通信都是可以互相发送消息,而信号量只是一个计数器,为什么也是通信的一种1.通信不仅仅是通信数据,互相协同也是,信号量协助资源的安全2.要协同,本质也是通信,信号量首先要被所有的通信进程看到。原创 2024-04-23 00:40:04 · 648 阅读 · 0 评论 -
33 信号入门
如何验证crtl+c是收到了2号新号,可以对2号信号进行捕捉,自定义行为,再次crtl+c看会不会执行自定义动作signal函数这个函数可以对传入的信号编号自定义处理方式,第二个参数是一个void的函数指针int main()sleep(1);运行后输入crtl+c会变为输出函数里的内容。原创 2024-04-24 09:23:00 · 496 阅读 · 0 评论 -
34 信号产生
上面所说的所有信号产生,最终都要由os来执行,因为os是进程的管理者信号可以是立即处理,也可以在合适的时候信号如果不是被立即处理,那么信号是否需要暂时被记录下来,记录在哪里?怎么记录一个进程在没有收到信号的时候,能否知道,自己应该对合法信号如何处理?如何理解os向进程发送信号?能否描述一下完整的发送处理过程?原创 2024-04-24 20:52:29 · 760 阅读 · 0 评论 -
35 信号发送和保存
普通信号刚好1-31个,这对应了1个整数的位数。对于普通信号而言,自己有还是没有,收到哪一个信号,是给进程的pcb发的。用位图结构保存普通信号1.比特位的内容是0还是1,表示有没有收到信号2.位置是第几个,表示信号的编号3.所谓的“发信号”,本质是os修改task_struct的信号位图对应的比特位os是进程的管理者,只有它有资格修改task结构的属性,通过发信号的方式告诉用户,而不是直接杀死进程,因为有可能用户正在进行重要的工作,杀死这个进程会导致损失,担不起责任实时信号用链表来保存。原创 2024-04-25 11:49:59 · 763 阅读 · 0 评论 -
36 信号处理
如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,称为捕捉信号,由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:用户程序注册了SIGQUIT信号的处理函数sighandler。当前正在执行main函数,这时发生中断或异常切换到内核态,在中断处理完毕后要返回用户态的main函数之前检查到有信号SIGQUIT递达。原创 2024-04-26 11:45:22 · 1919 阅读 · 3 评论 -
37 线程概念
线程是进程内的一个执行分支,线程的执行粒度比进程要细上面是进程的内存结构,地址空间是进程的资源窗口。当我们创建一个进程后,会拥有自己的pcb,地址空间和页表等,父子进程互相独立。如果这时我们创建一个进程,它拥有自己的pcb结构,代码和数据共用父进程的一部分,这样页表也可以用父进程的映射,不需要创建多余的内容就可以执行,把这种结构成为线程进程是承担分配系统资源的基本实体,线程是系统调度的基本单位以前说过,进程=内核数据结构(task struct)+代码和数据,这种说法不冲突。原创 2024-04-27 22:44:42 · 1274 阅读 · 0 评论 -
38 线程控制
局部存储可以保存线程里调用流需要多次读取的值,不需要传入参数或调用函数就可以访问。原创 2024-04-29 11:54:43 · 827 阅读 · 0 评论 -
39 线程互斥
用时间换取安全加锁的表现:线程对于临界区代码串行执行加锁原则:尽量的保证临界区代码越少越好,串行执行的代码就越少,其他线程等的时间就越少。原创 2024-04-30 20:55:21 · 586 阅读 · 0 评论 -
40 死锁
1.死锁2.线程同步3.条件变量4.案例。原创 2024-05-02 23:27:34 · 69 阅读 · 0 评论