2、理解编译工具链与交叉编译工具链的异同 (1)相同点: ① 用于支持的语言的编译、链接与调试,编译器用法相同; ② 通常都有编译器、链接器、调试器、库及其他二进制工具构成。...1)fork()函数说明 fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。...pid=-1:等待任何一个子进程退出,此时和wait作用一样。 pid=0:等待其组ID等于调用进程的组ID的任一子进程。 pid子进程。...0:同wait,阻塞父进程,等待子进程退出。...0:同wait,阻塞父进程,等待子进程退出。
() {} // 继承的魔力在这里发生 inherit(Child,Parent); 上面的方法中,存在父、子两个构造函数,say()方法被添加到父构造函数的原型(prototype)中,并且一个名为...如果您尝试访问say()方法,虽然块#2中并不包含say()方法,但是通过使用指向构造函数Parent()的prototype(原型)属性的隐式链接__proto__,便可以访问对象#1(Parent.prototype...设置kid.name语句并不会修改对象#2的name属性,但是它却直接在kid对象#3上创建了一个自身的属性。...另一个关于使用通用inherit()函数的问题在于它并不支持将参数传递到子构造函数中,而子构造函数然后又将参数传递到父构造函数中,考虑以下这个例子: var s = new Child('Seth');...虽然子构造函数可以将参数传递到父构造函数中,但是那样的话,在每次需要一个新的子对象时都必须重新执行这种继承机制,而且该机制的效率时很低的,其原因在于最终会反复的重新创建父对象。
虽然捕获阶段在规范中规定不允许响应事件,但是实际上还是会执行,所以有两次机会获取到目标对象。 子级捕获'); }, true); 当容器元素及嵌套元素,即在捕获阶段又在冒泡阶段调用事件处理程序时:事件按DOM事件流的顺序执行事件处理程序: 父级捕获...子级冒泡 子级捕获 父级冒泡 且当事件处于目标阶段时,事件调用顺序决定于绑定事件的书写顺序,按上面的例子为,先调用冒泡阶段的事件处理程序,再调用捕获阶段的事件处理程序。...首先要了解作用域链,当访问一个变量时,编译器在执行这段代码时,会首先从当前的作用域中查找是否有这个标识符,如果没有找到,就会去父作用域查找,如果父作用域还没找到继续向上查找,直到全局作用域为止,,而作用域链...这种通过 通过原型链接的逐级向上的查找链被称为原型链 什么是原型继承? 一个对象可以使用另外一个对象的属性或者方法,就称之为继承。
属性值3;"> 内容 例如: 青春不常在,抓紧谈恋爱 「3.外部样式表(外链式)」 也称链入式...父级 子级{ 属性:属性值;属性:属性值;} .class h3 { color:red;font-size:16px;} 当标签发生嵌套时,内层标签就成为外层标签的后代。...子元素选择器」 子元素选择器只能选择作为某元素子元素**(亲儿子)**的元素。 其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 > 进行连接 这里的子,指的是亲儿子。...记忆:love hate 或者 lv 包包 hao 链接伪类,是利用交集选择器. a:link 未访问的链接 a:visited 已访问的链接 a:hover 鼠标移动到链接上 a:active 选定的链接...: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */ } 因为a链接在浏览器有 默认样式,所以我们实际工作中给链接单独指定样式。
(3)扩充性 (4)开放性 OS作用 1.系统资源的管理者(主要目标:有效性) (1)系统资源的管理者(主要目标:有效性) (2)处理器(CPU,Central ProcessingUnit) (3)存储器...进程状态 (1)就绪:进程已分配到除CPU以外的所有资源 (2)运行:获得CPU后执行。...(1)子进程可以继承父进程所拥有的资源 (2)当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程 (3)在撤销父进程时,也必须同时撤销所有子进程 进程的创建 申请空白PCB 为新进程分配资源...如何将一个用户源程序变为一个可在内核中执行的程序 编译,由编译程序将若干源代码编译成目标模块 链接,由链接程序将一组目标块以及所需函数库接在一起,形成一个完整装入模块 装入,由装入程序将装入模块装入 链接方式...动态分区分配:根据进程需要,动态分配内存 (1)建立空闲分区表(或链表)来抽象空闲的内存空间,eg:将所有空闲分区链接成一个双向链 (2)分区分配算法(多余空闲仍放在空闲链表中): 首次适应算法 循环首次适应算法
用于不同目录下文件的共享 当创建一个已存在文件的符号链接时,系统就创建一个链接文件,这个链接文件指向已存在的文件 设备文件 用来访问硬件设备 包括键盘、硬盘、光驱、打印机等 命名管道(FIFO) 是一种特殊类型的文件...不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。...2.6 开始无效) X : 死掉的进程 孤儿进程 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。...僵尸进程 一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。...用户组是指一组用户的集合,主要作用是允许一个用户同组内的其他用户共享文件权限。 进程管理 进程管理涉及进程的启动、暂停、恢复与终止。
目标出网(socks代理) 这是实战中最愿意碰到的网络环境,目标机可以正常访问互联网,可直接在目标机挂socks代理或CobaltStrike上线,打通目标的内网通道。...上线不出网机器 这是link链接,只要主链路(出网机Beacon)掉线,均掉!...SMB Beacon 官方对SMB Beacon的介绍:SMB Beacon是使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。...虽然冰蝎的这种代理扫描方式不如reGeorg准确,但小线程的端口探测等是可行的,如 auxiliary/scanner/portscan/tcp。...联动metasploit,ms17_010探测,可以看到代理链的传输过程。 ?
使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:..../test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid...这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup...test.sh处于running状态 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程 退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用.../test.sh & 使用ps -ef |grep test.sh可看到test.sh进程的父进程id为1 测试脚本 !
() {} // 继承的魔力在这里发生 inhert(Child,Parent); 上面的方法中,存在父、子两个构造函数,say()方法被添加到父构造函数的原型(prototype)中,并且一个名为...如果您尝试访问say()方法,虽然块#2中并不包含say()方法,但是通过使用指向构造函数Parent()的prototype(原型)属性的隐式链接__proto__,便可以访问对象#1(Parent.prototype...设置kid.name语句并不会修改对象#2的name属性,但是它却直接在kid对象#3上创建了一个自身的属性。...另一个关于使用通用inherit()函数的问题在于它并不支持将参数传递到子构造函数中,而子构造函数然后又将参数传递到父构造函数中,考虑以下这个例子: var s = new Child('Seth');...虽然子构造函数可以将参数传递到父构造函数中,但是那样的话,在每次需要一个新的子对象时都必须重新执行这种继承机制,而且该机制的效率时很低的,其原因在于最终会反复的重新创建父对象。
:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:..../test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid)...不中断后台运行脚本 这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,...子进程收到hangup以后也会退出。...test.sh处于running状态 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程 退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用
性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 前面两个案例讲的都是上下文切换导致的 CPU...,一般可以忽略 但如果系统或硬件发生了故障,进程可能会在不可中断状态保持很久,甚至导致系统中出现大量不可中断进程。...wait() 而子进程在结束时,会向它的父进程发送 SIGCHLD 信号 所以,父进程还可以注册 SIGCHLD 信号的处理函数,异步回收资源 异常情况 如果父进程没有回收资源,或是子进程执行太快,父进程还没来得及处理子进程状态...,或者在父进程退出后,由 init 进程回收后也会消亡 一旦父进程没有处理子进程的终止,还一直保持运行状态,那么子进程就会一直处于僵尸状态 大量的僵尸进程会用尽 PID 进程号,导致新进程不能创建 大量不可中断状态和僵尸状态进程的案例...结果分析 多个 app 进程已启动 状态有 Ss+、D+、R+ 小s:表示这个进程是一个会话的领导进程 +:表示前台进程组 什么是会话和进程组 它们是用来管理一组相互关联的进程 进程组:比如每个子进程都是父进程所在组的成员
) 进程——父子进程共享 - _程序兔 - 博客园 (cnblogs.com) (1)父子进程 子进程通过父进程创建,子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程什么时候结束。...(如果父进程在子进程结束之前退出,则子进程由init接管。init将会以父进程身份对僵尸状态的子进程进行处理) 但是,如果父进程先于子进程结束,则子进程成为孤儿进程。...而如果子进程先于父进程退出,同时父进程太忙了,无瑕回收子进程的资源,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程,如下图所示: 图片 Linux系统僵尸进程详解 - 良许Linux...它实现简单,只需把进程中已调入内存的页面,按先后次序链成一个队列,并设置一个所谓的替换指针,使它总是指向内存中最老的页面。...(3)页面大小的选择不合理 虽然缺页中断率与页面尺寸成反比,但页面尺寸却不能一味地求大,它一般在0.5KB~4KB之间,是个实验统计值。
3.资源,资源的链接比如内存,还有资源的限制和权限等。 4.组织,例如按照家族关系建立起来的树(父进程,子进程等)。...②进程状态 运行状态R(TASK_RUNNING) 可中断睡眠状态S(TASK_INTERRUPTIBLE) 不可中断睡眠状态D(TASK_UNINTERRUPTIBLE) 暂停状态T(TASK_STOPPED...0~3g空间和PCB,但ID号不同。...(1)复制父进程的系统环境(放心,只要是你开的进程,肯定有父进程) (2)在内核中建立进程结构 (3)将结构插入到进程列表,便于维护 (4)分配资源给该进程 (5)复制父进程的内存映射消息 (6)管理文件描述符和链接点...fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行) 可以直接在子进程的if中写入新程序打代码
sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。.../'来执行 需要对文件授权,在当前父进程下的子进程中执行 2 bash(sh)来执行脚本 不需要授权,在当前父进程下的子进程中执行 3 source或( . )来执行 不需要授权,直接在父进程中执行...注意 以上两种方式都是在父进程的子进程中执行的。子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中。...比如我们在脚本中声明的变量name1和name2,我们在父进程中就获取不到,如下 ? 可以看到,执行后再看脚本中两个变量,在父进程中不起作用!...注意 这种方式是直接在父进程中执行了,我们可以看到脚本中声明的变量信息 ? 总结 直接执行与用source命令执行的区别,前者只作用于子进程本身,后者则作用于整个父进程。
实际上在父进程创建子进程之后,父、子进程除了pid外,几乎所有的部分几乎一样。...父、子进程共享全部数据,但并不是说他们就是对同一块数据进行操作,子进程在读写数据时会通过写时复制机制将公共的数据重新拷贝一份,之后在拷贝出的数据上进行操作。...如何实现:空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第-一个空闲分区。 ? 4、邻近适应算法 算法思想:首次适应算法每次都从链头开始查找的。...(4)链接 将不同的源文件产生的目标文件进行链接,从而形成一个可以执行的程序。链接分为静态链接和动态链 接: 1、静态链接: 函数和数据被编译进一个二进制文件。...2、动态链接: 动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形 成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。
如果子进程执行 $exit$ 退出之后,父进程一直没有调用 $wait$ 来回收子进程,那么这个子进程就一直处于僵尸状态,也就是通常所说的僵尸进程。...$xv6$ 的中断栈帧中保存了各段寄存器和通用寄存器,上面的 $TSS$ 将这所有的段寄存器和通用寄存器也全囊括进去了,但还有些特殊的东西: 四种特权级栈 3 类栈段选择子 $SS$ 和栈顶指针 $ESP...栈对于程序的重要性不言而喻,不同特权级下有不同的栈,所以 4 种特权级按理说应该有 4 种特权级栈(虽然只是用 0 和 3),但为什么 $TSS$ 中只记录了 3 种特权级栈(0,1,2)呢?...但现今操作系统基本上都使用平坦模式,段基址都设为 0,所以段描述符用来描述一个段在哪这个作用几乎就没了,所有的段都是从地址 0 开始。...char* kalloc(void); void kfree(char *v); $kalloc$ 函数分配一页的内存,实际上就是返回链头元素,$kfree$ 回收一页内存,实际上就是将这页内存的数据清除之后链接到链表头部去
X (dead) – 死亡状态 表示进程已终止或死亡,通常是进程已完全退出,但其进程控制块(PCB)仍未被操作系统回收。 解释: 进程已终止并退出,但操作系统尚未完全清理与该进程相关的资源。...简单来说,原因是,⽗进程还在运⾏,但⽗进程没有读取⼦进程状态,虽然子进程已经结束了,但是父进程没有宣告子进程的死亡,父进程需要调用函数来获取子进程的退出状态,所以⼦进程进⼊Z状态。...\n"); // 子进程在这里结束,但父进程不会等待它,所以它会变成僵尸进程。...父进程未读取退出状态: 如果父进程在子进程终止后没有读取它的退出状态,操作系统就无法回收这个子进程的 PID 和一些控制信息,因此该子进程仍然存在,成为僵尸进程。...父进程调用 wait() 或 waitpid(): 父进程在子进程结束后应该及时调用 wait() 或 waitpid() 来回收子进程的退出状态,防止僵尸进程的产生。
/data.txt)而没有指定绝对路径,那么系统会直接在/home/user/projects下建立/home/user/projects/data.txt(假设cwd是/home/user/projects...作用和用途 程序识别:通过exe链接,你可以清楚地知道是哪个可执行文件启动了这个进程。这对于系统监控工具来说非常重要,因为它们可以根据可执行文件的路径来识别和分类进程。...它会从当前运行的进程(称为父进程)中复制出一个几乎完全相同的新进程(称为子进程)。 父子进程几乎完全独立,但共享相同的代码段。 父子进程拥有不同的内存空间,彼此之间不影响。...父子进程的独立性体现在以下几点: 内存空间独立: 虽然子进程初始时与父进程的内存内容相同,但它的地址空间是独立的,修改子进程的内存不会影响父进程。...父子进程虽然共享代码和部分资源,但内存、PID 和运行状态是互相独立的,确保了它们可以并发执行,互不干扰。 写时拷贝:当父子进程尝试修改共享数据时,操作系统会将数据复制到独立空间。
在例子中,虽然看起来只是在不停地打印信息,但 printf() 函数实际上涉及到了底层的写操作,可能是向终端或控制台输出文本。...对于固态硬盘,虽然没有物理旋转部件,但电力消耗可以通过降低设备的工作频率和电压来减少 硬件等待:进程进入不可中断睡眠状态,通常是因为正在执行某种必须完成的硬件操作,例如等待磁盘I/O(读取或写入操作...僵尸进程与孤儿进程的区别 孤儿进程:父进程已结束,但子进程还在运行,这些子进程被init进程接管。...僵尸进程:子进程已经结束,但父进程还未回收(调用wait()或waitpid())子进程的相关信息(如PID、退出状态等),导致子进程虽已结束但仍占用系统资源。...堆栈:函数调用时的执行上下文,包括局部变量、调用链等。 进程切换的步骤 中断或系统调用:一个进程的执行可能因为时间片耗尽、I/O请求、等待操作或高优先级进程的出现而被中断。
PC对应于程序的可执行目标文件中的指令,或者是包含在运行时动态链接到程序的共享对象中的指令。...1)在调用进程中(父进程),返回子进程PID; 2)在新创建的子进程中,在子进程中返回0。 并发执行:父子进程是并发运行的独立进程。 相同但是独立的地址空间。...当父进程回收已终止的子进程,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进程,此刻进程不复存在。 僵尸进程(zombie):一个终止了但还未被回收的进程。...* 默认options=0,挂起调用进程,直到它等待集合中的一个子进程终止。如果等待集合中的一个进程在刚调用的时刻就已经终止了,那么waitpid立即返回。返回已终止的子进程PID,并去除该子进程。...*输入参数pid:pid>0,等待集合就是一个单独的子进程,进程ID等于pid。pid=-1,等待集合是由父进程所有的子进程组成。
领取专属 10元无门槛券
手把手带您无忧上云