【Linux:进程概念】

server/2024/10/11 5:26:17/

目录

了解冯诺依曼思想:

操作系统如何管理软硬件资源?

进程与程序的区别 


  • 了解冯诺依曼思想:

1.所有的数据采用二进制的存储

2.数据存储在内存中

CPU处理器只做俩种运算:逻辑&&算数运算 

  • 操作系统的组成?

操作系统内核(本质上就是某种代码的统称)+应用,操作系统的本质也是软件

  • 操作系统如何管理软硬件资源?

  • 组织+描述

描述:struct task struct {}

组织:双向链表

在此还需要知道的一个常识:CPU(中央处理器)的数量远小于进程数。进程是需要等待操作系统分配CPU资源运行。

  • 进程状态
  1. 运行态:进程已得到系统分配的cpu资源,正在执行计算
  2. 就绪态:进程基础准备完成,等待操作系统分配cpu
  3. 阻塞态:进程缺乏某种资源无法分配到cpu资源,导致进程不能被执行
  • 进程状态细分
R进程正在执行
S进程暂时处于休眠状态(可打断)
D进程暂时处于休眠状态(不可被打断)
T进程中断
X死亡状态
t跟踪状态,当进程被gbd调试时,就会产生该状态
  • 仔细说明死亡状态不能被肉眼查询的原因:

死亡状态,ps,aux是查不到该进程信息的,该进程当要被释放时,释放的前一刻进程状态标记为死亡状态,ps,aux能查进程信息全凭进程的组织双向链表,遍历该链表由此查看进程

  • 进程与程序的区别 

进程是由操作系统管理的,程序运行起来叫做进程

程序的本质为一个文件,当程序跑起来时就叫做进程,这是一个动态的,由操作系统管理,操作系统分配cpu资源对进程进行一个管理

每一个进程都有属于自己的“身份证号”pid,在当前操作系统中,每一个进程都有一个具有唯一性的pid号,进程的观察需要使进程运行起来,查看进程信息命令:Ps,aux查看当前进程的信息

  • Fork函数 

fork函数的返回值三种类型

<0fork函数创建失败
==0返回给子进程
>0返回父进程

父子进程跑不一样的代码就需要if分支来实现  fork的返回类型pid_t(本质是整形)

  • Getpid函数,谁调用就返回谁的PID
  • Getppid:谁调用就返回谁的父进程PID
  • 僵尸进程

  • 俩个kill命令:
  1. .Kill [pid]:

  • .Kill -9 [pid]: 强杀命令 

Z表示僵尸状态

  •  僵尸进程产生的原因?

父进程创建一个子进程,子进程先父进程退出,子进程在退出时向父进程发送信号(SIGCHLD),但父进程对该信号忽略处理,导致子进程在退出时,没有进程回收子进程的资源导致子进程变成了僵尸进程

  • 僵尸进程有什么危害?

僵尸进程在内核中的task_struct结构体并没有被释放,导致内存泄露,并且强杀命令也不能干掉

  • 如何解决?
  1. 重启系统

  2. 进程等待

  3. 让僵尸进程成为孤儿进程(杀掉僵尸进程的父进程),继而僵尸进程就会被1号进程收养,最后1号进程会回收它的资源

  • 孤儿进程

  • 孤儿进程如何产生?

父进程比子进程先退出,则子进程就是孤儿进程

儿进程:父进程变成1号进程,当子进程的父进程先与子进程先退出时,子进程会被1号进程所收养,1号进程也叫init进程,操作系统启动的第一个进程叫做1号进程

这样就可以解决僵尸进程,把僵尸进程的父进程干掉,僵尸进程就会被1号进程收养,回收它的资源

孤儿进程被领养后就变成了一个后台进程


http://www.ppmy.cn/server/42264.html

相关文章

使用numpy或pytorch校验两个张量是否相等

文章目录 1、numpy2、pytorch 做算法过程中&#xff0c;如果涉及到模型落地&#xff0c;那必然会将原始的深度学习的框架训练好的模型转换成目标硬件模型的格式&#xff0c;如onnx,tensorrt,openvino,tflite;那么就有对比不同格式模型输出的一致性&#xff0c;从而判断模型转换…

【计算机毕业设计】基于SSM++jsp的学院党员管理系统【源码+lw+部署文档+讲解】

目录 目 录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删…

Jmeter用jdbc实现对数据库的操作

我们在用Jmeter进行数据库的操作时需要用到配置组件“JDBC Connection Configuration”&#xff0c;通过配置相应的驱动能够让我们通过Jmeter实现对数据库的增删改查&#xff0c;这里我用的mysql数据库一起来看下是怎么实现的吧。 1.驱动包安装 在安装驱动之前我们要先查看当前…

MySQL事务(一)

事务是什么 在MySQL中&#xff0c;事务是一组操作&#xff0c;这些操作要么全部执行成功&#xff0c;要么全部失败。事务的主要目的是保证数据的一致性和完整性。它确保当我们对数据库进行一系列操作时&#xff0c;要么所有操作都生效&#xff0c;要么如果其中任何一个操作失败…

【八十七】【算法分析与设计】单调栈全新版本,右大于,左小于右小于等于,739. 每日温度,907. 子数组的最小值之和

739. 每日温度(右大于) 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示…

github新手用法

目录 1&#xff0c;github账号注册2&#xff0c;github登录3&#xff0c;新建一个仓库4&#xff0c;往仓库里面写入东西或者上传东西5&#xff0c; 下载Git软件并安装6 &#xff0c;获取ssh密钥7&#xff0c; 绑定ssh密钥8&#xff0c; 测试本地和github是否联通9&#xff0c;从…

Vue 之 后台管理系统的权限路由的管理

目录 前言实现理解三者的概念以及之间的关联账号&#xff08;用户&#xff09;角色菜单 用户权限授权相关概念实现代码实现登录跳转路由&#xff0c;路由守卫中进行权限验证按钮权限封装指令&#xff1a;调用&#xff08;其中一个页面参考&#xff09; 思路&#xff0c;操作流程…

在springboot项目中自定义404页面

今天点击菜单的时候不小心点开了一个不存在的页面&#xff0c;然后看到浏览器给的一个默认的404页面 后端的程序员都觉得这页面太丑了&#xff0c;那么怎么能自定义404页面呢&#xff1f; 很简单&#xff0c;在我们的springboot的静态资源目录下创建一个error包&#xff0c;然…