进程概念、进程状态

进程概念、进程状态

Linux系统编程阶段:使用Linux系统提供的接口完成指定功能程序的编写;(进程概念,进程控制,基础IO,进程间通信,进程信号,多线程)


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

进程概念:冯诺依曼体系结构,操作系统,进程概念,进程状态,环境变量,程序地址空间
冯诺依曼体系结构:现代计算机的硬件体系结构(规定了现代计算机应该有哪些硬件单元)
硬件单元:输入设备–键盘,输出设备–显示器,存储器,运算器+控制器(中央处理器CPU)
所有设备都是围绕存储器工作的,存储器是作为中间的数据缓冲而存在的
系统调用接口:操作系统提供的系统访问内核的接口;
库函数与系统调用接口的关系:库函数实际上就是对系统调用接口进行的一层封装后的接口;


一、进程概念

1.创建进程

进程:运行中的程序
进程控制块pcb:程序运行的描述
通过程序的运行描述,操作系统就可以调度哪个程序可以占用CPU去运行指令

要运行哪个程序,则操作系统找到对应程序的pcb,在pcb中取出所需程序的运行所需信息,加载到CPU上,CPU就开始运行这个程序了对于操作系统来说,进程就是一个程序运行的描述,通过这个描述,操作系统可以进行程序的调度运行管理,实际上对于系统来说,进程就是pcb。

这个程序运行的动态描述,叫做pcb进程控制块,在Linux下是一个task_struct结构体

  • 时间片:CPU调度运行程序的时间段,时间片过后,就该切换调度下一个进程了 并发:一种轮询
  • 处理的方式 并行:同时运行
  • 描述信息:内存指针,上下文数据,程序计数器,进程ID-pid,IO信息,进程优先级,进程状态,记账信息…

进程的简单操作:
  创建进程:进程就是一个pcb是一个task_struct结构体(Linux中),创建一个进程实际上就是创建了一个task_struct结构体
pid_t fork(void)–创建进程接口–通过复制调用这个接口的进程(父进程),创建一个新的进程(子进程)
   返回值:对于父进程会返回子进程的pid;对于子进程返回0;
代码如下(示例):

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<stdlib.h>
  4 int main()
  5 {
  6     printf("------\n");
  7     pid_t pid = fork();
  8     if(pid < 0){//子进程复制了父进程,因此往后的代码父子进程都会运行,但是因为返回值不同因此进入不同的if
  9     //出错了
 10     }else if(pid == 0){
 11     //子进程--对于子进程返回值是0
 12     }else{
 13     //父进程--对于父进程返回值是子进程的pid,因此返回值是大于0的
 14     sleep(5);
 15     exit(0);//退出进程--谁调用谁退出
 16     }
 17     printf("hehe:%d\n",getpid());
 18     while(1) sleep(1);
 19     return 0;
 20 }

运行结果:
在这里插入图片描述
此处的3028为进程id

在这里插入图片描述
因此这里的3028为3027的子进程

二、进程状态

进程状态:用于操作系统对于进程的管理(什么样的状态该对进程进行什么样的操作)运行态,就绪态,阻塞态

Linux中的进程状态:

运行态(R):正在运行或者轮转到时间片则能够运行统称运行态
可中断休眠态(S):可以被中断的休眠状态(满足唤醒条件,或者休眠被中断则进入运行态)
不可中断休眠态(D):不能被中断的休眠状态(满足唤醒条件之后才会进入运行态) 停止态(T):停止运行状态,(依然会被调度但是什么都不做)
僵尸态(Z):进程已经退出不再调度了,但是这个进程的资源还没有被完全释放,等待处理的一种状态

进程状态
在这里插入图片描述

僵尸进程:处于僵尸态的进程,是一种退出了,但是资源没有被完全释放的进程
产生:子进程先于父进程退出,但是父进程没有关注到子进程的退出,因此系统不会完全释放子进程的资源,这个子进程进入僵尸状态

  • 危害:资源泄露(一种是pcb所占的内存资源一直无法被回收,一种是一个用户所能创建的进程数量是有限制的)
  • 解决方案:
  • 处理:退出父进程
  • 避免:进程等待

孤儿进程:父进程先于子进程退出,子进程就会成为孤儿进程,运行在后台,父进程成为1号进程(早期名字叫init进程,后期叫syatemd)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李憨憨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值