系统编程-进程初步1

5 进程初步

一、认识进程

-- 进程Process是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础

-- 程序运行起来就是一个进程

  • 进程存在于运行内存中
  • 程序存在于硬盘中

-- windows下查看进程使用任务管理器进行查看 

alt text

1、查看进程的指令

-- linux下如何查看进程

  • (1)ps 指令可以用来看进程 查看当前终端下的进程

alt text

  • (2)ps -ef 查看系统内所有进程
    -- 该指令主要用来获取进程的进程号
    -- PID:进程号
    -- PPID:父进程号
     

    alt text

     

    alt text

  • (3)ps -aux
    -- 主要用来获取进程间状态
    -- STAT:表示进程的当前状态 

    alt text

  • (4)kill -9 进程号
    -- 杀死进程指令

alt text

2、进程在系统中的调度状态

-- linux操作系统下进程的三种状态:

  • 执行态:该进程正在运行,即进程正在占用 CPU, 任何时候都只有一个进程。
  • 就绪态:进程已经具备执行的一切条件,正在等待分配 CPU 的处理时间片。
  • 等待态:进程正在等待某些事件,当前不能分配时间片, 进程不能使用 CPU,若等待事件发生(等待的资源分配到)则可将其唤醒,变成就绪态

-- 进程在系统中是并发运行的

tip:并发和并行的区别:
 

alt text

 

alt text

3、进程的特点

  • 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的
  • 并发性:任何进程都可以同其他进程一起并发执行
  • 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

4、进程的资源分配

alt text

二、进程的相关函数

1、获取进程的进程号

-- 函数头文件

  • #include <sys/types.h>
  • #include <unistd.h>

-- 函数原型

  • pid_t getpid(void);

-- 函数作用:

  • 获取当前运行的进程的进程号

-- 函数返回值:

  • 返回 进程的进程号

2、获取进程的父进程号

-- 函数的作用:

  • 返回父进程号
  • pid_t getppid(void);

3、创建进程函数

-- 函数头文件

  • #include <sys/types.h>
  • #include <unistd.h>

-- 函数原型

  • pid_t fork(void);

-- 函数的作用:

  • 当运行该函数时 会复制父进程所有资源
  • 创建出来一个新的进程并从fork函数开始运行
  • 父进程和子进程运行顺序随机 不确定

-- 函数的返回值:

  • 在父进程中返回 子进程进程号
  • 在子进程中返回 0

alt text

alt text

4、进程退出函数

-- 之前我们从主函数的return 0进行退出
如果我们想让进程从函数中退出可以调用以下函数来实现

-- 函数头文件

  • #include <stdlib.h>

-- 函数原型

  • void exit(int status);

-- 函数的作用:

  • 正常退出进程 可以直接当作main函数中return0;与return 0的作用一样,如也可以清空缓冲区。

-- 函数的参数:

  • status:status & 0xff 之后将值返回给父进程

5、进程退出函数

-- 函数头文件

  • #include <unistd.h>

-- 函数原型

  • void _exit(int status);

-- 函数的作用

  • 退出进程函数 会立马关闭所有的文件描述符,不会调用注册的退出处理程序

-- 函数的参数:

  • status:status & 0xff 之后将值返回给父进程

-- exit和_exit的区别

当你调用 exit 时,程序会做一些事情,比如:

  • 调用所有注册的退出处理程序。
  • 关闭所有打开的文件流。
  • 刷新输出流。

而调用 _exit 时,程序会立即终止,不会执行上述清理操作。

5、注册退出函数

-- 函数头文件

  • #include <stdlib.h>

-- 函数原型

  • int atexit(void (*function)(void));

-- 函数的作用

  • 注册一个函数 当进程正常死亡的时候会被调用

-- 函数的参数:

  • void (*function)(void):函数指针 指向一个返回值为
  • void 无参数的函数

-- 函数返回值:

  • 成功 返回 0
  • 失败 返回 非0

alt text

 

alt text

例:

-- 下面这个程序
fork()
fork()
fork()
printf(“hello world\n”);

alt text

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值