进程概念(进程第1篇)【Linux复习篇】

目录

1、冯诺依曼体系结构怎么画?中央处理器是什么?存储器是什么?每个部分有什么作用?

2、什么是操作系统? 

3、什么叫进程?操作系统如何管理进程的?

4、怎么查看进程?

5、C语言中在当前目录下创建文件怎么做到的?

6、在代码层面,如何获取自己的pid和ppid?bash进程是什么?

7、fork函数有什么用?怎么用?怎么理解两个返回值?

 8、什么是写时拷贝?


1、冯诺依曼体系结构怎么画?中央处理器是什么?存储器是什么?每个部分有什么作用?

存储器是指我们平时说的内存;

输入设备有鼠标、键盘、麦克风、磁盘、网卡、摄像头等;

输出设备有显示器,播放器硬件,磁盘、网卡等;

运算器:对我们的数据进行计算任务(算术运算、逻辑运算);

控制器:对计算机硬件流程进行控制。

中央处理器:由运算器、控制器组成(其实还有很多寄存器),也叫CPU。

五大单元:

各个单元都是独立的个体,需要用“线”连接起来,总线:

1、系统总线(CPU和内存交互的线)

2、IO总线(内存和外设交互的线)

CPU不和外设直接打交道,为什么?

外设读写效率太低。        

2、什么是操作系统? 

操作系统是一款进行管理软件和硬件的的软件。

为什么要有OS:通过管理好底层软硬件资源,为用户提供一个良好的执行环境。

如何理解系统调用接口:系统为了保证自己的数据安全,所有访问OS的行为,都只能通过系统调用来完成,系统调用就是操作系统给用户提供的操作自己的函数。

硬件->驱动程序->操作系统->系统调用接口->用户操作接口(如C语言的printf)->用户

3、什么叫进程?操作系统如何管理进程的?

一个加载到内存正在运行的程序,就叫进程,也叫任务。

一个进程在加载到内存,形成真正的进程前,要先创建一个描述进程属性的结构体对象PCB(Process Control Block进程控制块)对进程的管理,就是对描述进程的结构体对象PCB做管理,具体怎么管理,就是通过特定的数据结构(如Linux中是用双链表)将所有进程PCB组织起来。

管理进程:先描述,再组织!

进程 = 内核PCB结构体对象+你的代码和数据 

Linux中的PCB叫什么?

task_struct。

tack_struct中有什么常见字段?

标示符:描述本进程的唯一标示符,用来区别其他进程。

状态:任务状态,退出代码,退出信号等。
优先级:相对于其他进程的优先级。

程序计数器:程序中即将被执行的下一条指令的地址。
内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

上下文数据:进程执行时处理器的寄存器中的数据

其他信息。

4、怎么查看进程?

方法一:

ps axj :这条指令可以显示系统中所有进程的详细信息,并以通用格式展示。

`ps`命令是用于显示当前系统中的进程信息,`a`表示显示所有用户的进程,`x`表示显示没有控制终端的进程,`j`表示以通用格式显示进程详细信息。

如果只想看一个特定进程的信息ps axj | grep process_name

`|`是管道符号,用于将前一个命令的输出传递给后一个命令。  `grep process_name`命令是用来在前一个命令的输出中查找包含"process_name"关键字的行。

如果想加上行头,可以这样:

ps axj | head -1 && ps axj | grep server 

查找出来为什么会有两条?

因为grep命令在执行时,它自己也会变成一个进程,且它内部也有server关键字。

ps的本质是什么?

ps本质就是在遍历内核中维护所有进程控制块的数据结构(双链表)

方法二: 

ls -/proc

/proc是一个伪文件系统(procfs),该目录下存储的是内核运行时的信息,而不是实际的文件系统。用户可以查看和操作其中的文件来获取系统状态和进程信息。

5、C语言中在当前目录下创建文件怎么做到的?

每个进程的属性里都有一个cwd(Current Working Directory),记录当前进程的工作目录。

