Linux操作系统
文章平均质量分 74
linux专栏linux学习分享
Davag
知识是学不完的,将自己当下学的知识分享出来是一种乐趣,也有利于自己复习所学内容。
展开
-
【Linux】静态库、动态库
动静态库里面包含的是源文件通过汇编阶段生成的后缀为.o的可重定位目标文件。我们在使用C语言,包含一个stdio.h头文件就可以使用scanf方法,其实都是系统调用了相应的头文件和库,库里面有开发者已经写好各种方法。也就是说我们在使用C语言时,系统里已经存在了各种各样的库了,我们只需要根据自己的需求通过向系统表明要使用那些库了的方法,包含相应的库对应的头文件即可。系统在编译源文件时会自动在/usr/include路径下搜寻该源文件在链接过程中所需的库的头文件,在/lib64路径下搜寻所需的库文件。原创 2024-06-25 23:59:20 · 411 阅读 · 0 评论 -
【Linux文件系统】被打开的文件与文件系统的文件之间的关联刨析总结
操作系统管理内存的基本单位是4KB,操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct page结构体,该结构体存储着这4KB内存块的属性信息,通过管理struct page来对内存进行管理,page结构体的大小比较小,OS通常将它们组成一个数组,因此只要对物理内存的管理就变成了对该数组的管理!物理内存与磁盘进行数据输入输出时的基本单位是4KB,但是如果物理内存现在要将100字节的数据输入给磁盘,直接将这100字节的内存数据给磁盘就可以了,为什么要必须给4KB内存数据呢?原创 2024-06-23 23:11:12 · 611 阅读 · 0 评论 -
【Linux基础IO】磁盘的结构、文件系统与inode、软硬链接
首先操作系统根据文件名,找到该文件的inode编号进而找到存储该文件全部属性的inode结构体,将自己占用的Data block里的块通过映射将Block Bitmap中的比特位置为0,再将inode Bitmap中的该文件inode结构体对应的比特位置为0。软链接是一个独立的文件,有自己独立的inode,也有独立的Data block中的内存块,软链接内存块里存储的是指向文件所在的路径。盘面上存储的是二进制数据,盘面是双面的且盘面在工作是高速转动,磁头会左右摆动但不接触盘面,防止磁头刮花盘面破坏数据。原创 2024-06-23 14:25:30 · 1205 阅读 · 0 评论 -
【Linux基础IO】深入理解缓冲区
缓冲区在文件操作的过程中是比较重要的,理解缓冲区向文件刷新内容的原理可以更好的帮助我们更深层的理解操作系统内核对文件的操作。原创 2024-06-21 17:46:56 · 677 阅读 · 0 评论 -
【Linux基础IO】重定向以及原理分析
为什么我们把fd=1的显示器文件流stdin关闭了,向fd=1的显示器文件中写入文件就会写入到text.txt里呢?stdout与stderr。首先得弄清楚操作系统对于。可以看到发生了重定向。原创 2024-06-19 23:59:24 · 631 阅读 · 0 评论 -
【Linux基础IO】常见的对文件操作的函数、文件描述符fd、访问文件的本质分析
通常可能会有多个进程同时打开一个文件,因此多个进程的表files_struct都包含这个描述文件的结构体对象地址,其实这个被打开文件的结构体对象里存储了一个int count变量用来存储有几个进程正在打开它,当一个进程不再关闭了该文件时--count直到0 == count操作系统就会回收描述该文件的结构体对象。没有打开的文件是存放在磁盘上的,磁盘是外部设备,根据冯诺依曼体系访问文件就等于访问硬件,由于操作系统不允许用户直接访问它内部的硬件数据,因此操作系统提供了相应的。参数来指明新文件的访问权限.原创 2024-06-18 20:56:12 · 952 阅读 · 1 评论 -
【Linux系统编程】进程程序替换、exec系列替换函数
可以看到替换函数execl下面的代码没有被执行,这是因为发生了进程替换,将正在执行的进程中的代码和数据被ls指令进程的代码和数据替换了,此处也就执行了ls指令,正在执行的进程execl后面的代码就被覆盖了,所以正在执行无法执行execl后面的代码。进程地址空间和页表的存在使进程管理和内存管理之间解耦提高了CPU执行进程时的效率。otherExe是一个我们自己写的一个可执行程序。创建子进程后该子进程执行的是和父进程相同的程序。但有可能执行不同的代码分支。替换函数以执行另一个程序。子进程往往要调用一种。原创 2024-06-15 23:58:59 · 593 阅读 · 0 评论 -
【Linux系统编程】进程等待
此时父进程的状态就不是阻塞状态了,父进程可以通过while循环对子进程进行轮询,在此轮询子进程期间父进程可以做它自己的任务。子进程退出则父进程就等待子进程,进而回收子进程。就是通过传入我们自己定义的整型变量的地址status可以得到操作系统内核的信息(即得到子进程执行情况的信息)。注意:如果子进程一直不退出,父进程默认在调用wait等待子进程的时候,此时父进程处于阻塞状态。根据上面试验结果可以看出父进程成功等待了退出的子进程。上述结果证明父进程成功等待了退出的子进程。返回收集到的子进程的进程。原创 2024-06-13 23:45:36 · 1100 阅读 · 0 评论 -
【Linux系统编程】进程终止
在命令行执行的指令本质上是一个进程,在执行完打印proc进程的退出码的指令后,再执行打印指令:echo $?此时结果是0即进程执行成功,这是因为执行上一次echo指令进程在终端打印了12因此上一次的echo指令进程执行成功,因此命令行最近执行的进程退出码是0。注意:在linux操作系统中如果要打印的字符串后没有加\n那么执行到该句代码,该字符串就会被暂时存出缓冲区,不会立刻被打印在终端,只有进程结束时才会将该字符串打印到终端;注意:错误码/退出码是0不表示任何错误信息,0代表的是进程执行无异常。原创 2024-06-11 18:36:18 · 675 阅读 · 0 评论 -
【Linux操作系统】Linux中进程的五种状态:R、S、D、T、X以及僵尸进程、孤儿进程
操作系统中有许多同时执行的进程,这些进程都可能处于不同的状态代表着不同的含义。原创 2024-06-07 23:59:01 · 1350 阅读 · 1 评论 -
【操作系统】(详细理解进程的状态)执行状态、就绪状态、阻塞状态、挂起状态
(进程不能直接从阻塞状态转换为执行状态,因为只有被调度的进程才可以转换为执行态,而只有就绪态在可以被调度,因此阻塞态必须转换为就绪态,有就绪态转换为执行态)。在操作系统中,我们可以将处于就绪态的进程理解成:这些就绪态进程将自己的PCB储存在一个双链表数据结构队列中,CPU只识别每个进程的CPU就可以准确的执行某个进程了,这样一来就绪态进程就可以高效的被CPU所执行,而不是那种混乱式的执行,调度器在就绪态的进程中进行筛选以确定哪一个进程被CPU执行。执行状态:当一个进程已获得必要资源,并占有CPU进行执行。原创 2024-06-05 17:16:18 · 1425 阅读 · 0 评论 -
【Linux系统编程】冯诺依曼体系、操作系统、进程的认识
首先,当我们发送文件时,文件会在我们的磁盘(此时是我们电脑的输入设备)中被取出,在被存入存储器(内存中)中,再由存储器传送给CPU经过CPU的解压,压缩,再传给存储器再由存储器传送给网卡(此时是我们电脑中的输出设备),再经过网络了复杂处理,将该文件数据传送到对方电脑里的网卡(此时是对方电脑里的输入设备),在传入到存储器由CPU解压,压缩到磁盘(此时是对方电脑里的磁盘)。我们可以看到冯诺依曼体系结构由以下硬件组成:输入设备、输出设备、存储器、运算器、控制器组成。输出设备:显示器、播放器硬件、磁盘、网卡等。原创 2024-06-02 21:38:00 · 921 阅读 · 0 评论 -
【Linux】如何利用linux项目自动化构建工具-make/Makefile以及vim编辑器构建两个小程序:倒计时和进度条
头文件是用来声明processbar.c中实现的函数的,这样会代码看起来更有条理,以及一个Makefile文件用来确定依赖关系和依赖方法。首先我们要进建立一个test2目录,该目录中有源文件main.c和processbar.c和头文件processbar.h。注意:在依赖方法前面加@的作用是,执行make指令后,将对应的依赖方法不显示在屏幕上。注意:在Linux中sleep函数的参数是秒,usleep函数是微秒。首先我们Linux中创建目录test1,该目录中包含了。原创 2024-06-01 13:26:09 · 649 阅读 · 0 评论 -
【Linux】权限掩码(umask)
权限掩码是由4个数字组合而成的,默认的第一位数字是0;后三位数字分别由八进制位数字组成。权限掩码主要利用后三位数字发挥作用,后三位八进制数字代表的是文件或目录的权限属性。权限掩码存在的意义是:可以通过修改它来改变所创建的文件或目录的默认权限属性。原创 2024-05-28 22:15:43 · 923 阅读 · 0 评论 -
【Linux】中常见的重要指令(下)以及重要的几个热键
find指令查找的文件不能当前路径下(可以这样理解:如果要查找当前路径下可以使用ls指令,就不麻烦find指令了),必须查找当前路径下的目录里的文件。1.能被打包压缩的一定是由多个文件组成的,打包压缩后将文件变为一个整体,在传递给其他用户时不容易缺失。.tar打包后缀 .gz压缩后缀 XXX.tar.gz ----->XXX.tgz。功能:在系统特定的路径下查找,及可以找到可执行程序,有可以找到手册,安装包和压缩包等。命令在目录结构中搜索文件,并执行指定的操作。功能:在指令路径下搜索指令文件。原创 2024-05-27 13:43:52 · 1334 阅读 · 0 评论 -
【Linux】中的常见的重要指令(中)
递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。则它会把前面指定的所有文件或目录复制到此目录中。指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,强行复制文件或目录, 不论目的文件或目录是否已经存在。强制的意思,如果目标文件已经存在,不会询问而直接覆盖。原创 2024-05-25 10:41:58 · 1052 阅读 · 0 评论 -
Linux中常见的基本指令(上)
在这里首先要说明一点,Linux操作系统中规定:以 d 字母开头的是一个目录;以 - 开头的是一个普通文件。不难看出:为目录的是dir1,dir2;:对于目录,该指令列出该目录下的所有子目录与文件。当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。ls -l指令是将所在路径中的所有目录和文件以及它们的属性列出来。上述ls -al指令显示的目录和文件都是再root目录下的。将当前工作目录改变到指定的目录下。列出目录下的所有文件,包括以。“dirname”的目录。这里的.和..是隐藏文件。原创 2024-05-22 23:58:09 · 738 阅读 · 0 评论