首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux】进程概念()

进程概念 一、环境变量 1. 命令行参数 什么是命令行参数呢?首先我们得先知道,主函数是可以传参的!而这个传给主函数的参数就是命令行参数。...我们平时在 Linux 中写一份代码,想要运行起来首先需要找到这个可执行程序的路径,所以如果这个可执行程序在当前路径,就需要在前面加上 ./ ,例如下图: 那么通过上面命令行参数的学习,我们知道,Linux...2.另一个问题,我们也可以创建属于自己的环境变量,如下图,直接在命令行中输入即可: 此时我们在环境变量表中查看一: 发现并没有导入到我们的环境变量表中;或许我们可以直接在我们的可执行程序中查找: 也一样没有...这个概念我们以后还会介绍,现在先了解一。...可以根据下图进行理解: 其中我们的 mm_struct 结构体其实真正叫做内存描述符;而 vm_area_struct 叫做线性空间;这两个概念合起来才叫做地址空间!

13010
您找到你想要的搜索结果了吗?
是的
没有找到

Linux之多线程(上)——Linux的线程概念

前言 本文介绍了地址空间和二级页表、Linux的线程、线程的优缺点以及线程与进程的关系等概念。...Linux并不存在真正的线程 Linux的线程是用进程模拟的。 如果OS真正要专门设计“线程”概念,OS就要管理线程了(先描述,再组织)。...因此,Linux没有为“线程”专门设计对应的数据结构,而是直接复用了进程的PCB,用PCB来表示Linux的“线程”。...总结 Linux内核中严格来说是没有真正意义的线程的,Linux用进程PCB来模拟线程,它有一套完全属于自己的线程方案。 站在CPU角度,每一个PCB都可以称为轻量级进程。...总结 以上就是今天要讲的内容,本文介绍了本文介绍了地址空间和二级页表、Linux的线程、线程的优缺点以及线程与进程的关系等概念

22120

Linux】多线程——线程概念|Linux进程与线程|线程控制

Linux并不存在真正的多线程而是用进程模拟的! 如果OS真的要专门设计“线程”概念,OS那就需要管理线程了:先描述在组织,在Windows确实是为这个线程专门设计了数据结构表示线程对象TCB。...所以Linux中,没有Linux"线程"去专门设计对应的数据结构!而是直接复用PCB!用PCB来表示Linux内部的“线程”!...也就是说,Linux内核中有没有真正意义的线程,严格上来说是没有的,Linux是用进程PCB来模拟线程的,是一种完全属于自己的一套线程方案。...没有真正意义上线程,**所以Linux便无法直接提供创建线程的系统调用接口,而只能给我们提供创建轻量级进程的接口!...并且在函数内定义的变量都是局部变量具有临时性,在多线程情况没有问题。

27230

Linux】--- Linux权限概念

二、Linux权限的概念 2.1 什么是权限 现实生活中权限的例子,即vip,门禁…。其作用就是,通过一定的条件,拦住一部分人,给另一部分人权力,来访问某种资源。...2.3 Linux中的用户 Linux下有两种用户:超级管理员(root)、普通用户。 超级管理员(root):可以再linux系统做任何事情,不受权限约束 普通用户:在linux做有限的事情。...Linux具有组的概念,主要是在多人协作的时候,更好的进行权限管理!...第二套做法: 如果将有某种权限用1表示,没有则用0表示,那么rw-便可表示为110,即6。于是乎,我们便可用八进制的664表示rw-rw-r--。...那么如果我们想在Linux,由多个用户建立一个共享文件来被大家共同访问,怎么办?

7610

Linux线程概念

重新认识一进程 在之前写过的与进程相关的博文中,都把进程看作是只有一个PCB的进程。如图: 而实际上,在Linux中,进程不止一个执行流,而是可能会有几个或很多个。...线程的概念 首先我们得知道一件事:在Linux中,没有专门为线程设计的TCB,而是使用进程的PCB来模拟线程。...在教科书上面,对线程的概念是:在进程内部运行的一个执行流,属于进程的一部分,粒度要比进程更加细和轻量化。 我们可以对这句话进行解析:在进程内部运行,即线程在地址空间中运行。...Linux没有给一般用户提供直接操作线程的接口,而是提供了在同一个地址空间内创建PCB的方法和分配资源给指定PCB的接口。...进程和线程的共享和私有: 其实在Linux没有线程这个东西,我的意思是没有真正独特设计出来的线程。因此在Linux中,所谓的线程,是轻量级的进程。

2.4K40

Linux进程概念

书上称之为 PCB(process control block),Linux操作系统的 PCB 是: task_struct ❓ 我们现在思考一个问题,我们写的程序是放在磁盘中的,当我们想要运行它的时候...我们再仔细想想我们写程序的时候,有没有接触过这些属性呢?答案是没有的!那这些属性是从何而来呢?答案就在 PCB 上!...2、通过访问 /proc 系统文件夹查看 /proc 是 Linux 专门用来存放进程的文件夹! 其中这些数字文件夹,其实就是以 PID 为名称的进程!...子进程崩了,父进程照样运行 (自行验证)~ 而这里的**父进程一般情况其实就是 bash,也就是 Linux 的具体的一种 shell 外壳程序!...但是很奇怪,一个函数,居然返回了两个值~~ 这在语言层面是不能接收的,但是这其实涉及到了系统层面,关于多进程的概念,那么既然有了多个返回值,也就是说其实这是有两个进程在同时执行的,那么来尝试一下面这个代码

45330

Linux系统-进程概念

