Linux进程概念引入

文章目录

    • 冯诺依曼体系
    • 操作系统
      • 概念
      • 设计目的
      • 定位
      • 系统调用和库函数的概念
    • 进程
      • 概念
      • 描述进程PCB
        • task_struct内容分类
      • 组织进程
      • 查看进程
      • 通过系统调用获取进程标识符
      • 通过系统调用创建进程

冯诺依曼体系

  目前我们的计算机基本都是遵守冯诺依曼体系的,在冯诺依曼体系中,所有设备都只能直接和存储器交互。
在这里插入图片描述

操作系统

概念

  任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。简单来说一个操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(数据库,shell程序等)。

设计目的

  1. 与硬件交互,管理所有的软硬件资源;
  2. 为用户程序(应用程序)提供一个良好的执行环境。

定位

  在整个计算机软硬件架构中,操作系统的定位是一款管理软硬件的软件。首先用struct结构体把被管理对象描述起来,然后用链表或其他高效的数据结构把被描述对象组织起来。

系统调用和库函数的概念

  在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
在这里插入图片描述

进程

概念

  程序执行的一个实例,正在执行的程序等。在内核上担当分配系统资源(CPU时间、内存)的实体。

描述进程PCB

  进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,称为PCB。在Linux操作系统中的PCB是task_struct,它会被装载到RAM(内存)里并且包含着进程的信息。

task_struct内容分类

  标识符:描述本进程的唯一标识符,用来区别其他进程。
  状态:任务状态,退出代码,退出信号等。
  优先级:相对于其他进程的优先级。
  程序计数器:程序中即将被执行的下一条指令的地址。
  内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
  上下文数据:进程执行时处理器的寄存器中的数据。
  I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
  记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  其他信息。

组织进程

  可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。

查看进程

  进程信息可以通过/proc系统文件查看。
在这里插入图片描述
  大多数进程信息同样可以使用top和ps这些用户级工具来获取。
在这里插入图片描述

通过系统调用获取进程标识符

进程id(PID)
父进程id(PPID)

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

int main()
{
     pid_t id = fork();
     if(id == 0)
     {
         //子进程
         while(1)
         {
             printf("我是子进程,我在运行,pid:%d, ppid: %d\n", getpid(), getppid());
             sleep(1);
         }
     }
     else if(id > 0)
     {
         //父进程
         while(1)
         {
             printf("我是父进程,我在运行,pid:%d, ppid: %d\n", getpid(), getppid());
             sleep(1);
        }
     }
}

通过系统调用创建进程

  fork有两个返回值,父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)。fork之后通常要使用if分流。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
	int ret = fork();
	printf("hello proc : %d!, ret: %d\n", getpid(), ret);
	sleep(1);
	
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 内存分区模型

C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a;存放全局变量和静态变量以及常量 栈区&#xff1a;由编译器自动分配释放 , 存放函数的参数值 , 局部变量等 堆区&…

第11届蓝桥杯Scratch国赛真题集锦

编程题 第 1题 问答题 3D打印小猫 题目说明 背景信息:3D打印技术,它与普通打印工作原理基本相同,打印机内装有液体或粉未等“打印材料”,与电脑连接后,通过电脑控制把“打印材料”一层层叠加起来,最终把计算机上的蓝图变成实物。 编程实现:通过滑杆控制小猫造型变化,按下…

YUM在线升级功能

文章目录 YUM在线升级功能利用YUM进行查询、安装、升级与删除功能查询功能使用案例 安装/升级功能删除功能 YUM的配置文件修改软件源产生的问题与解决之道使用案例 YUM的软件群组功能使用案例 全系统自动升级 管理的抉择&#xff1a;RPM还是Tarball基础服务案例&#xff1a;以A…

学生成绩管理系统

基于springboot vue实现的学生成绩管理系统 主要模块&#xff1a; 1&#xff09;学生模块&#xff1a;我的成绩、成绩统计、申述管理、修改密码 2&#xff09;教师模块&#xff1a;任务管理、对学生班级任务安排、班级学生的成绩查看、申述管理 3&#xff09;管理员模块&…

应用运维的三个项目

应用运维 目录概述需求&#xff1a; 设计思路实现思路分析1.开发和运维2.比重3.历史项目4.工作内容5.历程 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,…

南山城市更新--向南村(一期,二期)项目详情

向南村&#xff08;一期&#xff09;城市更新单元项目简介 项目于2010年被列入《深圳城市更新单元规划制定计划第一批计划》中&#xff0c;申报主体为向南实业股份有限公司&#xff0c;后与恒大合作开发。 项目位于南山区桂庙路南侧&#xff0c;毗邻前海、衔接后海&am…

javaWeb ssh小提琴管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh小提琴管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,…

TypeScript实现贪吃蛇游戏

TS实现贪吃蛇游戏 文章目录 TS实现贪吃蛇游戏[toc]1.项目效果2.项目梳理3.项目准备4.主体页面结构5.CSS样式6.TS逻辑6.1 食物逻辑6.2 蛇逻辑6.3 记分板逻辑6.4 游戏控制器逻辑6.5 程序入口ts 1.项目效果 项目体验 2.项目梳理 这个小游戏主要包括积分面板&#xff0c;食物&…

