【Linux】冯诺依曼体系结构、操作系统及进程概念_linux io 冯诺依曼(2)


二、操作系统(OS)

  • 是什么

操作系统是一个进行软硬件资源管理的软件,操作系统内有进程管理,文件系统,内存管理,驱动管理

  • 为什么

操作系统对下通过合理的管理软硬件资源,对上为用户提供稳定的、高效的、安全的、的执行环境

  • 怎么办

管理的本质是对数据做管理,操作系统并不是直接对计算机中的各种硬件进行决策管理,而是通过数据进行分析,最终做出决策,再由驱动执行,从而达到管理的效果

  • 计算机的体系结构图

image-20221030225640293

所有的管理,本质是对数据做管理,管理的方法是先描述在组织

计算机管理硬件

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

三、系统调用和库函数

在开发角度上看,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发

这对应着用计算机体系结构图中的户操作接口和system call,我们或者说用户不是直接和操作系统进行操作交流的,需要通过调用各种接口间接地进行交流


四、进程

4.1概念

课本概念📝:一个运行起来(加载到内存)的程序叫进程,在内存中的程序叫进程

内核观点📝:担当分配系统资源(CPU时间,内存)的实体

4.2描述进程-PCB
  • PCB

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct

  • 程序和进程

程序的本质是放在磁盘上的可执行文件(.exe文件),就是一个文件,根据冯诺依曼体系,软件运行要加载到内存中,而进程则是将程序加载到内存当中,并且由操作系统进行管理,生成一个描述自身性质的数据结构(PCB),由内核数据结构和进程对应的磁盘代码两者共同组成“进程”

  • task_struct

task_struct-PCB的一种,在Linux中描述进程的结构体叫做task_struct。task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息 。

  • task_ struct内容分类

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

状态: 任务状态,退出代码,退出信号等。

优先级: 相对于其他进程的优先级。

程序计数器: 程序中即将被执行的下一条指令的地址。

内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。

I/ O状态信息: 包括显示的I/O请求,分配给进程的I/ O设备和被进程使用的文件列表。

记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

其他信息

4.3查看进程

说了这么多进程,我们总得见一见进程是啥样的把:

首先,创建文件(myproc.c和Makefile):

image-20221031144655959

文件内容:

image-20221031144745717

image-20221031144805518

make一下,生成可执行程序,开始执行:

接下来就是查看进程了:

image-20221031145146518

同时,我们可以杀掉(kill)进程,当然ctrl+c也可以直接结束掉:

进程在运行的时候本质是在读取进程内部的代码,内部在执行,从启动到终止中间可能会有一段很长的时间,这个进程就具备了动态属性。

也就是说,进程在调度运行的时候,进程就具有动态属性

以上就是我们对于进程简单的查看。

4.4与系统相关的系统调用

需要用到getpid()

image-20221031150358194

获取进程PID需要两个头文件,调用响相应函数,最后的返回值就是进程的PID

下面我们对myproc.c进行修改:

image-20221031150504264

执行:

image-20221031150744708

此外,我们还可以了解一下另一种查看进程的方式简单学习一下。

在Linux中proc是内存级目录

image-20221031152328312

数字开头就是进程的pid,一个进程也可以当做文件来看待

image-20221031152455230

如果我们结束进程,自然就找不到了:

image-20221031152538430

我们重新执行,进入:

image-20221031153326473

4.5系统调用获取进程标示符

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

image-20221031220330938

image-20221031220408257

命令行上启动的进程,一般它的父进程没有特殊情况的话,都是bash

4.5fork初识(并发引入)
  • fork的第一个阶段使用

创建子进程

image-20221031162532133

image-20221031223452412

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值