Linux进程概念 零、前言 一、冯诺依曼体系结构 二、操作系统 三、进程 1、描述进程-PCB 2、查看进程 3、获取进程标示符 4、创建进程-fork() 5、进程状态 6、僵尸进程 7、孤儿进程...,可以理解为进程属性的集合;在Linux中描述进程的结构体叫做task_struct Linux操作系统的PCB是: task_struct-PCB的一种,task_struct是Linux内核的一种数据结构...,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态 示例: #include #include int main() { pid_t id...: 多个进程在一个CPU采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发 9、环境变量 概念: 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数...原因: 执行程序前,系统会在特定路径查找对应程序 而PATH的作用是辅助系统进程指令查找,PATH变量储存的就是可能存在指令或者程序的路径 示图: 注:其实程序,命令,指令,可执行程序等等都是一个概念

1.1K20

Linux进程概念(二)

Linux进程概念 进程状态 普通操作系统层面理解 运行与阻塞 挂起与阻塞 Linux是怎么做的 孤儿进程 进程优先级 什么是优先级 如何改变优先级 其他概念 进程状态 进程状态分有: 运行 新建...比如: 在Linux,一个进程很大的数据,正在写入磁盘中,但是内存是有限的,如果内存满了,操作系统就会找到这个进程并且干掉他,那么数据就很容易丢失,这个时候就出现了深度睡眠,操作系统看到不会管他,除非这个进程运行完毕自己醒来或者是断电...但如果没等到父进程来拿走结果,这个进程提前结束了,这时候进程本身被释放掉,但是相对应的PCB没有被释放掉,这就是僵尸进程。....(就像排队用的号一样) Linux用两个整数来确认优先级的: 运行起来之后用这条指令查看状态:ps -al UID : 代表执行者的身份 PRI :代表这个进程可被执行的优先级,其值越小越早被执行...其他概念 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。

1.1K00

Linux进程概念(一)

Linux进程概念 冯诺依曼体系结构 操作系统 操作系统是什么 操作系统与硬件的关系 操作系统如何管理硬件数据 操作系统与软件的关系 操作系统的安全 操作系统的服务 系统调用和库函数概念 进程的基本概念...因为进程每次都要进行随机分配地址,所以ID是变的,可是父进程ID没有变。...那我们查看一父进程是什么: 这时候发现父进程是一个叫 -bash 的进程,他是一个命令行处理器,那么在处理这个程序的时候创建了一个子进程来运行这个代码,这是为什么呢?...因为如果bash进程亲自运行但是报错就会停止工作,bash都停止工作了,我们后续想继续用Linux系统就无法正常使用了。...很奇怪,之前学C/C++语言的时候从未听过如此离谱的话,现在写一个来测试一

41800

Linux进程概念(三)

这样是可以的,但是非常不建议,因为这个程序相当于安装到了系统中,Linux拷贝就是安装。...但是a在子进程当中又被改掉了,可是父进程当中的却没有改变,地址也完全相同。 这是因为当前显示a的地址是虚拟地址。...普通进程当然不可能一子全都使用掉,所以理论上来说每个进程都可以有4GB的空间,但是如果某个进程需要的不是特别多或者是需要的特别多,这个时候操作系统就会调整大小了。...这也就能解释刚开始代码为什么是显示的是同一个地址,子进程改变了数值父进程却没有改变。...上面的运行模式也说明了CPU从头到尾都没有见到过物理内存地址,就算是内存中代码的内部使用的也全都是虚拟地址。

52600

Linux网络-基础概念

Linux网络基础 零、前言 一、计算机网络背景 网络发展 二、认识协议 1、网络协议 2、OSI七层模型 3、TCP/IP五层(或四层)模型 三、网络传输基本流程 1、网络传输类型 2、数据包封装和分用...3、局域网通信 四、网络中的地址管理 1、认识IP地址 2、认识MAC地址 零、前言 本章将开始对Linux网络编程进行系统的学习,而这篇主要学习网络的基本知识 一、计算机网络背景 概念: 网络本质是一个层状结构...局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起 示图: 广域网WAN 将远隔千里的计算机都连在一起 示图: 注:所谓 “局域网” 和 “广域网” 只是一个相对的概念...示例:打电话 注:实际的网络通信会更加复杂, 需要分更多的层次,而分层最大的好处在于 “封装”,每层之间进行解耦,也就是可以很方便的进行替换任何一层协议,提高可维护性 2、OSI七层模型 概念...到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理 经过封装和分用的过程,对于网络交互的接收和发送两方,每一层所看到的数据都是一样的 注:这里指的是IP层之上,因为IP层的数据传输可能是在不同的网段传输

54621

Linux】进程概念(上)

我们宏观地看待从用户到底层硬件的交互如下图: 简单简述一上面的过程:首先,我们用户输入的指令,会被 shell外壳 (Linux 中是 bash)作为 “媒介” 接收,然后 shell外壳 会将我们的指令调用系统调用接口...基本概念 进程概念: 所谓进程,简单来说就是在磁盘上的可执行程序加载、拷贝到内存中,就形成了进程,也就是正在执行的程序。 2....描述进程 - PCB 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,称之为 PCB(process control block),Linux 操作系统的 PCB 具体是:task_struct...我们可以查看一它的 ppid: 我们可以看到,这个居然是 bash,也就是 Linux 中的命令行解释器,所以我们得出一个结论,我们命令行启动的进程,都是 bash 的子进程。...Linux 在实在没有办法的时候,会通过终止进程的方式,节省资源,此时 S 状态的进程是可被终止的。

8610
领券