Linux
文章平均质量分 74
镜中月ss
这个作者很懒,什么都没留下…
展开
-
深入理解进程(七)——程序替换
深入理解进程(七)——程序替换一、什么是程序替换?用一个新的程序去替换一个进程正在调度的程序的信息。二、程序替换的原理进程运行一个程序时,我们需要将该程序加载到内存中,然后再通过该进程的虚拟地址空间利用页表映射到数据实际上存放的物理内存中,通过这样的方式,就实现了进程与程序之间的关联。如果我们此时将另一个程序加载到内存中,然后修改这种映射关系(也就是修改页表),那么进程就与这个新程序关联起来,那么该进程就不再执行原来的程序,而是会去执行这个新的程序。三、程序替换的本质本质上就是去替换一个进程pc原创 2021-02-05 16:51:33 · 807 阅读 · 0 评论 -
深入理解进程(六)——进程等待
一、进程等待的作用父进程等待子进程退出,获取子进程的返回值,避免产生僵死进程。二、如何实现进程等待(1)wait函数1. 函数原型:pid_t wait(int *status)该函数是一个阻塞函数,功能是等待任意一个子进程退出。2. 参数说明:status:用于获取退出原因3. 返回值:返回值是退出的子进程的ID(2)waitpid函数1. 函数原型:pid_t waitpid(pid_t pid,int* status,int options)可以等待任意一个子进程退出或者等原创 2021-01-27 09:37:44 · 972 阅读 · 0 评论 -
深入理解进程(五)——进程终止
深入理解进程(四)进程终止本篇介绍退出进程的三种常用方式:return、exit和_exit。一、进程退出的三种常用方法方式一:在main函数中调用return。退出时会自动刷新缓冲区,将缓冲区中的数据写入文件中方式二:调用exit函数。函数原型:void exit(int status)该函数是一个库函数,谁调用该函数那么谁就退出,并将status作为返回值返回给父进程。方式三:调用_exit接口函数原型:void _exit(int status)该函数是一个系统调用接口,同样谁调用原创 2021-01-26 14:35:02 · 219 阅读 · 0 评论 -
深入理解进程(四)——进程创建
本篇文章主要介绍了与进程创建有关的两个函数fork和vfork,以及他们之间的区别(1)fork函数函数原型:pid_t fork()。该函数是通过复制父进程来创建子进程。返回值:调用一次fork函数却能够返回两个值。 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。fork出错可能的原因(1)当前的原创 2021-01-26 11:06:31 · 299 阅读 · 0 评论 -
深入理解进程(三)——由虚转实
深入理解进程(二)——由虚转实上一篇对虚拟地址空间做了基本的介绍,这一篇介绍操作系统是如何将虚拟地址转换为物理地址的。虚拟内存的管理主要是分为三种:分页、分段、段页。分页式管理首先要明白一些基本的知识:虚拟地址: 也就是进程一般访问的地址,其实就是虚拟地址空间中的地址。它一般是由页号和页内地址组成。物理地址: 数据真正存放的地址,一般是由操作系统来访问的。它一般是由块号和页内地址组成。页表:页号: 对应进程的哪一页块号: 对应内存的哪一块页表始址: 整个页表的开始位置页表项长度: 一原创 2021-01-25 15:40:08 · 991 阅读 · 0 评论 -
深入理解进程(二)——虚拟地址空间
深入理解进程(一)——虚拟地址空间一、为什么要有虚拟地址空间? 在谈论虚拟地址空间之前,大家要知道一个常识:程序在运行之前是要全部加载到内存中的。假如现在有两个程序,一个大小为4M,一个大小为8M,而我们的内存大小为16M。首先我们运行4M大小的程序,将其加载到内存中,然后再运行8M大小的程序,同样将其加载到内存中,如下图所示:那么这个时候我们还剩余4M的空间,此时如果我们想要再加载一个6M大小的程序,那么肯定就加载不了,因为内存不够,但是如果这个程序的优先级很高,那么操作系统就会把4M的程序原创 2021-01-22 15:21:50 · 815 阅读 · 0 评论 -
环境变量
环境变量一、什么是环境变量?存有操作系统运行环境参数的变量。环境:操作系统运行环境。变量:保存数据作用:系统设置更加方便二、与环境变量有关的命令?env——查看所有的环境变量set——查看所有的变量,包含环境变量echo $变量名称——查看单个的变量内容(一定要有$符号)export——设置(添加)环境变量,可以将一个普通的变量设置为环境变量unset——将某个环境变量删除注意:直接使用PATH,表示的是一个PATH字符串,如果前面加上,表示的就是PATH是一个变量,,表原创 2021-01-21 17:39:55 · 874 阅读 · 0 评论 -
深入理解进程(一)—— 进程基本概念
进程基本概念一、进程是什么?两个角度来理解:对于用户来说: 进程就是一个正在运行的程序对操作系统来说: 进程就是一个正在运行的程序的信息的描述集合,我们一般称它为 pcb,这个pcb实际上是一个名为:task_struct的结构体。所以对于操作系统来说,一个个进程就是一个个pcb。用户在点击程序或文件后,程序或者文件就会运行,首先文件中的数据就会拷贝一份放入内存中,同时操作系统会创建一个PCB(创建pcb就是创建进程),PCB中会有一个内存指针指向该内存,CPU通过PCB就能对进程控制和管理原创 2021-01-21 17:37:05 · 1837 阅读 · 1 评论 -
在openresty中利用lua嵌入C程序
在openresty中利用lua嵌入C程序两个前提:已经安装openresty,若是没有安装可以前往https://blog.csdn.net/weixin_43850474/article/details/112860649查看如何安装已经学会如何在lua中调用C函数,若是不会,可以前往https://blog.csdn.net/weixin_43850474/article/details/112860725学习一、步骤展示第一步:编写C程序,假设其文件命名为:test.c该C程序功能很原创 2021-01-21 15:28:03 · 421 阅读 · 0 评论 -
openresty安装及使用
对于一些常见的 Linux 发行版本(Ubuntu、Debian、CentOS、RHEL、Fedora、OpenSUSE、Alpine 和 Amazon Linux),可以使用下面的方法。否则请参考http://openresty.org/cn/installation.htmlRHEL你可以在你的 RHEL 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update 命令)。添加仓库,运行下面的命令(对于 RHEL 8 或以上版本,应将下面的原创 2021-01-20 11:21:40 · 633 阅读 · 0 评论 -
Linux常见的操作命令
Linux常见操作命令ls命令ls——浏览当前目录下的内容,默认情况下这个目录为家目录ls 目录名称——浏览指定的目录ls -a——显示所有的文件,包括隐藏文件ls -l——显示目录下所有文件的详细信息注意:蓝色的表示目录、绿色表示可执行文件、红色表示这是个压缩包、黑色表示这是个普通文件隐藏文件是以点开头的文件pwd命令pwd——显示当前所在路径(该路径为绝对路径)注意:绝对路径:就是以起始路径是根目录来表达的路径相对路径:以当前用户所在路径为起始路径来表达的路径.原创 2021-01-20 15:24:21 · 411 阅读 · 0 评论