操作系统功能

▶1.进程管理

简单地说,进程是程序的执行过程。程序是静态的,它仅仅包含描述算法的代码;进程是动态的,它包含了程序代码、数据和程序运行的状态等信息。进程管理的主要任务是对CPU资源进行分配,并对程序运行进行有效的控制和管理。

1)进程的状态及其变化

进程执行过程为“就绪→运行→等待”三个循环进行的状态。操作系统有多个进程请求执行时(如打开多个网页),每个进程进入“就绪”队列,操作系统按进程调度算法(如先来先服务FIFO、时间片轮转、优先级调度等)选择下一个马上要执行的就绪进程,并分配就绪进程一个几十毫秒(与操作系统有关)的时间片,并为它分配内存空间等资源。上一个运行进程退出后,就绪进程进入“运行”状态。目前CPU工作频率为GHz级,1ns最少可执行1~4条指令(与CPU频率、内核数量等有关),在10多个毫秒的时间片里,CPU可以执行数万条机器指令。CPU通过内部硬件中断信号来指示时间片的结束,时间片到点后,进程将控制权交还操作系统,进程必须暂时退出“运行”状态,进入“就绪”队列或“等待”或“完成”状态。这时操作系统分配下一个就绪进程进入运行状态。以上过程称为进程切换。进程结束时(如关闭某个程序),操作系统会立即撤销该进程,并及时回收该进程占用的软件资源(如程序控制块、动态链接库)和硬件资源(如CPU、内存等)。

2)进程同步

进程对共享资源(如CPU)不允许同时访问,这称为进程互斥,以互斥关系使用的共享资源称为临界资源。为了保证进程能够有序执行,就必须进行进程同步。进程同步有两种方式:一是进程互斥方式,即进程对临界资源进行访问时,互斥机制为临界资源设置一把锁;锁打开时,进程可以对临界资源进行访问,锁关闭时禁止进程访问该临界资源。二是空闲让进,忙则等待,即临界资源没有进程使用时,可让进程申请进入临界区;如果已有进程进入临界区,其他试图进入临界区的进程都必须等待。

3)Windows进程管理

为了跟踪所有进程,Windows在内存中建立了一个进程表。每当有程序请求执行时,操作系统就在进程表中添加一个新的表项,这个表项称为PCB(程序控制块)。PCB中包含了进程的描述信息和控制信息。进程结束后,系统收回PCB,该进程便消亡。在Windows系统中,每个进程都由程序段、数据段、PCB三部分组成。

▶2.存储管理

1)存储空间的组织

操作系统中,每个任务都有独立的内存空间,从而避免任务之间产生不必要的干扰。将物理内存划分成独立的内存空间,典型的做法是采用段式内存寻址和页式虚拟内存管理。页式存储解决了存储空间的碎片问题,但是也造成了程序分散存储在不连续的空间。x86体系结构支持段式寻址和虚拟内存映射,x86机器上运行的操作系统采用了虚拟内存映射为基础的页式存储方式,Windows和Linux就是典型的例子。

2)存储管理的主要工作

存储管理的主要工作为:一是为每个应用程序分配内存和回收内存空间;二是地址映射,就是将程序使用的逻辑地址映射成内存空间的物理地址;三是内存保护,当内存中有多个进程运行时,保证进程之间不会相互干扰,影响系统的稳定性;四是当某个程序的运行导致系统内存不足时,如何给用户提供虚拟内存(硬盘空间),使程序顺利执行,或者采用内存“覆盖”技术、内存“交换”技术运行程序。

3)虚拟内存技术

虚拟内存就是将硬盘空间拿来当内存使用,硬盘空间比内存大许多,有足够的空间用于虚拟内存;但是硬盘的运行速度(毫秒级)大大低于内存(纳秒级),所以虚拟内存的运行效率很低。这也反映了计算思维的一个基本原则,以时间换空间。
虚拟存储的理论依据是程序局部性原理:程序在运行过程中,在时间上,经常运行相同的指令和数据(如循环指令);在存储空间上,经常运行某一局部空间的指令和数据(如窗口显示)。虚拟存储技术是将程序所需的存储空间分成若干页,然后将常用页放在内存中,暂时不用的程序和数据放在外存中。当需要用到外存中的页时,再把它们调入到内存。

