前言
本篇文章主要了解进程的概念。
#j 冯·诺依曼体系结构
什么是冯·诺依曼体系结构?
冯·诺伊曼体系结构是计算机体系结构的一种经典范式,由计算机科学家约翰·冯·诺伊曼(John von Neumann)提出。该体系结构在计算机设计中起到了重要的指导作用,它包括以下关键概念:
-
存储程序: 冯·诺伊曼体系结构采用存储程序的概念,即程序和数据存储在同一存储器中(磁盘中)。当运行这个程序时,程序的代码和数据会被加载到内存中,此时的程序的数据和代码会变成指令存储在内存中,等待CPU的调度访问。
-
二进制系统: 冯·诺伊曼体系结构使用二进制表示数据和指令。计算机内部的所有信息,包括指令和数据,都以二进制形式存储和处理。
-
中央处理单元(CPU): CPU是计算机的核心,负责执行存储在内存中的指令。它包括算术逻辑单元(ALU)用于执行计算操作,以及控制单元(CU)用于管理指令的执行顺序。
-
顺序执行: 冯·诺伊曼体系结构的计算机按照存储在内存中的程序顺序执行指令,一条接一条地完成操作。这种顺序执行的特性使得程序的控制流程更加可控。
-
存储器层次结构: 冯·诺伊曼体系结构引入了存储器层次结构的概念,包括寄存器、高速缓存、主内存等。这有助于提高数据访问速度和系统整体性能。
-
输入输出设备: 冯·诺伊曼体系结构将输入输出设备看作特殊的外部设备,通过指令进行数据传输。这种设计允许计算机与外部环境进行交互。常见计算机中的输入设备有:键盘、鼠标等,输出设备有:显示器、音箱等。当然了有些外部设备即可以是输入设备也可以是输出设备:如网卡、磁盘等等。
冯·诺伊曼体系结构的优势在于其简洁而通用的设计,为后来计算机体系结构的发展奠定了基础。绝大多数现代计算机系统都基于冯·诺伊曼体系结构,这使得软件开发更为灵活,硬件设计更为标准化。
补充1:如何让各个硬件连接起来?
各个硬件间都是独立的实体,如何将它们进行组织协同起来形成计算机硬件系统呢?答案是需要借助总线,总线扮演连接各个计算机硬件的数据通道。使得各个计算机能够有效的交换数据以完成操作系统分发的各种任务。
补充2:为什么冯诺依曼体系结构规定以存储器为核心?
-
这里的存储器指的是内存。冯诺依曼体系结构是以存储器为核心的。
-
存储器是有分级别的。根据存储器是以的离CPU的距离和造价以及性能比是类似成金字塔结构的。分别是 寄存器 > cache > 内存 > 磁盘。
-
以内存为核心是因为计算机的存储介质中,寄存器和cache由于造价比较高昂,无法使计算机普及给普罗大众使用,而磁盘由于离CPU较远,并且处理数据的性能较差。所以,根据木桶效益,冯诺依曼体系结构规定了以内存为核心。
-
由于CPU的速度太快,而外部设备的速度相较于CPU的处理速度,又显得太慢。所以,外部设备会现将指令预加载到内存中,CPU就可以直接从内存获取对应的数据。CPU将对应的数据处理好后,又会将数据写回到内存中,外部设备再从内存中获取对应的数据。这样大在一定的“性价比”范围内使得计算机的性能得到了保证。
为什么需要了解冯·诺依曼体系结构
了解进程的概念需要理解冯诺依曼体系结构,因为进程的概念与计算机系统的基本架构密切相关。冯诺依曼体系结构是一种计算机硬件组织结构,其中存储器和处理器是分开的,程序以指令的形式存储在内存中。
进程是计算机中执行的程序实例,它包含了程序的代码、数据和执行状态。在冯诺依曼体系结构下,程序的执行是以进程为基础的。进程之间通过共享内存或消息传递等机制进行通信和同步,这是计算机系统中重要的概念。
理解冯诺依曼体系结构有助于理解进程是如何在计算机系统中被创建、调度和执行的。进程的概念涉及到指令的执行、内存的管理以及与其他进程的协同操作,这些都直接关联到冯诺依曼体系结构中的存储器和处理器的交互方式。因此,对计算机硬件体系结构的理解为深入了解进程的概念提供了基础。
如何结合对于冯·诺依曼体系结构理解进程与它的关系?
这里我就以一个小故事来讲解这个话题。假设一个场景,你正在用你的QQ和你心仪的对象在聊天。你给她发送了一条消息,“月上柳梢头,今晚一起吃饭吗?”。此时,你的这段话是通过你的键盘(输入设备),敲到了你的QQ对话框中(软件-进程,内存-存储你输入的数据)。然后,这段话通过在CPU处理过后在网络上传输(网卡-输出设备)发送到了QQ的服务器,这里就暂时忽略网络的情况。你的心仪对象就收到了你的消息(网卡-输入设备,显示器-输出设备)。
什么是操作系统?
操作系统是一款进行管理的软件,它们管理计算机硬件和计算机软件(提供给进程一个执行环境)。
-
软硬件资源管理: 操作系统负责管理计算机的硬件资源,如内存、处理器、硬盘和输入/输出设备。用户通过操作系统调用接口访问这些资源。为什么需要通过系统调用接口来访问这些系统资源呢?因为,操作系统不相信任何用户,但是。又要为用户提供服务。所以,操作系统会提供对应的系统调用接口给用户来访问系统数据,这样即提供了服务,又保护了数据不会被用户恶意篡改。
-
进程和线程管理: 操作系统允许程序以进程和线程的形式运行。程序员编写代码时,可以创建多个并发执行的进程或线程,操作系统负责调度和协调它们的执行。
-
文件系统: 操作系统提供文件系统,允许程序员以文件的形式组织和访问数据。通过文件系统,程序员可以读取、写入和管理文件,而不必直接处理磁盘或存储细节。
-
设备驱动程序: 操作系统提供设备驱动程序,使得程序员可以通过高级接口访问各种硬件设备,如打印机、键盘、鼠标等,而无需了解底层硬件细节。
-
系统调用和API: 操作系统通过系统调用和应用程序接口(API)提供了一组功能,程序员可以使用这些接口与操作系统进行交互。这包括文件操作、内存分配、进程控制等。
-
安全性和权限: 操作系统通过权限和安全性控制确保系统的稳定性和用户数据的安全。程序员需要遵循操作系统提供的权限模型,以确保他们的应用程序按照预期运行。
总体而言,操作系统为程序员提供了一个抽象层(系统调用接口),使得他们可以专注于应用程序的逻辑和功能,而无需过多关注底层硬件和系统管理的细节。通过操作系统,程序员能够更高效地开发应用程序,并利用计算机硬件资源。
为什么需要操作系统进行管理?
计算机系统需要操作系统进行管理的原因有多个:
-
资源管理: 操作系统负责有效地管理计算机系统的硬件资源,包括内存、处理器、硬盘、网络接口等。它协调这些资源的分配,确保多个应用程序能够同时运行而不会相互干扰。
-
进程调度: 操作系统能够调度和协调多个进程的执行。通过分时操作,它确保每个进程都有机会在处理器上执行,从而实现多任务处理和提高系统的吞吐量。
-
内存管理: 操作系统负责管理计算机的内存,包括分配和释放内存空间,以及虚拟内存的管理。这有助于确保应用程序可以访问所需的内存,同时避免内存冲突和浪费。
-
文件系统: 操作系统提供文件系统,使得程序员和应用程序可以以文件的形式组织和访问数据。文件系统简化了对数据的管理,使其更有组织性,也提供了数据持久性的解决方案。
-
设备管理: 操作系统通过设备驱动程序来管理硬件设备,使得程序员可以通过高级接口而非硬件级别来访问设备。这简化了与各种硬件设备的交互。
-
用户接口: 操作系统提供用户接口,使得用户能够与计算机进行交互。这可以是命令行界面(CLI)或图形用户界面(GUI),为用户提供了友好的操作方式。
-
安全性和权限控制: 操作系统实施安全性控制和权限管理,确保只有经过授权的用户或程序可以执行敏感操作。这有助于保护系统免受未经授权的访问和损害。
总体而言,操作系统提供了计算机系统的管理和协调机制,使得硬件资源得以合理利用。对下为用户管理各种软硬件资源的手段,目的是对上为用户提供了一个安全、稳定、高效的运行环境。
操作系统是如何进行管理的
管理的本质
在生活中,我们学生属于管理这一行为受众的被管理者,而校长就是一个典型的管理者。你的校长对你进行管理需要经常跟你见面交流吗?答案是不需要。他只需要通过你的数据,如专业课的成绩、体侧数据、学校活动记录等就可以对你进行相应的管理。所以,管理的本质其实不是对你这个人做管理,而是对你这个人的数据进行管理。校长管理你,其实更多是根据你的数据进行决策,而决策的执行往往需要辅导员来进行。其实,这就很想计算机系统中,操作系统和驱动程序以及硬件的关系。