冯诺依曼体系结构+操作系统简介+进程概念

文章详细介绍了冯诺依曼体系结构,包括CPU、存储器、输入/输出设备的工作原理。接着,讨论了操作系统的作用,如何管理硬件资源,并通过类比解释了操作系统如何通过驱动和接口与硬件、软件交互。此外,文章还阐述了进程的概念,进程状态(如运行、阻塞、挂起)以及系统调用的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

冯诺依曼体系结构冯·诺依曼结构_百度百科 (baidu.com)

操作系统

进程概念

什么是进程

见见进程

见见系统调用

进程状态

孤儿进程

 进程优先级


冯诺依曼体系结构
冯·诺依曼结构_百度百科 (baidu.com)

冯诺依曼提出了计算机制造的三个基本原则,采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。在我们生活中的计算机,如笔记本、服务器,大部分都遵守冯诺依曼体系!

存储器:一定要明确,存储器所指的是内存,它的特性是“掉电易失”,当我们的计算机因外力失去电时,如停电等情况,容易损坏或者丢失数据。

中央处理器(cpu):运算器+控制器+其它(其它部分不细研究)。

输入设备:如键盘,麦克风,摄像头等。

输出设备:如音响,显示器等。

关于输入输出设备这里在补充一点,有些设备既是输入设备又是输出设备,如磁盘、网卡。

对上述概念有些认识以后,我们首先来谈论一下CPU:它给人们的印象总是“高高在上”,但事实上CPU是很“笨”的,它只会被动的去接收别人的指令,接收别人的数据,根据接收到的“任务”去完成相应的操作。根据我们的生活常识,能够去执行某项指令的前提一定是能够认识和理解这个指令,也就是说CPU其实有一个属于自己的指令集,当它接收到指令后,在“大脑”中搜索对应的指令,明确自己要去完成什么样的工作后,去执行指令。

cpu要执行指令做相应的操作,首先一定要有数据(我们写的代码呀、1234......),根据我们的思考,cpu应该是要从内存或者磁盘上获取,我们知道cpu的执行速度很快,而磁盘的执行速度很慢,如果它俩“组队”的话,这个计算机的效率就会非常的慢。基于这样的情况,内存会事先将数据从磁盘上加载给自己,比如开机的时候,将操作系统什么的加载到内存中,cpu在从内存中获取数据进行相应的操作就比较快了。当cpu进行完相应处理后,将更新的数据写回到内存中,内存在将这更新的数据刷新到磁盘上,在这部分理解上你可以把内存想象成一个“大大的缓存”!

 基于上述的概念描述,我们可以总结几个小点:

●CPU不和外设“打交道”,只和内存打交道。

●外设有数据要载入,只能载入到内存中。内存要向外写出,也只能写在外设上。(原因是这这样的体系结构能够提高整个计算机的效率)

●内存和外设交互的过程,我们将其称为IO的过程。(inpot/output)

●一句你听过的话:“程序运行前要先加载到内存中”!

原因:这是由体系结构决定的,cpu只能从内存中读取数据,不会直接和外设拿“数据”。

●我们写的代码要编译成二进制指令,是要交由cpu进行处理,因为cpu要根据接收到的指令来完成工作,当接收到二进制的指令后,分析好要处理的数据,根据和自己的指令集“比对”确定要怎样“处理”!

感性理解冯诺依曼体系结构:

假设在一个假期中,小张突然想起了一个许久没有联系的朋友,随机在电脑中打开了QQ,在对话框中输入了要发送的消息,随即向朋友发送了过去。下图所示感性的描述了这个过程:

 通过上述的图解可以更好的理解上述的理论部分!

操作系统

什么是操作系统:

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

为什么要有操作系统:

操作系统对下要完成对硬件的合理管理(手段),对上要提供安全的、稳定的、高效的执行环境(目的)。

怎样管理:

谈到管理我们需要先管理者和被管理者有一个感性的理解:我们步入大学后,校长就是我们最大的管理者,将我们的生活安排的井井有条,什么时候学理论知识,什么时候实践,什么时候体侧等等,但是我们作为学生(被管理者)从入学到毕业并没有见过校长几面!

校长既然要通过数据来对学生进行管理,其中重要的一环就是要获取到数据,可是管理者和被管理者又不直接交互,那么这个时候新的角色就出现了,执行者(辅导员):

 根据上图,可以进行如下总结:
1.操作系统根据数据对硬件进行管理。(管理的本质)

2.驱动进行数据的采集和决策的执行。

这时又有新的问题要进行解决,当被管理者的数量非常多的时候,操作系统看着眼前琳琅满目的信息头大的不行,这时要做两件事情:

先描述:因为我要管理的的对象不管有多少,信息种类都是一样的,这时就可以定义一个类将其信息描述出来。