4)Windows虚拟地址空间

32位Windows系统的虚拟地址空间为4GB,这是一个线性地址的虚拟内存空间(即大于实际物理内存的空间),用户看到和接触到的都是该虚拟内存空间。利用虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),更重要的是用户程序可以使用比实际物理内存更大的内存空间。用户在Windows中双击一个应用程序的图标后,Windows系统就为该应用程序创建一个进程,并且分配每个进程2GB(内存范围:0~2GB)的虚拟地址空间,这个2GB的地址空间用于存放程序代码、数据、堆栈、自由存储区;另外2GB的(内存范围:3~4GB)虚拟地址空间由操作系统控制使用。由于虚拟内存大于物理内存,因此它们之间需要进行内存页面映射和地址空间转换。

▶3,文件管理

文件是一组相关信息的集合。在计算机系统中,所有程序和数据都以文件的形式存放在计算机外部存储器(如硬盘、U盘等)上。例如,一个C源程序、一个Word文档、一张图片、一段视频、各种程序等都是文件。

1)Windows文件系统

操作系统中负责管理和存取文件的程序称为文件系统。Windows的文件系统有NTFS、FAT32等。在文件系统管理下,用户可以按照文件名查找文件和访问文件(打开、执行、删除等),而不必考虑文件如何存储、存储空间如何分配、文件目录如何建立、文件如何调入内存等问题。文件系统为用户提供了一个简单统一的文件管理方法。
文件名是文件管理的依据,文件名分为文件主名和扩展名两部分。文件主名由程序员或用户命名。文件主名一般用有意义的英文或中文词汇命名,以便识别。不同操作系统对文件命名的规则有所不同。例如Windows操作系统不区分文件名的大小写,所有文件名的在操作系统执行时,都会转换为大写字符。而有些操作系统区分文件名的大小写,如Linux操作系统中,test.txt、Test.txt、TEST.TXT被认为是3个不同文件。
文件的扩展名表示文件的类型,不同类型的文件处理方法不同。例如,在Windows系统中,扩展名.exe表示执行文件。用户不能随意更改文件扩展名,否则将导致文件不能执行或打开。在不同操作系统中,表示文件类型的扩展名并不相同。
文件内部属性的操作(如文件建立、内容修改等)需要专门的软件,如建立电子表格文档需要Excel软件,打开图片文件需要ACDSee等软件,编辑网页文件需要Dreamweaver等软件。文件外部属性的操作(如执行、复制、改名、删除等)可在操作系统下实现。
目录(文件夹)由文件和子目录组成,目录也是一种文件。Windows操作系统将目录按树状结构管理,用户可以将文件分门别类地存放在不同目录中。这种目录结构像一棵倒置的树,树根为根目录,树中每一个分枝为子目录,树叶为文件。Windows系统中,每个硬盘分区(如C、D、E盘等)都建立一个独立的目录树,有几个分区就有几个目录树(与Linux不同)。

2)Linux文件系统

Linux文件系统是一个层次化的树形结构。Linux系统只有一个根目录(与Windows不同),Linux可以将另一个文件系统或硬件设备通过“挂载”操作,将其挂装到某个目录上,从而让不同的文件系统结合成为一个整体。
Linux系统的文件类型有文本文件(有不同编码,如UTF-8)、二进制文件(Linux下的可执行文件)、数据格式文件、目录文件、连接文件(类似Windows的快捷方式)、设备文件(分为块设备文件和字符设备文件)、套接字文件(Sockets,用于网络连接)、管道文件(用于解决多个程序同时存取一个文件造成的错误)等。