C语言中在当前目录下创建一个文件时,虽然我们只提供了文件名,但系统会将当前cwd指向的路径跟文件名拼接起来。


6、在代码层面,如何获取自己的pid和ppid?bash进程是什么?

通过系统调用接口getpid来获得当前进程的pid,通过getppid来获得该进程的父进程的pid。

我们在Linux下执行的所有命令,运行的所有程序,本质都是由父进程bash通过fork来创建的。

7、fork函数有什么用?怎么用?怎么理解两个返回值?

fork函数可以创建一个子进程,它会给父进程返回子进程的pid,给子进程返回0。

“./”是指令层面的创建进程,fork函数是代码层面的创建进程。

为什么需要两个返回值?

区分不同执行流需要执行的代码。

为什么要给父进程返回子进程的pid,而子进程返回0?

父进程要管理子进程,而子进程不需要管父进程。

fork创建子进程时,内核会做什么事?

创建子进程的PCB(拷贝父进程的PCB后做一些修改),父子进程代码共享。

为什么一个函数能有两个返回值?

fork是一个函数,在该函数执行到最后一条return语句之前,子进程其实已经创建好了,之后的代码父子共享,也就是说return语句时父进程和子进程独立分别执行的。

父子进程谁先运行?

不一定,由调度器决定。

 8、什么是写时拷贝?

父子进程代码和数据共享,他们还具有独立性吗?

代码是只读的,父子进程都不能修改。但数据是有可能修改的,当子进程尝试对父进程的数据进行修改时,OS会将该数据给子进程拷贝一份,这就叫写实拷贝。

为什么不直接全部给子进程拷贝一份?

浪费空间

为什么在fork时同一个变量id会有两个不同值?

子进程在尝试修改该变量时,发生了数据层面的写实拷贝,OS会将该数据拷贝一份给子进程,然后子进程再做修改。 

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

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

相关文章

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么?简单的说就是将用户的请求平摊的分配到多个服务上,从而达…

AI视频改字个性化祝福豪车装X系统uniapp前端开源源码下载

装X系统源码简介 创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福,让他们感受到你的真诚与关怀吗?现在, 通过开源的AI视频…

从0到1—POC编写基础篇(二)

接着上一篇 POC常用基础模块 urllib 模块 Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 urllib 包 包含以下几个模块: ●urllib.request - 打开和读取 URL。 ●urllib.error - 包含 urllib.request 抛出的异常。 ●urllib.parse - …

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…

【网络安全】在网络中如何对报文和发送实体进行鉴别?

目录 1、报文鉴别 (1)使用数字签名进行鉴别 (2)密码散列函数 (3)报文鉴别码 2、实体鉴别 鉴别(authentication) 是网络安全中一个很重要的问题。 一是要鉴别发信者,即验证通信的对方的确是…

小扎宣布开放 Meta Horizo​​n OS

日前,Meta以“混合现实的新时代”为题的博文宣布向第三方制造商开放Meta Horizon OS,包括华硕、联想和微软Xbox等等: Meta正在朝着为元宇宙建立一个更开放的计算平台的愿景迈出下一步。Meta正在向第三方硬件制造商开放赋能Meta Quest设备的操…

使用 IPAM 解决方案简化分布式网络管理

随着组织在数字领域的全球扩张,分布式网络是不可避免的,这意味着,随着 IT 基础设施的发展,组织需要适应,这包括在不断增长的系统需求、应用程序堆栈、各种协议和安全防御中监控、现代化和简化流程和资源。在有效管理现…

AJAX——案例

1.商品分类 需求&#xff1a;尽可能同时展示所有商品分类到页面上 步骤&#xff1a; 获取所有的一级分类数据遍历id&#xff0c;创建获取二级分类请求合并所有二级分类Promise对象等待同时成功后&#xff0c;渲染页面 index.html代码 <!DOCTYPE html> <html lang&qu…

Pycharm代码规范与代码格式化插件安装

