Linux基础4-进程1(操作系统,进程介绍,Linux进程相关命令,getpid,fork)

上篇文章:Linux基础3-基础工具4(git),冯诺依曼计算机体系结构-CSDN博客

本章重点:

1. 操作系统简介

2. 什么是进程?

3. 在Linux使用命令查看进程(ps)

4. getpid,getppid, fork简介

上一章我们了解了冯诺依曼计算机体系结构,我们需要知道数据是如何进行流动的

请解释:你从qq发送一条消息到你的朋友并被接收,数据是如何流动的(暂时不考虑网络层)

        我的键盘输入 --> 我的内存 --> 我的CPU处理 --> 我的内存 --> 我的网卡处理输出

--> 网络 --> 我朋友的网卡处理输入 --> 我朋友的内存 --> 我朋友的CPU处理 --> 我朋友的内存 --> 我朋友的显示器输出

目录

一. 操作系统

二. 进程介绍

三. Linux下查看进程,杀死进程

四. 查看进程pid和创建子进程

4.1 getpid getppid 查看进程的pid

4.2 fork创建子进程

五.下章重点 

5.1 进程状态


一. 操作系统

        根据冯诺依曼计算机体系结构,我们知道计算机由输入,输出设备,存储器,cpu等组成,计算机是如何对这些硬件和其他软件进行管理的?(如果不管理的话不就乱套了)

        操作系统是进行软硬件资源管理的软件.

为什么要对这些资源进行管理?

        (操作系统通过管理软硬件资源,给用户提供良好的,稳定的,安全的执行环境)

操作系统如何对这些软硬件资源进行管理?(先描述后组织)

        1. 使用struct_task进行描述进程,再使用链表等结构进行管理

        2. 操作系统通过对数据的管理来管理软硬件,创建进程来管理资源

计算机的软硬件结构如下

系统调用和库函数辨析

1. 在开发角度,操作系统作为一个整体,会暴露自己部分接口,供外部进行开发使用,这些接口被称为系统调用

2. 系统调用在使用上比较基础,而且使用的要求对用户高.所以部分开发者对系统调用进行适度封装,逐渐形成库,更方便开发者进行开发和二次开发

二. 进程介绍

什么是进程?

        进程就是运行起来(被加载到内存)的程序。

有很多加载到内存中的程序,操作系统如何管理它们呢?

        管理需要先组织,再管理。操作系统通过进程控制块(PCB)来对进程进行管理,PCB中含有很多进程的信息。

        在Linux中,PCB是task_struct

//PCB内核结构体(内核结构体可以创建内核对象,将这个结构和我们的代码数据关联起来)
//这样我们就能通过管理PCB进而管理进程
struct task_struct
{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next;//如通过链表链接所有进程,方便对进程进行管理
};

这样就实现了:对进程管理 ----> 对PCB链表管理(增删查改等)

所以: 进程=内核数据结构+进程相应大端数据代码

且操作系统在调度进程的时候,进程具有动态属性

三. Linux下查看进程,杀死进程

以下是Linux下常用的查看进程的命令

ps axj                    //查看所有进程
ps axj | head -1          //查看进程各项属性的标题
ps axj | grep 进程名称    // 通过grep过滤出我们需要查找的进程
ps axj | grep head -1 && ps axj | grep 进程名称    //查看标题同时进程查找
kill -9 进程pid    //杀死这个pid的进程

举例:

1.

2.

3.

4.

另外一种查看进程的方式

在Linux下,一切皆文件。进程也不例外,在系统中,创建一个进程后,就有一个进程文件

使用 ls /proc 即可查看进程目录

四. 查看进程pid和创建子进程

4.1 getpid getppid 查看进程的pid

我们创建一个进程后,如何获取进程的pid??

#include <unistd.h>    //头文件
//这两个都是系统调用
getpid()    //获取进程的pid
getppid()   //获取进程父进程的pid
#include <stdio.h>
#include <unistd.h>int main()
{while(1){printf("我是一个进程 pid:%d 我父进程的pid:%d\n", getpid(), getppid());sleep(1);}return 0;
}

 运行结果:

4.2 fork创建子进程