大部分Linux使用Ext2文件系统,但也支持FAT、VFAT、FAT32等文件系统。Linux将不同类型的文件系统组织成统一的虚拟文件系统(VFS)。Linux通过VFS可以方便地与其他文件系统交换数据,虚拟文件系统隐藏了不同文件系统的具体细节,为所有文件提供了统一的接口。用户和进程不需要知道文件所属的文件系统类型,只需要像使用Ext2文件系统中的文件一样使用它们。

▶4.中断处理

中断是CPU暂停当前执行的任务,转而去执行另一段子程序。中断可以由程序控制或者由硬件电路自动控制完成程序的跳转。外部设备通过信号线向CPU提出中断请求信号,CPU响应中断后,暂停当前程序的执行,转而执行中断处理程序,中断处理程序执行完成后,返回到原来主程序的中断处,继续按原顺序执行。
例:计算机打印输出时,CPU传送数据的速度很高,而打印机打印的速度很低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。而采用中断方式后,CPU可以处理其他工作,只有打印机缓冲区中的数据打印完毕发出中断请求之后,CPU才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级语言期末2011级A卷(软件学院)

1.编写函数&#xff0c;判定正整数m和n&#xff08;均至少为2&#xff09;是否满足&#xff1a;数m为数n可分解的最小质因数&#xff08;数n可分解的最小质因数为整除n的最小质数&#xff09; 提示&#xff1a;判定m为质数且m是n的最小因数 #include <stdio.h> #include…

DiffiT | 英伟达提出用于图像生成的扩散ViT架构DiffiT,达成新SOTA!

本文首发于AIWalker&#xff0c;欢迎关注。 https://arxiv.org/abs/2312.02139 https://github.com/NVlabs/DiffiT 扩散模型以其强大的表达能力和高样本质量在许多领域得到了新的应用。对于样本生成&#xff0c;这些模型依赖于通过迭代去噪生成图像的去噪神经网络。然而&#…

坚持刷题|二叉树展开为链表

文章目录 题目考察点代码实现实现总结扩展问题用递归的方式实现在展开二叉树为链表的过程中&#xff0c;递归和迭代两种方法各有什么优缺点&#xff1f;可能的扩展问题 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷&…

LTD营销枢纽2023年度功能升级回顾

在过去的2023年&#xff0c;我们的团队致力于不断进步和创新。经过一年的不懈努力&#xff0c;我们共发布了50次的系统升级&#xff0c;引入了16种全新的解决方案与业务应用&#xff0c;并实施了1363项各类细致优化。 这些更新和改进不仅在我们的营销枢纽系统现有功能的基础上实…

Groovy(第二节) Groovy之HelloWorld

目录 为什么要学习 Groovy? 入门非常容易 用 Groovy 编写的 Hello World 运行 Groovy 示例

PHP函数 “password_hash“ 哈希密码

哈希函数是一种将输入转换为固定长度字符串的方法&#xff0c;这个过程是不可逆的&#xff0c;也就是无法从哈希值还原出原始输入。通过将密码进行哈希处理&#xff0c;即使数据库泄露&#xff0c;攻击者也无法简单地获取到用户密码。 在PHP中&#xff0c;我们可以使用 "…

35岁程序员,深入理解JVM的核心知识点

网络&#xff1a;分层模型、TCP、UDP、HTTP、HTTPS 分层模型 应用层&#xff1a;负责处理特定的应用程序细节&#xff0c;如 HTTP、FTP、DNS运输层&#xff1a;为两台主机提供端到端的基础通信&#xff0c;如 TCP、UDP网络层&#xff1a;控制分组传输、路由选择等&#xff0c…

【大数据架构(1)】Lambda Architecture – Realtime Data Processing 论文重点翻译

文章目录 1. INTRODUCTION2. LAMBDA ARCHITECTUREA) BATCH LAYERB) SPEED LAYERC) SERVICE LAYER 3. LIMITATIONS OF THE TRADITIONAL LAMBDAARCHITECTURE4. A PROPOSED SOLUTION1. 架构说明2. 前后架构改进对比 1. INTRODUCTION Lambda架构背后的需求是由于虽然MR能够处理大数…

