Linux冯诺依曼体系、操作系统、进程概念、进程状态、进程切换

个人主页:仍有未知等待探索-CSDN博客

专题分栏:Linux

目录

一、冯诺依曼体系结构

二、操作系统

1、概念

2、为什么要有操作系统?

3、理解操作系统

1.管理的本质

2.管理的概念

3.操作系统结构图

4.为什么要有操作系统?

三、进程

1、进程的概念

1.进程的管理

2.进程动态运行

3.进程的task_struct

a.启动

b.进程创建的代码方式

为什么fork的返回值又能大于0又能等于0?

 c.task_struct的内容

 2、进程的状态

1.Linux的进程状态

2.僵尸进程、孤儿进程

孤儿进程为什么会被os认领?

3.进程的阻塞和挂起,运行

一个进程一旦持有cpu,会一直运行到这个进程结束吗?

操作系统如何对硬件进行管理?

3、进程切换


一、冯诺依曼体系结构

输入设备:键盘、鼠标、摄像头、话筒、磁盘、网卡...

输出设备:显示器、声卡、磁盘、网卡...

CPU:运算器、控制器

存储器:内存

  • 数据时要在计算机的体系结构中进行流动的,流动过程中,进行数据的加工处理。从一个设备到另一个设备,本质是一种拷贝!
  • 数据设备间的拷贝效率决定了计算机整机的基本效率
  • 存储:距离CPU越近,效率越高,成本越高。
  • 在硬件数据流动角度,在数据层面:

        1)CPU不和外设直接打交道,CPU只和内存打交道。

        2)外设(输入输出)的数据,不直接给cpu,而是先放入内存中。

  • 程序运行,为什么要加载到内存?

        冯诺依曼体系结构规定这么做!

  • 程序=代码+数据:程序数据都要被cpu访问。
  • 程序没有被加载到内存的时候,在哪里?

        磁盘(外设)二进制文件。

二、操作系统

1、概念

操作系统是一款软件,用来进行软硬件资源管理

广义的概念:操作系统的内核+操作系统的外壳周边程序(给用户提供使用系统的方式)。

狭义的概念:只是操作系统的内核。

2、为什么要有操作系统?

对软硬件资源进行管理(手段),为用户提供一个良好(稳定、安全、高效)的运行环境(目的)

3、理解操作系统

1.管理的本质

管理者 管理 被管理者的本质就是管理被管理者的数据。

2.管理的概念

先描述,再组织

pl:对于校长管理学生。

先描述:学生可以通过一张表来进行记录,这张表上写了学生的各种信息 ---链表(对应存储的数据结构)

再组织:校长管理学生就可以转化为校长管理学生链表,对其进行增删改查。

3.操作系统结构图

  • (系统调用层)用户不能直接对操作系统进行操作,而是通过操作系统提供的系统调用(也就是函数)进行对操作系统的使用,使操作系统处于平稳的状态。
  • (操作接口层)不是所有的程序员都用系统调用。为了普通开发者能更加方便的使用操作系统,在系统调用的基础上又封装了一层用户操作接口(各种标准库、shell、指令等)。
  • (驱动层)因为每个硬件的厂商可能不同,其执行的标准可能不同,导致操作系统不能直接对硬件进行管理。所以每个生产硬件的厂商都必须写自己的驱动程序,使操作系统都能对其进行管理。每个硬件都有自己的驱动程序。 
  • 跨平台性:不管你是什么操作系统(Linux、Windows),都能在其基础上编写各种语言的代码。原因就是他们都封装了自己的标准库。

4.为什么要有操作系统?

以人为本

对上:提供良好(高效,稳定,安全)的运行环境。

对下:进行硬件管理工作。

三、进程

1、进程的概念

进程 = 内核数据结构task_struct(PCB) + 对应的代码和数据。

task_struct(PCB) ,包括进程的所有属性和一个内存指针(指向对应的代码和属性)。

  • 操作系统中,进程可以同时存在很多个!
  • 将可执行程序加载到内存中,这个不是进程,只是进程的代码和数据。
  • 调度运行进程,本质上就是让程序控制块task_struct进行排队。
  • Linux:(指令ps - 查看进程,选项 axj 详细信息)

1.进程的管理

  • 对进程的管理 -> 对链表的增删改查
  • 添加一个进程,就是将磁盘中的可执行程序添加到内存中,然后再进程列表中加入这个进程。
  • 删除一个进程们就是将内存中的可执行程序释放掉,然后删除进程列表中该进程。

2.进程动态运行

进程task_struct在不同的队列中,进程就可以访问不同的资源。

3.进程的task_struct