fork()    
//用于创建子进程,
//创建失败返回负数,父进程返回子进程pid,子进程返回0//fork之后,会有父进程,子进程两个进程执行后续代码
//fork后续的代码,被父子进程共享
//通过返回值不同,父子进程执行后续共享代码的一部分(个进程的执行是并发的)

举例:

该代码在创建子进程后,各自输出自己的pid和自己父亲的pid

#include <stdio.h>
#include <unistd.h>int main()
{pid_t id = fork(); //创建子进程if(id == 0){//childwhile(1){printf("我的子进程,我的pid为:%d,我父亲的pid为:%d\n", getpid(), getppid());sleep(1);}}else if(id > 0){//parent while(1){printf("我的父进程,我的pid为:%d,我父亲的pid为:%d\n", getpid(), getppid());sleep(1);}}else {printf("创建进程失败!");return 1;}return 0;
}

执行结果如下:

fork一般使用if进行分流(根据返回值不同)

通过写实拷贝保证代码共享和进程独立性

五.下章重点 

5.1 进程状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144180.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于区块链的相亲交易系统源码解析

随着区块链技术的成熟与发展&#xff0c;其去中心化、不可篡改的特性逐渐被应用于各行各业。特别是在婚恋市场中&#xff0c;区块链技术的应用为相亲平台带来了新的可能性 。本文将探讨如何利用区块链技术构建一个透明、高效的相亲交易系统&#xff0c;并提供部分源码示例。 区…

秋招八股总结

transformer 损失函数 交叉熵的原理 公式 xi是true_label&#xff0c;yi是神经网络预测为正确的概率 对比学习loss 对比学习损失函数 InfoNEC Loss&#xff08;bge中也用的这个&#xff09; SimCSE的主要思想&#xff1a;同一句话通过不同的drop out作为正例&#xff0…

halcon中的放射变换

放射变换原理 怎样计算放射变换 仿射变换affine是透视变换的子集 - 仿射矩阵 仿射变换矩阵为2*3的矩阵&#xff0c;第三列的元素起着平移的作用&#xff0c;前面两列的数字对角线上是缩放&#xff0c;其余为旋转或者斜切的作用 - 计算仿射矩阵只需要3对不共线的点 定义 指…

SOMEIP_ETS_117: SD_Entry_references_options_of_same_kind

测试目的&#xff1a; 验证DUT能够处理一个包含两种相同类型选项的SubscribeEventgroup消息&#xff0c;DUT可以选择拒绝订阅尝试或忽略该请求。 描述 本测试用例旨在确保DUT遵循SOME/IP协议&#xff0c;当接收到一个包含重复相同类型选项的SubscribeEventgroup消息时&#…

英飞凌 PSoC6 RT-Thread 评估板简介

概述 2023年&#xff0c;英飞凌&#xff08;Infineon&#xff09;联合 RT-Thread 发布了一款 PSoC™ 62 with CAPSENSE™ evaluation kit 开发板 &#xff08;以下简称 PSoC 6 RTT 开发板&#xff09;&#xff0c;该开发套件默认内置 RT-Thread 物联网操作系统。PSoC 6 RTT 开…

window.open()地址栏隐藏问题解决方案

问题 使用window.open打开一个页面时&#xff0c;想要隐藏地址栏&#xff0c;但是无效。 window.open (test.html,newwindow,height100,width400,top0,left0,toolbarno,menubarno,scrollbarsno, resizableno,locationno, statusno)由于浏览器区别和安全问题&#xff0c;浏览器…

idea工具,一个项目开启多个项目运行窗口并且显示端口,service窗口

在多数情况下&#xff0c;通常会打开一个项目&#xff0c;里面有多个项目需要运行&#xff0c;这里教大家怎么开启多个窗口来查看项目运行状态&#xff0c;最终效果如下。 点击view -> Tool Windows-> Services 点击services之后&#xff0c;会在下面出现这个页面。 点击…

8.1差分边缘检测

基本概念 差分边缘检测是一种图像处理技术&#xff0c;用于检测图像中的边缘。边缘是指图像中灰度值发生显著变化的区域。差分边缘检测通常通过计算图像的梯度来实现&#xff0c;梯度反映了灰度值的变化率。在OpenCV中&#xff0c;可以使用不同的算子来检测不同方向的边缘&…

R18 NES 之SSB-less SCell operation for inter-band CA