SpringBoot+PDF.js实现按需分片加载预览(包含可运行示例源码)

SpringBootPDF.js实现按需分片加载预览 前言分片加载的效果前端项目前端项目结构前端核心代码前端项目运行 后端项目后端项目结构后端核心代码后端项目运行 项目运行效果首次访问分片加载 项目源码 前言 本文的解决方案旨在解决大体积PDF在线浏览加载缓慢、影响用户体验的难题…

C 程序结构

在我们学习 C 语言的基本构建块之前&#xff0c;让我们先来看看一个最小的 C 程序结构&#xff0c;在接下来的章节中可以以此作为参考。 C Hello World 实例 C 程序主要包括以下部分&#xff1a; 预处理器指令函数变量语句 & 表达式注释 让我们看一段简单的代码&#x…

Fabric V2.5 通用溯源系统——区块链部分设计

本节对Fabric V2.5 通用溯源系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。此节内容免费发布在TrueTechLabs Fabric学习交流QQ群。 购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 TrueTechLabs Fabric学习交流QQ群: 一、区块链部分文件目录简…

基于Python校园鲜花水果商城系统(Django框架)开题答辩常规问题和如何回答(答辩指导)

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

React最常用的几个hook

React最常用的几个Hook包括&#xff1a;useState、useEffect、useRef以及useContext。 useState&#xff1a; 用于在函数组件中添加状态管理。它返回一个数组&#xff0c;第一个元素是当前状态的值&#xff0c;第二个元素是更新状态的函数。在使用时&#xff0c;可以通过解构赋…

代码库管理工具Git介绍

阅读本文同时请参阅-----免费的Git图形界面工具sourceTree介绍 Git是一个分布式版本控制系统&#xff0c;它可以帮助开发者跟踪和管理代码历史。Git的命令行工具是使用Git的核心方式&#xff0c;虽然它可能看起来有些复杂&#xff0c;但是一旦掌握了基本命令&#xff0c;你…

【C++私房菜】序列式容器的迭代器失效问题

目录 一、list的迭代器失效 二、vector的迭代器失效 1、空间缩小操作 2、空间扩大操作 三、总结 在C中&#xff0c;当对容器进行插入或删除操作时&#xff0c;可能会导致迭代器失效的问题。所谓迭代器失效指的是&#xff0c;原先指向容器中某个元素的迭代器&#xff0c;在…

【每日前端面经】2023-02-28

题目来源: 牛客 使用TS的目的 提供很好的智能提示方便进行代码重构明确定义参数类型和函数重载 Type和Interface的区别 type主要用于创建联合类型、交叉类型、以及定义复杂的类型别名interface主要用于定义对象和类的结构 Any和泛型 虽然用any类型能够接收任何类型的参数…

Retrofit核心原理

Retrofit是一个类型安全的HTTP客户端库&#xff0c;广泛用于Android和Java应用中&#xff0c;用于简化网络请求和响应的处理。本文将深入探讨Retrofit的核心原理&#xff0c;帮助开发者理解其背后的工作机制。 Retrofit简介 Retrofit是Square公司开发的一个开源库&#xff0c…

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势&#xff0c;可以显著降低5G应用复杂度&#xff0c;快速实现5G网络接入&#xff0c;提升FWA部署的经济效益。 RedCap技术带来了…

YOLO V5、SAM、RESNET50模型在GPU环境下搭建过程

好的&#xff0c;我将提供更详细的步骤来搭建YOLOv5、SAM和ResNet50模型在GPU环境下的过程。 **1. 环境设置&#xff1a;** 确保你的环境满足以下要求&#xff1a; - CUDA和CuDNN已正确安装&#xff0c;并与你的GPU兼容。 镜像下载cudnntensorflow_cudnn镜像下载-CSDN博客 …

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集 一、算法原理二、代码三、结果1.sor统计滤波2.Ransac内点分割平面3.Ransac外点分割平面 四、相关数据 一、算法原理 1、Ransac介绍 RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outlier…