a.启动
  • ./XXX,本质上就是让系统创建进程并运行。

        我们自己写的代码形成可执行程序 == 系统命令 == 可执行文件、在Linux运行的大部分执行操作,本质上都是运行进程!

  • 每个进程都有唯一标识,叫做进程的pid。
  • 用户不能直接获取进程的pid,需要用系统调用 --- pid_t getpid(void)

        因为进程的pid在内存中的task_struct是属于操作系统内部的内核数据结构。

  • 在Linux中,用户可以用 [ ctrl + c ] 来终止进程。(用户层面)
  • 在Linux中,用户也可以用指令 [ kill -9 pid ] 来杀掉进程。(系统调用)
b.进程创建的代码方式
  • 获取当前进程的父进程的pid --- pid_t getppid(void)
  • 对于同一个进程,每次启动,对应的pid都不一样,这是正常的。
  • 创建进程 --- pid_t fork(void)。

        fork之后,父子数据、代码共享。创建一个进程,本质上是系统中多了一个进程、多了一个内核数据结构task_struct。

  • 父进程的代码和数据来自磁盘;子进程的代码和数据默认情况继承父进程的代码和数据(只有当子进程要修改数据的时候,系统才会进行写时拷贝,拷贝出一份新的代码和数据给子进程
  • fork函数也是系统调用。
  • 进程具有独立性。
为什么fork的返回值又能大于0又能等于0?

理论上,在fork函数内部,在return返回值之前,子进程就已经创建完毕了。return的时候子进程和父进程各自进行返回,所以才看上去是fork返回了两次。

 c.task_struct的内容

  • 进程的 pcb 中会记录自己对应的可执行程序的路径。

  • 每个进程在启动的时候,会记录自己当前在那个路径下启动(进程的当前路径 cwd)

  • chdir:更改进程的cwd(当前路径)

 2、进程的状态

1.Linux的进程状态

task_struct(PCB)中的一个属性:int status;

  • R(running):运行状态。进程可能正在运行,也可能在运行队列里。
  • S(sleeping):休眠状态。(1、进程在等待“资源”就绪 2、可中断睡眠
  • T(stopped):停止状态。让进程暂停,等待进一步唤醒。
  • t(trancing stop):可追踪停止状态。gdb中调试打断点。
  • D(disk sleep):磁盘休眠状态。是Linux系统比较特有的一种Linux状态。深度睡眠,不可被中断状态(进程自己醒来,重启-断点)
  • X(dead):死亡状态。这个状态只是一个返回状态,任务列表中没有该进程。
  • Z(zombie):僵尸状态。子进程退出,但是父进程没有读取到子进程的退出码
while(1)
{// 如果这个打印注释掉,进程会显示R状态;否则大部分是S状态。原因是cpu和屏幕外设的刷新速度不一样,cpu完成运算时,屏幕还在等待进行刷新,所以时S状态。printf(""); 
}

2.僵尸进程、孤儿进程

僵尸进程:子进程已经运行完毕,然是需要维持自己的退出信息,在自己的进程task_struct会记录自己的退出信息,未来让父进程进行读取,如果没有父进程读取,僵尸进程会一直存在。

孤儿进程:父进程比子进程先退出,子进程就是孤儿进程。孤儿进程一般都是会被1号进程(OS)进行领养的。

孤儿进程为什么会被os认领?

要保证子进程被正常回收,否则会导致内存泄漏。

3.进程的阻塞和挂起,运行

运行:(在cpu上运行)进程在运行队列中,该进程的状态就是R状态。

一个进程一旦持有cpu,会一直运行到这个进程结束吗?

不会,cpu会给予时间片进行轮转调度的。

让多个进程一切换的方式进行调度,在一个时间段内同时得以推进代码,就叫做并发

任何时候都同时又多个进程在真的同时运行,我们叫做并行

阻塞态(S、D状态):等待键盘资源是否就绪,键盘上篇有没有被用户按下的按键,按键数据交给进程。

操作系统如何对硬件进行管理

对硬件的数据进行管理的。(先描述,再组织!!!)

  • 进程本身就是软件。
  • 不是只有cpu才有等待队列,各种设备都有自己的等待队列。
  • 阻塞和运行的状态变化,往往伴随着pcb被连入不同的队列中!入队列的不是进程的什么代码和数据,而是进程的task_struct。

挂起态:在磁盘中有一个swap分区,当OS内存吃紧的时候,将处于阻塞状态的进程的代码和数据放入swap分区中(唤出)。

用效率换取空间

3、进程切换

  • cpu的寄存器会保存进程的临时数据。
  • cpu内部所有的寄存器中的临时数据,叫做进程的上下文
  • 进程在切换,最重要的一件事是:上下文数据的保护和恢复
  • cpu内的寄存器:寄存器本身是硬件,具有数据的存储能力,cpu的寄存器硬件只有一套
  • cpu内部的数据可以有多套,有几个进程,就有几套和进程对应的数据。
  • 寄存器 != 寄存器的内容

谢谢大家!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-NLP:2词性标注与命名实体识别

文章目录 词性标注命名实体识别时间命名实体(规则方法)CRF 命名实体识别方法 词性标注 词性是词汇基本的语法属性,通常也称为词类。词性标注是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程。例如,表示…

Python机器学习实战:分类算法之逻辑回归-泰坦尼克号乘客生还预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 目录 逻辑回归算法介绍 练习题 Python代码与分析 1、读入数据,观察数据情况 2、各属性与生还情况的关联 3、…

用Python做一个翻译软件,比上浏览器快100倍

简单的用Python来做一个翻译软件 开发环境 Python 3.10 Pycharm模块使用 requests -> pip install requests hashlib tkinter案例分为三部分: 1. 爬虫: 获取翻译接口, 请求获取翻译结果问题1: 接口抓包分析问题2: 请求需要写cookie问题3: 不同文本翻译, s加密参数2. 界面…

PDF解锁网站

https://smallpdf.com/cn/unlock-pdfhttps://smallpdf.com/cn/unlock-pdfhttps://www.freemypdf.comhttps://www.freemypdf.com

【python】python图书管理系统_普通用户+管理员菜单(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

[代码审计]记一次简单的java代码审计

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。 免责声明 本博客所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全…

FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 这个接口用户可以不登录,因为我们的课程随意浏览 那么我们梳理下这里的逻辑 1.根据课程id判断课程是否存在 2.课程需要返回课程的详情 3…

C# Task.WaitAll 的用法

目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法,它属于 System.Threa…

DjangoRF-5-用户管理-users接口

1、创建模型,user模型之前创建过了,继承了原有的模型类 2、序列化器 在 users/serializers.py 模块中添加: class UserSerializer(serializers.ModelSerializer):class Meta:model Userfields [id, username, password, mobile, email, is…

【简单讲解Perl语言】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于微信小程序+SpringBoot+Vue的核酸检测服务系统(带1w+文档)

基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 在目前的情况下,可以引进一款医院核酸检测服务系统这样的现代化管理工具,这个工具就是解决上述问题的最好的解决方案。它不仅可以实…

20240727生活沉思------------关于报考软考高级架构师

软考高级架构师 软考高级架构师 缴费 主要是报的千峰 1880元。 相对来说还算可以吧。。。其他也没给我机会选择啊 备考 我现在开始备考,考试时间2024年11月。 今天是正式开始7.27号。 给大家看看接下来我的课程安排: 额,还是满满当当的…

日入800+小红书AI表情包项目拆解

一个高考结束之后,进入暑假,只要有手就能做的AI搞钱项目,不到2个月的时间在小某书上成功涨粉5w,通过发布广告,一条广告甚至还能赚到2000元; 只要有市场需求就可以制作这种表情包快速搞钱,上手非…

openmv 学习笔记(24电赛笔记)

模版匹配 模版匹配是一种计算机视觉技术,用于图像或者视频中查找特定的模版或者对象,查找模版可以是数字或者是物体,技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。 使用模版匹…

网络编程总复习

TCP的创建: 服务器端 : 客户端:

【计算机网络】IP分片实验

一:实验目的 1:理解IP数据报分片的工作原理。 2:理解IP协议报文类型和格式。 二:实验仪器设备及软件 硬件:RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件:记事本、WireShark、Chrom…

倒计时11天,生物发酵行业盛宴即将在沪召开!

随着生物科技领域的蓬勃发展,2024上海生物发酵展的召开已经进入倒计时阶段,距离这场生物发酵产业的年度盛事仅剩11天。作为行业内备受瞩目的展会,它不仅汇聚了全球顶尖的生物发酵技术、产品与服务,更是一个探讨行业趋势、促进合作…

c++语言学习注意事项

当学习C语言时,有几个重要的注意事项可以帮助初学者更有效地掌握这门强大的编程语言: 1. 理解基本概念和语法 C 是一门复杂且功能强大的编程语言,因此理解其基本概念和语法至关重要。初学者应该重点掌握以下几个方面: 基本语法和…

最小二乘法公式推导

微积分和线性代数碰撞的数学盛宴:最小二乘法公式推导!_哔哩哔哩_bilibili 递归最小二乘法与参数辨识_哔哩哔哩_bilibili 笔记

护眼灯有没有护眼的效果?一文揭秘用护眼灯到底好不好

护眼灯有没有护眼的效果?在现在这个时代,无论是在学习还是办公,都很难离开一款好用的台灯,所以,为了避免会挑选到质量不好的台灯,我们应该要先避开一些网红小品牌,优先选择有专业技术支持的&…