【Spring】— 映射文件

目录 映射文件select元素insert元素update元素和delete元素sql元素resultMap元素 映射文件 映射文件是MyBatis框架中十分重要的文件。在映射文件中&#xff0c;<mapper>元素是映射文件的根元素&#xff0c;其他元素都是它的子元素。映射文件中的主要元素如下所示。 <…

【owt】WebrtcNode, subscribe-sdp offer 流程(1)

sdp offer 流程 1. AmqpClient - New message received sdp offer 的消息 2023-04-26T21:54:19.790 - DEBUG: AmqpClient - RpcServer New message received {method: onTransportSignaling,args: [b149e44bb10d4e91bd162a8c6806ae7b,{sdp: v0\r\n o- 7177131362423164715 …

生活-考驾照2

昨日已通过科目一&#xff0c;接下来&#xff0c;向着科目二出发&#xff01;&#xff01;&#xff01; 考试注意事项 就考前一周死命刷题&#xff0c;至少一天有三次93以上的记录&#xff0c;我也就最后一天达到90&#xff0c;之前一直马路杀手刷题&#xff0c;我就在网页版…

WRF模式应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量

查看原文>>>高精度气象模拟软件WRF(Weather Research Forecasting)技术及案例应用 气候是多个领域&#xff08;生态、水资源、风资源及碳中和等问题&#xff09;的主要驱动因素&#xff0c;合理认知气候变化有利于解释生态环境变化机理及过程&#xff0c;而了解现在、…

Alibaba Arthas学习与使用

Alibaba Arthas学习与使用 目录 下载安装卸载退出快捷键重点部分: 命令 dashboardthreadjvmsyspropsysenvvmoptiongetstaticognlscsmjadmcredefinedumpclassloadermonitorwatchtracestackttoptionsprofiler 下载安装 # 下载 curl -O https://alibaba.github.io/arthas/art…

如何在多个端口上运行 SSH 服务器?

SSH&#xff08;Secure Shell&#xff09;是一种用于安全远程访问和管理服务器的协议。默认情况下&#xff0c;SSH服务器在Linux系统上使用22号端口进行通信。但是&#xff0c;有时我们可能需要在多个端口上运行SSH服务器&#xff0c;以满足特定的需求或增强服务器的安全性。 本…

SQL审核工具Yearning搭建及使用

一、背景 实际的业务场景中&#xff0c;我们难免会直接对生产库的数据进行修改。很多朋友都是发sql给运维&#xff0c;然后运维执行。过程不可控&#xff0c;出错几率很大。 而且没有审核&#xff0c;不知道提交的具体是什么sql&#xff0c;极有可能是删库跑路的sql&#xff0…

实验二十一、积分运算电路的输出波形分析

一、题目 利用 Multisim 分析图1所示两个积分运算电路的输出波形&#xff0c;输入电压为 200 Hz、幅值为 1 V 的方波信号。 图 1 图1\,\, 图1 二、仿真电路 在 Multism 中搭建图1所示的两个电路&#xff0c;如图2所示。为了防止电路中的直流增益过大&#xff0c;故在电容上…

【Python FTP/SFTP】零基础也能轻松掌握的学习路线与参考资料

一、Python FTP/SFTP的学习路线 Python FTP/SFTP是Python语言的两种常用的文件传输协议。在学习Python网络编程过程中&#xff0c;学习FTP/SFTP是非常重要的一步。下面给出Python FTP/SFTP的学习路线&#xff1a; 了解FTP/SFTP协议 在开始学习Python FTP/SFTP之前&#xff0…

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

目录 一、概述二、配置复用控制寄存器&#xff0c;使能GPIO功能三、配置GPIO_DIR寄存器&#xff0c;选择输出四、配置GPIO_DATA寄存器&#xff0c;输出高电平五、测试 一、概述 这篇文章根据海思SS528芯片提供的《22AP30 H.265编解码处理器用户指南.pdf》文档(文档路径&#xf…

TPO69 01|Why Snakes Have Forked Tongues P5P6|阅读真题精读|17:50~19:35

17:00&#xff5e;17:50 吃饭 目录 P56 生词 段落大意 P5段落大意 P6段落大意 题目 【5】事实信息题|定位准确非常重要✅ 【6】事实信息题|定位准确非常重要✅ 【7】推理题|文章是否提及|不要过度推理 【8】修辞目的题|举例一般为了说明✅ 【9】句子插入题|in other words|同义…

读数据压缩入门笔记01_数据压缩导读

1. 建立在数据压缩上的世界 1.1. 数据压缩技术最让人惊异之处在于&#xff0c;它与过去40年里个人计算的很多重大改变有关&#xff0c;但很少有人知道这一点 1.2. 我们当下生活在其中的这个计算世界&#xff0c;完全建立在数据压缩算法之上 1.3. 图像的压缩 1.3.1. 1978年 …