网站认证费怎么做分录家装设计网站大全
网站认证费怎么做分录,家装设计网站大全,白酒企业网站源码,网站制作.1.多进程
引入目的#xff1a;让多个任务实现并发执行
并发执行#xff1a;同一时间只有一个进程执行#xff0c;通过时间轮询调度多个进程#xff0c;由于时间每个进程所用时间极短#xff0c;所以宏观表现为多个进程同时进行。
并行执行#xff1a;多个任务器执行多…1.多进程
引入目的让多个任务实现并发执行
并发执行同一时间只有一个进程执行通过时间轮询调度多个进程由于时间每个进程所用时间极短所以宏观表现为多个进程同时进行。
并行执行多个任务器执行多个进程同一时间多个进程在执行。
1.1进程概念
1.程序的一次运行过程称为进程
2.进程是有生命周期的是一个动态过程分为创建态、就绪态、运行态、阻塞态、消亡态
3.进程是资源分配的最小单位系统会给每个进程分配4G的虚拟内存其中0--3G的用户空间是独立的3--4G的内核空间时共享的
4.进程是独立的可以被任务器调度调度的原则是时间片轮询、上下文切换
1.2进程的内存管理
1 系统会给每个进程分配4G的虚拟内存
2 多个进程会独立拥有0--3G的用户空间,用户空间又分为栈区、堆区、静态区
3 多个进程共享一份内核空间
4 物理内存内存条硬件上真正存在的存储空间
5 虚拟内存程序运行后有4G的虚拟地址由物理内存通过内存映射单元映射而来在需要使用内存的时候会映射到物理内存上
6 在32位操作系统上虚拟内存的空间是4G
在64位系统上虚拟内存的空间是256T 2^48
1.3进程和程序的区别
进程进程是动态的进程是程序的一次执行过程有生命周期进程会为自己分配内存空间是资源分配的最小单位
程序程序是静态的没有所谓的生命周期它是在磁盘上存放的二进制文件
1.4进程的种类
进程一共分为三类交互进程、批处理进程、守护进程
交互进程他是由shell控制可以直接与用户进行交互例如文本编辑器
批处理进程维护了一个队列被放入队列中的进程会统一进行处理。例如gcc编译器的一步到位的编译
守护进程脱离终端而存在的进程随着系统的启动而运行随着系统的关闭而结束。例如服务进程 1.5进程的PID概念
PID进程号process ID
PPID:父进程号
进程号是进程的唯一标识他是一个大于等于0的一个整数并且每个进程的进程号不会重复
每个进程都是继承父进程而得到的所以每个进程都会有父进程
在linux系统中的根目录下的proc目录中存放的以数字命名的都是一个进程
1.6特殊的进程
1 系统启动后至少要运行三个特殊进程进程号分别是 0、1、2
2 0号进程又称为 idel进程他是有linux系统启动后的第一个进程是1号和2号进程的父进程这个进程也叫空闲进程当系统中的其他进程都不执行时运行该进程。
3 1号进程称为 init进程是由0进程产生完成一些系统启动时的必要初始化工作也是孤儿进程的父进程可以完成对孤儿进程的收尸工作
4 2号进程称为kthreadd进程是右0号进程产生用于调度相关进程也称调度进程
5 孤儿进程当前进程还在运行但是其父进程已经退出该进程称为孤儿进程会被init进程收养
6 僵尸进程当前进程已经运行结束但是其父进程没有为其收尸
1.7有关进程的shell指令
查看进程信息指令ps
ps -ef : 可以查看进程间的关系 ps -ajx:可以查看进程的状态
ps -aux:可以查看当前进程所占内存和cpu的资源占有率
top指令动态查看进程相关信息 htop指令带颜色查看进程相关信息
单独获取进程的进程号pidof 进程名
向进程发送信号指令kill指令 (重点)
使用格式kill -信号号 pid
能够发送的信号可以通过指令kill -l 查看. 2.进程状态
2.1进程状态的描述
man ps 2.2进程状态的切换
进程主要的状态一共有五种创建态、就绪态、运行态、阻塞态、死亡态 2.3具体状态转换的实例
运行一个可执行程序并查看其状态
查看后台运行进程的作业号jobs
将停止的进程切换到后台运行bg 作业号
将后台运行的进程切换到前台运行fg 作业号
直接将程序运行于后台./a.out
3.多进程编程
3.1创建进程
1.进程创建过程是子进程拷贝父进程的资源进而产生一个独立的进程个体子进程会拥有父进程在创建进程之前的所有资源
2.创建进程的api函数 fork #include sys/types.h #include unistd.h pid_t fork(void); 功能创建出一个子进程
参数无
返回值在父进程中该函数返回子进程的pid号在子进程中该函数返回0失败返回-1并置位错误码并且不会创建出子进程
注意当子进程创建出来后父子进程都会执行fork之后的语句 3.不关注返回值的情况时n个fork会产生2^n个进程并且多个进程之间没有先后顺序执行 3.2getpid/getppid 进程号的获取 #include sys/types.h #include unistd.h pid_t getpid(void); 功能获取当前进程的pid号 参数无 返回值成功返回当前进程的pid号不会失败 pid_t getppid(void); 功能获取当前进程的父进程的pid号 参数无 返回值成功返回当前进程的父进程pid号不会失败 3.3exit/_exit 进程退出函数 #include stdlib.h void exit(int status); 功能刷新标准io的缓冲区后退出进程 参数进程退出时的状态会将 status0377的结果返回给父进程 EXIT_SUCCESS0表示成功退出 EXIT_FAILURE1表示失败退出 返回值无 #include unistd.h void _exit(int status); 功能不刷新标准io的缓冲区直接退出进程 参数进程退出时的状态会将 status0377的结果返回给父进程 EXIT_SUCCESS0表示成功退出 EXIT_FAILURE1表示失败退出 返回值无
3.4wait/waitpid 进程资源的回收 #include sys/types.h #include sys/wait.h pid_t wait(int *wstatus); 功能阻塞等待子进程的结束并回收子进程的资源如果子进程不退出则父进程会一直在该函数处阻塞 参数接受子进程退出时的状态一般填NULL表示不接收 返回值成功返回退出的子进程的pid号失败返回-1并置位错误码 pid_t waitpid(pid_t pid, int *wstatus, int options); 功能可以阻塞也可以非阻塞形式回收子进程的资源
参数1进程号 0:表示回收特定的子进程的资源常用 0回收当前进程所在进程组中的任意一个子进程 -1表示回收任意一个子进程 常用 -1:表示回收其他组组id为pid的绝对值中的任意一个子进程
参数2接收子进程退出时的状态一般填NULL表示不接收
参数3是否阻塞的选项 0表示阻塞 WNOHANG表示非阻塞回收
返回值0:表示成功回收一个子进程返回该子进程的pid 0非阻塞回收资源时没有子进程退出该函数返回0 -1失败返回-1并置位错误码
3.5创建三个进程 三进程拷贝两个文件第一个 子进程拷贝前半部分第二个子进程拷贝后半部分
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87965.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!