免费推广网站大全下载,杭州建设信息港官网,夺宝网站还可以做吗,做一的同志小说网站有哪些1、下面是计算机主要部件的简化视图#xff08;如右图#xff09; 多数计算机有两种运行模式#xff1a;内核态和用户态
软件中最基础的部分是操作系统#xff0c;它运行在内核态。在这个模式#xff0c;操作系统拥有对所有硬件的完全访问权#xff0c;可以执行机器能够…1、下面是计算机主要部件的简化视图如右图 多数计算机有两种运行模式内核态和用户态
软件中最基础的部分是操作系统它运行在内核态。在这个模式操作系统拥有对所有硬件的完全访问权可以执行机器能够执行的任何指令
那些会影响机器的控制或可进行I/O输入/输出操作的指令在用户态中的程序里是禁止的
2、Linux或Windows操作系统的源代码有五百万行数量级
3、操作系统一种运行在内核态的软件
4、批处理系统指加载在计算机上的一个系统软件在它的控制下计算机能够自动地成批处理一个或多个用户的作业
5、多道程序设计计算机内存中同时存放几道相互独立的程序但它们在管理程序控制下相互穿插运行
6、处理器
1cpu是从内存中取出指令并执行。在每个cpu基本周期中首先从内存中取出指令解码以确定其类型和操作数接着执行之。然后取指、解码并执行下一条指令。按照这一方式程序被执行完成
2由于用来访问内存以得到指令或数据的时间要比执行指令花费的时间长得多故所有cpu内部都有用来保存关键变量和临时数据的寄存器
这样通常在指令集中提供一些指令用以将一个字从内存调入寄存器以及将一个字从寄存器存入内存
寄存器
通用寄存器保存变量和临时结果
专门寄存器包括程序计数器保存将要取出下一条指令的内存地址、堆栈指针指向内存中当前栈的顶端、程序状态字包含了条件码位由比较指令设置、cpu优先级、模式内核或用户态以及各种其他控制位
3操作系统必须知晓所有的寄存器每次停止一个运行着的程序时OS必须保存所有的寄存器这样稍后该程序被再次运行时可以把这些寄存器重新载入
4现代CPU具有同时取出多条指令的机制如下图 5在用户态为从操作系统中欧冠获得服务用户程序必须使用系统调用系统调用陷入内核并调用操作系统。TRAP指令把用户态切换成内核态并启用操作系统计算机使用陷阱而不是一条指令来执行系统调用
7、存储器 寄存器和cpu相同材料制成故和cpu一样快访问它们没有时延
高速缓存多数由硬件控制。最常用的高速缓存行放置在cpu内部或非常接近cpu的高速缓存中高速缓存价格昂贵有些机器有两级或三级高速缓存每一级比前面的慢且容量大
缓存的作用多数OS在内存中保留频繁使用的文件的一部分以避免从磁盘中重复地调取这些文件
现代cpu中设计了两个缓存第一级或称为L1缓存总是在cpu中通常用将已解码的指令调入cpu的执行引擎。对于那些频繁使用的数据字多数芯片安排有第二个缓存典型的L1缓存大小为16KB往往还设计有二级缓存称为L2缓存用来存放近来所使用过的若干兆字节的内存字。L1和L2缓存之间的差别在于时序。对L1缓存的访问不存在任何延时而对L2缓存的访问则会延时1或2个时钟周期 8、Intel多核芯片和AMD多核芯片采用的L2缓存的方式是不一样的如下图 内存主存RAM随机访问存储器、ROM只读存储器用于启动计算机的引导加载模块
同样非易失性的但可擦除重复的
闪存数码相机的胶卷、便携式音乐播放器的磁盘
磁盘比较慢其随机访问慢是由于磁盘是一种机械装置
许多计算机支持一种虚拟内存机制这种机制使得期望运行大于物理内存的程序成为可能其方法是将程序放在磁盘上而将主存RAM作为一种缓存用来保存最频繁使用的部分程序。这种机制需要快速地映像内存地址以便把程序生成的地址转换为有关字节在RAM中的物理地址。这种映像由cpu中的一个部件称存储器管理单元MMU来完成
9、I/O设备
I/O设备一般包括两个部分设备控制器和设备本身。控制器是插在电路板上的一块芯片或一组芯片这块电路板物理地控制设备。它从OS接受命令。控制器的任务是为OS提供一个简单的接口每类设备控制器都不同的故需要不同的软件进行控制。专门与控制器对话发出命令并接收响应的软件称为设备驱动程序
总线计算机中的硬件是使用各种总线实现数据传输和通信的
10、启动计算机
在计算机启动时BIOS开始运行。它首先检查所安装的RAM数量键盘和其他基本设备是否已经安装并正常响应。接着它开始扫描ISA和PCI总线并找出连在上面的所有设备。如果现有的设备和系统上一次启动时的设备不同则配置新的设备。
然后BIOS通过尝试存储在CMOS存储器中的设备清单决定启动设备。用户可以在系统刚启动之后进入一个BIOS配置程序对设备清单进行修改。典型地如果存在软盘则系统试图从软盘启动如果失败则试用CD-ROM如果也失败则系统从硬盘启动。启动设备上的第一个扇区被读入内存并执行。这个扇区中包含一个对保存在启动扇面末尾的分区表检查的程序以确定哪个分区是活动的。然后从该分区读入第二个启动转载模块。来自活动分区的这个转载模块被读入操作系统并启动之。
然后操作系统询问BIOS以获得配置信息。对每种设备系统检查对应的设备驱动程序是否存在。没有则要求用户插入含有该设备驱动程序的CD-ROM。一旦有了全部的设备驱动程序操作系统就将它们调入内核。然后初始化有关表格创建需要的任何背景进程并在每个终端上启动登陆程序或GUI
11、进程
1进程本质上是正在执行的一个程序与每个进程相关的是进程的地址空间
2地址空间是从某个最小值的存储位置通常是零到某个最大值存储位置的列表。在进程的地址空间中进程可以进行读写该地址空间中存放有可执行程序、程序的数据以及程序的堆栈
3除了地址空间与每个进程相关的还有资源集通常包括寄存器含有程序计数器和堆栈指针、打开文件的清单等运行该程序所需的所有其他资源
4进程基本上是容纳运行一个程序所需要所有信息的容器
5再理解地址空间现在的OS运行在内存中同时运行多道程序为了避免它们彼此相互干扰每个进程有一些可以使用的地址集合典型值是从0开始到某个最大值。一个进程可拥有的最大地址空间小于主存。在这种情况下进程可以用满其地址空间而且内存中也有足够的空间容纳该进程。在许多32位或64位地址的计算机中分别有2^32后2^64字节的地址空间。如果一个进程有比计算机拥有的主存还大的地址空间而且该进程希望使用全部内存那怎么办可以使用虚拟内存技术——OS把部分地址空间装入主存部分留在磁盘上并且在需要时穿梭交换它们。本质上OS创建了一个地址空间的抽象作为进程可以引用地址的集合
12、文件
1创建文件、删除文件、读文件和写文件都需要系统调用
2Linux中 /Faculty/pa
Windows和Ms-Dos中 \Faculty\pa
3在读写文件之前首先要打开文件检查其访问权限。若权限许可系统将返回一个小整数称作文件描述符供后续操作使用。若禁止访问系统则返回一个错误码
4在UNIX中存在一种文件叫特殊文件。提供特殊文件是为了使I/O设备看起来像文件一般。有两类特殊文件块特殊文件和字符特殊文件。
块特殊文件指那些由可随机存取的块组成的设备如磁盘
字符特殊文件用于打印机、调制解调器和其他接收获输出字符流的设备
5管道是一种虚文件它可连接两个虚进程
6shellUNIX的命令解释器
13、系统调用
1任何单cpu计算机一次只能执行一条指令。如果一个进程正在用户态中运行一个用户程序并且需要一个系统服务比如从一个文件读数据那么它就必须执行一个陷阱或系统调用指令将控制返回给在系统调用后面跟随着的指令。在某种意义上进行系统调用就像进行一个特殊的过程调用但是只有系统调用可以进入内核而过程调用则不能
2下面对read系统调用进行细解
countread(fd,buffer ,nbytes);它有三个参数第一个参数指定文件第二个指向缓冲区第三个说明要独处的字节数
几乎所有系统调用一样它的调用由C程序完成
如果系统调用不能执行不论是因为无效的参数还是磁盘错误由于历史的原因C以及C编译器使用逆序
第一个和第三个参数是值调用但是第二个参数通过引用传递即传递的是缓冲区的地址由指示而不是缓冲区内容接着是对库过程的实际调用。在可能由汇编语言写成的库过程中一般把系统调用的编号放在操作系统所期望的地方如寄存器中第5步。然后执行一个TRAP指令将用户态切换到内核态并在内核中的一个固定地址开始执行第6步。TRAP指令实际上与过程调用指令相当类似他们后面都跟随一个来自远地位置的指令以及供以后使用的保存在栈中的返回地址。
然而TRAP指令与过程指令存在两个方面的差别。首先切换到内核态。而过程调用指令并不改变模式。其次不像给定过程所在的相对或绝对地址那样TRAP指令不能跳转到任意的地址上。根据机器的体系结构或者跳转到一个单固定地址上或者指令中有一8位长的字段它给定了内存中一张表格的索引这张表格中含有跳转地址
跟随在TRAP指令后的内核代码开始检查系统调用编号然后发出正确的系统调用处理命令这通常是通过一张由系统调用编号所引用的、指向系统调用处理器的指针表来完成第7部。此时系统调用句柄运行第8步。一旦系统调用句柄完成其工作控制可能会在跟随TRAP指令后面的指令中返回给用户空间库过程第9部这个过程接着以通常过程调用返回的方式返回到用户程序第10步
为了完成整个工作用户程序还必须清除堆栈如同它在进行任何过程调用之后一样第11步。假设堆栈向下增长如经常所做的那样编译后的代码准确地增加堆栈指针值以便清除调用read之前压入的参数。在这之后原来的程序就可以随意执行了。
在前面第9步中我们提到“控制可能会在跟随TRAP后面的指令中返回给用户空间库过程”这是有原因的。系统调用可能阻塞调用者避免它继续执行。例如如果试图读键盘但是并没有任何键入那么调用者就必须被阻塞。在这种情况下OS会查看是否有其他可以运行的进程。稍后当需要的输入出现时进程会提醒系统注意然后9-11步骤会接着进行。 注意以下两方法的语义
nread(fd,buff,nbytes);把数据从一个文件读到缓冲区中
nread(fd,buff,nbytes);把数据从缓冲区写到一个文件中
3用于进程管理的系统调用
shell如何fork它创建原有进程的精确副本在键入一条命令后shell创建一个新的进程。这个子进程必须执行用户的命令。通过execve系统调用可以实现这一点
4在UNIX中的进程将其存储空间划分为三段正文段如程序代码、数据段如变量以及堆栈段。数据段向上增长而堆栈段向下增长