在组织:利用数据结构将这些信息组织起来。

3.管理的方法,先描述,在组织!

4.根据生活常识我们知道,校长不单单对学生进行管理,对辅导员也要进行管理。与之对应的操作系统也不仅仅管理硬件,对软件也要进行管理

有了上述的描述,对操作系统是如何对下管理有了写了解,接下来在探索一下操作系统如何对上提供服务,这里在举一个例子:

不管有钱没钱,我们都有过去银行存取钱的经历,在这个过程中,我们总是隔着厚厚的钢化玻璃将我们的诉求告知工作人员,之所以不让我们直接去“库房拿钱”,虽然你是个本分人,但是银行不是不信任你,是不信任所有人,今天你张三只拿走了属于你的500,明天李四可能会把银行"洗劫一空",基于这样的原因,银行才会开设一个个小窗口和用户交流。

回到正题,操作系统不是不相信某个用户,而是不相信所有用户。如果让用户可以直接访问硬件,这是会出问题的,为了既能提供服务又能将自己保护起来,对用户提供了操作系统接口。这样一来,你有什么诉求先和接口说,能办的给你办了,不合理的要求直接驳回!

紧接着回到银行的例子中来,来办理业务的客户中,难免有文化水平较低不能理解各种流程办理的客户,基于这种情况,银行会安排专门的人为大家提供保姆级别的服务!对应理解,计算机体系中针对上述情况,给用户提供了用户操作接口。

 综上所述,计算机软硬件体系结构就介绍完了!

进程概念

什么是进程

关于进程有这样的描述,一个运行起来(加载到内存中)的程序就是一个进程。“书读百遍其义自见”,反复揣摩这句话好像懂了又好像没懂。在这里我们对进程进行一个感性的理解:

程序的本质就是文件,存放在磁盘中。程序运行要先加载到内存中,当众多程序加载到内存中后,操作系统要对它们进行管理,管理的方法我们上述谈论到过,先描述,在组织!

这里的描述就要引进一个PCB(进程控制块)的概念,它是一个内核结构体,对进程的所有属性,进程对应代码和属性地址进行描述
 

 将PCB用数据结构组织起来:
 

 这样一来,对进程进行管理,就转换成对数据结构的管理。

小总结:●进程 = 内核数据结构(PCB)+进程对应的磁盘代码。

见见进程

如今互联网发达的时代,电脑几乎成为了家庭的必备电子产品,可能在上一秒你还在打游戏,在打游戏的过程中,你可能会遇到这样的场景:闪光弹刚丢出去,面对敌人正想来一波扫射,可就在这时你的屏幕卡了,键盘鼠标都快敲碎了都没有反应,最后迫于无奈,你只好使出“大招”,快捷键打开任务管理器,结束这个任务:

如果所示就是一个个进程

在linux下见见进程:

 执行上述代码,代码跑起来后就是一个进程!

查看和杀掉进程:

ps ajx | head -1 && ps ajx gerap "名称" //查看进程
kill -9 PID //杀掉一个进程

见见系统调用

getpid和getppid

 通过系统调用创建进程

测试:

●fork是一个函数,函数执行前是一个父进程,函数执行后父进程+子进程!

●fork函数后的代码,被父子进程共享。

●父子进程的返回值不同,可以根据这一特性执行后续共享代码的一部分!

进程状态

一个CPU有一个运行队列,当描述一个进程的PCB入到CPU的运行队列中时,这个进程就是运行状态(R),和这个进程是否正在运行无关。

当CPU在处理队列中的进程时,当有进程要访问外设时,就会出现如下的场景。CPU的处理速度很快,而外设的速度很慢,CPU又不能等待外设,所以只能让要访问外设对应进程的PCB去等,如果多个进程同时访问一个外设,这些进程的PCB就会入到该外设的队列中等待,这种状态叫做阻塞状态!

如果阻塞的进程越来越多,内存的空间迟早会被占满,因为这些阻塞状态的进程既占用着空间,又没有被执行。 这时如果有新的进程要载入内存该怎么办呢?这里就要在介绍一种状态:当发生上述场景的时候,“我”占用着内存,短时间内又不会被使用,且有内存不够用的风险,那么基于这种情况,就把“我”的代码和数据暂时保存到磁盘中,这个过程可以将其叫做内存数据的换入换出。这样做的好处就是将空间节省了出来,这个状态就叫做挂起状态

小总结:

●一个CPU有一个运行队列,每个外设也会有一个属于其自己的队列。

●让进程入队列,本质上就是让描述该进程的PCB入队列。

●当某个进程的PCB在CPU的运行队列中,就是运行状态。

●进程不只是等待(占用)cpu的资源,也会需要外设资源。

●当多个进程访问外设,外设“忙不过来”,在该外设队列中等待的状态,叫做阻塞状态!

