当前位置: 首页 > news >正文

建设工程消防信息网站做一家影视网站赚钱吗

建设工程消防信息网站,做一家影视网站赚钱吗,宁波网站建设设计公司排名,PHP 网站开发 入门目录 一、进程的含义 二、进程和程序的区别 三、进程的作用 四、进程的状态 五、进程的调度与上下文切换 六、查询进程相关命令 七、fork()函数 八、getpid()和getppid()函数 九、面试题解析: 十、应用场合及测试 一、进程的含义 进程指正在运行的程序&a…

目录

一、进程的含义

二、进程和程序的区别

三、进程的作用

四、进程的状态

五、进程的调度与上下文切换

六、查询进程相关命令

七、fork()函数

八、getpid()和getppid()函数

九、面试题解析:

十、应用场合及测试


一、进程的含义

进程指正在运行的程序,它是一个程序执行的过程,会分配内存资源和接受 CPU 的调度。系统通过 PCB 块(进程控制块,如 task_struct 结构体)来控制进程,其中包含 PID(进程标识符)、cwd(当前工作路径)、用户 ID、组 ID 等信息,还记录了进程打开的文件列表、信号相关设置以及进程资源的上限等。

二、进程和程序的区别

1. 程序是静态的,存储在硬盘中代码和数据的集合;进程是动态的,是程序执行的过程,包括进程的创建、调度、消亡。
◦ 例如,一个编译好的可执行文件就是程序,而运行这个可执行文件产生的活动就是进程。
2. 程序是永存的,进程是暂时的。
◦ 程序可以长期保存在存储介质中,而进程会随着任务的完成或异常终止而结束。
3. 进程有程序状态的变化,程序没有。
◦ 进程在运行过程中其状态会在就绪、执行、阻塞等之间切换,而程序不存在这种状态变化。
4. 进程可以并发,程序无并发。
◦ 多个进程可以在同一时间内同时执行不同的任务,而程序本身不具备并发执行的能力。
5. 进程与进程会存在竞争计算机的资源,一个程序可以运行多次,变成多个进程,一个进程也可以运行一个或多个程序。

三、进程的作用

进程的主要作用是实现多任务,提高系统效率。通过并发(同一时刻同时完成多个任务)和并行(真正同时执行多个任务)来充分利用系统资源,提高系统的处理能力。
例如,在一个多任务操作系统中,用户可以同时运行浏览器浏览网页、听音乐和处理文档,这就是进程并发的体现。

四、进程的状态

基本操作系统中,进程有 3 个状态:就绪态、执行态、阻塞态。
在 Linux 中,进程的状态有运行态、睡眠态、僵死状态(特有)、暂停状态。

五、进程的调度与上下文切换

内核的主要功能之一是完成进程调度,涉及硬件、BIOS、IO、文件系统、驱动等。调度算法包括 RR(轮转调度)、FIFO(先进先出调度)等。
进程调度在宏观上看起来是并行的,但在微观上是串行的。

六、查询进程相关命令

1. ps aux:不会动态刷新,可查看进程的相关信息,包括进程状态(如就绪态、运行态用 R 表示,可唤醒等待态用 S 表示,不可唤醒等待态用 D 表示,停止态用 T 表示,僵尸态用 Z 表示等)。
2. top:类似任务管理器,可以动态刷新,能根据 CPU 占用率查看进程相关信息。
3. kill和killall:用于发送信号来控制进程。
◦ 例如,kill -2 PID发送特定信号给指定 PID 的进程,killall -9 进程名发送信号给指定进程名对应的所有进程。

七、fork()函数

