赞
踩
冯诺伊曼体系结构由五大部分组成,分别为输入设备、输出设备、存储器、运算器和控制器。其内包含的设备既是独立的,又是连接的。运算器和存储器统称为CPU,中央处理器,存储器是内存。
设备是独立的: 输入设备:键盘、鼠标、话筒、网卡、磁盘、摄像头等;输出设备:显示器、声卡、显卡、网卡、磁盘、打印机等。
体系结构内的有些设备只能做输入 / 只能做输出 / 既可以做输入,又可以做输出。
连接是手段,目的是进行设备之间数据流动。数据流动的本质是数据会在设备之间进行来回拷贝。数据拷贝的整体效率,是决定着计算机效率的重大指标。
一般会被普遍流行的计算机具有的特性:稳定性和效率都还不错,价格便宜。
如果体系结构中没有内存,根据"木桶原理"(“短板效应”),计算机整体的效率就变成了以外设的访问效率为主。
相较于从外部存储设备中读取数据,从内存中读取数据要快得多,即:内存的访问速度远高于外部存储设备。
体系结构存在内存,计算机整体的效率就变成了以内存的访问效率为主。
内存的引入把效率问题,转化为了软件问题,它可以让我们的计算机效率还不错,且较便宜,我们才能买的起电脑。注意:所有设备只能直接和内存打交道 -》 在数据层面上,CPU只能对内存进行读写,不能访问外设(输入、输出设备)、外设也只能将数据写入内存中 或者 从内存中读取数据。
3.数据信息流动的应用场景
a. 程序在运行中,必须将程序加载到内存中。
答 : 因为冯诺依曼体系规定的。程序 ->是个二进制文件 -> 存储在磁盘外设中 -> 只能直接访问内存 -> 最终需要通过CPU来执行 <- 它的指令和数据 <- 程序。
b. 登录上qq开始和某位朋友聊天,数据的流动过程
答:我 : 键盘 -> 内存 -> cpu -> 内存 -> 网卡。网友:网卡 -> 内存 -> cpu -> 内存 -> 显示器。
c. 在qq上发送文件, 数据的流动过程
答:磁盘 -> 内存 -> cpu -> 内存 -> 网卡。
操作系统概念:操作系统是一个进行软硬件资源管理的软件。它是第一个被加载到计算机的软件。为用户提供数据方面、技术方面的支持。
一、例子1:以校园生活为背景,引出计算机中"管理"的概念:
人们在生活和工作中的角色,大致可以被划分以下三类:只做决策的人,等同于管理者,在校园中相当于校长;只做执行的人,等同于被管理者,在校园中相当于学生;既做执行又做决策,在校园中相当于辅导员,保证管理决策落地。
管理者和被管理者无需见面,说明管理一个人的本质不在于见面。eg : 开学到毕业你或许都没和校长见过一面,但你大学四年学业课程,却被他安排的"明明白白"。
管理者和被管理者面都没有见到,那么管理者是如何拿到被管理者的信息的呢? 辅导员 -> 保证管理决策落地。
因为所有学生在特定场景具有相同的属性信息,如:姓名、年龄、学号、年纪等,所以我们可以定义一个结构体struct student来描述学生的属性信息,创建多个结构体变量,通过将变量放入特定的数据结构(链表)中 ——》 把对学生的管理工作,转为了对链表的增删查改。
eg:找到年龄最小的学生,并把它删除:以学生的年龄作为基值,遍历链表,若查找到了,就在链表中删除这个节点。注意:对管理的一个计算机建模的过程 :先描述、再组织。
二、例子2:面向对象语言
类中有对象的方法和数据,再把用该类创建的对象放入到容器中。eg:C语言小项目:三子棋、扫雷、通讯录. 定义通讯录,struct Person { string name; int number;} (描述)、struct Contact { int num; struct Person p[1000];} (组织)。
注意:综上所述:把对数据的管理场景转化为对特定数据结构的增删查改。
答:对下进行软硬件资源管理(手段),对上提供一个良好的运行环境(目的)。
通过系统调用,操作系统可以确保用户程序不会直接访问或修改内核数据,防止潜在的安全风险。
系统调用接口是用户和内核进行交互的唯一途径,有助于操作系统有效的管理其资源,确保用户程序在受控和安全的环境下访问和使用系统资源。
系统调用为用户程序提供了高级的、易于使用的接口,以访问操作系统提供的各种服务和功能。这使得程序员无需深入了解底层硬件和操作系统的细节,就可以编写出高效且可靠的应用程序。
一、系统调用
系统调用接口概念:也称为系统调用函数system call,是操作系统提供给用户和内核进行交互的一组接口。因为Linux大部分代码是用C语言写的,system call是用C语言设计出的函数。
eg:当你去银行取钱时,银行会有一个窗口,将你"挡在外面", 你只能通过银行内部人员进行取钱。银行窗口相当于操作系统中系统调用接口。
用户不能绕过操作系统直接访问硬件资源,会出现数据损害、资源冲突、系统崩溃等安全隐患。
任何人不能直接访问操作系统,必须通过系统调用接口才能访问。例外:在嵌入系统中用户可以直接与内核进行交互。
系统调用接口在确保操作系统安全性的情况下,为用户程序提供了对底层硬件访问、系统级别任务的方法。
二、库函数
库函数概念:由编译器或者操作系统预先写好的函数,被存放在"库"中,由用户提供。eg:printf、scanf库函数存放在C标准库中。
eg:对于不识字的老人家来说,直接使用银行的自助服务系统可能会非常困难,因为他们可能无法理解和操作复杂的界面和流程。在这种情况下,银行会提供一个服务人员来帮助他们完成任务,这个服务人员就相当于用户操作接口。
printf、scanf的重新理解:printf是向显示器进行打印,scanf是从键盘中读取数据,说明都需要访问硬件设备。因为对硬件设备的访问,必须通过操作系统、而对操作系统的访问,必须通过系统调用接口,所以printf、scanf底层封装了系统调用。
C标准库具有跨平台性、可移植性。原因之一:C的库函数中调用的system call是由当前操作系统所决定的。eg: Windows下printf函数封装的system call是代码A,,Linux下printf函数封装的system call是代码B,但是C的库函数printf实现时并没有指定是使用代码A还是代码B,具体情况取决于当前操作系统。
可执行程序 -> 是二进制文件 -> 存放在磁盘中 -> 外设 -> 需要被加载到内存中。
我们可以同时启动多个程序? 可以,但我们一定要将多个可执行程序加载到内存中。
操作系统需要管理多个被加载到内存的程序吗? 需要。
操作系统如何管理多个被加载到内存的程序呢? 先描述、再组织。
进程 = 内核PCB对象 + 可执行程序 = 内核数据结构 + 可执行程序
教材概念:进程是正在运行的程序、被加载到内存的程序、进程可以排队。
为什么程序加载到内存,变成进程,我们要给每个进程形成一个PCB对象呢?
因为操作系统要对进程进行管理,先描述、再组织,PCB是描述进程所有属性信息。
管理的本质:对数据结构的对象进行管理。
对于之前所学习的所有数据结构以及方法,都是对节点的管理工作,而每个节点里面包含数据,都是在模拟操作系统目前的管理工作 ——> 操作系统和数据结构的关联度很大。
注意:未来所有对进程的操作和控制,都只和进程的PCB有关,与进程的可执行程序无关。即:进程的PCB(Node)可以被放入到任何(多个)数据结构中。
eg:CPU的资源是有限的,所以多个进程在运行时需要竞争这些资源,进程的PCB才会被放入到一个队列中准备被CPU调度,这个队列称为"运行队列"。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。