●阻塞状态太多,占用内存且短时间不会被使用时,会将该进程的代码和数据暂时保存到磁盘上,这时的状态就是挂起状态。

●进程的不同状态,本质上就是在不同的队列中等待某种资源。

linux操作系统下的具体状态

运行状态:代码方面很简单,随便写了一些。执行程序后,查看myprocess的进程状态,发现是运行状态(R)!

 阻塞状态:

 

 printf()函数调用的效果是将数据打印到显示器上,这个过程中在访问外设,而外设很慢(相对CPU而言),大部分时间都在等IO就绪,只有一点点时间是在执行打印代码,所以查看该进程的状态我们发现是阻塞状态!

 暂停状态1(stopped):

Kill -19 PID //暂停进程
Kill -18 PID //进程继续

将上述的代码重新跑一下,用kill  -19 pid暂停该进程:

 kill  -18 pid继续该进程:

细心观察会发现,暂停后在继续,状态恢复了,但是怎么少了一个加号呢?其实加号“+”代表的是该进程是在前台运行,而没有加号表示在后台。对比下s+和s的区别:

S+:前台

S:后台

暂停状态2(t)

这个状态下的进程表示正在被追踪,状态演示:写好一段简单的代码,进入调试状态,打一个断点,运行程序会在断点处停下来,查看进程状态,此时该进程就是小t状态,表示该进程正在被追踪

深度睡眠状态(D):

简单的理解,在高IO的场景下,X进程要等待很久的时间,当资源吃紧,操作系统进行管理的时候,极端情况下会直接杀掉一些进程,但是X进程被杀掉可能会导致重要信息丢失,基于这样的情况将X改为深度睡眠状态,就不会被杀掉了。

 在深度睡眠状态下的进程无法被操作系统杀掉,只能通过断电或者等该进程自己醒来!

僵尸状态(Z)

进程的使命就是完成某项任务,当它的使命完成退出时,任务完成的结果我们要知道!所以在一个进程退出后,不会立即释放进程对应的资源,而是要先保存一段时间,让父进程会这操作系统读取!出现僵尸状态的场景:子进程退出了,但是没有被回收。

 子进程退出,父进程不退出,查看子进程的状态:

上述Z状态的进程我们称之为僵尸进程。

 僵尸进程的危害:
●进程退出后要等父进程回收资源,如果父进程一直不读取,那么子进程就会一直处于僵尸状态(Z)。

●维护退出状态要用数据维护,也属于进程基本信息,所以要保存在task_struct(PCB)中,也就是说,Z状态一直不退出, PCB也就一直都要维护!

●如果一个父进程创建了很多子进程,就是不回收,这种场景就会造成内存资源的浪费。

●僵尸进程会造成内存泄漏。

孤儿进程

孤儿进程的场景是,子进程还在,父进程先退出了,这时孤儿进程会被1号进程领养,后续当子进程退出的时候要由1号进程回收。

 进程优先级

优先级的作用是,决定先做和后做的问题。提出优先级这个概念的原因是资源太少了,如果不是人人都能“吃饱”,那么谁先吃,谁后吃?

linux下的进程优先级特点:最终的优先级 = 老的优先级(标杆) + NI(nice)值。NI的范围是【-20,19】我们可以对其进行调整。

 

### 冯·诺依曼体系结构下的操作系统工作原理 #### 操作系统与冯·诺依曼架构的关系 在计算机科学领域,冯·诺依曼体系结构定义了一种通用计算模型,在这种模型下,数据和指令都存储在同一内存空间中,并且均采用二进制编码表示[^2]。基于此架构的操作系统主要负责管理和调度这些共享资源。 #### 操作系统的功能划分 操作系统被划分为多个部分以实现高效管理: - **内核**:这是最核心的部分,直接控制硬件并提供基本服务给其他组件以及应用程序调用。 - **外层模块**:包括但不限于命令解释器(shell),各种工具集(library), 和实用程序(command-line tools)[^1]。 #### 安全性和隔离机制 为了保护自身免受恶意或错误代码的影响,现代操作系统通常会实施严格的权限控制系统。具体来说,即使是在同一台机器上运行的不同进程之间也相互独立;任何试图绕过正常渠道获取敏感信息的行为都会受到严格限制[^4]。 #### 存储层次优化 鉴于传统冯氏机存在CPU性能瓶颈的问题——即处理器的速度远超其访问外部RAM的能力——当前的设计趋势是在中央处理单元(CPU)内部集成多级缓存(cache memory),以此缓解两者间速率差异带来的负面影响[^5]。 ```c++ // 示例展示如何利用C++创建一个多线程环境中的安全缓冲区 #include <mutex> std::mutex mtx; void thread_safe_operation() { std::lock_guard<std::mutex> lock(mtx); // 执行需要同步保护的关键区域内的操作... } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值