1.fork()是一个系统调用函数,一次调用会在父进程和子进程中分别返回。子进程和父进程的执行顺序不确定,且变量不共享。子进程复制父进程的 0 到 3G 空间和父进程内核中的 PCB,但进程 ID 号不同。
2. 功能是从当前进程克隆一个新进程,新进程称为子进程,原有进程为父进程。子进程是父进程的完全拷贝,从 fork 函数之后开始执行,与父进程具有相同的代码逻辑。
3. 返回值为 int 类型:在父进程中成功返回子进程的 pid 号(大于 0),失败返回 -1;在子进程中成功返回值是 0,失败无返回

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>// 定义全局变量 a 并初始化为 20
int a = 20;int main(int argc, char *argv[])
{// 调用 fork 函数创建子进程,返回值存储在 ret 中pid_t ret = fork();if (ret > 0){//father(父进程执行的代码块)sleep(3);// 输出父进程中的变量 a 的值、父进程的 PID 和父进程的父进程 PID(即启动这个程序的终端进程 ID)printf("father is %d   pid %d,ppid:%d  \n", a, getpid(), getppid());}else if (0 == ret){//child(子进程执行的代码块)// 输出子进程中变量 a 的初始值printf("child a is %d\n", a);a += 10;// 输出子进程中变量 a 自增后的结果、子进程的 PID 和子进程的父进程 PID(即主进程的 PID)printf("child a is %d pid:%d ppid:%d\n", a, getpid(), getppid());}else{perror("fork error\n");return 1;}// 输出当前进程中的变量 a 的值和当前进程的 PIDprintf("a is %d pid:%d\n", a, getpid());return 0;
}

八、getpid()和getppid()函数

1. getpid()函数用于获得当前进程的 ID 号码,无参数,返回值为进程的 pid。
2. getppid()函数用于获得当前进程的父进程 pid 号,无参数,返回值为父进程 id 号。目前没有直接获取子进程号的函数。

九、面试题解析:

1、一次fork生成几个进程?他们之间的关系是什么样的?

一次 fork 生成两个进程,即父进程和子进程,它们是父子关系。

2、如果两次fork同时前后执行,会生成几个进程?他们之间的关系如何表示,有多少个子进程,有没有孙进程?

两次 fork 同时前后执行会生成四个进程。第一次 fork 产生父子两个进程,这两个进程再分别进行第二次 fork,又各自产生一个子进程,所以一共四个进程。关系可以表示为:最初的进程是根节点,第一次 fork 产生的父子进程是父子关系,第二次 fork 产生的进程对于第一次 fork 产生的父进程来说是父子关系,对于第一次 fork 产生的子进程来说也是父子关系,所以存在孙进程。

十、应用场合及测试

1. 应用场合:
◦ 一个进程希望复制自己,使父子进程同时执行相同的代码段,在网络服务中比较多见。
◦ 一个进程需要执行一个不同的程序时,可以使用 fork + exec 组合。
2. 使用变量测试可以验证父子进程位于不同的地址空间,文件的写入测试也可以进一步验证父子进程的独立性。
例如,在变量测试中,父进程和子进程分别修改同一个变量,不会相互影响,说明它们位于不同的地址空间。在文件写入测试中,父子进程同时向同一个文件写入内容,可以观察到写入的顺序和内容的独立性,进一步证明它们的独立性。

http://www.yayakq.cn/news/680444/

相关文章:

  • 红色文化网站建设软文发稿平台有哪些
  • 网站建设动漫兼职做网站设计
  • 建站网址什么意思彩票网站建设策划书
  • 百家号淄博圻谷网站建设建设网站推广
  • 哪些网站是vue做的wordpress文章seo方法
  • 网站建设都梵客家装和业之峰家装哪个好
  • 崇安区网站建设价格搜寻的网站有哪些
  • 网站建设方案汇报微博营销平台
  • 网站建设方案总结语wordpress主题开发出
  • 沧州网站建设定制价格网站建设互诺科技
  • 网站开发程序是什么站酷app
  • 站长工具精品昆明的房产网站建设
  • 上海地产网站建品牌商城网站制作
  • 淘宝客的网站是自己做的吗学室内设计要多久能学会
  • 做网站高流量赚广告费做购实惠网站的意义
  • 陕西企业网站建设网站注册页面怎么做
  • 做微网站 主机 域名动画设计师月薪多少
  • 网站建网站建设seo帮帮您企业官网有哪些
  • 个人网站设计师wordpress生成微信分享图片
  • 娱乐网站建设ppt娄底高端网站建设
  • 如何建设高大上的网站软件工程就业方向及薪资待遇
  • 中国建设银行官网站诚聘英才成都广告公司工资一般多少
  • 科技设计网站有哪些内容网站的运营维护
  • 成品网站制作公司网站建设课程设计报告总结
  • 凡科建站登录入口重庆网站建设平台免费
  • 织梦 网站源码1小时快速搭建网站
  • 两学一做专题网站介绍上海市建上海市建设安全协会网站
  • 网站营销教程仿站插件 wordpress
  • 绍兴模板建站代理购物系统数据库设计
  • 做网站 创业 流程网站开发的论文引言