在TR 21.918 Summary of Rel-18 Work Items 中可以看到SSB-less SCell operation for inter-band CA 是Network energy savings for NR 的一部分,其中还包括cell DTX/DRX 等等其他内容。 网络节能是 5G/NR 成功的关键,可以减少对环境的影响(温室气体排放)并节省运营成本。R…

Linux-vim使用

文章目录 一、什么是vim二、vim模式2.1 正常模式下的快捷键2.2 vim的基本操作2.3 vim末行模式命令2.4 vim操作总结 三、配置vim3.1 配置文件的位置3.2 常用配置选项,用来测试3.3 使用插件3.4 使用git 一、什么是vim vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&am…

poi生成的ppt,powerPoint打开提示内容错误解决方案

poi生成的ppt,powerPoint打开提示内容错误解决方案 最近做了ppt的生成,使用poi制作ppt,出现一个问题。微软的powerPoint打不开,提示错误信息 通过xml对比工具发现只需要删除幻灯片的某些标签即可解决。 用的是XML Notepand 分析思路: 1.把poi生成的pptx用wps打开,正…

每日学习一个数据结构-红黑树

文章目录 什么是红黑树&#xff1f;示意图红黑树的特点红黑树的节点结构插入和删除操作旋转操作重新着色 红黑树的应用 树的构造过程插入新节点自平衡调整策略 示例 查询过程 什么是红黑树&#xff1f; 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉查找树…

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序&#xff0c;上传代码后打开体验版&#xff0c;界面无法请求接口&#xff0c;手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…

基于vue框架的宠物寻回小程序8g7el(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;发布人,宠物分类,宠物信息,接取人,接取信息,完成信息 开题报告内容 基于Vue框架的宠物寻回小程序开题报告 一、研究背景与意义 随着城市化进程的加快和人们生活水平的提高&#xff0c;宠物已成为许多家庭不可或缺的一员。它们不仅为生…

yolov5测试代码

一般源码的测试代码涉及很多文件&#xff0c;因项目需要写一个独立测试的代码。传入的是字典 import time import cv2 import os import numpy as np import torch from modules.detec.models.common import DetectMultiBackend from modules.detec.utils.dataloaders import …

工业交换机如何保证数据的访问安全

在现代工业自动化环境中&#xff0c;工业交换机作为关键的网络设备&#xff0c;扮演着数据传输和信息交互的重要角色。为了确保数据的访问安全&#xff0c;工业交换机不仅具备高效的转发性能&#xff0c;还集成了多层次的安全防护机制&#xff0c;以抵御各种潜在的网络威胁。 首…

输电线螺栓销钉缺失检测数据集

输电线螺栓销钉缺失检测数据集共1209张。标注文件为YOLO适用的txt格式以及VOC格式。可以直接用于模型训练。 类别&#xff1a;缺失和不缺失 包含yolov7tiny训练验证结果以及权重文件和数据集。 数据集亮点&#xff1a; 丰富的图像资源&#xff1a; 本数据集包含1209张高质量…

PHP及Java等其他语言转Go时选择GoFly快速快速开发框架指南

概要 经过一年多的发展GoFly快速开发框架已被一千多家科技企业或开发者用于项目开发&#xff0c;他的简单易学得到其他语言转Go首选框架。且企业版的发展为GoFly社区提供资金&#xff0c;这使得GoFly快速框架得到良好的发展&#xff0c;GoFly技术团队加大投入反哺科技企业和开…

268页PPT大型集团智慧工厂信息化顶层架构设计(2024版)

智能制造装备是高端制造业的关键&#xff0c;通过整合智能传感、控制、AI等技术&#xff0c;具备了信息感知、分析规划等智能化功能&#xff0c;能显著提升加工质量、效率和降低成本。该装备是先进制造、信息、智能技术的深度融合。其原理主要包括物联网集成、大数据分析与人工…

Windows Server2016多用户登录破解

使用场景 很多时候&#xff0c;公司开发和测试运维会同时登录同一台windows服务器进行查询、更新、维护等操作&#xff0c;本文就来介绍一下Windows2016配置多人远程桌面登录实现&#xff0c;感兴趣的可以了解一下。 操作流程 &#xff08;1&#xff09;首先桌面需要安装远程…