给大家分享两个PyCharm编辑器的插件&#xff0c;分别是pylint与autopep8&#xff0c;主要用来提高我们在使用python进行自动化测试编写以及性能测试脚本编写过程中的代码质量、可读性与美观性。 pylint&#xff1a; ● 代码检查工具&#xff1a;它可以帮助检查代码中的错误、…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究&#xff1a;使用 pnpm 安装依赖时&#xff0c;node_modules 下是什么结构 回顾 npm3 之前&#xff1a;依赖树 缺点&#xff1a; frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…

明日方舟游戏助手:一键完成日常任务 | 开源日报 No.233

MaaAssistantArknights/MaaAssistantArknights Stars: 11.6k License: AGPL-3.0 MaaAssistantArknights 是一款《明日方舟》游戏的小助手&#xff0c;基于图像识别技术&#xff0c;支持一键完成全部日常任务。 刷理智、掉落识别及上传企鹅物流智能基建换班、自动计算干员效率…

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时&#xff0c;默认有个宽度 207px&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#xff1b; Element Plus 父元素不限制宽度时&#xff0c;默认100%&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#x…

哪些因素影响了PCB电路板切割精度?

PCB电路板切割是电子制造过程中一个至关重要的环节&#xff0c;其精度对后续工序的质量和效率具有决定性影响。因此&#xff0c;了解影响PCB电路板切割精度的原因&#xff0c;对于提高电子产品的质量和生产效率具有重要意义。 1. PCB分板机稳定性 PCB分板机的性能直接影响到切…

李沐62_序列到序列学习seq2seq——自学笔记

"英&#xff0d;法”数据集来训练这个机器翻译模型。 !pip install --upgrade d2l0.17.5 #d2l需要更新import collections import math import torch from torch import nn from d2l import torch as d2l循环神经网络编码器。 我们使用了嵌入层&#xff08;embedding l…

广东理工学院携手泰迪智能科技成功部署人工智能实验室

广东理工学院是经国家教育部批准设立的全日制普通本科院校&#xff0c;入选全国应用型人才培养工程培养基地、国家级众创空间试点单位、广东省高校电子商务人才孵化基地。开设34个本科专业&#xff0c;涵盖工学、经济学、管理学、文学、艺术学、教育学等6大学科门类&#xff0c…

【docker】拉取人大金仓KingbaseES数据库镜像速度很慢问题

作为一种新兴的虚拟化方式&#xff0c;Docker 跟传统的虚拟化方式相比具有众多的优势。 对于学习新技术、快速搭建实验环境等是很不错的选择。优势大致总结如下&#xff1a; 1.镜像拉取速度对比 速度前后对比&#xff0c;提升10倍不止&#xff0c;很快将镜像文件下载至本地。 …

Java常见面试题总结

文章目录 1. 什么是线程和进程?2. 请简要描述线程与进程的关系,区别及优缺点&#xff1f;3. 什么是堆和方法区&#xff1f;4. 并发与并行的区别5. 同步和异步的区别6.为什么要使用多线程? 优点&#xff1f;&#xff08;重要&#xff09;7. 使用多线程可能带来什么问题?8. 如…

python爬虫 - 爬取html中的script数据(zum.com新闻信息 )

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法&#xff0c;编写爬虫代码3. 使用re.search 方法&#xff0c;编写爬虫代码 1. 分析页面内容数据格式 &#xff08;1&#xff09;打开 https://zum.com/ &#xff08;2&#xff09;按F12&#xff08;或 在网页上右键 --…

SpringCloud Alibaba--nacos简介和配置管理和登录

目录 一.理论基础 二.nacos 2.1 简介 2.2 安装 三.父项目 三.生产者 3.1 配置依赖 3.2 配置文件 3.3 启动类 3.4 控制类 四.消费者 4.1 配置依赖 4.2 配置文件 4.3 启动类 4.4 feign的接口 五.效果 六.负载均衡--权重算法 6.1重启nacos 6.2 设置权重 6.3 设…

SSH Key生成

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…