linux-线程 进程是操作系统分配资源的基本单元。线程是操作系统调度的基本单元。进程是由线程构成的,每一个进程至少会有一个线程。线程是在进程的地址空间内运行。线程也需要被管理,但是线程的控制块是被保存在用户区当中的共享区内。tid就是该线程块的地址。线程比进程更加轻量化。已初始化和未初始化的全局变量是共享的。线程在切换的时候,不需要切换进程地址空间这些结构,只需要切换一部分的寄存器和栈,信号表等就可以。线程也有自己的lwp。lwp与pid相同的那个线程被称为主线程,也就是第一个线程。
linux-信号 信号是发给进程的,进程接收到信号后会有内置的对应信号的处理行为。信号是操作系统发给进程的,用户只是让操作系统发给进程。进程必须要有识别信号,并且处理对应信号的能力。即使没有收到信号,也需要直到该信号的处理方法。在进程收到信号时,也许并不适合立即处理该信号,会把这个信号保存起来,合适的时候再进行处理。也就是说,在信号产生时到信号被处理之前,会有时间窗口,进程具有分辨哪些信号被处理了的能力。自定义信号处理用户也可以将信号处理的动作自定义,让这个信号的处理按照自己定义的来执行。前台进程和后台进程。
linux-进程间通信 进程的通信是两个或多个进程实现数据的交互,让不同的进程看到同一份资源,而这份资源是由操作系统创建管理的。如果让其中一个进程来提供的话会破坏该进程的独立性,因为这个进程内部的数据可以被其他进程看到,那这个独立性就遭到了破坏。
linux-inode和软硬链接 硬链接并不是一个独立的文件它与原文件时同一个inode,并且文件的硬链接数会打印在文件权限的右边,可以看到temo.c的硬链接数是2.这个统计硬链接数的属性,本质上就是一个引用技术,保存着映射指向该inode的文件名有几个。软链接既然是独立的文件,那么也有自己独立的数据块,这个数据块里保存着的就是指向的文件的路径,对软链接调用就是通过软链接保存的路径去找到目标文件进行调用。软链接是一个独立的文件,因为软链接和原文件的inode是不相同的,每一个文件只有一个inode。ln -s 原文件 软连接文件名。
linux-缓冲区 调用系统调用接口是需要时间成本的,如果使用缓冲区,存储的字符串到一定长度再调用系统调用,能够有效减少调用系统调用的次数。这个缓冲区是语言设置的,缓冲区满足条件就用系统调用接口write将缓冲区的内容刷新到linux内核中。也就是说这些要写入的库函数,里面必定封装了对应的系统调用。每个被打开的文件都有对应的语言级别的缓冲区。无缓冲:直接刷新 fflush可以直接刷新。全缓冲:缓冲区满了刷新 文件写入是全缓冲。行缓冲:有刷新 显示器就是行刷新。缓冲区保存在各自的文件流FILE对象里。
linux-文件的读写 操作系统一切皆文件,访问文件实际上就是访问硬件,因为文件都保存在硬件上,或者文件就是硬件,而要访问硬件,就需要操作系统提供的系统调用,所以c/c++函数中关于访问硬件设备,基本上是由系统调用封装而成的。
linux操作系统进程 linux操作系统是对下的软硬件进行管理,为了能够对上提供稳定,快速,安全的服务而诞生的软件。广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。狭义上的操作系统就是操作系统内核,进行进程管理,文件管理,驱动管理,内存管理而linux对用户提供服务的方式是系统调用接口,系统调用接口实际上是用c语言实现的操作系统内部的函数调用。因为操作系统不相信用户,所以就用有限制的系统调用接口来为用户提供服务。
linux-gcc/g++ 和makefile的使用 gcc和g++是一款编译语言的编译器,可以在linux上编译c语言文件和c++文件。格式:gcc/g++ 目标文件在不加任何选项的时候,编译出来的可执行文件名默认是 a.out。
linux指令笔记 lyt :是用户名@iZbp1i65rwtrfbmjetete2b2Z :这个是主机名~ :这个是当前目录$ :这个是命令行提示符每个指令都有不同的功能,大部分指令都可以带上选项来实现不同的效果。一般指令和选项的格式:指令 选项需要注意的是,指令和选项当中一定要有空格。指令的本质就是可执行程序,指令存储在/usr/bin目录中。
linux-xshell 云服务器的登陆 需要先购买一个云服务器,我选择的是centos版本。不需要什么配置,最便宜的那种轻量应用云服务器就可以。在购买好云服务器后,进入控制台。我这里购买的是阿里云服务器搜索轻量应用服务器在使用之前只需要改下密码就可以。
linux-进程 进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入。进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。描述本进程的唯一标示符,用来区别其他进程。
linux-自动化构建工具与进度条程序的实现 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂。只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,在完成进度条之前,需要会一个标识符,,能够将光标返回当前行的开始位置。实现进度条可以创建三个文件,分别是声明文件,功能实现文件,执行文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么。而对于所定义的命令的错误,或是编译不成功,
linux编译器 gcc/g++的使用 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。在编译链接时并没有把库文件的代码加入到可执行文件中。默认生成的二进制程序,是动态链接的,这点可以通过。在编译时默认使用动态库。把库文件的代码全部加入到可执行文件中。你需要把它重定向到一个输出文件里面。就不再需要库文件了。编译到汇编语言不进行汇编和链接。此选项对生成的文件采用静态链接。在预处理结束后停止编译过程。连接(生成可执行文件或库文件。该选项只进行编译而不进行汇编。以确定代码的实际要做的工作。汇编阶段是把编译阶段生成的。
linux的权限 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
linux的基本指令 在linux当中,文件的类型并不由后缀决定,,一类就是由touch创建的普通文件,还有一类是目录文件,其中超过百分之90的文件都是这两类文件。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),将所给的源文件或目录重命名为给定的目标文件名。指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类。